diff -Naurp openvpn-2.3.8.orig/src/openvpn/cscope.out openvpn-2.3.8/src/openvpn/cscope.out
--- openvpn-2.3.8.orig/src/openvpn/cscope.out	1970-01-01 01:00:00.000000000 +0100
+++ openvpn-2.3.8/src/openvpn/cscope.out	2024-09-26 20:01:43.467884473 +0200
@@ -0,0 +1,381176 @@
+cscope 15 $HOME/Documents/suse-work/VPN/IBS/CVE/home:rjain:branches:SUSE:SLE-12:Update/openvpn/openvpn-2.3.8/src/openvpn               0002101495
+	@base64.c
+
+34 #ifdeà
+HAVE_CONFIG_H
+
+
+35 
+	~"cÚfig.h
+"
+
+36 #–ià
+defšed
+(
+_MSC_VER
+)
+
+37 
+	~"cÚfig-msvc.h
+"
+
+40 
+	~"sysh—d.h
+"
+
+42 #ià
+defšed
+(
+ENABLE_HTTP_PROXY
+è|| defšed(
+ENABLE_PKCS11
+è|| defšed(
+ENABLE_CLIENT_CR
+è|| defšed(
+MANAGMENT_EXTERNAL_KEY
+)
+
+44 
+	~"ba£64.h
+"
+
+46 
+	~"memdbg.h
+"
+
+48 
+	gba£64_ch¬s
+[] =
+
+56 
+	$Ý’v²_ba£64_’code
+(cÚ¡ *
+d©a
+, 
+size
+, **
+¡r
+)
+
+58 *
+s
+, *
+p
+;
+
+59 
+i
+;
+
+60 
+c
+;
+
+61 cÚ¡ *
+q
+;
+
+63 ià(
+size
+ < 0)
+
+65 
+p
+ = 
+s
+ = (*è
+	`m®loc
+(
+size
+ * 4 / 3 + 4);
+
+66 ià(
+p
+ =ð
+NULL
+)
+
+68 
+q
+ = (cÚ¡ *è
+d©a
+;
+
+69 
+i
+ = 0;
+
+70 
+i
+ = 0; i < 
+size
+;) {
+
+71 
+c
+ = 
+q
+[
+i
+++];
+
+72 
+c
+ *= 256;
+
+73 ià(
+i
+ < 
+size
+)
+
+74 
+c
+ +ð
+q
+[
+i
+];
+
+75 
+i
+++;
+
+76 
+c
+ *= 256;
+
+77 ià(
+i
+ < 
+size
+)
+
+78 
+c
+ +ð
+q
+[
+i
+];
+
+79 
+i
+++;
+
+80 
+p
+[0] = 
+ba£64_ch¬s
+[(
+c
+ & 0x00fc0000) >> 18];
+
+81 
+p
+[1] = 
+ba£64_ch¬s
+[(
+c
+ & 0x0003f000) >> 12];
+
+82 
+p
+[2] = 
+ba£64_ch¬s
+[(
+c
+ & 0x00000fc0) >> 6];
+
+83 
+p
+[3] = 
+ba£64_ch¬s
+[(
+c
+ & 0x0000003f) >> 0];
+
+84 ià(
+i
+ > 
+size
+)
+
+85 
+p
+[3] = '=';
+
+86 ià(
+i
+ > 
+size
+ + 1)
+
+87 
+p
+[2] = '=';
+
+88 
+p
+ += 4;
+
+90 *
+p
+ = 0;
+
+91 *
+¡r
+ = 
+s
+;
+
+92  
+	`¡¾’
+(
+s
+);
+
+93 
+	}
+}
+
+96 
+	$pos
+(
+c
+)
+
+98 *
+p
+;
+
+99 
+p
+ = 
+ba£64_ch¬s
+; *p;…++)
+
+100 ià(*
+p
+ =ð
+c
+)
+
+101  
+p
+ - 
+ba£64_ch¬s
+;
+
+103 
+	}
+}
+
+105 
+	#DECODE_ERROR
+ 0xffffffff
+
+	)
+
+108 
+	$tok’_decode
+(cÚ¡ *
+tok’
+)
+
+110 
+i
+;
+
+111 
+v®
+ = 0;
+
+112 
+m¬k”
+ = 0;
+
+113 ià(!
+tok’
+[0] || !token[1] || !token[2] || !token[3])
+
+114  
+DECODE_ERROR
+;
+
+115 
+i
+ = 0; i < 4; i++) {
+
+116 
+v®
+ *= 64;
+
+117 ià(
+tok’
+[
+i
+] == '=')
+
+118 
+m¬k”
+++;
+
+119 ià(
+m¬k”
+ > 0)
+
+120  
+DECODE_ERROR
+;
+
+122 
+v®
+ +ð
+	`pos
+(
+tok’
+[
+i
+]);
+
+124 ià(
+m¬k”
+ > 2)
+
+125  
+DECODE_ERROR
+;
+
+126  (
+m¬k”
+ << 24è| 
+v®
+;
+
+127 
+	}
+}
+
+134 
+	$Ý’v²_ba£64_decode
+(cÚ¡ *
+¡r
+, *
+d©a
+, 
+size
+)
+
+136 cÚ¡ *
+p
+;
+
+137 *
+q
+;
+
+138 *
+e
+ = 
+NULL
+;
+
+140 
+q
+ = 
+d©a
+;
+
+141 ià(
+size
+ >= 0)
+
+142 
+e
+ = 
+q
+ + 
+size
+;
+
+143 
+p
+ = 
+¡r
+; *°&& (*°=ð'=' || 
+	`¡rchr
+(
+ba£64_ch¬s
+, *p));… += 4) {
+
+144 
+v®
+ = 
+	`tok’_decode
+(
+p
+);
+
+145 
+m¬k”
+ = (
+v®
+ >> 24) & 0xff;
+
+146 ià(
+v®
+ =ð
+DECODE_ERROR
+)
+
+148 ià(
+e
+ && 
+q
+ >=ƒ)
+
+150 *
+q
+++ = (
+v®
+ >> 16) & 0xff;
+
+151 ià(
+m¬k”
+ < 2)
+
+153 ià(
+e
+ && 
+q
+ >=ƒ)
+
+155 *
+q
+++ = (
+v®
+ >> 8) & 0xff;
+
+157 ià(
+m¬k”
+ < 1)
+
+159 ià(
+e
+ && 
+q
+ >=ƒ)
+
+161 *
+q
+++ = 
+v®
+ & 0xff;
+
+164  
+q
+ - (*è
+d©a
+;
+
+165 
+	}
+}
+
+168 
+	$dummy
+(è{
+	}
+}
+
+	@base64.h
+
+34 #iâdeà
+_BASE64_H_
+
+
+35 
+	#_BASE64_H_
+
+
+	)
+
+37 #ià
+defšed
+(
+ENABLE_HTTP_PROXY
+è|| defšed(
+ENABLE_PKCS11
+è|| defšed(
+ENABLE_CLIENT_CR
+è|| defšed(
+MANAGMENT_EXTERNAL_KEY
+)
+
+39 
+Ý’v²_ba£64_’code
+(cÚ¡ *
+d©a
+, 
+size
+, **
+¡r
+);
+
+40 
+Ý’v²_ba£64_decode
+(cÚ¡ *
+¡r
+, *
+d©a
+, 
+size
+);
+
+	@basic.h
+
+25 #iâdeà
+BASIC_H
+
+
+26 
+	#BASIC_H
+
+
+	)
+
+28 
+	#BOOL_CAST
+(
+x
+è((xè? (
+Œue
+è: (
+çl£
+))
+
+	)
+
+31 
+	#SIZE
+(
+x
+è((x)/(x[0]))
+
+	)
+
+34 
+	#CLEAR
+(
+x
+è
+	`mem£t
+(&(x), 0, (x))
+
+	)
+
+36 
+	#IPV4_NETMASK_HOST
+ 0xffffffffU
+
+	)
+
+	@buffer.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"commÚ.h
+"
+
+34 
+	~"bufãr.h
+"
+
+35 
+	~"”rÜ.h
+"
+
+36 
+	~"mtu.h
+"
+
+37 
+	~"misc.h
+"
+
+39 
+	~"memdbg.h
+"
+
+41 
+size_t
+
+
+42 
+	$¬¿y_muÉ_§ã
+ (cÚ¡ 
+size_t
+ 
+m1
+, cÚ¡ size_ˆ
+m2
+, cÚ¡ size_ˆ
+exŒa
+)
+
+44 cÚ¡ 
+size_t
+ 
+lim™
+ = 0xFFFFFFFF;
+
+45 
+»s
+ = ()
+m1
+ * ()
+m2
+ + ()
+exŒa
+;
+
+46 ià(
+	`uÆik–y
+(
+m1
+ > 
+lim™
+è|| uÆik–y(
+m2
+ >†im™è|| uÆik–y(
+exŒa
+ >†im™è|| uÆik–y(
+»s
+ > ()limit))
+
+47 
+	`msg
+ (
+M_FATAL
+, "attemped‡llocation ofƒxcessively†arge‡rray");
+
+48  (
+size_t
+è
+»s
+;
+
+49 
+	}
+}
+
+52 
+	$buf_size_”rÜ
+ (cÚ¡ 
+size_t
+ 
+size
+)
+
+54 
+	`msg
+ (
+M_FATAL
+, "ç�Èbufã¸siz�”rÜ, size=%lu", ()
+size
+);
+
+55 
+	}
+}
+
+57 
+	gbufãr
+
+
+58 #ifdeà
+DMALLOC
+
+
+59 
+	$®loc_buf_debug
+ (
+size_t
+ 
+size
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+61 
+	$®loc_buf
+ (
+size_t
+ 
+size
+)
+
+64 
+bufãr
+ 
+buf
+;
+
+66 ià(!
+	`buf_size_v®id
+ (
+size
+))
+
+67 
+	`buf_size_”rÜ
+ (
+size
+);
+
+68 
+buf
+.
+ÿ·c™y
+ = ()
+size
+;
+
+69 
+buf
+.
+off£t
+ = 0;
+
+70 
+buf
+.
+Ën
+ = 0;
+
+71 #ifdeà
+DMALLOC
+
+
+72 
+buf
+.
+d©a
+ = 
+	`Ý’v²_dm®loc
+ (
+fže
+, 
+lše
+, 
+size
+);
+
+74 
+buf
+.
+d©a
+ = 
+	`ÿÎoc
+ (1, 
+size
+);
+
+76 
+	`check_m®loc_»tuº
+(
+buf
+.
+d©a
+);
+
+78  
+buf
+;
+
+79 
+	}
+}
+
+81 
+	gbufãr
+
+
+82 #ifdeà
+DMALLOC
+
+
+83 
+	$®loc_buf_gc_debug
+ (
+size_t
+ 
+size
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+85 
+	$®loc_buf_gc
+ (
+size_t
+ 
+size
+, 
+gc_¬’a
+ *
+gc
+)
+
+88 
+bufãr
+ 
+buf
+;
+
+89 ià(!
+	`buf_size_v®id
+ (
+size
+))
+
+90 
+	`buf_size_”rÜ
+ (
+size
+);
+
+91 
+buf
+.
+ÿ·c™y
+ = ()
+size
+;
+
+92 
+buf
+.
+off£t
+ = 0;
+
+93 
+buf
+.
+Ën
+ = 0;
+
+94 #ifdeà
+DMALLOC
+
+
+95 
+buf
+.
+d©a
+ = (
+ušt8_t
+ *è
+	`gc_m®loc_debug
+ (
+size
+, 
+çl£
+, 
+gc
+, 
+fže
+, 
+lše
+);
+
+97 
+buf
+.
+d©a
+ = (
+ušt8_t
+ *è
+	`gc_m®loc
+ (
+size
+, 
+çl£
+, 
+gc
+);
+
+99 ià(
+size
+)
+
+100 *
+buf
+.
+d©a
+ = 0;
+
+101  
+buf
+;
+
+102 
+	}
+}
+
+104 
+	gbufãr
+
+
+105 #ifdeà
+DMALLOC
+
+
+106 
+	$þÚe_buf_debug
+ (cÚ¡ 
+bufãr
+* 
+buf
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+108 
+	$þÚe_buf
+ (cÚ¡ 
+bufãr
+* 
+buf
+)
+
+111 
+bufãr
+ 
+»t
+;
+
+112 
+»t
+.
+ÿ·c™y
+ = 
+buf
+->capacity;
+
+113 
+»t
+.
+off£t
+ = 
+buf
+->offset;
+
+114 
+»t
+.
+Ën
+ = 
+buf
+->len;
+
+115 #ifdeà
+DMALLOC
+
+
+116 
+»t
+.
+d©a
+ = (
+ušt8_t
+ *è
+	`Ý’v²_dm®loc
+ (
+fže
+, 
+lše
+, 
+buf
+->
+ÿ·c™y
+);
+
+118 
+»t
+.
+d©a
+ = (
+ušt8_t
+ *è
+	`m®loc
+ (
+buf
+->
+ÿ·c™y
+);
+
+120 
+	`check_m®loc_»tuº
+ (
+»t
+.
+d©a
+);
+
+121 
+	`memýy
+ (
+	`BPTR
+ (&
+»t
+), BPTR (
+buf
+), 
+	`BLEN
+ (buf));
+
+122  
+»t
+;
+
+123 
+	}
+}
+
+125 #ifdeà
+BUF_INIT_TRACKING
+
+
+127 
+boÞ
+
+
+128 
+	$buf_š™_debug
+ (
+bufãr
+ *
+buf
+, 
+off£t
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+130 
+buf
+->
+debug_fže
+ = 
+fže
+;
+
+131 
+buf
+->
+debug_lše
+ = 
+lše
+;
+
+132  
+	`buf_š™_dowÜk
+ (
+buf
+, 
+off£t
+);
+
+133 
+	}
+}
+
+135 
+šlše
+ 
+
+136 
+	$buf_debug_lše
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+138  
+buf
+->
+debug_lše
+;
+
+139 
+	}
+}
+
+142 
+	$buf_debug_fže
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+144  
+buf
+->
+debug_fže
+;
+
+145 
+	}
+}
+
+149 
+	#buf_debug_lše
+(
+buf
+è0
+
+	)
+
+150 
+	#buf_debug_fže
+(
+buf
+è"[UNDEF]"
+
+	)
+
+155 
+	$buf_þ—r
+ (
+bufãr
+ *
+buf
+)
+
+157 ià(
+buf
+->
+ÿ·c™y
+ > 0)
+
+158 
+	`mem£t
+ (
+buf
+->
+d©a
+, 0, buf->
+ÿ·c™y
+);
+
+159 
+buf
+->
+Ën
+ = 0;
+
+160 
+buf
+->
+off£t
+ = 0;
+
+161 
+	}
+}
+
+163 
+boÞ
+
+
+164 
+	$buf_assign
+ (
+bufãr
+ *
+de¡
+, cÚ¡ bufã¸*
+¤c
+)
+
+166 ià(!
+	`buf_š™
+ (
+de¡
+, 
+¤c
+->
+off£t
+))
+
+167  
+çl£
+;
+
+168  
+	`buf_wr™e
+ (
+de¡
+, 
+	`BPTR
+ (
+¤c
+), 
+	`BLEN
+ (src));
+
+169 
+	}
+}
+
+171 
+bufãr
+
+
+172 
+	$þ—r_buf
+ ()
+
+174 
+bufãr
+ 
+buf
+;
+
+175 
+	`CLEAR
+ (
+buf
+);
+
+176  
+buf
+;
+
+177 
+	}
+}
+
+180 
+	$ä“_buf
+ (
+bufãr
+ *
+buf
+)
+
+182 ià(
+buf
+->
+d©a
+)
+
+183 
+	`ä“
+ (
+buf
+->
+d©a
+);
+
+184 
+	`CLEAR
+ (*
+buf
+);
+
+185 
+	}
+}
+
+190 
+bufãr
+
+
+191 
+	$buf_sub
+ (
+bufãr
+ *
+buf
+, 
+size
+, 
+boÞ
+ 
+´•’d
+)
+
+193 
+bufãr
+ 
+»t
+;
+
+194 
+ušt8_t
+ *
+d©a
+;
+
+196 
+	`CLEAR
+ (
+»t
+);
+
+197 
+d©a
+ = 
+´•’d
+ ? 
+	`buf_´•’d
+ (
+buf
+, 
+size
+è: 
+	`buf_wr™e_®loc
+ (buf, size);
+
+198 ià(
+d©a
+)
+
+200 
+»t
+.
+ÿ·c™y
+ = 
+size
+;
+
+201 
+»t
+.
+d©a
+ = data;
+
+203  
+»t
+;
+
+204 
+	}
+}
+
+209 
+boÞ
+
+
+210 
+	$buf_´štf
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+fÜm©
+, ...)
+
+212 
+»t
+ = 
+çl£
+;
+
+213 ià(
+	`buf_defšed
+ (
+buf
+))
+
+215 
+va_li¡
+ 
+¬gli¡
+;
+
+216 
+ušt8_t
+ *
+±r
+ = 
+	`BEND
+ (
+buf
+);
+
+217 
+ÿp
+ = 
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+);
+
+219 ià(
+ÿp
+ > 0)
+
+221 
+¡©
+;
+
+222 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+223 
+¡©
+ = 
+	`v¢´štf
+ ((*)
+±r
+, 
+ÿp
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+224 
+	`va_’d
+ (
+¬gli¡
+);
+
+225 *(
+buf
+->
+d©a
+ + buf->
+ÿ·c™y
+ - 1) = 0;
+
+226 
+buf
+->
+Ën
+ +ð(è
+	`¡¾’
+ ((*)
+±r
+);
+
+227 ià(
+¡©
+ >ð0 && s�ˆ< 
+ÿp
+)
+
+228 
+»t
+ = 
+Œue
+;
+
+231  
+»t
+;
+
+232 
+	}
+}
+
+234 
+boÞ
+
+
+235 
+	$buf_puts
+(
+bufãr
+ *
+buf
+, cÚ¡ *
+¡r
+)
+
+237 
+»t
+ = 
+çl£
+;
+
+238 
+ušt8_t
+ *
+±r
+ = 
+	`BEND
+ (
+buf
+);
+
+239 
+ÿp
+ = 
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+);
+
+240 ià(
+ÿp
+ > 0)
+
+242 
+	`¡ºýyÁ
+ ((*)
+±r
+,
+¡r
+, 
+ÿp
+);
+
+243 *(
+buf
+->
+d©a
+ + buf->
+ÿ·c™y
+ - 1) = 0;
+
+244 
+buf
+->
+Ën
+ +ð(è
+	`¡¾’
+ ((*)
+±r
+);
+
+245 
+»t
+ = 
+Œue
+;
+
+247  
+»t
+;
+
+248 
+	}
+}
+
+261 
+boÞ
+ 
+	$Ý’v²_¢´štf
+(*
+¡r
+, 
+size_t
+ 
+size
+, cÚ¡ *
+fÜm©
+, ...)
+
+263 
+va_li¡
+ 
+¬gli¡
+;
+
+264 
+Ën
+ = -1;
+
+265 ià(
+size
+ > 0)
+
+267 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+268 
+Ën
+ = 
+	`v¢´štf
+ (
+¡r
+, 
+size
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+269 
+	`va_’d
+ (
+¬gli¡
+);
+
+270 
+¡r
+[
+size
+ - 1] = 0;
+
+272  (
+Ën
+ >ð0 &&†’ < 
+size
+);
+
+273 
+	}
+}
+
+280 
+	$buf_ÿŒunc
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+¡r
+)
+
+282 ià(
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+) <= 1)
+
+284 
+Ën
+ = (è
+	`¡¾’
+ (
+¡r
+) + 1;
+
+285 ià(
+Ën
+ < 
+	`buf_fÜw¬d_ÿ·c™y_tÙ®
+ (
+buf
+))
+
+287 
+	`¡ºýyÁ
+ ((*)(
+buf
+->
+d©a
+ + buf->
+ÿ·c™y
+ - 
+Ën
+), 
+¡r
+,†en);
+
+290 
+	}
+}
+
+296 
+	$cÚv”t_to_Úe_lše
+ (
+bufãr
+ *
+buf
+)
+
+298 
+ušt8_t
+ *
+ý
+ = 
+	`BPTR
+(
+buf
+);
+
+299 
+Ën
+ = 
+	`BLEN
+(
+buf
+);
+
+300 
+Ën
+--)
+
+302 ià(*
+ý
+ == '\n')
+
+303 *
+ý
+ = '|';
+
+304 ++
+ý
+;
+
+306 
+	}
+}
+
+310 
+	$buf_wr™e_¡ršg_fže
+ (cÚ¡ 
+bufãr
+ *
+buf
+, cÚ¡ *
+fž’ame
+, 
+fd
+)
+
+312 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ ((*è
+	`BPTR
+ (
+buf
+));
+
+313 cÚ¡ 
+size
+ = 
+	`wr™e
+ (
+fd
+, 
+	`BPTR
+ (
+buf
+), 
+Ën
+);
+
+314 ià(
+size
+ !ð
+Ën
+)
+
+315 
+	`msg
+ (
+M_ERR
+, "Wr™�”rÜ oÀfž�'%s'", 
+fž’ame
+);
+
+316 
+	}
+}
+
+323 #ifdeà
+DMALLOC
+
+
+324 
+	$gc_m®loc_debug
+ (
+size_t
+ 
+size
+, 
+boÞ
+ 
+þ—r
+, 
+gc_¬’a
+ *
+a
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+326 
+	$gc_m®loc
+ (
+size_t
+ 
+size
+, 
+boÞ
+ 
+þ—r
+, 
+gc_¬’a
+ *
+a
+)
+
+329 *
+»t
+;
+
+330 ià(
+a
+)
+
+332 
+gc_’Œy
+ *
+e
+;
+
+333 #ifdeà
+DMALLOC
+
+
+334 
+e
+ = (
+gc_’Œy
+ *è
+	`Ý’v²_dm®loc
+ (
+fže
+, 
+lše
+, 
+size
+ +  (gc_entry));
+
+336 
+e
+ = (
+gc_’Œy
+ *è
+	`m®loc
+ (
+size
+ +  (gc_entry));
+
+338 
+	`check_m®loc_»tuº
+ (
+e
+);
+
+339 
+»t
+ = (*è
+e
+ +  (
+gc_’Œy
+);
+
+340 
+e
+->
+Ãxt
+ = 
+a
+->
+li¡
+;
+
+341 
+a
+->
+li¡
+ = 
+e
+;
+
+345 #ifdeà
+DMALLOC
+
+
+346 
+»t
+ = 
+	`Ý’v²_dm®loc
+ (
+fže
+, 
+lše
+, 
+size
+);
+
+348 
+»t
+ = 
+	`m®loc
+ (
+size
+);
+
+350 
+	`check_m®loc_»tuº
+ (
+»t
+);
+
+352 #iâdeà
+ZERO_BUFFER_ON_ALLOC
+
+
+353 ià(
+þ—r
+)
+
+355 
+	`mem£t
+ (
+»t
+, 0, 
+size
+);
+
+356  
+»t
+;
+
+357 
+	}
+}
+
+360 
+	$x_gc_ä“
+ (
+gc_¬’a
+ *
+a
+)
+
+362 
+gc_’Œy
+ *
+e
+;
+
+363 
+e
+ = 
+a
+->
+li¡
+;
+
+364 
+a
+->
+li¡
+ = 
+NULL
+;
+
+366 
+e
+ !ð
+NULL
+)
+
+368 
+gc_’Œy
+ *
+Ãxt
+ = 
+e
+->next;
+
+369 
+	`ä“
+ (
+e
+);
+
+370 
+e
+ = 
+Ãxt
+;
+
+372 
+	}
+}
+
+378 
+	$gc_Œªsãr
+ (
+gc_¬’a
+ *
+de¡
+, gc_¬’¨*
+¤c
+)
+
+380 ià(
+de¡
+ && 
+¤c
+)
+
+382 
+gc_’Œy
+ *
+e
+ = 
+¤c
+->
+li¡
+;
+
+383 ià(
+e
+)
+
+385 
+e
+->
+Ãxt
+ !ð
+NULL
+)
+
+386 
+e
+ =ƒ->
+Ãxt
+;
+
+387 
+e
+->
+Ãxt
+ = 
+de¡
+->
+li¡
+;
+
+388 
+de¡
+->
+li¡
+ = 
+¤c
+->list;
+
+389 
+¤c
+->
+li¡
+ = 
+NULL
+;
+
+392 
+	}
+}
+
+399 
+	$fÜm©_hex_ex
+ (cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size
+, 
+maxou�ut
+,
+
+400 
+¥aû_b»ak
+, cÚ¡ * 
+£·¿tÜ
+,
+
+401 
+gc_¬’a
+ *
+gc
+)
+
+403 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (
+maxou�ut
+ ? maxoutput :
+
+404 ((
+size
+ * 2è+ (siz�/ 
+¥aû_b»ak
+è* (è
+	`¡¾’
+ (
+£·¿tÜ
+) + 2),
+
+405 
+gc
+);
+
+406 
+i
+;
+
+407 
+i
+ = 0; i < 
+size
+; ++i)
+
+409 ià(
+£·¿tÜ
+ && 
+i
+ && !(˜% 
+¥aû_b»ak
+))
+
+410 
+	`buf_´štf
+ (&
+out
+, "%s", 
+£·¿tÜ
+);
+
+411 
+	`buf_´štf
+ (&
+out
+, "%02x", 
+d©a
+[
+i
+]);
+
+413 
+	`buf_ÿŒunc
+ (&
+out
+, "[more...]");
+
+414  (*)
+out
+.
+d©a
+;
+
+415 
+	}
+}
+
+422 
+	$buf_rm�ž
+ (
+bufãr
+ *
+buf
+, 
+ušt8_t
+ 
+»move
+)
+
+424 
+ušt8_t
+ *
+ý
+ = 
+	`BLAST
+(
+buf
+);
+
+425 ià(
+ý
+ && *ý =ð
+»move
+)
+
+427 *
+ý
+ = '\0';
+
+428 --
+buf
+->
+Ën
+;
+
+430 
+	}
+}
+
+437 
+	$buf_nuÎ_‹rmš©e
+ (
+bufãr
+ *
+buf
+)
+
+439 *
+Ï¡
+ = (*è
+	`BLAST
+ (
+buf
+);
+
+440 ià(
+Ï¡
+ && *last == '\0')
+
+443 ià(!
+	`buf_§ã
+ (
+buf
+, 1))
+
+444 
+	`buf_šc_Ën
+ (
+buf
+, -1);
+
+446 
+	`buf_wr™e_u8
+ (
+buf
+, 0);
+
+447 
+	}
+}
+
+454 
+	$buf_chomp
+ (
+bufãr
+ *
+buf
+)
+
+456 
+Œue
+)
+
+458 *
+Ï¡
+ = (*è
+	`BLAST
+ (
+buf
+);
+
+459 ià(!
+Ï¡
+)
+
+461 ià(
+	`ch¬_þass
+ (*
+Ï¡
+, 
+CC_CRLF
+|
+CC_NULL
+))
+
+463 ià(!
+	`buf_šc_Ën
+ (
+buf
+, -1))
+
+469 
+	`buf_nuÎ_‹rmš©e
+ (
+buf
+);
+
+470 
+	}
+}
+
+473 
+	$sk�_Ëadšg_wh™e¥aû
+ (cÚ¡ *
+¡r
+)
+
+475 *
+¡r
+)
+
+477 cÚ¡ 
+c
+ = *
+¡r
+;
+
+478 ià(!(
+c
+ == ' ' || c == '\t'))
+
+480 ++
+¡r
+;
+
+482  
+¡r
+;
+
+483 
+	}
+}
+
+489 
+	$¡ršg_nuÎ_‹rmš©e
+ (*
+¡r
+, 
+Ën
+, 
+ÿ·c™y
+)
+
+491 
+	`ASSERT
+ (
+Ën
+ >ð0 &&†’ <ð
+ÿ·c™y
+ && capacity > 0);
+
+492 ià(
+Ën
+ < 
+ÿ·c™y
+)
+
+493 *(
+¡r
+ + 
+Ën
+) = '\0';
+
+494 ià(
+Ën
+ =ð
+ÿ·c™y
+)
+
+495 *(
+¡r
+ + 
+Ën
+ - 1) = '\0';
+
+496 
+	}
+}
+
+502 
+	$chomp
+ (*
+¡r
+)
+
+504 
+	`rm_Œažšg_ch¬s
+ (
+¡r
+, "\r\n");
+
+505 
+	}
+}
+
+511 
+	$rm_Œažšg_ch¬s
+ (*
+¡r
+, cÚ¡ *
+wh©_to_d–‘e
+)
+
+513 
+boÞ
+ 
+modif›d
+;
+
+515 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+¡r
+);
+
+516 
+modif›d
+ = 
+çl£
+;
+
+517 ià(
+Ën
+ > 0)
+
+519 *
+ý
+ = 
+¡r
+ + (
+Ën
+ - 1);
+
+520 ià(
+	`¡rchr
+ (
+wh©_to_d–‘e
+, *
+ý
+è!ð
+NULL
+)
+
+522 *
+ý
+ = '\0';
+
+523 
+modif›d
+ = 
+Œue
+;
+
+526 } 
+modif›d
+);
+
+527 
+	}
+}
+
+533 #ifdeà
+DMALLOC
+
+
+534 
+	$¡ršg_®loc_debug
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+536 
+	$¡ršg_®loc
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+539 ià(
+¡r
+)
+
+541 cÚ¡ 
+n
+ = 
+	`¡¾’
+ (
+¡r
+) + 1;
+
+542 *
+»t
+;
+
+544 ià(
+gc
+) {
+
+545 #ifdeà
+DMALLOC
+
+
+546 
+»t
+ = (*è
+	`gc_m®loc_debug
+ (
+n
+, 
+çl£
+, 
+gc
+, 
+fže
+, 
+lše
+);
+
+548 
+»t
+ = (*è
+	`gc_m®loc
+ (
+n
+, 
+çl£
+, 
+gc
+);
+
+555 #ifdeà
+DMALLOC
+
+
+556 
+»t
+ = 
+	`Ý’v²_dm®loc
+ (
+fže
+, 
+lše
+, 
+n
+);
+
+557 
+	`mem£t
+(
+»t
+, 0, 
+n
+);
+
+559 
+»t
+ = 
+	`ÿÎoc
+(1, 
+n
+);
+
+561 
+	`check_m®loc_»tuº
+(
+»t
+);
+
+563 
+	`memýy
+ (
+»t
+, 
+¡r
+, 
+n
+);
+
+564  
+»t
+;
+
+567  
+NULL
+;
+
+568 
+	}
+}
+
+574 
+	$¡ršg_þ—r
+ (*
+¡r
+)
+
+576 ià(
+¡r
+)
+
+578 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+¡r
+);
+
+579 ià(
+Ën
+ > 0)
+
+580 
+	`mem£t
+ (
+¡r
+, 0, 
+Ën
+);
+
+582 
+	}
+}
+
+588 
+	$¡ršg_¬¿y_Ën
+ (cÚ¡ **
+¬¿y
+)
+
+590 
+i
+ = 0;
+
+591 ià(
+¬¿y
+)
+
+593 
+¬¿y
+[
+i
+])
+
+594 ++
+i
+;
+
+596  
+i
+;
+
+597 
+	}
+}
+
+600 
+	$´št_¬gv
+ (cÚ¡ **
+p
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ 
+æags
+)
+
+602 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+603 
+i
+ = 0;
+
+606 cÚ¡ *
+ý
+ = *
+p
+++;
+
+607 ià(!
+ý
+)
+
+609 ià(
+i
+)
+
+610 
+	`buf_´štf
+ (&
+out
+, " ");
+
+611 ià(
+æags
+ & 
+PA_BRACKET
+)
+
+612 
+	`buf_´štf
+ (&
+out
+, "[%s]", 
+ý
+);
+
+614 
+	`buf_´štf
+ (&
+out
+, "%s", 
+ý
+);
+
+615 ++
+i
+;
+
+617  
+	`BSTR
+ (&
+out
+);
+
+618 
+	}
+}
+
+623 
+	gbufãr
+
+
+624 #ifdeà
+DMALLOC
+
+
+625 
+	$¡ršg_®loc_buf_debug
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+627 
+	$¡ršg_®loc_buf
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+630 
+bufãr
+ 
+buf
+;
+
+632 
+	`ASSERT
+ (
+¡r
+);
+
+634 #ifdeà
+DMALLOC
+
+
+635 
+	`buf_£t_»ad
+ (&
+buf
+, (
+ušt8_t
+*è
+	`¡ršg_®loc_debug
+ (
+¡r
+, 
+gc
+, 
+fže
+, 
+lše
+), 
+	`¡¾’
+ (str) + 1);
+
+637 
+	`buf_£t_»ad
+ (&
+buf
+, (
+ušt8_t
+*è
+	`¡ršg_®loc
+ (
+¡r
+, 
+gc
+), 
+	`¡¾’
+ (str) + 1);
+
+640 ià(
+buf
+.
+Ën
+ > 0)
+
+641 --
+buf
+.
+Ën
+;
+
+643  
+buf
+;
+
+644 
+	}
+}
+
+650 
+boÞ
+
+
+651 
+	$buf_¡ršg_m©ch_h—d_¡r
+ (cÚ¡ 
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+)
+
+653 cÚ¡ 
+size
+ = 
+	`¡¾’
+ (
+m©ch
+);
+
+654 ià(
+size
+ < 0 || siz�> 
+¤c
+->
+Ën
+)
+
+655  
+çl£
+;
+
+656  
+	`memcmp
+ (
+	`BPTR
+ (
+¤c
+), 
+m©ch
+, 
+size
+) == 0;
+
+657 
+	}
+}
+
+659 
+boÞ
+
+
+660 
+	$buf_¡ršg_com·»_advªû
+ (
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+)
+
+662 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (
+¤c
+, 
+m©ch
+))
+
+664 
+	`buf_advªû
+ (
+¤c
+, 
+	`¡¾’
+ (
+m©ch
+));
+
+665  
+Œue
+;
+
+668  
+çl£
+;
+
+669 
+	}
+}
+
+672 
+	$buf_sub¡ršg_Ën
+ (cÚ¡ 
+bufãr
+ *
+buf
+, 
+d–im
+)
+
+674 
+i
+ = 0;
+
+675 
+bufãr
+ 
+tmp
+ = *
+buf
+;
+
+676 
+c
+;
+
+678 (
+c
+ = 
+	`buf_»ad_u8
+ (&
+tmp
+)) >= 0)
+
+680 ++
+i
+;
+
+681 ià(
+c
+ =ð
+d–im
+)
+
+682  
+i
+;
+
+685 
+	}
+}
+
+691 
+boÞ
+
+
+692 
+	$buf_·r£
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+d–im
+, *
+lše
+, cÚ¡ 
+size
+)
+
+694 
+boÞ
+ 
+eÞ
+ = 
+çl£
+;
+
+695 
+n
+ = 0;
+
+696 
+c
+;
+
+698 
+	`ASSERT
+ (
+size
+ > 0);
+
+702 
+c
+ = 
+	`buf_»ad_u8
+ (
+buf
+);
+
+703 ià(
+c
+ < 0)
+
+704 
+eÞ
+ = 
+Œue
+;
+
+705 ià(
+c
+ <ð0 || c =ð
+d–im
+)
+
+706 
+c
+ = 0;
+
+707 ià(
+n
+ >ð
+size
+)
+
+709 
+lše
+[
+n
+++] = 
+c
+;
+
+711 
+c
+);
+
+713 
+lše
+[
+size
+-1] = '\0';
+
+714  !(
+eÞ
+ && !
+	`¡¾’
+ (
+lše
+));
+
+715 
+	}
+}
+
+721 
+	$Å
+ (cÚ¡ *
+¡r
+)
+
+723 ià(
+¡r
+)
+
+724  
+¡r
+;
+
+727 
+	}
+}
+
+733 
+boÞ
+
+
+734 
+	$ch¬_þass
+ (cÚ¡ 
+c
+, cÚ¡ 
+æags
+)
+
+736 ià(!
+æags
+)
+
+737  
+çl£
+;
+
+738 ià(
+æags
+ & 
+CC_ANY
+)
+
+739  
+Œue
+;
+
+741 ià((
+æags
+ & 
+CC_NULL
+è&& 
+c
+ == '\0')
+
+742  
+Œue
+;
+
+744 ià((
+æags
+ & 
+CC_ALNUM
+è&& 
+	`i§Êum
+ (
+c
+))
+
+745  
+Œue
+;
+
+746 ià((
+æags
+ & 
+CC_ALPHA
+è&& 
+	`i§Íha
+ (
+c
+))
+
+747  
+Œue
+;
+
+748 ià((
+æags
+ & 
+CC_ASCII
+è&& 
+	`i§scii
+ (
+c
+))
+
+749  
+Œue
+;
+
+750 ià((
+æags
+ & 
+CC_CNTRL
+è&& 
+	`isúŒl
+ (
+c
+))
+
+751  
+Œue
+;
+
+752 ià((
+æags
+ & 
+CC_DIGIT
+è&& 
+	`isdig™
+ (
+c
+))
+
+753  
+Œue
+;
+
+754 ià((
+æags
+ & 
+CC_PRINT
+è&& (
+c
+ >= 32 && c != 127))
+
+755  
+Œue
+;
+
+756 ià((
+æags
+ & 
+CC_PUNCT
+è&& 
+	`i¥unù
+ (
+c
+))
+
+757  
+Œue
+;
+
+758 ià((
+æags
+ & 
+CC_SPACE
+è&& 
+	`is¥aû
+ (
+c
+))
+
+759  
+Œue
+;
+
+760 ià((
+æags
+ & 
+CC_XDIGIT
+è&& 
+	`isxdig™
+ (
+c
+))
+
+761  
+Œue
+;
+
+763 ià((
+æags
+ & 
+CC_BLANK
+è&& (
+c
+ == ' ' || c == '\t'))
+
+764  
+Œue
+;
+
+765 ià((
+æags
+ & 
+CC_NEWLINE
+è&& 
+c
+ == '\n')
+
+766  
+Œue
+;
+
+767 ià((
+æags
+ & 
+CC_CR
+è&& 
+c
+ == '\r')
+
+768  
+Œue
+;
+
+770 ià((
+æags
+ & 
+CC_BACKSLASH
+è&& 
+c
+ == '\\')
+
+771  
+Œue
+;
+
+772 ià((
+æags
+ & 
+CC_UNDERBAR
+è&& 
+c
+ == '_')
+
+773  
+Œue
+;
+
+774 ià((
+æags
+ & 
+CC_DASH
+è&& 
+c
+ == '-')
+
+775  
+Œue
+;
+
+776 ià((
+æags
+ & 
+CC_DOT
+è&& 
+c
+ == '.')
+
+777  
+Œue
+;
+
+778 ià((
+æags
+ & 
+CC_COMMA
+è&& 
+c
+ == ',')
+
+779  
+Œue
+;
+
+780 ià((
+æags
+ & 
+CC_COLON
+è&& 
+c
+ == ':')
+
+781  
+Œue
+;
+
+782 ià((
+æags
+ & 
+CC_SLASH
+è&& 
+c
+ == '/')
+
+783  
+Œue
+;
+
+784 ià((
+æags
+ & 
+CC_SINGLE_QUOTE
+è&& 
+c
+ == '\'')
+
+785  
+Œue
+;
+
+786 ià((
+æags
+ & 
+CC_DOUBLE_QUOTE
+è&& 
+c
+ == '\"')
+
+787  
+Œue
+;
+
+788 ià((
+æags
+ & 
+CC_REVERSE_QUOTE
+è&& 
+c
+ == '`')
+
+789  
+Œue
+;
+
+790 ià((
+æags
+ & 
+CC_AT
+è&& 
+c
+ == '@')
+
+791  
+Œue
+;
+
+792 ià((
+æags
+ & 
+CC_EQUAL
+è&& 
+c
+ == '=')
+
+793  
+Œue
+;
+
+794 ià((
+æags
+ & 
+CC_LESS_THAN
+è&& 
+c
+ == '<')
+
+795  
+Œue
+;
+
+796 ià((
+æags
+ & 
+CC_GREATER_THAN
+è&& 
+c
+ == '>')
+
+797  
+Œue
+;
+
+798 ià((
+æags
+ & 
+CC_PIPE
+è&& 
+c
+ == '|')
+
+799  
+Œue
+;
+
+800 ià((
+æags
+ & 
+CC_QUESTION_MARK
+è&& 
+c
+ == '?')
+
+801  
+Œue
+;
+
+802 ià((
+æags
+ & 
+CC_ASTERISK
+è&& 
+c
+ == '*')
+
+803  
+Œue
+;
+
+805  
+çl£
+;
+
+806 
+	}
+}
+
+808 
+šlše
+ 
+boÞ
+
+
+809 
+	$ch¬_šc_exc
+ (cÚ¡ 
+c
+, cÚ¡ 
+šþusive
+, cÚ¡ 
+exþusive
+)
+
+811  
+	`ch¬_þass
+ (
+c
+, 
+šþusive
+è&& !ch¬_þas (c, 
+exþusive
+);
+
+812 
+	}
+}
+
+814 
+boÞ
+
+
+815 
+	$¡ršg_þass
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+šþusive
+, cÚ¡ 
+exþusive
+)
+
+817 
+c
+;
+
+818 
+	`ASSERT
+ (
+¡r
+);
+
+819 (
+c
+ = *
+¡r
+++))
+
+821 ià(!
+	`ch¬_šc_exc
+ (
+c
+, 
+šþusive
+, 
+exþusive
+))
+
+822  
+çl£
+;
+
+824  
+Œue
+;
+
+825 
+	}
+}
+
+831 
+boÞ
+
+
+832 
+	$¡ršg_mod
+ (*
+¡r
+, cÚ¡ 
+šþusive
+, cÚ¡ 
+exþusive
+, cÚ¡ 
+»¶aû
+)
+
+834 cÚ¡ *
+š
+ = 
+¡r
+;
+
+835 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+837 
+	`ASSERT
+ (
+¡r
+);
+
+839 
+Œue
+)
+
+841 
+c
+ = *
+š
+++;
+
+842 ià(
+c
+)
+
+844 ià(!
+	`ch¬_šc_exc
+ (
+c
+, 
+šþusive
+, 
+exþusive
+))
+
+846 
+c
+ = 
+»¶aû
+;
+
+847 
+»t
+ = 
+çl£
+;
+
+849 ià(
+c
+)
+
+850 *
+¡r
+++ = 
+c
+;
+
+854 *
+¡r
+ = '\0';
+
+858  
+»t
+;
+
+859 
+	}
+}
+
+862 
+	$¡ršg_mod_cÚ¡
+ (cÚ¡ *
+¡r
+,
+
+863 cÚ¡ 
+šþusive
+,
+
+864 cÚ¡ 
+exþusive
+,
+
+865 cÚ¡ 
+»¶aû
+,
+
+866 
+gc_¬’a
+ *
+gc
+)
+
+868 ià(
+¡r
+)
+
+870 *
+buf
+ = 
+	`¡ršg_®loc
+ (
+¡r
+, 
+gc
+);
+
+871 
+	`¡ršg_mod
+ (
+buf
+, 
+šþusive
+, 
+exþusive
+, 
+»¶aû
+);
+
+872  
+buf
+;
+
+875  
+NULL
+;
+
+876 
+	}
+}
+
+879 
+	$¡ršg_»¶aû_Ëadšg
+ (*
+¡r
+, cÚ¡ 
+m©ch
+, cÚ¡ 
+»¶aû
+)
+
+881 
+	`ASSERT
+ (
+m©ch
+ != '\0');
+
+882 *
+¡r
+)
+
+884 ià(*
+¡r
+ =ð
+m©ch
+)
+
+885 *
+¡r
+ = 
+»¶aû
+;
+
+888 ++
+¡r
+;
+
+890 
+	}
+}
+
+892 #ifdeà
+CHARACTER_CLASS_DEBUG
+
+
+894 
+	#CC_INCLUDE
+ (
+CC_PRINT
+)
+
+	)
+
+895 
+	#CC_EXCLUDE
+ (0)
+
+	)
+
+896 
+	#CC_REPLACE
+ ('.')
+
+	)
+
+899 
+	$ch¬aù”_þass_debug
+ ()
+
+901 
+buf
+[256];
+
+903 
+	`fg‘s
+ (
+buf
+,  (buf), 
+¡dš
+è!ð
+NULL
+)
+
+905 
+	`¡ršg_mod
+ (
+buf
+, 
+CC_INCLUDE
+, 
+CC_EXCLUDE
+, 
+CC_REPLACE
+);
+
+906 
+	`´štf
+ ("%s", 
+buf
+);
+
+908 
+	}
+}
+
+912 #ifdeà
+VERIFY_ALIGNMENT
+
+
+914 
+	$v®ign4
+ (cÚ¡ 
+bufãr
+ *
+buf
+, cÚ¡ *
+fže
+, cÚ¡ 
+lše
+)
+
+916 ià(
+buf
+ && buf->
+Ën
+)
+
+918 
+msgËv–
+ = 
+D_ALIGN_DEBUG
+;
+
+919 cÚ¡ 
+u
+ = (è
+	`BPTR
+ (
+buf
+);
+
+921 ià(
+u
+ & (
+PAYLOAD_ALIGN
+-1))
+
+922 
+msgËv–
+ = 
+D_ALIGN_ERRORS
+;
+
+924 
+	`msg
+ (
+msgËv–
+, "%sAlignm’ˆ© %s/%d…Œ=" 
+±r_fÜm©
+ " OLC=%d/%d/%d I=%s/%d",
+
+925 (
+msgËv–
+ =ð
+D_ALIGN_ERRORS
+) ? "ERROR: " : "",
+
+926 
+fže
+,
+
+927 
+lše
+,
+
+928 (
+±r_ty³
+)
+buf
+->
+d©a
+,
+
+929 
+buf
+->
+off£t
+,
+
+930 
+buf
+->
+Ën
+,
+
+931 
+buf
+->
+ÿ·c™y
+,
+
+932 
+	`buf_debug_fže
+ (
+buf
+),
+
+933 
+	`buf_debug_lše
+ (
+buf
+));
+
+935 
+	}
+}
+
+942 #ifdeà
+ENABLE_BUFFER_LIST
+
+
+944 
+bufãr_li¡
+ *
+
+945 
+	$bufãr_li¡_Ãw
+ (cÚ¡ 
+max_size
+)
+
+947 
+bufãr_li¡
+ *
+»t
+;
+
+948 
+	`ALLOC_OBJ_CLEAR
+ (
+»t
+, 
+bufãr_li¡
+);
+
+949 
+»t
+->
+max_size
+ = max_size;
+
+950 
+»t
+->
+size
+ = 0;
+
+951  
+»t
+;
+
+952 
+	}
+}
+
+955 
+	$bufãr_li¡_ä“
+ (
+bufãr_li¡
+ *
+Þ
+)
+
+957 ià(
+Þ
+)
+
+959 
+	`bufãr_li¡_»£t
+ (
+Þ
+);
+
+960 
+	`ä“
+ (
+Þ
+);
+
+962 
+	}
+}
+
+964 
+boÞ
+
+
+965 
+	$bufãr_li¡_defšed
+ (cÚ¡ 
+bufãr_li¡
+ *
+Þ
+)
+
+967  
+Þ
+ && ol->
+h—d
+ !ð
+NULL
+;
+
+968 
+	}
+}
+
+971 
+	$bufãr_li¡_»£t
+ (
+bufãr_li¡
+ *
+Þ
+)
+
+973 
+bufãr_’Œy
+ *
+e
+ = 
+Þ
+->
+h—d
+;
+
+974 
+e
+)
+
+976 
+bufãr_’Œy
+ *
+Ãxt
+ = 
+e
+->next;
+
+977 
+	`ä“_buf
+ (&
+e
+->
+buf
+);
+
+978 
+	`ä“
+ (
+e
+);
+
+979 
+e
+ = 
+Ãxt
+;
+
+981 
+Þ
+->
+h—d
+ = ol->
+�ž
+ = 
+NULL
+;
+
+982 
+Þ
+->
+size
+ = 0;
+
+983 
+	}
+}
+
+986 
+	$bufãr_li¡_push
+ (
+bufãr_li¡
+ *
+Þ
+, cÚ¡ *
+¡r
+)
+
+988 ià(
+¡r
+)
+
+990 cÚ¡ 
+size_t
+ 
+Ën
+ = 
+	`¡¾’
+ ((cÚ¡ *)
+¡r
+);
+
+991 
+bufãr_’Œy
+ *
+e
+ = 
+	`bufãr_li¡_push_d©a
+ (
+Þ
+, 
+¡r
+, 
+Ën
++1);
+
+992 ià(
+e
+)
+
+993 
+e
+->
+buf
+.
+Ën
+ =†en;
+
+995 
+	}
+}
+
+997 
+bufãr_’Œy
+ *
+
+998 
+	$bufãr_li¡_push_d©a
+ (
+bufãr_li¡
+ *
+Þ
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size_t
+ 
+size
+)
+
+1000 
+bufãr_’Œy
+ *
+e
+ = 
+NULL
+;
+
+1001 ià(
+d©a
+ && (!
+Þ
+->
+max_size
+ || ol->
+size
+ < ol->max_size))
+
+1003 
+	`ALLOC_OBJ_CLEAR
+ (
+e
+, 
+bufãr_’Œy
+);
+
+1005 ++
+Þ
+->
+size
+;
+
+1006 ià(
+Þ
+->
+�ž
+)
+
+1008 
+	`ASSERT
+ (
+Þ
+->
+h—d
+);
+
+1009 
+Þ
+->
+�ž
+->
+Ãxt
+ = 
+e
+;
+
+1013 
+	`ASSERT
+ (!
+Þ
+->
+h—d
+);
+
+1014 
+Þ
+->
+h—d
+ = 
+e
+;
+
+1016 
+e
+->
+buf
+ = 
+	`®loc_buf
+ (
+size
+);
+
+1017 
+	`memýy
+ (
+e
+->
+buf
+.
+d©a
+, d©a, 
+size
+);
+
+1018 
+e
+->
+buf
+.
+Ën
+ = ()
+size
+;
+
+1019 
+Þ
+->
+�ž
+ = 
+e
+;
+
+1021  
+e
+;
+
+1022 
+	}
+}
+
+1024 
+bufãr
+ *
+
+1025 
+	$bufãr_li¡_³ek
+ (
+bufãr_li¡
+ *
+Þ
+)
+
+1027 ià(
+Þ
+ && ol->
+h—d
+)
+
+1028  &
+Þ
+->
+h—d
+->
+buf
+;
+
+1030  
+NULL
+;
+
+1031 
+	}
+}
+
+1034 
+	$bufãr_li¡_agg»g©e
+ (
+bufãr_li¡
+ *
+bl
+, cÚ¡ 
+size_t
+ 
+max
+)
+
+1036 ià(
+bl
+->
+h—d
+)
+
+1038 
+bufãr_’Œy
+ *
+mÜe
+ = 
+bl
+->
+h—d
+;
+
+1039 
+size_t
+ 
+size
+ = 0;
+
+1040 
+couÁ
+ = 0;
+
+1041 
+couÁ
+ = 0; 
+mÜe
+ && 
+size
+ <ð
+max
+; ++count)
+
+1043 
+size
+ +ð
+	`BLEN
+(&
+mÜe
+->
+buf
+);
+
+1044 
+mÜe
+ = mÜe->
+Ãxt
+;
+
+1047 ià(
+couÁ
+ >= 2)
+
+1049 
+i
+;
+
+1050 
+bufãr_’Œy
+ *
+e
+ = 
+bl
+->
+h—d
+, *
+f
+;
+
+1052 
+	`ALLOC_OBJ_CLEAR
+ (
+f
+, 
+bufãr_’Œy
+);
+
+1053 
+f
+->
+buf
+.
+d©a
+ = 
+	`m®loc
+ (
+size
+);
+
+1054 
+	`check_m®loc_»tuº
+ (
+f
+->
+buf
+.
+d©a
+);
+
+1055 
+f
+->
+buf
+.
+ÿ·c™y
+ = 
+size
+;
+
+1056 
+i
+ = 0; 
+e
+ && i < 
+couÁ
+; ++i)
+
+1058 
+bufãr_’Œy
+ *
+Ãxt
+ = 
+e
+->next;
+
+1059 
+	`buf_cÝy
+ (&
+f
+->
+buf
+, &
+e
+->buf);
+
+1060 
+	`ä“_buf
+ (&
+e
+->
+buf
+);
+
+1061 
+	`ä“
+ (
+e
+);
+
+1062 
+e
+ = 
+Ãxt
+;
+
+1064 
+bl
+->
+h—d
+ = 
+f
+;
+
+1065 
+f
+->
+Ãxt
+ = 
+mÜe
+;
+
+1066 ià(!
+mÜe
+)
+
+1067 
+bl
+->
+�ž
+ = 
+f
+;
+
+1070 
+	}
+}
+
+1073 
+	$bufãr_li¡_pÝ
+ (
+bufãr_li¡
+ *
+Þ
+)
+
+1075 ià(
+Þ
+ && ol->
+h—d
+)
+
+1077 
+bufãr_’Œy
+ *
+e
+ = 
+Þ
+->
+h—d
+->
+Ãxt
+;
+
+1078 
+	`ä“_buf
+ (&
+Þ
+->
+h—d
+->
+buf
+);
+
+1079 
+	`ä“
+ (
+Þ
+->
+h—d
+);
+
+1080 
+Þ
+->
+h—d
+ = 
+e
+;
+
+1081 --
+Þ
+->
+size
+;
+
+1082 ià(!
+e
+)
+
+1083 
+Þ
+->
+�ž
+ = 
+NULL
+;
+
+1085 
+	}
+}
+
+1088 
+	$bufãr_li¡_advªû
+ (
+bufãr_li¡
+ *
+Þ
+, 
+n
+)
+
+1090 ià(
+Þ
+->
+h—d
+)
+
+1092 
+bufãr
+ *
+buf
+ = &
+Þ
+->
+h—d
+->buf;
+
+1093 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 
+n
+));
+
+1094 ià(!
+	`BLEN
+ (
+buf
+))
+
+1095 
+	`bufãr_li¡_pÝ
+ (
+Þ
+);
+
+1097 
+	}
+}
+
+1099 
+bufãr_li¡
+ *
+
+1100 
+	$bufãr_li¡_fže
+ (cÚ¡ *
+â
+, 
+max_lše_Ën
+)
+
+1102 
+FILE
+ *
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+â
+, "r");
+
+1103 
+bufãr_li¡
+ *
+bl
+ = 
+NULL
+;
+
+1105 ià(
+å
+)
+
+1107 *
+lše
+ = (*è
+	`m®loc
+ (
+max_lše_Ën
+);
+
+1108 ià(
+lše
+)
+
+1110 
+bl
+ = 
+	`bufãr_li¡_Ãw
+ (0);
+
+1111 
+	`fg‘s
+ (
+lše
+, 
+max_lše_Ën
+, 
+å
+è!ð
+NULL
+)
+
+1112 
+	`bufãr_li¡_push
+ (
+bl
+, (*)
+lše
+);
+
+1113 
+	`ä“
+ (
+lše
+);
+
+1115 
+	`fþo£
+ (
+å
+);
+
+1117  
+bl
+;
+
+1118 
+	}
+}
+
+	@buffer.h
+
+25 #iâdeà
+BUFFER_H
+
+
+26 
+	#BUFFER_H
+
+
+	)
+
+28 
+	~"basic.h
+"
+
+29 
+	~"”rÜ.h
+"
+
+31 
+	#BUF_SIZE_MAX
+ 1000000
+
+	)
+
+42 #ifdeà
+VERIFY_ALIGNMENT
+
+
+43 
+	#BUF_INIT_TRACKING
+
+
+	)
+
+61 
+	sbufãr
+
+
+63 
+	mÿ·c™y
+;
+
+65 
+	moff£t
+;
+
+67 
+	mËn
+;
+
+69 
+ušt8_t
+ *
+	md©a
+;
+
+71 #ifdeà
+BUF_INIT_TRACKING
+
+
+72 cÚ¡ *
+	mdebug_fže
+;
+
+73 
+	mdebug_lše
+;
+
+88 
+	sgc_’Œy
+
+
+90 
+gc_’Œy
+ *
+	mÃxt
+;
+
+105 
+	sgc_¬’a
+
+
+107 
+gc_’Œy
+ *
+	mli¡
+;
+
+112 
+	#BPTR
+(
+buf
+è(
+	`buf_b±r
+(buf))
+
+	)
+
+113 
+	#BEND
+(
+buf
+è(
+	`buf_b’d
+(buf))
+
+	)
+
+114 
+	#BLAST
+(
+buf
+è(
+	`buf_bÏ¡
+(buf))
+
+	)
+
+115 
+	#BLEN
+(
+buf
+è(
+	`buf_Ën
+(buf))
+
+	)
+
+116 
+	#BDEF
+(
+buf
+è(
+	`buf_defšed
+(buf))
+
+	)
+
+117 
+	#BSTR
+(
+buf
+è(
+	`buf_¡r
+(buf))
+
+	)
+
+118 
+	#BCAP
+(
+buf
+è(
+	`buf_fÜw¬d_ÿ·c™y
+ (buf))
+
+	)
+
+120 
+buf_þ—r
+ (
+bufãr
+ *
+buf
+);
+
+122 
+bufãr
+ 
+þ—r_buf
+ ();
+
+123 
+ä“_buf
+ (
+bufãr
+ *
+buf
+);
+
+125 
+boÞ
+ 
+buf_assign
+ (
+bufãr
+ *
+de¡
+, cÚ¡ bufã¸*
+¤c
+);
+
+127 
+¡ršg_þ—r
+ (*
+¡r
+);
+
+128 
+¡ršg_¬¿y_Ën
+ (cÚ¡ **
+¬¿y
+);
+
+130 
+size_t
+ 
+¬¿y_muÉ_§ã
+ (cÚ¡ size_ˆ
+m1
+, cÚ¡ size_ˆ
+m2
+, cÚ¡ size_ˆ
+exŒa
+);
+
+132 
+	#PA_BRACKET
+ (1<<0)
+
+	)
+
+133 *
+´št_¬gv
+ (cÚ¡ **
+p
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ 
+æags
+);
+
+135 
+buf_size_”rÜ
+ (cÚ¡ 
+size_t
+ 
+size
+);
+
+139 #ifdeà
+DMALLOC
+
+
+141 
+	#®loc_buf
+(
+size
+è
+	`®loc_buf_debug
+ (size, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+142 
+	#®loc_buf_gc
+(
+size
+, 
+gc
+è
+	`®loc_buf_gc_debug
+ (size, gc, 
+__FILE__
+, 
+__LINE__
+);
+
+	)
+
+143 
+	#þÚe_buf
+(
+buf
+è
+	`þÚe_buf_debug
+ (buf, 
+__FILE__
+, 
+__LINE__
+);
+
+	)
+
+144 
+	#gc_m®loc
+(
+size
+, 
+þ—r
+, 
+¬’a
+è
+	`gc_m®loc_debug
+ (size, cË¬,‡»Ç, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+145 
+	#¡ršg_®loc
+(
+¡r
+, 
+gc
+è
+	`¡ršg_®loc_debug
+ (¡r, gc, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+146 
+	#¡ršg_®loc_buf
+(
+¡r
+, 
+gc
+è
+	`¡ršg_®loc_buf_debug
+ (¡r, gc, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+148 
+bufãr
+ 
+®loc_buf_debug
+ (
+size_t
+ 
+size
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+149 
+bufãr
+ 
+®loc_buf_gc_debug
+ (
+size_t
+ 
+size
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+150 
+bufãr
+ 
+þÚe_buf_debug
+ (cÚ¡ bufãr* 
+buf
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+151 *
+gc_m®loc_debug
+ (
+size_t
+ 
+size
+, 
+boÞ
+ 
+þ—r
+, 
+gc_¬’a
+ *
+a
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+152 *
+¡ršg_®loc_debug
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+153 
+bufãr
+ 
+¡ršg_®loc_buf_debug
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+157 
+bufãr
+ 
+®loc_buf
+ (
+size_t
+ 
+size
+);
+
+158 
+bufãr
+ 
+®loc_buf_gc
+ (
+size_t
+ 
+size
+, 
+gc_¬’a
+ *
+gc
+);
+
+159 
+bufãr
+ 
+þÚe_buf
+ (cÚ¡ bufãr* 
+buf
+);
+
+160 *
+gc_m®loc
+ (
+size_t
+ 
+size
+, 
+boÞ
+ 
+þ—r
+, 
+gc_¬’a
+ *
+a
+);
+
+161 *
+¡ršg_®loc
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+);
+
+162 
+bufãr
+ 
+¡ršg_®loc_buf
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+);
+
+166 #ifdeà
+BUF_INIT_TRACKING
+
+
+167 
+	#buf_š™
+(
+buf
+, 
+off£t
+è
+	`buf_š™_debug
+ (buf, off£t, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+168 
+boÞ
+ 
+buf_š™_debug
+ (
+bufãr
+ *
+buf
+, 
+off£t
+, cÚ¡ *
+fže
+, 
+lše
+);
+
+170 
+	#buf_š™
+(
+buf
+, 
+off£t
+è
+	`buf_š™_dowÜk
+ (buf, off£t)
+
+	)
+
+176 
+šlše
+ 
+boÞ
+
+
+177 
+	$buf_defšed
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+179  
+buf
+->
+d©a
+ !ð
+NULL
+;
+
+180 
+	}
+}
+
+182 
+šlše
+ 
+boÞ
+
+
+183 
+	$buf_v®id
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+185  
+	`lik–y
+ (
+buf
+->
+d©a
+ !ð
+NULL
+è&&†ik–y (buf->
+Ën
+ >= 0);
+
+186 
+	}
+}
+
+188 
+šlše
+ 
+ušt8_t
+ *
+
+189 
+	$buf_b±r
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+191 ià(
+	`buf_v®id
+ (
+buf
+))
+
+192  
+buf
+->
+d©a
+ + buf->
+off£t
+;
+
+194  
+NULL
+;
+
+195 
+	}
+}
+
+198 
+	$buf_Ën
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+200 ià(
+	`buf_v®id
+ (
+buf
+))
+
+201  
+buf
+->
+Ën
+;
+
+204 
+	}
+}
+
+206 
+šlše
+ 
+ušt8_t
+ *
+
+207 
+	$buf_b’d
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+209  
+	`buf_b±r
+ (
+buf
+è+ 
+	`buf_Ën
+ (buf);
+
+210 
+	}
+}
+
+212 
+šlše
+ 
+ušt8_t
+ *
+
+213 
+	$buf_bÏ¡
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+215 ià(
+	`buf_Ën
+ (
+buf
+) > 0)
+
+216  
+	`buf_b±r
+ (
+buf
+è+ 
+	`buf_Ën
+ (buf) - 1;
+
+218  
+NULL
+;
+
+219 
+	}
+}
+
+221 
+šlše
+ 
+boÞ
+
+
+222 
+	$buf_size_v®id
+ (cÚ¡ 
+size_t
+ 
+size
+)
+
+224  
+	`lik–y
+ (
+size
+ < 
+BUF_SIZE_MAX
+);
+
+225 
+	}
+}
+
+227 
+šlše
+ 
+boÞ
+
+
+228 
+	$buf_size_v®id_sigÃd
+ (cÚ¡ 
+size
+)
+
+230  
+	`lik–y
+ (
+size
+ >ð-
+BUF_SIZE_MAX
+) &&†ikely (size < BUF_SIZE_MAX);
+
+231 
+	}
+}
+
+233 
+šlše
+ *
+
+234 
+	$buf_¡r
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+236  (*)
+	`buf_b±r
+(
+buf
+);
+
+237 
+	}
+}
+
+239 
+šlše
+ 
+
+240 
+	$buf_»£t
+ (
+bufãr
+ *
+buf
+)
+
+242 
+buf
+->
+ÿ·c™y
+ = 0;
+
+243 
+buf
+->
+off£t
+ = 0;
+
+244 
+buf
+->
+Ën
+ = 0;
+
+245 
+buf
+->
+d©a
+ = 
+NULL
+;
+
+246 
+	}
+}
+
+248 
+šlše
+ 
+
+249 
+	$buf_»£t_Ën
+ (
+bufãr
+ *
+buf
+)
+
+251 
+buf
+->
+Ën
+ = 0;
+
+252 
+buf
+->
+off£t
+ = 0;
+
+253 
+	}
+}
+
+255 
+šlše
+ 
+boÞ
+
+
+256 
+	$buf_š™_dowÜk
+ (
+bufãr
+ *
+buf
+, 
+off£t
+)
+
+258 ià(
+off£t
+ < 0 || off£ˆ> 
+buf
+->
+ÿ·c™y
+ || buf->
+d©a
+ =ð
+NULL
+)
+
+259  
+çl£
+;
+
+260 
+buf
+->
+Ën
+ = 0;
+
+261 
+buf
+->
+off£t
+ = offset;
+
+262  
+Œue
+;
+
+263 
+	}
+}
+
+265 
+šlše
+ 
+
+266 
+	$buf_£t_wr™e
+ (
+bufãr
+ *
+buf
+, 
+ušt8_t
+ *
+d©a
+, 
+size
+)
+
+268 ià(!
+	`buf_size_v®id
+ (
+size
+))
+
+269 
+	`buf_size_”rÜ
+ (
+size
+);
+
+270 
+buf
+->
+Ën
+ = 0;
+
+271 
+buf
+->
+off£t
+ = 0;
+
+272 
+buf
+->
+ÿ·c™y
+ = 
+size
+;
+
+273 
+buf
+->
+d©a
+ = data;
+
+274 ià(
+size
+ > 0 && 
+d©a
+)
+
+275 *
+d©a
+ = 0;
+
+276 
+	}
+}
+
+278 
+šlše
+ 
+
+279 
+	$buf_£t_»ad
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size
+)
+
+281 ià(!
+	`buf_size_v®id
+ (
+size
+))
+
+282 
+	`buf_size_”rÜ
+ (
+size
+);
+
+283 
+buf
+->
+Ën
+ = buf->
+ÿ·c™y
+ = 
+size
+;
+
+284 
+buf
+->
+off£t
+ = 0;
+
+285 
+buf
+->
+d©a
+ = (
+ušt8_t
+ *)data;
+
+286 
+	}
+}
+
+289 
+šlše
+ 
+
+290 
+	$¡ºýyÁ
+ (*
+de¡
+, cÚ¡ *
+¤c
+, 
+size_t
+ 
+maxËn
+)
+
+292 
+	`¡ºýy
+ (
+de¡
+, 
+¤c
+, 
+maxËn
+);
+
+293 ià(
+maxËn
+ > 0)
+
+294 
+de¡
+[
+maxËn
+ - 1] = 0;
+
+295 
+	}
+}
+
+298 
+šlše
+ 
+boÞ
+
+
+299 
+	$has_dig™
+ (cÚ¡ * 
+¤c
+)
+
+301 
+c
+;
+
+302 (
+c
+ = *
+¤c
+++))
+
+304 ià(
+	`isdig™
+(
+c
+))
+
+305  
+Œue
+;
+
+307  
+çl£
+;
+
+308 
+	}
+}
+
+316 
+boÞ
+ 
+	$buf_´štf
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+fÜm©
+, ...)
+
+317 #ifdeà
+__GNUC__
+
+
+318 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+319 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 2, 3)))
+
+321 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 2, 3)))
+
+329 
+boÞ
+ 
+	`buf_puts
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+¡r
+);
+
+334 
+boÞ
+ 
+	$Ý’v²_¢´štf
+(*
+¡r
+, 
+size_t
+ 
+size
+, cÚ¡ *
+fÜm©
+, ...)
+
+335 #ifdeà
+__GNUC__
+
+
+336 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+337 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 3, 4)))
+
+339 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 3, 4)))
+
+348 
+	`buf_nuÎ_‹rmš©e
+ (
+bufãr
+ *
+buf
+);
+
+349 
+	`buf_chomp
+ (
+bufãr
+ *
+buf
+);
+
+350 
+	`buf_rm�ž
+ (
+bufãr
+ *
+buf
+, 
+ušt8_t
+ 
+»move
+);
+
+355 
+	`chomp
+ (*
+¡r
+);
+
+356 
+	`rm_Œažšg_ch¬s
+ (*
+¡r
+, cÚ¡ *
+wh©_to_d–‘e
+);
+
+357 cÚ¡ *
+	`sk�_Ëadšg_wh™e¥aû
+ (cÚ¡ *
+¡r
+);
+
+358 
+	`¡ršg_nuÎ_‹rmš©e
+ (*
+¡r
+, 
+Ën
+, 
+ÿ·c™y
+);
+
+364 
+	`buf_wr™e_¡ršg_fže
+ (cÚ¡ 
+bufãr
+ *
+buf
+, cÚ¡ *
+fž’ame
+, 
+fd
+);
+
+370 
+	`buf_ÿŒunc
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+¡r
+);
+
+375 
+	`cÚv”t_to_Úe_lše
+ (
+bufãr
+ *
+buf
+);
+
+380 
+boÞ
+ 
+	`buf_·r£
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+d–im
+, *
+lše
+, cÚ¡ 
+size
+);
+
+386 
+	`fÜm©_hex_ex
+ (cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size
+, 
+maxou�ut
+,
+
+387 
+¥aû_b»ak
+, cÚ¡ * 
+£·¿tÜ
+,
+
+388 
+gc_¬’a
+ *
+gc
+);
+
+390 
+šlše
+ *
+
+391 
+	$fÜm©_hex
+ (cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size
+, 
+maxou�ut
+, 
+gc_¬’a
+ *
+gc
+)
+
+393  
+	`fÜm©_hex_ex
+ (
+d©a
+, 
+size
+, 
+maxou�ut
+, 4, " ", 
+gc
+);
+
+394 
+	}
+}
+
+399 
+bufãr
+ 
+buf_sub
+ (bufã¸*
+buf
+, 
+size
+, 
+boÞ
+ 
+´•’d
+);
+
+405 
+šlše
+ 
+boÞ
+
+
+406 
+	$buf_§ã
+ (cÚ¡ 
+bufãr
+ *
+buf
+, 
+Ën
+)
+
+408  
+	`buf_v®id
+ (
+buf
+è&& 
+	`buf_size_v®id
+ (
+Ën
+)
+
+409 && 
+buf
+->
+off£t
+ + buf->
+Ën
+ +†’ <ðbuf->
+ÿ·c™y
+;
+
+410 
+	}
+}
+
+412 
+šlše
+ 
+boÞ
+
+
+413 
+	$buf_§ã_bidœ
+ (cÚ¡ 
+bufãr
+ *
+buf
+, 
+Ën
+)
+
+415 ià(
+	`buf_v®id
+ (
+buf
+è&& 
+	`buf_size_v®id_sigÃd
+ (
+Ën
+))
+
+417 cÚ¡ 
+ÃwËn
+ = 
+buf
+->
+Ën
+ +†en;
+
+418  
+ÃwËn
+ >ð0 && 
+buf
+->
+off£t
+ +‚ewËÀ<ðbuf->
+ÿ·c™y
+;
+
+421  
+çl£
+;
+
+422 
+	}
+}
+
+424 
+šlše
+ 
+
+425 
+	$buf_fÜw¬d_ÿ·c™y
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+427 ià(
+	`buf_v®id
+ (
+buf
+))
+
+429 
+»t
+ = 
+buf
+->
+ÿ·c™y
+ - (buf->
+off£t
+ + buf->
+Ën
+);
+
+430 ià(
+»t
+ < 0)
+
+431 
+»t
+ = 0;
+
+432  
+»t
+;
+
+436 
+	}
+}
+
+438 
+šlše
+ 
+
+439 
+	$buf_fÜw¬d_ÿ·c™y_tÙ®
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+441 ià(
+	`buf_v®id
+ (
+buf
+))
+
+443 
+»t
+ = 
+buf
+->
+ÿ·c™y
+ - buf->
+off£t
+;
+
+444 ià(
+»t
+ < 0)
+
+445 
+»t
+ = 0;
+
+446  
+»t
+;
+
+450 
+	}
+}
+
+452 
+šlše
+ 
+
+453 
+	$buf_»v”£_ÿ·c™y
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+455 ià(
+	`buf_v®id
+ (
+buf
+))
+
+456  
+buf
+->
+off£t
+;
+
+459 
+	}
+}
+
+461 
+šlše
+ 
+boÞ
+
+
+462 
+	$buf_šc_Ën
+ (
+bufãr
+ *
+buf
+, 
+šc
+)
+
+464 ià(!
+	`buf_§ã_bidœ
+ (
+buf
+, 
+šc
+))
+
+465  
+çl£
+;
+
+466 
+buf
+->
+Ën
+ +ð
+šc
+;
+
+467  
+Œue
+;
+
+468 
+	}
+}
+
+475 
+šlše
+ 
+ušt8_t
+ *
+
+476 
+	$buf_´•’d
+ (
+bufãr
+ *
+buf
+, 
+size
+)
+
+478 ià(!
+	`buf_v®id
+ (
+buf
+è|| 
+size
+ < 0 || siz�> buf->
+off£t
+)
+
+479  
+NULL
+;
+
+480 
+buf
+->
+off£t
+ -ð
+size
+;
+
+481 
+buf
+->
+Ën
+ +ð
+size
+;
+
+482  
+	`BPTR
+ (
+buf
+);
+
+483 
+	}
+}
+
+485 
+šlše
+ 
+boÞ
+
+
+486 
+	$buf_advªû
+ (
+bufãr
+ *
+buf
+, 
+size
+)
+
+488 ià(!
+	`buf_v®id
+ (
+buf
+è|| 
+size
+ < 0 || buf->
+Ën
+ < size)
+
+489  
+çl£
+;
+
+490 
+buf
+->
+off£t
+ +ð
+size
+;
+
+491 
+buf
+->
+Ën
+ -ð
+size
+;
+
+492  
+Œue
+;
+
+493 
+	}
+}
+
+500 
+šlše
+ 
+ušt8_t
+ *
+
+501 
+	$buf_wr™e_®loc
+ (
+bufãr
+ *
+buf
+, 
+size
+)
+
+503 
+ušt8_t
+ *
+»t
+;
+
+504 ià(!
+	`buf_§ã
+ (
+buf
+, 
+size
+))
+
+505  
+NULL
+;
+
+506 
+»t
+ = 
+	`BPTR
+ (
+buf
+è+ buf->
+Ën
+;
+
+507 
+buf
+->
+Ën
+ +ð
+size
+;
+
+508  
+»t
+;
+
+509 
+	}
+}
+
+511 
+šlše
+ 
+ušt8_t
+ *
+
+512 
+	$buf_wr™e_®loc_´•’d
+ (
+bufãr
+ *
+buf
+, 
+size
+, 
+boÞ
+ 
+´•’d
+)
+
+514  
+´•’d
+ ? 
+	`buf_´•’d
+ (
+buf
+, 
+size
+è: 
+	`buf_wr™e_®loc
+ (buf, size);
+
+515 
+	}
+}
+
+517 
+šlše
+ 
+ušt8_t
+ *
+
+518 
+	$buf_»ad_®loc
+ (
+bufãr
+ *
+buf
+, 
+size
+)
+
+520 
+ušt8_t
+ *
+»t
+;
+
+521 ià(
+size
+ < 0 || 
+buf
+->
+Ën
+ < size)
+
+522  
+NULL
+;
+
+523 
+»t
+ = 
+	`BPTR
+ (
+buf
+);
+
+524 
+buf
+->
+off£t
+ +ð
+size
+;
+
+525 
+buf
+->
+Ën
+ -ð
+size
+;
+
+526  
+»t
+;
+
+527 
+	}
+}
+
+529 
+šlše
+ 
+boÞ
+
+
+530 
+	$buf_wr™e
+ (
+bufãr
+ *
+de¡
+, cÚ¡ *
+¤c
+, 
+size
+)
+
+532 
+ušt8_t
+ *
+ý
+ = 
+	`buf_wr™e_®loc
+ (
+de¡
+, 
+size
+);
+
+533 ià(!
+ý
+)
+
+534  
+çl£
+;
+
+535 
+	`memýy
+ (
+ý
+, 
+¤c
+, 
+size
+);
+
+536  
+Œue
+;
+
+537 
+	}
+}
+
+539 
+šlše
+ 
+boÞ
+
+
+540 
+	$buf_wr™e_´•’d
+ (
+bufãr
+ *
+de¡
+, cÚ¡ *
+¤c
+, 
+size
+)
+
+542 
+ušt8_t
+ *
+ý
+ = 
+	`buf_´•’d
+ (
+de¡
+, 
+size
+);
+
+543 ià(!
+ý
+)
+
+544  
+çl£
+;
+
+545 
+	`memýy
+ (
+ý
+, 
+¤c
+, 
+size
+);
+
+546  
+Œue
+;
+
+547 
+	}
+}
+
+549 
+šlše
+ 
+boÞ
+
+
+550 
+	$buf_wr™e_u8
+ (
+bufãr
+ *
+de¡
+, 
+d©a
+)
+
+552 
+ušt8_t
+ 
+u8
+ = (ušt8_tè
+d©a
+;
+
+553  
+	`buf_wr™e
+ (
+de¡
+, &
+u8
+,  (
+ušt8_t
+));
+
+554 
+	}
+}
+
+556 
+šlše
+ 
+boÞ
+
+
+557 
+	$buf_wr™e_u16
+ (
+bufãr
+ *
+de¡
+, 
+d©a
+)
+
+559 
+ušt16_t
+ 
+u16
+ = 
+	`htÚs
+ ((ušt16_tè
+d©a
+);
+
+560  
+	`buf_wr™e
+ (
+de¡
+, &
+u16
+,  (
+ušt16_t
+));
+
+561 
+	}
+}
+
+563 
+šlše
+ 
+boÞ
+
+
+564 
+	$buf_wr™e_u32
+ (
+bufãr
+ *
+de¡
+, 
+d©a
+)
+
+566 
+ušt32_t
+ 
+u32
+ = 
+	`htÚl
+ ((ušt32_tè
+d©a
+);
+
+567  
+	`buf_wr™e
+ (
+de¡
+, &
+u32
+,  (
+ušt32_t
+));
+
+568 
+	}
+}
+
+570 
+šlše
+ 
+boÞ
+
+
+571 
+	$buf_cÝy
+ (
+bufãr
+ *
+de¡
+, cÚ¡ bufã¸*
+¤c
+)
+
+573  
+	`buf_wr™e
+ (
+de¡
+, 
+	`BPTR
+ (
+¤c
+), 
+	`BLEN
+ (src));
+
+574 
+	}
+}
+
+576 
+šlše
+ 
+boÞ
+
+
+577 
+	$buf_cÝy_n
+ (
+bufãr
+ *
+de¡
+, bufã¸*
+¤c
+, 
+n
+)
+
+579 
+ušt8_t
+ *
+ý
+ = 
+	`buf_»ad_®loc
+ (
+¤c
+, 
+n
+);
+
+580 ià(!
+ý
+)
+
+581  
+çl£
+;
+
+582  
+	`buf_wr™e
+ (
+de¡
+, 
+ý
+, 
+n
+);
+
+583 
+	}
+}
+
+585 
+šlše
+ 
+boÞ
+
+
+586 
+	$buf_cÝy_¿nge
+ (
+bufãr
+ *
+de¡
+,
+
+587 
+de¡_šdex
+,
+
+588 cÚ¡ 
+bufãr
+ *
+¤c
+,
+
+589 
+¤c_šdex
+,
+
+590 
+¤c_Ën
+)
+
+592 ià(
+¤c_šdex
+ < 0
+
+593 || 
+¤c_Ën
+ < 0
+
+594 || 
+¤c_šdex
+ + 
+¤c_Ën
+ > 
+¤c
+->
+Ën
+
+
+595 || 
+de¡_šdex
+ < 0
+
+596 || 
+de¡
+->
+off£t
+ + 
+de¡_šdex
+ + 
+¤c_Ën
+ > de¡->
+ÿ·c™y
+)
+
+597  
+çl£
+;
+
+598 
+	`memýy
+ (
+de¡
+->
+d©a
+ + de¡->
+off£t
+ + 
+de¡_šdex
+, 
+¤c
+->d©¨+ src->off£ˆ+ 
+¤c_šdex
+, 
+¤c_Ën
+);
+
+599 ià(
+de¡_šdex
+ + 
+¤c_Ën
+ > 
+de¡
+->
+Ën
+)
+
+600 
+de¡
+->
+Ën
+ = 
+de¡_šdex
+ + 
+¤c_Ën
+;
+
+601  
+Œue
+;
+
+602 
+	}
+}
+
+605 
+šlše
+ 
+boÞ
+
+
+606 
+	$buf_cÝy_exûss
+ (
+bufãr
+ *
+de¡
+,
+
+607 
+bufãr
+ *
+¤c
+,
+
+608 
+Ën
+)
+
+610 ià(
+Ën
+ < 0)
+
+611  
+çl£
+;
+
+612 ià(
+¤c
+->
+Ën
+ >†en)
+
+614 
+bufãr
+ 
+b
+ = *
+¤c
+;
+
+615 
+¤c
+->
+Ën
+ =†en;
+
+616 ià(!
+	`buf_advªû
+ (&
+b
+, 
+Ën
+))
+
+617  
+çl£
+;
+
+618  
+	`buf_cÝy
+ (
+de¡
+, &
+b
+);
+
+622  
+Œue
+;
+
+624 
+	}
+}
+
+626 
+šlše
+ 
+boÞ
+
+
+627 
+	$buf_»ad
+ (
+bufãr
+ *
+¤c
+, *
+de¡
+, 
+size
+)
+
+629 
+ušt8_t
+ *
+ý
+ = 
+	`buf_»ad_®loc
+ (
+¤c
+, 
+size
+);
+
+630 ià(!
+ý
+)
+
+631  
+çl£
+;
+
+632 
+	`memýy
+ (
+de¡
+, 
+ý
+, 
+size
+);
+
+633  
+Œue
+;
+
+634 
+	}
+}
+
+636 
+šlše
+ 
+
+637 
+	$buf_»ad_u8
+ (
+bufãr
+ *
+buf
+)
+
+639 
+»t
+;
+
+640 ià(
+	`BLEN
+ (
+buf
+) < 1)
+
+642 
+»t
+ = *
+	`BPTR
+(
+buf
+);
+
+643 
+	`buf_advªû
+ (
+buf
+, 1);
+
+644  
+»t
+;
+
+645 
+	}
+}
+
+647 
+šlše
+ 
+
+648 
+	$buf_»ad_u16
+ (
+bufãr
+ *
+buf
+)
+
+650 
+ušt16_t
+ 
+»t
+;
+
+651 ià(!
+	`buf_»ad
+ (
+buf
+, &
+»t
+,  (
+ušt16_t
+)))
+
+653  
+	`Áohs
+ (
+»t
+);
+
+654 
+	}
+}
+
+656 
+šlše
+ 
+ušt32_t
+
+
+657 
+	$buf_»ad_u32
+ (
+bufãr
+ *
+buf
+, 
+boÞ
+ *
+good
+)
+
+659 
+ušt32_t
+ 
+»t
+;
+
+660 ià(!
+	`buf_»ad
+ (
+buf
+, &
+»t
+,  (
+ušt32_t
+)))
+
+662 ià(
+good
+)
+
+663 *
+good
+ = 
+çl£
+;
+
+668 ià(
+good
+)
+
+669 *
+good
+ = 
+Œue
+;
+
+670  
+	`Áohl
+ (
+»t
+);
+
+672 
+	}
+}
+
+678 
+šlše
+ 
+boÞ
+
+
+679 
+	$buf_¡ršg_m©ch
+ (cÚ¡ 
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+, 
+size
+)
+
+681 ià(
+size
+ !ð
+¤c
+->
+Ën
+)
+
+682  
+çl£
+;
+
+683  
+	`memcmp
+ (
+	`BPTR
+ (
+¤c
+), 
+m©ch
+, 
+size
+) == 0;
+
+684 
+	}
+}
+
+690 
+šlše
+ 
+boÞ
+
+
+691 
+	$buf_¡ršg_m©ch_h—d
+ (cÚ¡ 
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+, 
+size
+)
+
+693 ià(
+size
+ < 0 || siz�> 
+¤c
+->
+Ën
+)
+
+694  
+çl£
+;
+
+695  
+	`memcmp
+ (
+	`BPTR
+ (
+¤c
+), 
+m©ch
+, 
+size
+) == 0;
+
+696 
+	}
+}
+
+698 
+boÞ
+ 
+buf_¡ršg_m©ch_h—d_¡r
+ (cÚ¡ 
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+);
+
+699 
+boÞ
+ 
+buf_¡ršg_com·»_advªû
+ (
+bufãr
+ *
+¤c
+, cÚ¡ *
+m©ch
+);
+
+700 
+buf_sub¡ršg_Ën
+ (cÚ¡ 
+bufãr
+ *
+buf
+, 
+d–im
+);
+
+705 cÚ¡ *
+Å
+ (cÚ¡ *
+¡r
+);
+
+711 
+	#CC_ANY
+ (1<<0)
+
+	)
+
+712 
+	#CC_NULL
+ (1<<1)
+
+	)
+
+714 
+	#CC_ALNUM
+ (1<<2)
+
+	)
+
+715 
+	#CC_ALPHA
+ (1<<3)
+
+	)
+
+716 
+	#CC_ASCII
+ (1<<4)
+
+	)
+
+717 
+	#CC_CNTRL
+ (1<<5)
+
+	)
+
+718 
+	#CC_DIGIT
+ (1<<6)
+
+	)
+
+719 
+	#CC_PRINT
+ (1<<7)
+
+	)
+
+720 
+	#CC_PUNCT
+ (1<<8)
+
+	)
+
+721 
+	#CC_SPACE
+ (1<<9)
+
+	)
+
+722 
+	#CC_XDIGIT
+ (1<<10)
+
+	)
+
+724 
+	#CC_BLANK
+ (1<<11)
+
+	)
+
+725 
+	#CC_NEWLINE
+ (1<<12)
+
+	)
+
+726 
+	#CC_CR
+ (1<<13)
+
+	)
+
+728 
+	#CC_BACKSLASH
+ (1<<14)
+
+	)
+
+729 
+	#CC_UNDERBAR
+ (1<<15)
+
+	)
+
+730 
+	#CC_DASH
+ (1<<16)
+
+	)
+
+731 
+	#CC_DOT
+ (1<<17)
+
+	)
+
+732 
+	#CC_COMMA
+ (1<<18)
+
+	)
+
+733 
+	#CC_COLON
+ (1<<19)
+
+	)
+
+734 
+	#CC_SLASH
+ (1<<20)
+
+	)
+
+735 
+	#CC_SINGLE_QUOTE
+ (1<<21)
+
+	)
+
+736 
+	#CC_DOUBLE_QUOTE
+ (1<<22)
+
+	)
+
+737 
+	#CC_REVERSE_QUOTE
+ (1<<23)
+
+	)
+
+738 
+	#CC_AT
+ (1<<24)
+
+	)
+
+739 
+	#CC_EQUAL
+ (1<<25)
+
+	)
+
+740 
+	#CC_LESS_THAN
+ (1<<26)
+
+	)
+
+741 
+	#CC_GREATER_THAN
+ (1<<27)
+
+	)
+
+742 
+	#CC_PIPE
+ (1<<28)
+
+	)
+
+743 
+	#CC_QUESTION_MARK
+ (1<<29)
+
+	)
+
+744 
+	#CC_ASTERISK
+ (1<<30)
+
+	)
+
+747 
+	#CC_NAME
+ (
+CC_ALNUM
+|
+CC_UNDERBAR
+)
+
+	)
+
+748 
+	#CC_CRLF
+ (
+CC_CR
+|
+CC_NEWLINE
+)
+
+	)
+
+750 
+boÞ
+ 
+ch¬_þass
+ (cÚ¡ 
+c
+, cÚ¡ 
+æags
+);
+
+751 
+boÞ
+ 
+¡ršg_þass
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+šþusive
+, cÚ¡ 
+exþusive
+);
+
+752 
+boÞ
+ 
+¡ršg_mod
+ (*
+¡r
+, cÚ¡ 
+šþusive
+, cÚ¡ 
+exþusive
+, cÚ¡ 
+»¶aû
+);
+
+754 cÚ¡ *
+¡ršg_mod_cÚ¡
+ (cÚ¡ *
+¡r
+,
+
+755 cÚ¡ 
+šþusive
+,
+
+756 cÚ¡ 
+exþusive
+,
+
+757 cÚ¡ 
+»¶aû
+,
+
+758 
+gc_¬’a
+ *
+gc
+);
+
+760 
+¡ršg_»¶aû_Ëadšg
+ (*
+¡r
+, cÚ¡ 
+m©ch
+, cÚ¡ 
+»¶aû
+);
+
+762 #ifdeà
+CHARACTER_CLASS_DEBUG
+
+
+763 
+ch¬aù”_þass_debug
+ ();
+
+769 #ifdeà
+VERIFY_ALIGNMENT
+
+
+770 
+v®ign4
+ (cÚ¡ 
+bufãr
+ *
+buf
+, cÚ¡ *
+fže
+, cÚ¡ 
+lše
+);
+
+771 
+	#v”ify_®ign_4
+(
+±r
+è
+	`v®ign4
+(
+buf
+, 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+773 
+	#v”ify_®ign_4
+(
+±r
+)
+
+	)
+
+781 
+gc_Œªsãr
+ (
+gc_¬’a
+ *
+de¡
+, gc_¬’¨*
+¤c
+);
+
+783 
+x_gc_ä“
+ (
+gc_¬’a
+ *
+a
+);
+
+785 
+šlše
+ 
+boÞ
+
+
+786 
+	$gc_defšed
+ (
+gc_¬’a
+ *
+a
+)
+
+788  
+a
+->
+li¡
+ !ð
+NULL
+;
+
+789 
+	}
+}
+
+791 
+šlše
+ 
+
+792 
+	$gc_š™
+ (
+gc_¬’a
+ *
+a
+)
+
+794 
+a
+->
+li¡
+ = 
+NULL
+;
+
+795 
+	}
+}
+
+797 
+šlše
+ 
+
+798 
+	$gc_d‘ach
+ (
+gc_¬’a
+ *
+a
+)
+
+800 
+	`gc_š™
+ (
+a
+);
+
+801 
+	}
+}
+
+803 
+šlše
+ 
+gc_¬’a
+
+
+804 
+	$gc_Ãw
+ ()
+
+806 
+gc_¬’a
+ 
+»t
+;
+
+807 
+»t
+.
+li¡
+ = 
+NULL
+;
+
+808  
+»t
+;
+
+809 
+	}
+}
+
+811 
+šlše
+ 
+
+812 
+	$gc_ä“
+ (
+gc_¬’a
+ *
+a
+)
+
+814 ià(
+a
+->
+li¡
+)
+
+815 
+	`x_gc_ä“
+ (
+a
+);
+
+816 
+	}
+}
+
+818 
+šlše
+ 
+
+819 
+	$gc_»£t
+ (
+gc_¬’a
+ *
+a
+)
+
+821 
+	`gc_ä“
+ (
+a
+);
+
+822 
+	}
+}
+
+828 
+	#ALLOC_OBJ
+(
+d±r
+, 
+ty³
+) \
+
+830 
+	`check_m®loc_»tuº
+ ((
+d±r
+èð(
+ty³
+ *è
+	`m®loc
+ ( (type))); \
+
+831 }
+
+	)
+
+833 
+	#ALLOC_OBJ_CLEAR
+(
+d±r
+, 
+ty³
+) \
+
+835 
+	`ALLOC_OBJ
+ (
+d±r
+, 
+ty³
+); \
+
+836 
+	`mem£t
+ ((
+d±r
+), 0, (
+ty³
+)); \
+
+837 }
+
+	)
+
+839 
+	#ALLOC_ARRAY
+(
+d±r
+, 
+ty³
+, 
+n
+) \
+
+841 
+	`check_m®loc_»tuº
+ ((
+d±r
+èð(
+ty³
+ *è
+	`m®loc
+ (
+	`¬¿y_muÉ_§ã
+ ( (ty³), (
+n
+), 0))); \
+
+842 }
+
+	)
+
+844 
+	#ALLOC_ARRAY_GC
+(
+d±r
+, 
+ty³
+, 
+n
+, 
+gc
+) \
+
+846 (
+d±r
+èð(
+ty³
+ *è
+	`gc_m®loc
+ (
+	`¬¿y_muÉ_§ã
+ ( (ty³), (
+n
+), 0), 
+çl£
+, (
+gc
+)); \
+
+847 }
+
+	)
+
+849 
+	#ALLOC_ARRAY_CLEAR
+(
+d±r
+, 
+ty³
+, 
+n
+) \
+
+851 
+	`ALLOC_ARRAY
+ (
+d±r
+, 
+ty³
+, 
+n
+); \
+
+852 
+	`mem£t
+ ((
+d±r
+), 0, (
+	`¬¿y_muÉ_§ã
+ ((
+ty³
+), (
+n
+), 0))); \
+
+853 }
+
+	)
+
+855 
+	#ALLOC_ARRAY_CLEAR_GC
+(
+d±r
+, 
+ty³
+, 
+n
+, 
+gc
+) \
+
+857 (
+d±r
+èð(
+ty³
+ *è
+	`gc_m®loc
+ (
+	`¬¿y_muÉ_§ã
+ ( (ty³), (
+n
+), 0), 
+Œue
+, (
+gc
+)); \
+
+858 }
+
+	)
+
+860 
+	#ALLOC_VAR_ARRAY_CLEAR_GC
+(
+d±r
+, 
+ty³
+, 
+©y³
+, 
+n
+, 
+gc
+) \
+
+862 (
+d±r
+èð(
+ty³
+ *è
+	`gc_m®loc
+ (
+	`¬¿y_muÉ_§ã
+ ( (
+©y³
+), (
+n
+),  (ty³)), 
+Œue
+, (
+gc
+)); \
+
+863 }
+
+	)
+
+865 
+	#ALLOC_OBJ_GC
+(
+d±r
+, 
+ty³
+, 
+gc
+) \
+
+867 (
+d±r
+èð(
+ty³
+ *è
+	`gc_m®loc
+ ( (ty³), 
+çl£
+, (
+gc
+)); \
+
+868 }
+
+	)
+
+870 
+	#ALLOC_OBJ_CLEAR_GC
+(
+d±r
+, 
+ty³
+, 
+gc
+) \
+
+872 (
+d±r
+èð(
+ty³
+ *è
+	`gc_m®loc
+ ( (ty³), 
+Œue
+, (
+gc
+)); \
+
+873 }
+
+	)
+
+875 
+šlše
+ 
+
+876 
+	$check_m®loc_»tuº
+ (*
+p
+)
+
+878 ià(!
+p
+)
+
+879 
+	`out_of_memÜy
+ ();
+
+880 
+	}
+}
+
+886 #ifdeà
+ENABLE_BUFFER_LIST
+
+
+888 
+	sbufãr_’Œy
+
+
+890 
+bufãr
+ 
+	mbuf
+;
+
+891 
+bufãr_’Œy
+ *
+	mÃxt
+;
+
+894 
+	sbufãr_li¡
+
+
+896 
+bufãr_’Œy
+ *
+	mh—d
+;
+
+897 
+bufãr_’Œy
+ *
+	m�ž
+;
+
+898 
+	msize
+;
+
+899 
+	mmax_size
+;
+
+902 
+bufãr_li¡
+ *
+bufãr_li¡_Ãw
+ (cÚ¡ 
+max_size
+);
+
+903 
+bufãr_li¡_ä“
+ (
+bufãr_li¡
+ *
+Þ
+);
+
+905 
+boÞ
+ 
+bufãr_li¡_defšed
+ (cÚ¡ 
+bufãr_li¡
+ *
+Þ
+);
+
+906 
+bufãr_li¡_»£t
+ (
+bufãr_li¡
+ *
+Þ
+);
+
+908 
+bufãr_li¡_push
+ (
+bufãr_li¡
+ *
+Þ
+, cÚ¡ *
+¡r
+);
+
+909 
+bufãr_’Œy
+ *
+bufãr_li¡_push_d©a
+ (
+bufãr_li¡
+ *
+Þ
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size_t
+ 
+size
+);
+
+910 
+bufãr
+ *
+bufãr_li¡_³ek
+ (
+bufãr_li¡
+ *
+Þ
+);
+
+911 
+bufãr_li¡_advªû
+ (
+bufãr_li¡
+ *
+Þ
+, 
+n
+);
+
+912 
+bufãr_li¡_pÝ
+ (
+bufãr_li¡
+ *
+Þ
+);
+
+914 
+bufãr_li¡_agg»g©e
+ (
+bufãr_li¡
+ *
+bl
+, cÚ¡ 
+size_t
+ 
+max
+);
+
+916 
+bufãr_li¡
+ *
+bufãr_li¡_fže
+ (cÚ¡ *
+â
+, 
+max_lše_Ën
+);
+
+	@circ_list.h
+
+25 #iâdeà
+CIRC_LIST_H
+
+
+26 
+	#CIRC_LIST_H
+
+
+	)
+
+28 
+	~"basic.h
+"
+
+29 
+	~"š‹g”.h
+"
+
+30 
+	~"”rÜ.h
+"
+
+32 
+	#CIRC_LIST
+(
+Çme
+, 
+ty³
+) \
+
+33 
+	sÇme
+ { \
+
+34 
+x_h—d
+; \
+
+35 
+x_size
+; \
+
+36 
+x_ÿp
+; \
+
+37 
+x_sizeof
+; \
+
+38 
+ty³
+ 
+x_li¡
+[
+EMPTY_ARRAY_SIZE
+]; \
+
+39 }
+
+	)
+
+41 
+	#CIRC_LIST_PUSH
+(
+obj
+, 
+™em
+) \
+
+43 (
+obj
+)->
+x_h—d
+ = 
+	`modulo_add
+ ((obj)->x_h—d, -1, (obj)->
+x_ÿp
+); \
+
+44 (
+obj
+)->
+x_li¡
+[(obj)->
+x_h—d
+] = (
+™em
+); \
+
+45 (
+obj
+)->
+x_size
+ = 
+	`mš_št
+ ((obj)->x_siz�+ 1, (obj)->
+x_ÿp
+); \
+
+46 }
+
+	)
+
+48 
+	#CIRC_LIST_SIZE
+(
+obj
+) \
+
+49 ((
+obj
+)->
+x_size
+)
+
+	)
+
+51 
+	#CIRC_LIST_INDEX
+(
+obj
+, 
+šdex
+) \
+
+52 
+	`modulo_add
+ ((
+obj
+)->
+x_h—d
+, \
+
+53 
+	`šdex_v”ify
+ ((
+šdex
+), (
+obj
+)->
+x_size
+, 
+__FILE__
+, 
+__LINE__
+), \
+
+54 (
+obj
+)->
+x_ÿp
+)
+
+	)
+
+56 
+	#CIRC_LIST_ITEM
+(
+obj
+, 
+šdex
+) \
+
+57 ((
+obj
+)->
+x_li¡
+[
+	`CIRC_LIST_INDEX
+((obj), (
+šdex
+))])
+
+	)
+
+59 
+	#CIRC_LIST_RESET
+(
+obj
+) \
+
+61 (
+obj
+)->
+x_h—d
+ = 0; \
+
+62 (
+obj
+)->
+x_size
+ = 0; \
+
+63 }
+
+	)
+
+65 
+	#CIRC_LIST_ALLOC
+(
+de¡
+, 
+li¡_ty³
+, 
+size
+) \
+
+67 cÚ¡ 
+so
+ =  (
+li¡_ty³
+è+  ((
+de¡
+)->
+x_li¡
+[0]è* (
+size
+); \
+
+68 (
+de¡
+èð(
+li¡_ty³
+ *è
+	`m®loc
+ (
+so
+); \
+
+69 
+	`check_m®loc_»tuº
+ (
+de¡
+); \
+
+70 
+	`mem£t
+ ((
+de¡
+), 0, 
+so
+); \
+
+71 (
+de¡
+)->
+x_ÿp
+ = 
+size
+; \
+
+72 (
+de¡
+)->
+x_sizeof
+ = 
+so
+; \
+
+73 }
+
+	)
+
+75 
+	#CIRC_LIST_FREE
+(
+de¡
+) \
+
+76 
+	`ä“
+ (
+de¡
+)
+
+	)
+
+	@clinat.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+defšed
+(
+ENABLE_CLIENT_NAT
+)
+
+35 
+	~"þš©.h
+"
+
+36 
+	~"´Ùo.h
+"
+
+37 
+	~"sock‘.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 
+boÞ
+
+
+41 
+	$add_’Œy
+(
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+de¡
+,
+
+42 cÚ¡ 
+þ›Á_Çt_’Œy
+ *
+e
+)
+
+44 ià(
+de¡
+->
+n
+ >ð
+MAX_CLIENT_NAT
+)
+
+46 
+	`msg
+ (
+M_WARN
+, "WARNING: cl›Á-Çˆ�bË ov”æow (max %dƒÁr›s)", 
+MAX_CLIENT_NAT
+);
+
+47  
+çl£
+;
+
+51 
+de¡
+->
+’Œ›s
+[de¡->
+n
+++] = *
+e
+;
+
+52  
+Œue
+;
+
+54 
+	}
+}
+
+57 
+	$´št_þ›Á_Çt_li¡
+(cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+li¡
+, 
+msgËv–
+)
+
+59 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+60 
+i
+;
+
+62 
+	`msg
+ (
+msgËv–
+, "*** CNAT†ist");
+
+63 ià(
+li¡
+)
+
+65 
+i
+ = 0; i < 
+li¡
+->
+n
+; ++i)
+
+67 cÚ¡ 
+þ›Á_Çt_’Œy
+ *
+e
+ = &
+li¡
+->
+’Œ›s
+[
+i
+];
+
+68 
+	`msg
+ (
+msgËv–
+, " CNAT[%d]�=%d %s/%s/%s",
+
+69 
+i
+,
+
+70 
+e
+->
+ty³
+,
+
+71 
+	`´št_š_addr_t
+ (
+e
+->
+ÃtwÜk
+, 
+IA_NET_ORDER
+, &
+gc
+),
+
+72 
+	`´št_š_addr_t
+ (
+e
+->
+Ãtmask
+, 
+IA_NET_ORDER
+, &
+gc
+),
+
+73 
+	`´št_š_addr_t
+ (
+e
+->
+fÜeign_ÃtwÜk
+, 
+IA_NET_ORDER
+, &
+gc
+));
+
+76 
+	`gc_ä“
+ (&
+gc
+);
+
+77 
+	}
+}
+
+79 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+
+80 
+	$Ãw_þ›Á_Çt_li¡
+ (
+gc_¬’a
+ *
+gc
+)
+
+82 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+»t
+;
+
+83 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+»t
+, 
+þ›Á_Çt_ÝtiÚ_li¡
+, 
+gc
+);
+
+84  
+»t
+;
+
+85 
+	}
+}
+
+87 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+
+88 
+	$þÚe_þ›Á_Çt_ÝtiÚ_li¡
+ (cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+¤c
+, 
+gc_¬’a
+ *
+gc
+)
+
+90 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+»t
+;
+
+91 
+	`ALLOC_OBJ_GC
+ (
+»t
+, 
+þ›Á_Çt_ÝtiÚ_li¡
+, 
+gc
+);
+
+92 *
+»t
+ = *
+¤c
+;
+
+93  
+»t
+;
+
+94 
+	}
+}
+
+97 
+	$cÝy_þ›Á_Çt_ÝtiÚ_li¡
+ (
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+de¡
+,
+
+98 cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+¤c
+)
+
+100 
+i
+;
+
+101 
+i
+ = 0; i < 
+¤c
+->
+n
+; ++i)
+
+103 ià(!
+	`add_’Œy
+(
+de¡
+, &
+¤c
+->
+’Œ›s
+[
+i
+]))
+
+106 
+	}
+}
+
+109 
+	$add_þ›Á_Çt_to_ÝtiÚ_li¡
+ (
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+de¡
+,
+
+110 cÚ¡ *
+ty³
+,
+
+111 cÚ¡ *
+ÃtwÜk
+,
+
+112 cÚ¡ *
+Ãtmask
+,
+
+113 cÚ¡ *
+fÜeign_ÃtwÜk
+,
+
+114 
+msgËv–
+)
+
+116 
+þ›Á_Çt_’Œy
+ 
+e
+;
+
+117 
+boÞ
+ 
+ok
+;
+
+119 ià(!
+	`¡rcmp
+(
+ty³
+, "snat"))
+
+120 
+e
+.
+ty³
+ = 
+CN_SNAT
+;
+
+121 ià(!
+	`¡rcmp
+(
+ty³
+, "dnat"))
+
+122 
+e
+.
+ty³
+ = 
+CN_DNAT
+;
+
+125 
+	`msg
+(
+msgËv–
+, "client-nat:�ype must be 'snat' or 'dnat'");
+
+129 
+e
+.
+ÃtwÜk
+ = 
+	`g‘addr
+(0,‚‘wÜk, 0, &
+ok
+, 
+NULL
+);
+
+130 ià(!
+ok
+)
+
+132 
+	`msg
+(
+msgËv–
+, "þ›Á-Çt: bad‚‘wÜk: %s", 
+ÃtwÜk
+);
+
+135 
+e
+.
+Ãtmask
+ = 
+	`g‘addr
+(0,‚‘mask, 0, &
+ok
+, 
+NULL
+);
+
+136 ià(!
+ok
+)
+
+138 
+	`msg
+(
+msgËv–
+, "þ›Á-Çt: bad‚‘mask: %s", 
+Ãtmask
+);
+
+141 
+e
+.
+fÜeign_ÃtwÜk
+ = 
+	`g‘addr
+(0, fÜeign_ÃtwÜk, 0, &
+ok
+, 
+NULL
+);
+
+142 ià(!
+ok
+)
+
+144 
+	`msg
+(
+msgËv–
+, "þ›Á-Çt: bad fÜeigÀÃtwÜk: %s", 
+fÜeign_ÃtwÜk
+);
+
+148 
+	`add_’Œy
+(
+de¡
+, &
+e
+);
+
+149 
+	}
+}
+
+153 
+	$´št_checksum
+ (
+Ý’v²_�hdr
+ *
+�h
+, cÚ¡ *
+´efix
+)
+
+155 
+ušt16_t
+ *
+¥Œ
+;
+
+156 
+sum
+ = 0;
+
+157 
+i
+ = 0;
+
+158 
+¥Œ
+ = (
+ušt16_t
+ *)
+�h
+; (
+ušt8_t
+ *)¥Œ < (ušt8_ˆ*)�h + (
+Ý’v²_�hdr
+); sptr++)
+
+160 
+i
+ += 1;
+
+161 
+sum
+ +ð*
+¥Œ
+;
+
+163 
+	`msg
+ (
+M_INFO
+, "** CKSUM[%d] % %08x", 
+i
+, 
+´efix
+, 
+sum
+);
+
+164 
+	}
+}
+
+168 
+	$´št_pkt
+ (
+Ý’v²_�hdr
+ *
+�h
+, cÚ¡ *
+´efix
+, cÚ¡ 
+dœeùiÚ
+, cÚ¡ 
+msgËv–
+)
+
+170 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+172 *
+dœ¡r
+ = "???";
+
+173 ià(
+dœeùiÚ
+ =ð
+CN_OUTGOING
+)
+
+174 
+dœ¡r
+ = "OUT";
+
+175 ià(
+dœeùiÚ
+ =ð
+CN_INCOMING
+)
+
+176 
+dœ¡r
+ = "IN";
+
+178 
+	`msg
+(
+msgËv–
+, "** CNAT %s %s %s -> %s",
+
+179 
+dœ¡r
+,
+
+180 
+´efix
+,
+
+181 
+	`´št_š_addr_t
+ (
+�h
+->
+§ddr
+, 
+IA_NET_ORDER
+, &
+gc
+),
+
+182 
+	`´št_š_addr_t
+ (
+�h
+->
+daddr
+, 
+IA_NET_ORDER
+, &
+gc
+));
+
+184 
+	`gc_ä“
+ (&
+gc
+);
+
+185 
+	}
+}
+
+188 
+	$þ›Á_Çt_ŒªsfÜm
+ (cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+li¡
+,
+
+189 
+bufãr
+ *
+�buf
+,
+
+190 cÚ¡ 
+dœeùiÚ
+)
+
+192 
+�_tý_udp_hdr
+ *
+h
+ = (�_tý_udp_hd¸*è
+	`BPTR
+ (
+�buf
+);
+
+193 
+i
+;
+
+194 
+ušt32_t
+ 
+addr
+, *
+addr_±r
+;
+
+195 cÚ¡ 
+ušt32_t
+ *
+äom
+, *
+to
+;
+
+196 
+accumuÏ‹
+ = 0;
+
+197 
+amask
+;
+
+198 
+®og
+ = 0;
+
+200 ià(
+	`check_debug_Ëv–
+ (
+D_CLIENT_NAT
+))
+
+201 
+	`´št_pkt
+ (&
+h
+->
+�
+, "BEFORE", 
+dœeùiÚ
+, 
+D_CLIENT_NAT
+);
+
+203 
+i
+ = 0; i < 
+li¡
+->
+n
+; ++i)
+
+205 cÚ¡ 
+þ›Á_Çt_’Œy
+ *
+e
+ = &
+li¡
+->
+’Œ›s
+[
+i
+];
+
+206 ià(
+e
+->
+ty³
+ ^ 
+dœeùiÚ
+)
+
+208 
+addr
+ = *(
+addr_±r
+ = &
+h
+->
+�
+.
+daddr
+);
+
+209 
+amask
+ = 2;
+
+213 
+addr
+ = *(
+addr_±r
+ = &
+h
+->
+�
+.
+§ddr
+);
+
+214 
+amask
+ = 1;
+
+216 ià(
+dœeùiÚ
+)
+
+218 
+äom
+ = &
+e
+->
+fÜeign_ÃtwÜk
+;
+
+219 
+to
+ = &
+e
+->
+ÃtwÜk
+;
+
+223 
+äom
+ = &
+e
+->
+ÃtwÜk
+;
+
+224 
+to
+ = &
+e
+->
+fÜeign_ÃtwÜk
+;
+
+227 ià(((
+addr
+ & 
+e
+->
+Ãtmask
+è=ð*
+äom
+è&& !(
+amask
+ & 
+®og
+))
+
+230 
+	`ADD_CHECKSUM_32
+(
+accumuÏ‹
+, 
+addr
+);
+
+233 
+addr
+ = (add¸& ~
+e
+->
+Ãtmask
+è| *
+to
+;
+
+236 
+	`SUB_CHECKSUM_32
+(
+accumuÏ‹
+, 
+addr
+);
+
+239 *
+addr_±r
+ = 
+addr
+;
+
+242 
+®og
+ |ð
+amask
+;
+
+245 ià(
+®og
+)
+
+247 ià(
+	`check_debug_Ëv–
+ (
+D_CLIENT_NAT
+))
+
+248 
+	`´št_pkt
+ (&
+h
+->
+�
+, "AFTER", 
+dœeùiÚ
+, 
+D_CLIENT_NAT
+);
+
+250 
+	`ADJUST_CHECKSUM
+(
+accumuÏ‹
+, 
+h
+->
+�
+.
+check
+);
+
+252 ià(
+h
+->
+�
+.
+´ÙocÞ
+ =ð
+OPENVPN_IPPROTO_TCP
+)
+
+254 ià(
+	`BLEN
+(
+�buf
+è>ð(
+Ý’v²_�hdr
+è+ (
+Ý’v²_týhdr
+))
+
+256 
+	`ADJUST_CHECKSUM
+(
+accumuÏ‹
+, 
+h
+->
+u
+.
+tý
+.
+check
+);
+
+259 ià(
+h
+->
+�
+.
+´ÙocÞ
+ =ð
+OPENVPN_IPPROTO_UDP
+)
+
+261 ià(
+	`BLEN
+(
+�buf
+è>ð(
+Ý’v²_�hdr
+è+ (
+Ý’v²_udphdr
+))
+
+263 
+	`ADJUST_CHECKSUM
+(
+accumuÏ‹
+, 
+h
+->
+u
+.
+udp
+.
+check
+);
+
+267 
+	}
+}
+
+	@clinat.h
+
+25 #ià!
+defšed
+(
+CLINAT_H
+è&& defšed(
+ENABLE_CLIENT_NAT
+)
+
+26 
+	#CLINAT_H
+
+
+	)
+
+28 
+	~"bufãr.h
+"
+
+30 
+	#MAX_CLIENT_NAT
+ 64
+
+	)
+
+32 
+	#CN_OUTGOING
+ 0
+
+	)
+
+33 
+	#CN_INCOMING
+ 1
+
+	)
+
+35 
+	sþ›Á_Çt_’Œy
+ {
+
+36 
+	#CN_SNAT
+ 0
+
+	)
+
+37 
+	#CN_DNAT
+ 1
+
+	)
+
+38 
+	mty³
+;
+
+39 
+š_addr_t
+ 
+	mÃtwÜk
+;
+
+40 
+š_addr_t
+ 
+	mÃtmask
+;
+
+41 
+š_addr_t
+ 
+	mfÜeign_ÃtwÜk
+;
+
+44 
+	sþ›Á_Çt_ÝtiÚ_li¡
+ {
+
+45 
+	mn
+;
+
+46 
+þ›Á_Çt_’Œy
+ 
+	m’Œ›s
+[
+MAX_CLIENT_NAT
+];
+
+49 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+Ãw_þ›Á_Çt_li¡
+ (
+gc_¬’a
+ *
+gc
+);
+
+50 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+þÚe_þ›Á_Çt_ÝtiÚ_li¡
+ (cÚ¡ þ›Á_Çt_ÝtiÚ_li¡ *
+¤c
+, 
+gc_¬’a
+ *
+gc
+);
+
+51 
+cÝy_þ›Á_Çt_ÝtiÚ_li¡
+ (
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+de¡
+, cÚ¡ þ›Á_Çt_ÝtiÚ_li¡ *
+¤c
+);
+
+52 
+´št_þ›Á_Çt_li¡
+(cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+li¡
+, 
+msgËv–
+);
+
+54 
+add_þ›Á_Çt_to_ÝtiÚ_li¡
+ (
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+de¡
+,
+
+55 cÚ¡ *
+ty³
+,
+
+56 cÚ¡ *
+ÃtwÜk
+,
+
+57 cÚ¡ *
+Ãtmask
+,
+
+58 cÚ¡ *
+fÜeign_ÃtwÜk
+,
+
+59 
+msgËv–
+);
+
+61 
+þ›Á_Çt_ŒªsfÜm
+ (cÚ¡ 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+li¡
+,
+
+62 
+bufãr
+ *
+�buf
+,
+
+63 cÚ¡ 
+dœeùiÚ
+);
+
+	@common.h
+
+25 #iâdeà
+COMMON_H
+
+
+26 
+	#COMMON_H
+
+
+	)
+
+31 #ifdeà
+USE_64_BIT_COUNTERS
+
+
+32 
+	tcouÁ”_ty³
+;
+
+33 #ifdeà
+WIN32
+
+
+34 
+	#couÁ”_fÜm©
+ "%I64u"
+
+	)
+
+36 
+	#couÁ”_fÜm©
+ "%Îu"
+
+	)
+
+39 
+	tcouÁ”_ty³
+;
+
+40 
+	#couÁ”_fÜm©
+ "%u"
+
+	)
+
+46 
+	tš‹rv®_t
+;
+
+51 
+	#BIG_TIMEOUT
+ (60*60*24*7è
+
+	)
+
+56 #ifdeà
+_WIN64
+
+
+57 
+	#±r_fÜm©
+ "0x%I64x"
+
+	)
+
+59 
+	#±r_fÜm©
+ "0x%08lx"
+
+	)
+
+61 
+	#time_fÜm©
+ "%lu"
+
+	)
+
+62 
+	#äagm’t_h—d”_fÜm©
+ "0x%08x"
+
+	)
+
+66 
+	ttime_ty³
+;
+
+67 #ifdeà
+_WIN64
+
+
+68 
+	t±r_ty³
+;
+
+70 
+	t±r_ty³
+;
+
+74 
+	#CCD_DEFAULT
+ "DEFAULT"
+
+	)
+
+81 
+	#TLS_CHANNEL_BUF_SIZE
+ 2048
+
+	)
+
+87 
+	#PUSH_BUNDLE_SIZE
+ 1024
+
+	)
+
+92 
+	#PUSH_REQUEST_INTERVAL
+ 5
+
+	)
+
+98 
+	#INLINE_FILE_TAG
+ "[[INLINE]]"
+
+	)
+
+103 
+	#SCRIPT_SECURITY_WARNING
+ "WARNING: Ex‹º®…rog¿m may‚Ù b�ÿÎed uÆes '--sü�t-£cur™y 2' o¸high” i ’abËd. S“ --h–°‹xˆÜ mª…ag�fÜ d‘ažed info."
+
+	)
+
+	@console.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+32 
+	~"cÚsÞe.h
+"
+
+33 
+	~"”rÜ.h
+"
+
+34 
+	~"bufãr.h
+"
+
+35 
+	~"misc.h
+"
+
+37 #ifdeà
+ENABLE_SYSTEMD
+
+
+38 
+	~<sy¡emd/sd-d«mÚ.h
+>
+
+41 #ifdeà
+WIN32
+
+
+43 
+	~"wš32.h
+"
+
+52 
+boÞ
+
+
+53 
+	$g‘_cÚsÞe_šput_wš32
+ (cÚ¡ *
+´om±
+, cÚ¡ 
+boÞ
+ 
+echo
+, *
+šput
+, cÚ¡ 
+ÿ·c™y
+)
+
+55 
+HANDLE
+ 
+š
+ = 
+INVALID_HANDLE_VALUE
+;
+
+56 
+HANDLE
+ 
+”r
+ = 
+INVALID_HANDLE_VALUE
+;
+
+57 
+DWORD
+ 
+Ën
+ = 0;
+
+59 
+	`ASSERT
+ (
+´om±
+);
+
+60 
+	`ASSERT
+ (
+šput
+);
+
+61 
+	`ASSERT
+ (
+ÿ·c™y
+ > 0);
+
+63 
+šput
+[0] = '\0';
+
+65 
+š
+ = 
+	`G‘StdHªdË
+ (
+STD_INPUT_HANDLE
+);
+
+66 
+”r
+ = 
+	`g‘_Üig_¡d”r
+ ();
+
+68 ià(
+š
+ !ð
+INVALID_HANDLE_VALUE
+
+
+69 && 
+”r
+ !ð
+INVALID_HANDLE_VALUE
+
+
+70 && !
+	`wš32_£rviû_š‹¼u±
+ (&
+wš32_sigÇl
+)
+
+71 && 
+	`Wr™eFže
+ (
+”r
+, 
+´om±
+, 
+	`¡¾’
+ (´om±), &
+Ën
+, 
+NULL
+))
+
+73 
+boÞ
+ 
+is_cÚsÞe
+ = (
+	`G‘FžeTy³
+ (
+š
+è=ð
+FILE_TYPE_CHAR
+);
+
+74 
+DWORD
+ 
+æags_§ve
+ = 0;
+
+75 
+¡©us
+ = 0;
+
+76 
+WCHAR
+ *
+wšput
+;
+
+78 ià(
+is_cÚsÞe
+)
+
+80 ià(
+	`G‘CÚsÞeMode
+ (
+š
+, &
+æags_§ve
+))
+
+82 
+DWORD
+ 
+æags
+ = 
+ENABLE_LINE_INPUT
+ | 
+ENABLE_PROCESSED_INPUT
+;
+
+83 ià(
+echo
+)
+
+84 
+æags
+ |ð
+ENABLE_ECHO_INPUT
+;
+
+85 
+	`S‘CÚsÞeMode
+ (
+š
+, 
+æags
+);
+
+88 
+is_cÚsÞe
+ = 0;
+
+91 ià(
+is_cÚsÞe
+)
+
+93 
+wšput
+ = 
+	`m®loc
+ (
+ÿ·c™y
+ *  (
+WCHAR
+));
+
+94 ià(
+wšput
+ =ð
+NULL
+)
+
+95  
+çl£
+;
+
+97 
+¡©us
+ = 
+	`R—dCÚsÞeW
+ (
+š
+, 
+wšput
+, 
+ÿ·c™y
+, &
+Ën
+, 
+NULL
+);
+
+98 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+wšput
+, 
+Ën
+, 
+šput
+, 
+ÿ·c™y
+, 
+NULL
+, NULL);
+
+99 
+	`ä“
+ (
+wšput
+);
+
+102 
+¡©us
+ = 
+	`R—dFže
+ (
+š
+, 
+šput
+, 
+ÿ·c™y
+, &
+Ën
+, 
+NULL
+);
+
+104 
+	`¡ršg_nuÎ_‹rmš©e
+ (
+šput
+, ()
+Ën
+, 
+ÿ·c™y
+);
+
+105 
+	`chomp
+ (
+šput
+);
+
+107 ià(!
+echo
+)
+
+108 
+	`Wr™eFže
+ (
+”r
+, "\r\n", 2, &
+Ën
+, 
+NULL
+);
+
+109 ià(
+is_cÚsÞe
+)
+
+110 
+	`S‘CÚsÞeMode
+ (
+š
+, 
+æags_§ve
+);
+
+111 ià(
+¡©us
+ && !
+	`wš32_£rviû_š‹¼u±
+ (&
+wš32_sigÇl
+))
+
+112  
+Œue
+;
+
+115  
+çl£
+;
+
+116 
+	}
+}
+
+120 #ifdeà
+HAVE_GETPASS
+
+
+122 
+FILE
+ *
+
+123 
+	$Ý’_‰y
+ (cÚ¡ 
+boÞ
+ 
+wr™e
+)
+
+125 
+FILE
+ *
+»t
+;
+
+126 
+»t
+ = 
+	`fÝ’
+ ("/dev/‰y", 
+wr™e
+ ? "w" : "r");
+
+127 ià(!
+»t
+)
+
+128 
+»t
+ = 
+wr™e
+ ? 
+¡d”r
+ : 
+¡dš
+;
+
+129  
+»t
+;
+
+130 
+	}
+}
+
+133 
+	$þo£_‰y
+ (
+FILE
+ *
+å
+)
+
+135 ià(
+å
+ !ð
+¡d”r
+ && f°!ð
+¡dš
+)
+
+136 
+	`fþo£
+ (
+å
+);
+
+137 
+	}
+}
+
+141 #ifdeà
+ENABLE_SYSTEMD
+
+
+147 
+boÞ
+
+
+148 
+	$check_sy¡emd_ruÂšg
+ ()
+
+150 
+¡©
+ 
+c
+;
+
+156  (
+	`sd_boÙed
+() > 0)
+
+157 && (
+	`¡©
+(
+SYSTEMD_ASK_PASSWORD_PATH
+, &
+c
+) == 0);
+
+159 
+	}
+}
+
+161 
+boÞ
+
+
+162 
+	$g‘_cÚsÞe_šput_sy¡emd
+ (cÚ¡ *
+´om±
+, cÚ¡ 
+boÞ
+ 
+echo
+, *
+šput
+, cÚ¡ 
+ÿ·c™y
+)
+
+164 
+¡d_out
+;
+
+165 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+166 
+¬gv
+‡rgv;
+
+168 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+169 
+	`¬gv_´štf
+ (&
+¬gv
+, 
+SYSTEMD_ASK_PASSWORD_PATH
+);
+
+170 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+´om±
+);
+
+172 ià((
+¡d_out
+ = 
+	`Ý’v²_pÝ’
+ (&
+¬gv
+, 
+NULL
+)) < 0) {
+
+173  
+çl£
+;
+
+175 
+	`CLEAR
+ (*
+šput
+);
+
+176 ià(
+	`»ad
+ (
+¡d_out
+, 
+šput
+, 
+ÿ·c™y
+) != 0)
+
+178 
+	`chomp
+ (
+šput
+);
+
+179 
+»t
+ = 
+Œue
+;
+
+181 
+	`þo£
+ (
+¡d_out
+);
+
+183 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+185  
+»t
+;
+
+186 
+	}
+}
+
+194 
+boÞ
+
+
+195 
+	$g‘_cÚsÞe_šput
+ (cÚ¡ *
+´om±
+, cÚ¡ 
+boÞ
+ 
+echo
+, *
+šput
+, cÚ¡ 
+ÿ·c™y
+)
+
+197 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+198 
+	`ASSERT
+ (
+´om±
+);
+
+199 
+	`ASSERT
+ (
+šput
+);
+
+200 
+	`ASSERT
+ (
+ÿ·c™y
+ > 0);
+
+201 
+šput
+[0] = '\0';
+
+203 #ifdeà
+ENABLE_SYSTEMD
+
+
+204 ià(
+	`check_sy¡emd_ruÂšg
+ ())
+
+205  
+	`g‘_cÚsÞe_šput_sy¡emd
+ (
+´om±
+, 
+echo
+, 
+šput
+, 
+ÿ·c™y
+);
+
+208 #ià
+	`defšed
+(
+WIN32
+)
+
+209  
+	`g‘_cÚsÞe_šput_wš32
+ (
+´om±
+, 
+echo
+, 
+šput
+, 
+ÿ·c™y
+);
+
+210 #–ià
+	`defšed
+(
+HAVE_GETPASS
+)
+
+211 ià(
+echo
+)
+
+213 
+FILE
+ *
+å
+;
+
+215 
+å
+ = 
+	`Ý’_‰y
+ (
+Œue
+);
+
+216 
+	`årštf
+ (
+å
+, "%s", 
+´om±
+);
+
+217 
+	`fæush
+ (
+å
+);
+
+218 
+	`þo£_‰y
+ (
+å
+);
+
+220 
+å
+ = 
+	`Ý’_‰y
+ (
+çl£
+);
+
+221 ià(
+	`fg‘s
+ (
+šput
+, 
+ÿ·c™y
+, 
+å
+è!ð
+NULL
+)
+
+223 
+	`chomp
+ (
+šput
+);
+
+224 
+»t
+ = 
+Œue
+;
+
+226 
+	`þo£_‰y
+ (
+å
+);
+
+230 *
+gp
+ = 
+	`g‘·ss
+ (
+´om±
+);
+
+231 ià(
+gp
+)
+
+233 
+	`¡ºýyÁ
+ (
+šput
+, 
+gp
+, 
+ÿ·c™y
+);
+
+234 
+	`mem£t
+ (
+gp
+, 0, 
+	`¡¾’
+ (gp));
+
+235 
+»t
+ = 
+Œue
+;
+
+239 
+	`msg
+ (
+M_FATAL
+, "SÜry, buˆI cª'ˆg‘ cÚsÞ�špuˆÚ�hi OS (%s)", 
+´om±
+);
+
+241  
+»t
+;
+
+242 
+	}
+}
+
+	@console.h
+
+25 #iâdeà
+CONSOLE_H
+
+
+26 
+	#CONSOLE_H
+
+
+	)
+
+28 
+	~"basic.h
+"
+
+30 
+boÞ
+
+
+31 
+g‘_cÚsÞe_šput
+ (cÚ¡ *
+´om±
+, cÚ¡ 
+boÞ
+ 
+echo
+, *
+šput
+, cÚ¡ 
+ÿ·c™y
+);
+
+	@crypto.c
+
+26 #ifdeà
+HAVE_CONFIG_H
+
+
+27 
+	~"cÚfig.h
+"
+
+28 #–ià
+defšed
+(
+_MSC_VER
+)
+
+29 
+	~"cÚfig-msvc.h
+"
+
+32 
+	~"sysh—d.h
+"
+
+34 #ifdeà
+ENABLE_CRYPTO
+
+
+36 
+	~"üy±o.h
+"
+
+37 
+	~"”rÜ.h
+"
+
+38 
+	~"misc.h
+"
+
+40 
+	~"memdbg.h
+"
+
+65 
+	#CRYPT_ERROR
+(
+fÜm©
+) \
+
+66 dØ{ 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "%s: " 
+fÜm©
+, 
+”rÜ_´efix
+); 
+”rÜ_ex™
+; } 
+çl£
+)
+
+	)
+
+73 
+	$memcmp_cÚ¡ªt_time
+ (cÚ¡ *
+a
+, cÚ¡ *
+b
+, 
+size_t
+ 
+size
+) {
+
+74 cÚ¡ 
+ušt8_t
+ * 
+a1
+ = 
+a
+;
+
+75 cÚ¡ 
+ušt8_t
+ * 
+b1
+ = 
+b
+;
+
+76 
+»t
+ = 0;
+
+77 
+size_t
+ 
+i
+;
+
+79 
+i
+ = 0; i < 
+size
+; i++) {
+
+80 
+»t
+ |ð*
+a1
+++ ^ *
+b1
+++;
+
+83  
+»t
+;
+
+84 
+	}
+}
+
+87 
+	$Ý’v²_’üy±
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+88 cÚ¡ 
+üy±o_ÝtiÚs
+ *
+Ýt
+,
+
+89 cÚ¡ 
+äame
+* frame)
+
+91 
+gc_¬’a
+ 
+gc
+;
+
+92 
+	`gc_š™
+ (&
+gc
+);
+
+94 ià(
+buf
+->
+Ën
+ > 0 && 
+Ýt
+->
+key_ùx_bi
+)
+
+96 
+key_ùx
+ *
+ùx
+ = &
+Ýt
+->
+key_ùx_bi
+->
+’üy±
+;
+
+99 ià(
+ùx
+->
+c�h”
+)
+
+101 
+ušt8_t
+ 
+iv_buf
+[
+OPENVPN_MAX_IV_LENGTH
+];
+
+102 cÚ¡ 
+iv_size
+ = 
+	`c�h”_ùx_iv_Ëngth
+ (
+ùx
+->
+c�h”
+);
+
+103 cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+ = 
+	`c�h”_ùx_g‘_c�h”_kt
+ (
+ùx
+->
+c�h”
+);
+
+104 
+ouŽ’
+;
+
+106 ià(
+	`c�h”_kt_mode_cbc
+(
+c�h”_kt
+))
+
+108 
+	`CLEAR
+ (
+iv_buf
+);
+
+111 ià(
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+)
+
+112 
+	`´ng_by‹s
+ (
+iv_buf
+, 
+iv_size
+);
+
+115 ià(
+Ýt
+->
+·ck‘_id
+)
+
+117 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+118 
+	`·ck‘_id_®loc_outgošg
+ (&
+Ýt
+->
+·ck‘_id
+->
+£nd
+, &
+pš
+, 
+	`BOOL_CAST
+ (Ýt->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+));
+
+119 
+	`ASSERT
+ (
+	`·ck‘_id_wr™e
+ (&
+pš
+, 
+buf
+, 
+	`BOOL_CAST
+ (
+Ýt
+->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+), 
+Œue
+));
+
+122 ià(
+	`c�h”_kt_mode_ofb_cfb
+(
+c�h”_kt
+))
+
+124 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+125 
+bufãr
+ 
+b
+;
+
+127 
+	`ASSERT
+ (
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+);
+
+128 
+	`ASSERT
+ (
+Ýt
+->
+·ck‘_id
+);
+
+130 
+	`·ck‘_id_®loc_outgošg
+ (&
+Ýt
+->
+·ck‘_id
+->
+£nd
+, &
+pš
+, 
+Œue
+);
+
+131 
+	`mem£t
+ (
+iv_buf
+, 0, 
+iv_size
+);
+
+132 
+	`buf_£t_wr™e
+ (&
+b
+, 
+iv_buf
+, 
+iv_size
+);
+
+133 
+	`ASSERT
+ (
+	`·ck‘_id_wr™e
+ (&
+pš
+, &
+b
+, 
+Œue
+, 
+çl£
+));
+
+137 
+	`ASSERT
+ (0);
+
+141 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+wÜk
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+144 ià(
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+)
+
+145 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "ENCRYPT IV: %s", 
+	`fÜm©_hex
+ (
+iv_buf
+, 
+iv_size
+, 0, &
+gc
+));
+
+147 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "ENCRYPT FROM: %s",
+
+148 
+	`fÜm©_hex
+ (
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf), 80, &
+gc
+));
+
+151 
+	`ASSERT
+ (
+	`c�h”_ùx_»£t
+(
+ùx
+->
+c�h”
+, 
+iv_buf
+));
+
+154 ià(!
+	`buf_§ã
+ (&
+wÜk
+, 
+buf
+->
+Ën
+ + 
+	`c�h”_ùx_block_size
+(
+ùx
+->
+c�h”
+)))
+
+156 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "ENCRYPT: buffer sizeƒrror, bc=%d bo=%d bl=%d wc=%d wo=%d wl=%d cbs=%d",
+
+157 
+buf
+->
+ÿ·c™y
+,
+
+158 
+buf
+->
+off£t
+,
+
+159 
+buf
+->
+Ën
+,
+
+160 
+wÜk
+.
+ÿ·c™y
+,
+
+161 
+wÜk
+.
+off£t
+,
+
+162 
+wÜk
+.
+Ën
+,
+
+163 
+	`c�h”_ùx_block_size
+ (
+ùx
+->
+c�h”
+));
+
+164 
+”r
+;
+
+168 
+	`ASSERT
+ (
+	`c�h”_ùx_upd©e
+ (
+ùx
+->
+c�h”
+, 
+	`BPTR
+ (&
+wÜk
+), &
+ouŽ’
+, BPTR (
+buf
+), 
+	`BLEN
+ (buf)));
+
+169 
+	`ASSERT
+ (
+	`buf_šc_Ën
+(&
+wÜk
+, 
+ouŽ’
+));
+
+172 
+	`ASSERT
+ (
+	`c�h”_ùx_fš®
+(
+ùx
+->
+c�h”
+, 
+	`BPTR
+ (&
+wÜk
+è+ 
+ouŽ’
+, &outlen));
+
+173 
+	`ASSERT
+ (
+	`buf_šc_Ën
+(&
+wÜk
+, 
+ouŽ’
+));
+
+176 
+	`ASSERT
+ (
+	`c�h”_kt_mode
+ (
+c�h”_kt
+è!ð
+OPENVPN_MODE_CBC
+ ||
+
+177 
+ouŽ’
+ =ð
+iv_size
+);
+
+180 ià(
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+)
+
+182 
+ušt8_t
+ *
+ou�ut
+ = 
+	`buf_´•’d
+ (&
+wÜk
+, 
+iv_size
+);
+
+183 
+	`ASSERT
+ (
+ou�ut
+);
+
+184 
+	`memýy
+ (
+ou�ut
+, 
+iv_buf
+, 
+iv_size
+);
+
+187 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "ENCRYPT TO: %s",
+
+188 
+	`fÜm©_hex
+ (
+	`BPTR
+ (&
+wÜk
+), 
+	`BLEN
+ (&wÜk), 80, &
+gc
+));
+
+192 ià(
+Ýt
+->
+·ck‘_id
+)
+
+194 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+195 
+	`·ck‘_id_®loc_outgošg
+ (&
+Ýt
+->
+·ck‘_id
+->
+£nd
+, &
+pš
+, 
+	`BOOL_CAST
+ (Ýt->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+));
+
+196 
+	`ASSERT
+ (
+	`·ck‘_id_wr™e
+ (&
+pš
+, 
+buf
+, 
+	`BOOL_CAST
+ (
+Ýt
+->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+), 
+Œue
+));
+
+198 
+wÜk
+ = *
+buf
+;
+
+202 ià(
+ùx
+->
+hmac
+)
+
+204 
+ušt8_t
+ *
+ou�ut
+ = 
+NULL
+;
+
+206 
+	`hmac_ùx_»£t
+ (
+ùx
+->
+hmac
+);
+
+207 
+	`hmac_ùx_upd©e
+ (
+ùx
+->
+hmac
+, 
+	`BPTR
+(&
+wÜk
+), 
+	`BLEN
+(&work));
+
+208 
+ou�ut
+ = 
+	`buf_´•’d
+ (&
+wÜk
+, 
+	`hmac_ùx_size
+(
+ùx
+->
+hmac
+));
+
+209 
+	`ASSERT
+ (
+ou�ut
+);
+
+210 
+	`hmac_ùx_fš®
+ (
+ùx
+->
+hmac
+, 
+ou�ut
+);
+
+213 *
+buf
+ = 
+wÜk
+;
+
+216 
+	`gc_ä“
+ (&
+gc
+);
+
+219 
+”r
+:
+
+220 
+	`üy±o_þ—r_”rÜ
+();
+
+221 
+buf
+->
+Ën
+ = 0;
+
+222 
+	`gc_ä“
+ (&
+gc
+);
+
+224 
+	}
+}
+
+234 
+boÞ
+
+
+235 
+	$Ý’v²_deüy±
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+236 cÚ¡ 
+üy±o_ÝtiÚs
+ *
+Ýt
+,
+
+237 cÚ¡ 
+äame
+* frame)
+
+239 cÚ¡ 
+”rÜ_´efix
+[] = "Authenticate/Decrypt…acketƒrror";
+
+240 
+gc_¬’a
+ 
+gc
+;
+
+241 
+	`gc_š™
+ (&
+gc
+);
+
+243 ià(
+buf
+->
+Ën
+ > 0 && 
+Ýt
+->
+key_ùx_bi
+)
+
+245 
+key_ùx
+ *
+ùx
+ = &
+Ýt
+->
+key_ùx_bi
+->
+deüy±
+;
+
+246 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+247 
+boÞ
+ 
+have_pš
+ = 
+çl£
+;
+
+250 ià(
+ùx
+->
+hmac
+)
+
+252 
+hmac_Ën
+;
+
+253 
+ušt8_t
+ 
+loÿl_hmac
+[
+MAX_HMAC_KEY_LENGTH
+];
+
+255 
+	`hmac_ùx_»£t
+(
+ùx
+->
+hmac
+);
+
+258 
+hmac_Ën
+ = 
+	`hmac_ùx_size
+ (
+ùx
+->
+hmac
+);
+
+261 ià(
+buf
+->
+Ën
+ < 
+hmac_Ën
+)
+
+262 
+	`CRYPT_ERROR
+ ("missing‡uthentication info");
+
+264 
+	`hmac_ùx_upd©e
+ (
+ùx
+->
+hmac
+, 
+	`BPTR
+ (
+buf
+è+ 
+hmac_Ën
+, 
+	`BLEN
+ (buf) - hmac_len);
+
+265 
+	`hmac_ùx_fš®
+ (
+ùx
+->
+hmac
+, 
+loÿl_hmac
+);
+
+268 ià(
+	`memcmp_cÚ¡ªt_time
+ (
+loÿl_hmac
+, 
+	`BPTR
+ (
+buf
+), 
+hmac_Ën
+))
+
+269 
+	`CRYPT_ERROR
+ ("packet HMAC‡uthentication failed");
+
+271 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 
+hmac_Ën
+));
+
+276 ià(
+ùx
+->
+c�h”
+)
+
+278 cÚ¡ 
+iv_size
+ = 
+	`c�h”_ùx_iv_Ëngth
+ (
+ùx
+->
+c�h”
+);
+
+279 cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+ = 
+	`c�h”_ùx_g‘_c�h”_kt
+ (
+ùx
+->
+c�h”
+);
+
+280 
+ušt8_t
+ 
+iv_buf
+[
+OPENVPN_MAX_IV_LENGTH
+];
+
+281 
+ouŽ’
+;
+
+284 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+wÜk
+, 
+	`FRAME_HEADROOM_ADJ
+ (
+äame
+, 
+FRAME_HEADROOM_MARKER_DECRYPT
+)));
+
+287 
+	`CLEAR
+ (
+iv_buf
+);
+
+288 ià(
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+)
+
+290 ià(
+buf
+->
+Ën
+ < 
+iv_size
+)
+
+291 
+	`CRYPT_ERROR
+ ("missing IV info");
+
+292 
+	`memýy
+ (
+iv_buf
+, 
+	`BPTR
+ (
+buf
+), 
+iv_size
+);
+
+293 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 
+iv_size
+));
+
+297 ià(
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+)
+
+298 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "DECRYPT IV: %s", 
+	`fÜm©_hex
+ (
+iv_buf
+, 
+iv_size
+, 0, &
+gc
+));
+
+300 ià(
+buf
+->
+Ën
+ < 1)
+
+301 
+	`CRYPT_ERROR
+ ("missing…ayload");
+
+304 ià(!
+	`c�h”_ùx_»£t
+ (
+ùx
+->
+c�h”
+, 
+iv_buf
+))
+
+305 
+	`CRYPT_ERROR
+ ("cipher init failed");
+
+308 ià(!
+	`buf_§ã
+ (&
+wÜk
+, 
+buf
+->
+Ën
+ + 
+	`c�h”_ùx_block_size
+(
+ùx
+->
+c�h”
+)))
+
+309 
+	`CRYPT_ERROR
+ ("potential buffer overflow");
+
+312 ià(!
+	`c�h”_ùx_upd©e
+ (
+ùx
+->
+c�h”
+, 
+	`BPTR
+ (&
+wÜk
+), &
+ouŽ’
+, BPTR (
+buf
+), 
+	`BLEN
+ (buf)))
+
+313 
+	`CRYPT_ERROR
+ ("cipher update failed");
+
+314 
+	`ASSERT
+ (
+	`buf_šc_Ën
+(&
+wÜk
+, 
+ouŽ’
+));
+
+317 ià(!
+	`c�h”_ùx_fš®
+ (
+ùx
+->
+c�h”
+, 
+	`BPTR
+ (&
+wÜk
+è+ 
+ouŽ’
+, &outlen))
+
+318 
+	`CRYPT_ERROR
+ ("cipher final failed");
+
+319 
+	`ASSERT
+ (
+	`buf_šc_Ën
+(&
+wÜk
+, 
+ouŽ’
+));
+
+321 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "DECRYPT TO: %s",
+
+322 
+	`fÜm©_hex
+ (
+	`BPTR
+ (&
+wÜk
+), 
+	`BLEN
+ (&wÜk), 80, &
+gc
+));
+
+326 ià(
+	`c�h”_kt_mode_cbc
+(
+c�h”_kt
+))
+
+328 ià(
+Ýt
+->
+·ck‘_id
+)
+
+330 ià(!
+	`·ck‘_id_»ad
+ (&
+pš
+, &
+wÜk
+, 
+	`BOOL_CAST
+ (
+Ýt
+->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+)))
+
+331 
+	`CRYPT_ERROR
+ ("error„eading CBC…acket-id");
+
+332 
+have_pš
+ = 
+Œue
+;
+
+335 ià(
+	`c�h”_kt_mode_ofb_cfb
+(
+c�h”_kt
+))
+
+337 
+bufãr
+ 
+b
+;
+
+339 
+	`ASSERT
+ (
+Ýt
+->
+æags
+ & 
+CO_USE_IV
+);
+
+340 
+	`ASSERT
+ (
+Ýt
+->
+·ck‘_id
+);
+
+342 
+	`buf_£t_»ad
+ (&
+b
+, 
+iv_buf
+, 
+iv_size
+);
+
+343 ià(!
+	`·ck‘_id_»ad
+ (&
+pš
+, &
+b
+, 
+Œue
+))
+
+344 
+	`CRYPT_ERROR
+ ("error„eading CFB/OFB…acket-id");
+
+345 
+have_pš
+ = 
+Œue
+;
+
+349 
+	`ASSERT
+ (0);
+
+355 
+wÜk
+ = *
+buf
+;
+
+356 ià(
+Ýt
+->
+·ck‘_id
+)
+
+358 ià(!
+	`·ck‘_id_»ad
+ (&
+pš
+, &
+wÜk
+, 
+	`BOOL_CAST
+ (
+Ýt
+->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+)))
+
+359 
+	`CRYPT_ERROR
+ ("error„eading…acket-id");
+
+360 
+have_pš
+ = !
+	`BOOL_CAST
+ (
+Ýt
+->
+æags
+ & 
+CO_IGNORE_PACKET_ID
+);
+
+364 ià(
+have_pš
+)
+
+366 
+	`·ck‘_id_»­_‹¡
+ (&
+Ýt
+->
+·ck‘_id
+->
+»c
+);
+
+367 ià(
+	`·ck‘_id_‹¡
+ (&
+Ýt
+->
+·ck‘_id
+->
+»c
+, &
+pš
+))
+
+369 
+	`·ck‘_id_add
+ (&
+Ýt
+->
+·ck‘_id
+->
+»c
+, &
+pš
+);
+
+370 ià(
+Ýt
+->
+pid_³rsi¡
+ && (Ýt->
+æags
+ & 
+CO_PACKET_ID_LONG_FORM
+))
+
+371 
+	`·ck‘_id_³rsi¡_§ve_obj
+ (
+Ýt
+->
+pid_³rsi¡
+, o±->
+·ck‘_id
+);
+
+375 ià(!(
+Ýt
+->
+æags
+ & 
+CO_MUTE_REPLAY_WARNINGS
+))
+
+376 
+	`msg
+ (
+D_REPLAY_ERRORS
+, "%s: bad…acket ID (may be‡„eplay): %s -- see�he man…ageƒntry for --no-replay‡nd --replay-window for more info or silence�his warning with --mute-replay-warnings",
+
+377 
+”rÜ_´efix
+, 
+	`·ck‘_id_Ãt_´št
+ (&
+pš
+, 
+Œue
+, &
+gc
+));
+
+378 
+”rÜ_ex™
+;
+
+381 *
+buf
+ = 
+wÜk
+;
+
+384 
+	`gc_ä“
+ (&
+gc
+);
+
+385  
+Œue
+;
+
+387 
+”rÜ_ex™
+:
+
+388 
+	`üy±o_þ—r_”rÜ
+();
+
+389 
+buf
+->
+Ën
+ = 0;
+
+390 
+	`gc_ä“
+ (&
+gc
+);
+
+391  
+çl£
+;
+
+392 
+	}
+}
+
+399 
+	$üy±o_adju¡_äame_·¿m‘”s
+(
+äame
+ *frame,
+
+400 cÚ¡ 
+key_ty³
+* 
+kt
+,
+
+401 
+boÞ
+ 
+c�h”_defšed
+,
+
+402 
+boÞ
+ 
+u£_iv
+,
+
+403 
+boÞ
+ 
+·ck‘_id
+,
+
+404 
+boÞ
+ 
+·ck‘_id_lÚg_fÜm
+)
+
+406 
+size_t
+ 
+üy±o_ov”h—d
+ = 0;
+
+408 ià(
+·ck‘_id
+)
+
+409 
+üy±o_ov”h—d
+ +ð
+	`·ck‘_id_size
+ (
+·ck‘_id_lÚg_fÜm
+);
+
+411 ià(
+c�h”_defšed
+)
+
+413 ià(
+u£_iv
+)
+
+414 
+üy±o_ov”h—d
+ +ð
+	`c�h”_kt_iv_size
+ (
+kt
+->
+c�h”
+);
+
+417 
+üy±o_ov”h—d
+ +ð
+	`c�h”_kt_block_size
+ (
+kt
+->
+c�h”
+);
+
+420 
+üy±o_ov”h—d
+ +ð
+kt
+->
+hmac_Ëngth
+;
+
+422 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, 
+üy±o_ov”h—d
+);
+
+424 
+	`msg
+(
+D_MTU_DEBUG
+, "%s: Adjusting frame…arameters for crypto by %zu bytes",
+
+425 
+__func__
+, 
+üy±o_ov”h—d
+);
+
+426 
+	}
+}
+
+432 
+	$š™_key_ty³
+ (
+key_ty³
+ *
+kt
+, cÚ¡ *
+c�h”Çme
+,
+
+433 
+boÞ
+ 
+c�h”Çme_defšed
+, cÚ¡ *
+authÇme
+,
+
+434 
+boÞ
+ 
+authÇme_defšed
+, 
+keysize
+,
+
+435 
+boÞ
+ 
+cfb_ofb_®lowed
+, boÞ 
+w¬n
+)
+
+437 
+	`CLEAR
+ (*
+kt
+);
+
+438 ià(
+c�h”Çme
+ && 
+c�h”Çme_defšed
+)
+
+440 
+kt
+->
+c�h”
+ = 
+	`c�h”_kt_g‘
+ (
+	`Œª¦©e_c�h”_Çme_äom_Ý’v²
+(
+c�h”Çme
+));
+
+441 
+kt
+->
+c�h”_Ëngth
+ = 
+	`c�h”_kt_key_size
+ (kt->
+c�h”
+);
+
+442 ià(
+keysize
+ > 0 && keysiz�<ð
+MAX_CIPHER_KEY_LENGTH
+)
+
+443 
+kt
+->
+c�h”_Ëngth
+ = 
+keysize
+;
+
+447 ià(!(
+	`c�h”_kt_mode_cbc
+(
+kt
+->
+c�h”
+)
+
+448 #ifdeà
+ENABLE_OFB_CFB_MODE
+
+
+449 || (
+cfb_ofb_®lowed
+ && 
+	`c�h”_kt_mode_ofb_cfb
+(
+kt
+->
+c�h”
+))
+
+452 
+	`msg
+ (
+M_FATAL
+, "C�h” '%s' mod�nÙ suµÜ‹d", 
+c�h”Çme
+);
+
+457 ià(
+w¬n
+)
+
+458 
+	`msg
+ (
+M_WARN
+, "******* WARNING *******:‚ull cipher specified,‚oƒncryption will be used");
+
+460 ià(
+authÇme
+ && 
+authÇme_defšed
+)
+
+462 
+kt
+->
+dige¡
+ = 
+	`md_kt_g‘
+ (
+authÇme
+);
+
+463 
+kt
+->
+hmac_Ëngth
+ = 
+	`md_kt_size
+ (kt->
+dige¡
+);
+
+467 ià(
+w¬n
+)
+
+468 
+	`msg
+ (
+M_WARN
+, "******* WARNING *******:‚ull MAC specified,‚o‡uthentication will be used");
+
+470 
+	}
+}
+
+474 
+	$š™_key_ùx
+ (
+key_ùx
+ *
+ùx
+, 
+key
+ *key,
+
+475 cÚ¡ 
+key_ty³
+ *
+kt
+, 
+’c
+,
+
+476 cÚ¡ *
+´efix
+)
+
+478 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+479 
+	`CLEAR
+ (*
+ùx
+);
+
+480 ià(
+kt
+->
+c�h”
+ && kt->
+c�h”_Ëngth
+ > 0)
+
+483 
+	`ALLOC_OBJ
+(
+ùx
+->
+c�h”
+, 
+c�h”_ùx_t
+);
+
+484 
+	`c�h”_ùx_š™
+ (
+ùx
+->
+c�h”
+, 
+key
+->c�h”, 
+kt
+->
+c�h”_Ëngth
+,
+
+485 
+kt
+->
+c�h”
+, 
+’c
+);
+
+487 
+	`msg
+ (
+D_HANDSHAKE
+, "%s: Cipher '%s' initialized with %d bit key",
+
+488 
+´efix
+,
+
+489 
+	`c�h”_kt_Çme
+(
+kt
+->
+c�h”
+),
+
+490 
+kt
+->
+c�h”_Ëngth
+ *8);
+
+492 
+	`dmsg
+ (
+D_SHOW_KEYS
+, "%s: CIPHER KEY: %s", 
+´efix
+,
+
+493 
+	`fÜm©_hex
+ (
+key
+->
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 0, &
+gc
+));
+
+494 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "%s: CIPHER block_size=%d iv_size=%d",
+
+495 
+´efix
+,
+
+496 
+	`c�h”_kt_block_size
+(
+kt
+->
+c�h”
+),
+
+497 
+	`c�h”_kt_iv_size
+(
+kt
+->
+c�h”
+));
+
+499 ià(
+kt
+->
+dige¡
+ && kt->
+hmac_Ëngth
+ > 0)
+
+501 
+	`ALLOC_OBJ
+(
+ùx
+->
+hmac
+, 
+hmac_ùx_t
+);
+
+502 
+	`hmac_ùx_š™
+ (
+ùx
+->
+hmac
+, 
+key
+->hmac, 
+kt
+->
+hmac_Ëngth
+, kt->
+dige¡
+);
+
+504 
+	`msg
+ (
+D_HANDSHAKE
+,
+
+506 
+´efix
+, 
+	`md_kt_size
+(
+kt
+->
+dige¡
+è* 8, 
+	`md_kt_Çme
+(kt->digest));
+
+508 
+	`dmsg
+ (
+D_SHOW_KEYS
+, "%s: HMAC KEY: %s", 
+´efix
+,
+
+509 
+	`fÜm©_hex
+ (
+key
+->
+hmac
+, 
+kt
+->
+hmac_Ëngth
+, 0, &
+gc
+));
+
+511 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "%s: HMAC size=%d block_size=%d",
+
+512 
+´efix
+,
+
+513 
+	`md_kt_size
+(
+kt
+->
+dige¡
+),
+
+514 
+	`hmac_ùx_size
+(
+ùx
+->
+hmac
+));
+
+517 
+	`gc_ä“
+ (&
+gc
+);
+
+518 
+	}
+}
+
+521 
+	$ä“_key_ùx
+ (
+key_ùx
+ *
+ùx
+)
+
+523 ià(
+ùx
+->
+c�h”
+)
+
+525 
+	`c�h”_ùx_þ—nup
+(
+ùx
+->
+c�h”
+);
+
+526 
+	`ä“
+(
+ùx
+->
+c�h”
+);
+
+527 
+ùx
+->
+c�h”
+ = 
+NULL
+;
+
+529 ià(
+ùx
+->
+hmac
+)
+
+531 
+	`hmac_ùx_þ—nup
+(
+ùx
+->
+hmac
+);
+
+532 
+	`ä“
+(
+ùx
+->
+hmac
+);
+
+533 
+ùx
+->
+hmac
+ = 
+NULL
+;
+
+535 
+	}
+}
+
+538 
+	$ä“_key_ùx_bi
+ (
+key_ùx_bi
+ *
+ùx
+)
+
+540 
+	`ä“_key_ùx
+(&
+ùx
+->
+’üy±
+);
+
+541 
+	`ä“_key_ùx
+(&
+ùx
+->
+deüy±
+);
+
+542 
+	}
+}
+
+545 
+boÞ
+
+
+546 
+	$key_is_z”o
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+)
+
+548 
+i
+;
+
+549 
+i
+ = 0; i < 
+kt
+->
+c�h”_Ëngth
+; ++i)
+
+550 ià(
+key
+->
+c�h”
+[
+i
+])
+
+551  
+çl£
+;
+
+552 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: WARNING: zero key detected");
+
+553  
+Œue
+;
+
+554 
+	}
+}
+
+559 
+boÞ
+
+
+560 
+	$check_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+)
+
+562 ià(
+kt
+->
+c�h”
+)
+
+567 ià(
+	`key_is_z”o
+(
+key
+, 
+kt
+))
+
+568  
+çl£
+;
+
+574 cÚ¡ 
+ndc
+ = 
+	`key_des_num_cblocks
+ (
+kt
+->
+c�h”
+);
+
+575 ià(
+ndc
+)
+
+576  
+	`key_des_check
+ (
+key
+->
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 
+ndc
+);
+
+578  
+Œue
+;
+
+581  
+Œue
+;
+
+582 
+	}
+}
+
+593 
+	$fixup_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+)
+
+595 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+596 ià(
+kt
+->
+c�h”
+)
+
+598 #ifdeà
+ENABLE_DEBUG
+
+
+599 cÚ¡ 
+key
+ 
+Üig
+ = *key;
+
+601 cÚ¡ 
+ndc
+ = 
+	`key_des_num_cblocks
+ (
+kt
+->
+c�h”
+);
+
+603 ià(
+ndc
+)
+
+604 
+	`key_des_fixup
+ (
+key
+->
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 
+ndc
+);
+
+606 #ifdeà
+ENABLE_DEBUG
+
+
+607 ià(
+	`check_debug_Ëv–
+ (
+D_CRYPTO_DEBUG
+))
+
+609 ià(
+	`memcmp
+ (
+Üig
+.
+c�h”
+, 
+key
+->c�h”, 
+kt
+->
+c�h”_Ëngth
+))
+
+610 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "CRYPTO INFO: fixup_key: before=%s‡fter=%s",
+
+611 
+	`fÜm©_hex
+ (
+Üig
+.
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 0, &
+gc
+),
+
+612 
+	`fÜm©_hex
+ (
+key
+->
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 0, &
+gc
+));
+
+616 
+	`gc_ä“
+ (&
+gc
+);
+
+617 
+	}
+}
+
+620 
+	$check_»¶ay_iv_cÚsi¡’cy
+ (cÚ¡ 
+key_ty³
+ *
+kt
+, 
+boÞ
+ 
+·ck‘_id
+, boÞ 
+u£_iv
+)
+
+622 
+	`ASSERT
+(
+kt
+);
+
+624 ià(
+	`c�h”_kt_mode_ofb_cfb
+(
+kt
+->
+c�h”
+è&& !(
+·ck‘_id
+ && 
+u£_iv
+))
+
+625 
+	`msg
+ (
+M_FATAL
+, "--no-replay or --no-iv cannot be used with‡ CFB or OFB mode cipher");
+
+626 
+	}
+}
+
+633 
+	$g’”©e_key_¿ndom
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+)
+
+635 
+c�h”_Ën
+ = 
+MAX_CIPHER_KEY_LENGTH
+;
+
+636 
+hmac_Ën
+ = 
+MAX_HMAC_KEY_LENGTH
+;
+
+638 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+641 
+	`CLEAR
+ (*
+key
+);
+
+642 ià(
+kt
+)
+
+644 ià(
+kt
+->
+c�h”
+ && kt->
+c�h”_Ëngth
+ > 0 && kt->c�h”_Ëngth <ð
+c�h”_Ën
+)
+
+645 
+c�h”_Ën
+ = 
+kt
+->
+c�h”_Ëngth
+;
+
+647 ià(
+kt
+->
+dige¡
+ && kt->
+hmac_Ëngth
+ > 0 && kt->hmac_Ëngth <ð
+hmac_Ën
+)
+
+648 
+hmac_Ën
+ = 
+kt
+->
+hmac_Ëngth
+;
+
+650 ià(!
+	`¿nd_by‹s
+ (
+key
+->
+c�h”
+, 
+c�h”_Ën
+)
+
+651 || !
+	`¿nd_by‹s
+ (
+key
+->
+hmac
+, 
+hmac_Ën
+))
+
+652 
+	`msg
+ (
+M_FATAL
+, "ERROR: Random‚umber generator cannot obtainƒntropy for key generation");
+
+654 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "C�h” sourûƒÁrÝy: %s", 
+	`fÜm©_hex
+ (
+key
+->
+c�h”
+, 
+c�h”_Ën
+, 0, &
+gc
+));
+
+655 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "HMAC sourûƒÁrÝy: %s", 
+	`fÜm©_hex
+ (
+key
+->
+hmac
+, 
+hmac_Ën
+, 0, &
+gc
+));
+
+657 ià(
+kt
+)
+
+658 
+	`fixup_key
+ (
+key
+, 
+kt
+);
+
+659 } 
+kt
+ && !
+	`check_key
+ (
+key
+, kt));
+
+661 
+	`gc_ä“
+ (&
+gc
+);
+
+662 
+	}
+}
+
+668 
+	$key2_´št
+ (cÚ¡ 
+key2
+* 
+k
+,
+
+669 cÚ¡ 
+key_ty³
+ *
+kt
+,
+
+670 cÚ¡ * 
+´efix0
+,
+
+671 cÚ¡ * 
+´efix1
+)
+
+673 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+674 
+	`ASSERT
+ (
+k
+->
+n
+ == 2);
+
+675 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "%s (cipher): %s",
+
+676 
+´efix0
+,
+
+677 
+	`fÜm©_hex
+ (
+k
+->
+keys
+[0].
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 0, &
+gc
+));
+
+678 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "%s (hmac): %s",
+
+679 
+´efix0
+,
+
+680 
+	`fÜm©_hex
+ (
+k
+->
+keys
+[0].
+hmac
+, 
+kt
+->
+hmac_Ëngth
+, 0, &
+gc
+));
+
+681 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "%s (cipher): %s",
+
+682 
+´efix1
+,
+
+683 
+	`fÜm©_hex
+ (
+k
+->
+keys
+[1].
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+, 0, &
+gc
+));
+
+684 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "%s (hmac): %s",
+
+685 
+´efix1
+,
+
+686 
+	`fÜm©_hex
+ (
+k
+->
+keys
+[1].
+hmac
+, 
+kt
+->
+hmac_Ëngth
+, 0, &
+gc
+));
+
+687 
+	`gc_ä“
+ (&
+gc
+);
+
+688 
+	}
+}
+
+691 
+	$‹¡_üy±o
+ (cÚ¡ 
+üy±o_ÝtiÚs
+ *
+co
+, 
+äame
+* frame)
+
+693 
+i
+, 
+j
+;
+
+694 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+695 
+bufãr
+ 
+¤c
+ = 
+	`®loc_buf_gc
+ (
+	`TUN_MTU_SIZE
+ (
+äame
+), &
+gc
+);
+
+696 
+bufãr
+ 
+wÜk
+ = 
+	`®loc_buf_gc
+ (
+	`BUF_SIZE
+ (
+äame
+), &
+gc
+);
+
+697 
+bufãr
+ 
+’üy±_wÜk¥aû
+ = 
+	`®loc_buf_gc
+ (
+	`BUF_SIZE
+ (
+äame
+), &
+gc
+);
+
+698 
+bufãr
+ 
+deüy±_wÜk¥aû
+ = 
+	`®loc_buf_gc
+ (
+	`BUF_SIZE
+ (
+äame
+), &
+gc
+);
+
+699 
+bufãr
+ 
+buf
+ = 
+	`þ—r_buf
+();
+
+702 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+wÜk
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+704 
+	`msg
+ (
+M_INFO
+, "EÁ”šg " 
+PACKAGE_NAME
+ " crypto self-test mode.");
+
+705 
+i
+ = 1; i <ð
+	`TUN_MTU_SIZE
+ (
+äame
+); ++i)
+
+707 
+	`upd©e_time
+ ();
+
+709 
+	`msg
+ (
+M_INFO
+, "TESTING ENCRYPT/DECRYPT oà·ck‘†’gth=%d", 
+i
+);
+
+714 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+¤c
+, 0));
+
+715 
+	`ASSERT
+ (
+i
+ <ð
+¤c
+.
+ÿ·c™y
+);
+
+716 
+¤c
+.
+Ën
+ = 
+i
+;
+
+717 
+	`ASSERT
+ (
+	`¿nd_by‹s
+ (
+	`BPTR
+ (&
+¤c
+), 
+	`BLEN
+ (&src)));
+
+720 
+buf
+ = 
+wÜk
+;
+
+721 
+	`memýy
+ (
+	`buf_wr™e_®loc
+ (&
+buf
+, 
+	`BLEN
+ (&
+¤c
+)), 
+	`BPTR
+ (&src), BLEN (&src));
+
+724 
+	`Ý’v²_’üy±
+ (&
+buf
+, 
+’üy±_wÜk¥aû
+, 
+co
+, 
+äame
+);
+
+727 
+	`Ý’v²_deüy±
+ (&
+buf
+, 
+deüy±_wÜk¥aû
+, 
+co
+, 
+äame
+);
+
+730 ià(
+buf
+.
+Ën
+ !ð
+¤c
+.len)
+
+731 
+	`msg
+ (
+M_FATAL
+, "SELF TEST FAILED, src.Ën=%d buf.Ën=%d", 
+¤c
+.
+Ën
+, 
+buf
+.len);
+
+732 
+j
+ = 0; j < 
+i
+; ++j)
+
+734 cÚ¡ 
+ušt8_t
+ 
+š
+ = *(
+	`BPTR
+ (&
+¤c
+è+ 
+j
+);
+
+735 cÚ¡ 
+ušt8_t
+ 
+out
+ = *(
+	`BPTR
+ (&
+buf
+è+ 
+j
+);
+
+736 ià(
+š
+ !ð
+out
+)
+
+737 
+	`msg
+ (
+M_FATAL
+, "SELF TEST FAILED,…os=%d in=%d out=%d", 
+j
+, 
+š
+, 
+out
+);
+
+740 
+	`msg
+ (
+M_INFO
+, 
+PACKAGE_NAME
+ " crypto self-test mode SUCCEEDED.");
+
+741 
+	`gc_ä“
+ (&
+gc
+);
+
+742 
+	}
+}
+
+744 #ifdeà
+ENABLE_SSL
+
+
+747 
+	$g‘_Žs_hªdshake_key
+ (cÚ¡ 
+key_ty³
+ *key_type,
+
+748 
+key_ùx_bi
+ *
+ùx
+,
+
+749 cÚ¡ *
+·s¥h¿£_fže
+,
+
+750 cÚ¡ 
+key_dœeùiÚ
+,
+
+751 cÚ¡ 
+æags
+)
+
+753 ià(
+·s¥h¿£_fže
+ && 
+key_ty³
+->
+hmac_Ëngth
+)
+
+755 
+key2
+ key2;
+
+756 
+key_ty³
+ 
+kt
+ = *key_type;
+
+757 
+key_dœeùiÚ_¡©e
+ 
+kds
+;
+
+760 
+kt
+.
+c�h”_Ëngth
+ = 0;
+
+761 
+kt
+.
+c�h”
+ = 
+NULL
+;
+
+763 ià(
+æags
+ & 
+GHK_INLINE
+)
+
+766 
+	`»ad_key_fže
+ (&
+key2
+, 
+·s¥h¿£_fže
+, 
+RKF_INLINE
+|
+RKF_MUST_SUCCEED
+);
+
+769 ià(
+key2
+.
+n
+ == 2)
+
+770 
+	`msg
+ (
+M_INFO
+, "Control Channel Authentication:�ls-auth using INLINE static key file");
+
+772 
+	`msg
+ (
+M_FATAL
+, "INLINE�ls-auth file†acks�he„equisite 2 keys");
+
+777 
+	`»ad_key_fže
+ (&
+key2
+, 
+·s¥h¿£_fže
+, 0);
+
+780 ià(
+key2
+.
+n
+ == 2)
+
+782 
+	`msg
+ (
+M_INFO
+,
+
+783 "CÚŒÞ ChªÃÈAuth’tiÿtiÚ: usšg '%s'‡ ¨" 
+PACKAGE_NAME
+ " static key file",
+
+784 
+·s¥h¿£_fže
+);
+
+788 
+hash_size
+;
+
+790 
+	`CLEAR
+ (
+key2
+);
+
+793 
+hash_size
+ = 
+	`»ad_·s¥h¿£_hash
+ (
+·s¥h¿£_fže
+,
+
+794 
+kt
+.
+dige¡
+,
+
+795 
+key2
+.
+keys
+[0].
+hmac
+,
+
+796 
+MAX_HMAC_KEY_LENGTH
+);
+
+797 
+	`ASSERT
+ (
+hash_size
+ =ð
+kt
+.
+hmac_Ëngth
+);
+
+800 
+key2
+.
+n
+ = 1;
+
+802 
+	`msg
+ (
+M_INFO
+,
+
+804 
+·s¥h¿£_fže
+);
+
+805 
+	`msg
+ (
+M_WARN
+, "DEPRECATED OPTION: Using freeform files for�ls-auth is deprecated‡nd is‚ot supported in OpenVPN 2.4 or‚ewer versions");
+
+810 
+	`key_dœeùiÚ_¡©e_š™
+ (&
+kds
+, 
+key_dœeùiÚ
+);
+
+811 
+	`mu¡_have_n_keys
+ (
+·s¥h¿£_fže
+, "Žs-auth", &
+key2
+, 
+kds
+.
+Ãed_keys
+);
+
+815 
+	`š™_key_ùx
+ (&
+ùx
+->
+’üy±
+, &
+key2
+.
+keys
+[
+kds
+.
+out_key
+], &
+kt
+, 
+OPENVPN_OP_ENCRYPT
+,
+
+817 
+	`š™_key_ùx
+ (&
+ùx
+->
+deüy±
+, &
+key2
+.
+keys
+[
+kds
+.
+š_key
+], &
+kt
+, 
+OPENVPN_OP_DECRYPT
+,
+
+820 
+	`CLEAR
+ (
+key2
+);
+
+824 
+	`CLEAR
+ (*
+ùx
+);
+
+826 
+	}
+}
+
+830 cÚ¡ 
+	g¡©ic_key_h—d
+[] = "-----BEGIN OpenVPN Static key V1-----";
+
+831 cÚ¡ 
+	g¡©ic_key_foÙ
+[] = "-----END OpenVPN Static key V1-----";
+
+833 cÚ¡ 
+	g´š�bË_ch¬_fmt
+[] =
+
+836 cÚ¡ 
+	guÅrš�bË_ch¬_fmt
+[] =
+
+842 
+	$»ad_key_fže
+ (
+key2
+ *key2, cÚ¡ *
+fže
+, cÚ¡ 
+æags
+)
+
+844 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+845 
+bufãr
+ 
+š
+;
+
+846 
+fd
+, 
+size
+;
+
+847 
+ušt8_t
+ 
+hex_by‹
+[3] = {0, 0, 0};
+
+848 cÚ¡ *
+”rÜ_fž’ame
+ = 
+fže
+;
+
+851 cÚ¡ *
+ý
+;
+
+852 
+hb_šdex
+ = 0;
+
+853 
+lše_num
+ = 1;
+
+854 
+lše_šdex
+ = 0;
+
+855 
+m©ch
+ = 0;
+
+858 
+ušt8_t
+* 
+out
+ = (ušt8_t*è&
+key2
+->
+keys
+;
+
+859 cÚ¡ 
+keyËn
+ =  (
+key2
+->
+keys
+);
+
+860 
+couÁ
+ = 0;
+
+863 
+	#PARSE_INITIAL
+ 0
+
+	)
+
+864 
+	#PARSE_HEAD
+ 1
+
+	)
+
+865 
+	#PARSE_DATA
+ 2
+
+	)
+
+866 
+	#PARSE_DATA_COMPLETE
+ 3
+
+	)
+
+867 
+	#PARSE_FOOT
+ 4
+
+	)
+
+868 
+	#PARSE_FINISHED
+ 5
+
+	)
+
+869 
+¡©e
+ = 
+PARSE_INITIAL
+;
+
+872 cÚ¡ 
+hËn
+ = 
+	`¡¾’
+ (
+¡©ic_key_h—d
+);
+
+873 cÚ¡ 
+æ’
+ = 
+	`¡¾’
+ (
+¡©ic_key_foÙ
+);
+
+874 cÚ¡ 
+ÚekeyËn
+ =  (
+key2
+->
+keys
+[0]);
+
+876 
+	`CLEAR
+ (*
+key2
+);
+
+882 ià(
+æags
+ & 
+RKF_INLINE
+)
+
+884 
+size
+ = 
+	`¡¾’
+ (
+fže
+) + 1;
+
+885 
+	`buf_£t_»ad
+ (&
+š
+, (cÚ¡ 
+ušt8_t
+ *)
+fže
+, 
+size
+);
+
+886 
+”rÜ_fž’ame
+ = 
+INLINE_FILE_TAG
+;
+
+890 
+š
+ = 
+	`®loc_buf_gc
+ (2048, &
+gc
+);
+
+891 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fže
+, 
+O_RDONLY
+, 0);
+
+892 ià(
+fd
+ == -1)
+
+893 
+	`msg
+ (
+M_ERR
+, "CªnÙ o³Àfž�key fž�'%s'", 
+fže
+);
+
+894 
+size
+ = 
+	`»ad
+ (
+fd
+, 
+š
+.
+d©a
+, in.
+ÿ·c™y
+);
+
+895 ià(
+size
+ < 0)
+
+896 
+	`msg
+ (
+M_FATAL
+, "R—dƒ¼Ü oÀkey fž�('%s')", 
+fže
+);
+
+897 ià(
+size
+ =ð
+š
+.
+ÿ·c™y
+)
+
+898 
+	`msg
+ (
+M_FATAL
+, "Key fž�('%s'èÿÀb�¨maximum oà%d by‹s", 
+fže
+, ()
+š
+.
+ÿ·c™y
+);
+
+899 
+	`þo£
+ (
+fd
+);
+
+902 
+ý
+ = (*)
+š
+.
+d©a
+;
+
+903 
+size
+ > 0)
+
+905 cÚ¡ 
+c
+ = *
+ý
+;
+
+908 
+	`msg
+ (
+M_INFO
+, "char='%c'[%d] s=%d†n=%d†i=%d m=%d c=%d",
+
+909 
+c
+, ()c, 
+¡©e
+, 
+lše_num
+, 
+lše_šdex
+, 
+m©ch
+, 
+couÁ
+);
+
+912 ià(
+c
+ == '\n')
+
+914 
+lše_šdex
+ = 
+m©ch
+ = 0;
+
+915 ++
+lše_num
+;
+
+920 ià(!
+lše_šdex
+)
+
+923 ià(
+¡©e
+ =ð
+PARSE_HEAD
+)
+
+924 
+¡©e
+ = 
+PARSE_DATA
+;
+
+927 ià((
+¡©e
+ =ð
+PARSE_DATA
+ || s�‹ =ð
+PARSE_DATA_COMPLETE
+è&& 
+c
+ == '-')
+
+928 
+¡©e
+ = 
+PARSE_FOOT
+;
+
+932 ià(
+¡©e
+ =ð
+PARSE_INITIAL
+)
+
+934 ià(
+lše_šdex
+ < 
+hËn
+ && 
+c
+ =ð
+¡©ic_key_h—d
+[line_index])
+
+936 ià(++
+m©ch
+ =ð
+hËn
+)
+
+937 
+¡©e
+ = 
+PARSE_HEAD
+;
+
+942 ià(
+¡©e
+ =ð
+PARSE_FOOT
+)
+
+944 ià(
+lše_šdex
+ < 
+æ’
+ && 
+c
+ =ð
+¡©ic_key_foÙ
+[line_index])
+
+946 ià(++
+m©ch
+ =ð
+æ’
+)
+
+947 
+¡©e
+ = 
+PARSE_FINISHED
+;
+
+952 ià(
+¡©e
+ =ð
+PARSE_DATA
+)
+
+954 ià(
+	`isxdig™
+(
+c
+))
+
+956 
+	`ASSERT
+ (
+hb_šdex
+ >= 0 && hb_index < 2);
+
+957 
+hex_by‹
+[
+hb_šdex
+++] = 
+c
+;
+
+958 ià(
+hb_šdex
+ == 2)
+
+960 
+u
+;
+
+961 
+	`ASSERT
+(
+	`ssÿnf
+((cÚ¡ *)
+hex_by‹
+, "%x", &
+u
+) == 1);
+
+962 *
+out
+++ = 
+u
+;
+
+963 
+hb_šdex
+ = 0;
+
+964 ià(++
+couÁ
+ =ð
+keyËn
+)
+
+965 
+¡©e
+ = 
+PARSE_DATA_COMPLETE
+;
+
+968 ià(
+	`is¥aû
+(
+c
+))
+
+972 
+	`msg
+ (
+M_FATAL
+,
+
+973 (
+	`i¥ršt
+ (
+c
+è? 
+´š�bË_ch¬_fmt
+ : 
+uÅrš�bË_ch¬_fmt
+),
+
+974 
+c
+, 
+lše_num
+, 
+”rÜ_fž’ame
+, 
+couÁ
+, 
+ÚekeyËn
+, 
+keyËn
+);
+
+977 ++
+lše_šdex
+;
+
+979 ++
+ý
+;
+
+980 --
+size
+;
+
+986 
+key2
+->
+n
+ = 
+couÁ
+ / 
+ÚekeyËn
+;
+
+988 
+	`ASSERT
+ (
+key2
+->
+n
+ >ð0 && key2->À<ð(è
+	`SIZE
+ (key2->
+keys
+));
+
+990 ià(
+æags
+ & 
+RKF_MUST_SUCCEED
+)
+
+992 ià(!
+key2
+->
+n
+)
+
+993 
+	`msg
+ (
+M_FATAL
+, "Insufficient key material or header�ext‚ot found in file '%s' (%d/%d/%d bytes found/min/max)",
+
+994 
+”rÜ_fž’ame
+, 
+couÁ
+, 
+ÚekeyËn
+, 
+keyËn
+);
+
+996 ià(
+¡©e
+ !ð
+PARSE_FINISHED
+)
+
+997 
+	`msg
+ (
+M_FATAL
+, "Footer�ext‚ot found in file '%s' (%d/%d/%d bytes found/min/max)",
+
+998 
+”rÜ_fž’ame
+, 
+couÁ
+, 
+ÚekeyËn
+, 
+keyËn
+);
+
+1002 ià(!(
+æags
+ & 
+RKF_INLINE
+))
+
+1003 
+	`buf_þ—r
+ (&
+š
+);
+
+1005 ià(
+key2
+->
+n
+)
+
+1006 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+”rÜ_fž’ame
+);
+
+1011 
+i
+;
+
+1012 
+	`´štf
+ ("KEY READ,‚=%d\n", 
+key2
+->
+n
+);
+
+1013 
+i
+ = 0; i < (è
+	`SIZE
+ (
+key2
+->
+keys
+); ++i)
+
+1016 cÚ¡ *
+fmt
+ = 
+	`fÜm©_hex_ex
+ ((cÚ¡ 
+ušt8_t
+*)&
+key2
+->
+keys
+[
+i
+],
+
+1017  (
+key2
+->
+keys
+[
+i
+]),
+
+1021 &
+gc
+);
+
+1022 
+	`´štf
+ ("[%d]\n%s\n\n", 
+i
+, 
+fmt
+);
+
+1028 
+	`gc_ä“
+ (&
+gc
+);
+
+1029 
+	}
+}
+
+1032 
+	$»ad_·s¥h¿£_hash
+ (cÚ¡ *
+·s¥h¿£_fže
+,
+
+1033 cÚ¡ 
+md_kt_t
+ *
+dige¡
+,
+
+1034 
+ušt8_t
+ *
+ou�ut
+,
+
+1035 
+Ën
+)
+
+1037 
+ouŽ’
+ = 0;
+
+1038 
+md_ùx_t
+ 
+md
+;
+
+1040 
+	`ASSERT
+ (
+Ën
+ >ð
+	`md_kt_size
+(
+dige¡
+));
+
+1041 
+	`mem£t
+ (
+ou�ut
+, 0, 
+Ën
+);
+
+1043 
+	`md_ùx_š™
+(&
+md
+, 
+dige¡
+);
+
+1047 cÚ¡ 
+mš_·s¥h¿£_size
+ = 8;
+
+1048 
+ušt8_t
+ 
+buf
+[64];
+
+1049 
+tÙ®_size
+ = 0;
+
+1050 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+·s¥h¿£_fže
+, 
+O_RDONLY
+, 0);
+
+1052 ià(
+fd
+ == -1)
+
+1053 
+	`msg
+ (
+M_ERR
+, "CªnÙ o³À·s¥h¿£ fže: '%s'", 
+·s¥h¿£_fže
+);
+
+1057 
+size
+ = 
+	`»ad
+ (
+fd
+, 
+buf
+,  (buf));
+
+1058 ià(
+size
+ == 0)
+
+1060 ià(
+size
+ == -1)
+
+1061 
+	`msg
+ (
+M_ERR
+, "Readƒrror on…assphrase file: '%s'",
+
+1062 
+·s¥h¿£_fže
+);
+
+1063 
+	`md_ùx_upd©e
+(&
+md
+, 
+buf
+, 
+size
+);
+
+1064 
+tÙ®_size
+ +ð
+size
+;
+
+1066 
+	`þo£
+ (
+fd
+);
+
+1068 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+·s¥h¿£_fže
+);
+
+1070 ià(
+tÙ®_size
+ < 
+mš_·s¥h¿£_size
+)
+
+1071 
+	`msg
+ (
+M_FATAL
+,
+
+1073 
+·s¥h¿£_fže
+, 
+mš_·s¥h¿£_size
+);
+
+1075 
+	`md_ùx_fš®
+(&
+md
+, 
+ou�ut
+);
+
+1076 
+	`md_ùx_þ—nup
+(&
+md
+);
+
+1077  
+	`md_kt_size
+(
+dige¡
+);
+
+1078 
+	}
+}
+
+1085 
+	$wr™e_key_fže
+ (cÚ¡ 
+nkeys
+, cÚ¡ *
+fž’ame
+)
+
+1087 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1089 
+fd
+, 
+i
+;
+
+1090 
+nb™s
+ = 0;
+
+1093 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (2048, &
+gc
+);
+
+1094 
+bufãr
+ 
+nb™s_h—d_‹xt
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+1097 cÚ¡ 
+by‹s_³r_lše
+ = 16;
+
+1100 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fž’ame
+, 
+O_CREAT
+ | 
+O_TRUNC
+ | 
+O_WRONLY
+, 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+1102 ià(
+fd
+ == -1)
+
+1103 
+	`msg
+ (
+M_ERR
+, "CªnÙ o³Àsh¬ed seü‘ fž�'%s' fÜ wr™e", 
+fž’ame
+);
+
+1105 
+	`buf_´štf
+ (&
+out
+, "%s\n", 
+¡©ic_key_h—d
+);
+
+1107 
+i
+ = 0; i < 
+nkeys
+; ++i)
+
+1109 
+key
+ key;
+
+1110 * 
+fmt
+;
+
+1113 
+	`g’”©e_key_¿ndom
+ (&
+key
+, 
+NULL
+);
+
+1116 
+fmt
+ = 
+	`fÜm©_hex_ex
+ ((cÚ¡ 
+ušt8_t
+*)&
+key
+,
+
+1117  (
+key
+),
+
+1119 
+by‹s_³r_lše
+,
+
+1121 &
+gc
+);
+
+1124 
+nb™s
+ +ð (
+key
+) * 8;
+
+1127 
+	`buf_´štf
+ (&
+out
+, "%s\n", 
+fmt
+);
+
+1130 
+	`mem£t
+ (
+fmt
+, 0, 
+	`¡¾’
+(fmt));
+
+1131 
+	`CLEAR
+ (
+key
+);
+
+1134 
+	`buf_´štf
+ (&
+out
+, "%s\n", 
+¡©ic_key_foÙ
+);
+
+1137 
+	`buf_´štf
+ (&
+nb™s_h—d_‹xt
+, "#\n# %d b™ O³nVPN s�tiøkey\n#\n", 
+nb™s
+);
+
+1138 
+	`buf_wr™e_¡ršg_fže
+ (&
+nb™s_h—d_‹xt
+, 
+fž’ame
+, 
+fd
+);
+
+1141 
+	`buf_wr™e_¡ršg_fže
+ (&
+out
+, 
+fž’ame
+, 
+fd
+);
+
+1143 ià(
+	`þo£
+ (
+fd
+))
+
+1144 
+	`msg
+ (
+M_ERR
+, "Clo£ƒ¼Ü oÀsh¬ed seü‘ fž�%s", 
+fž’ame
+);
+
+1147 
+	`buf_þ—r
+ (&
+out
+);
+
+1150 
+	`gc_ä“
+ (&
+gc
+);
+
+1152  
+nb™s
+;
+
+1153 
+	}
+}
+
+1156 
+	$mu¡_have_n_keys
+ (cÚ¡ *
+fž’ame
+, cÚ¡ *
+ÝtiÚ
+, cÚ¡ 
+key2
+ *key2, 
+n
+)
+
+1158 ià(
+key2
+->
+n
+ <‚)
+
+1160 #ifdeà
+ENABLE_SMALL
+
+
+1161 
+	`msg
+ (
+M_FATAL
+, "Key fž�'%s' u£d iÀ--% cÚ�š šsuffic›Á key m©”ŸÈ[key found=%d„equœed=%d]", 
+fž’ame
+, 
+ÝtiÚ
+, 
+key2
+->
+n
+,‚);
+
+1163 
+	`msg
+ (
+M_FATAL
+, "Key fž�'%s' u£d iÀ--% cÚ�š šsuffic›Á key m©”ŸÈ[key found=%d„equœed=%d] --�ry g’”©šg‡‚ew key fž�w™h '" 
+PACKAGE
+ " --g’key --£ü‘ [fže]', o¸u£�h�exi¡šg key fž�š bidœeùiÚ® mod�by s³cifyšg --% w™houˆ¨key dœeùiÚ…¬am‘”", 
+fž’ame
+, 
+ÝtiÚ
+, 
+key2
+->
+n
+,‚, option);
+
+1166 
+	}
+}
+
+1169 
+	$ascii2keydœeùiÚ
+ (
+msgËv–
+, cÚ¡ *
+¡r
+)
+
+1171 ià(!
+¡r
+)
+
+1172  
+KEY_DIRECTION_BIDIRECTIONAL
+;
+
+1173 ià(!
+	`¡rcmp
+ (
+¡r
+, "0"))
+
+1174  
+KEY_DIRECTION_NORMAL
+;
+
+1175 ià(!
+	`¡rcmp
+ (
+¡r
+, "1"))
+
+1176  
+KEY_DIRECTION_INVERSE
+;
+
+1179 
+	`msg
+ (
+msgËv–
+, "UnknowÀkey dœeùiÚ '%s' -- mu¡ b�'0' o¸'1'", 
+¡r
+);
+
+1182  
+KEY_DIRECTION_BIDIRECTIONAL
+;
+
+1183 
+	}
+}
+
+1186 
+	$keydœeùiÚ2ascii
+ (
+kd
+, 
+boÞ
+ 
+»mÙe
+)
+
+1188 ià(
+kd
+ =ð
+KEY_DIRECTION_BIDIRECTIONAL
+)
+
+1189  
+NULL
+;
+
+1190 ià(
+kd
+ =ð
+KEY_DIRECTION_NORMAL
+)
+
+1191  
+»mÙe
+ ? "1" : "0";
+
+1192 ià(
+kd
+ =ð
+KEY_DIRECTION_INVERSE
+)
+
+1193  
+»mÙe
+ ? "0" : "1";
+
+1196 
+	`ASSERT
+ (0);
+
+1198  
+NULL
+;
+
+1199 
+	}
+}
+
+1202 
+	$key_dœeùiÚ_¡©e_š™
+ (
+key_dœeùiÚ_¡©e
+ *
+kds
+, 
+key_dœeùiÚ
+)
+
+1204 
+	`CLEAR
+ (*
+kds
+);
+
+1205 
+key_dœeùiÚ
+)
+
+1207 
+KEY_DIRECTION_NORMAL
+:
+
+1208 
+kds
+->
+out_key
+ = 0;
+
+1209 
+kds
+->
+š_key
+ = 1;
+
+1210 
+kds
+->
+Ãed_keys
+ = 2;
+
+1212 
+KEY_DIRECTION_INVERSE
+:
+
+1213 
+kds
+->
+out_key
+ = 1;
+
+1214 
+kds
+->
+š_key
+ = 0;
+
+1215 
+kds
+->
+Ãed_keys
+ = 2;
+
+1217 
+KEY_DIRECTION_BIDIRECTIONAL
+:
+
+1218 
+kds
+->
+out_key
+ = 0;
+
+1219 
+kds
+->
+š_key
+ = 0;
+
+1220 
+kds
+->
+Ãed_keys
+ = 1;
+
+1223 
+	`ASSERT
+ (0);
+
+1225 
+	}
+}
+
+1228 
+	$v”ify_fix_key2
+ (
+key2
+ *key2, cÚ¡ 
+key_ty³
+ *
+kt
+, cÚ¡ *
+sh¬ed_£ü‘_fže
+)
+
+1230 
+i
+;
+
+1232 
+i
+ = 0; i < 
+key2
+->
+n
+; ++i)
+
+1235 
+	`fixup_key
+ (&
+key2
+->
+keys
+[
+i
+], 
+kt
+);
+
+1238 ià(!
+	`check_key
+ (&
+key2
+->
+keys
+[
+i
+], 
+kt
+))
+
+1239 
+	`msg
+ (
+M_FATAL
+, "Key #%d in '%s' is bad. Try making‡‚ew key with --genkey.",
+
+1240 
+i
++1, 
+sh¬ed_£ü‘_fže
+);
+
+1242 
+	}
+}
+
+1245 
+boÞ
+
+
+1246 
+	$wr™e_key
+ (cÚ¡ 
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+,
+
+1247 
+bufãr
+ *
+buf
+)
+
+1249 
+	`ASSERT
+ (
+kt
+->
+c�h”_Ëngth
+ <ð
+MAX_CIPHER_KEY_LENGTH
+
+
+1250 && 
+kt
+->
+hmac_Ëngth
+ <ð
+MAX_HMAC_KEY_LENGTH
+);
+
+1252 ià(!
+	`buf_wr™e
+ (
+buf
+, &
+kt
+->
+c�h”_Ëngth
+, 1))
+
+1253  
+çl£
+;
+
+1254 ià(!
+	`buf_wr™e
+ (
+buf
+, &
+kt
+->
+hmac_Ëngth
+, 1))
+
+1255  
+çl£
+;
+
+1256 ià(!
+	`buf_wr™e
+ (
+buf
+, 
+key
+->
+c�h”
+, 
+kt
+->
+c�h”_Ëngth
+))
+
+1257  
+çl£
+;
+
+1258 ià(!
+	`buf_wr™e
+ (
+buf
+, 
+key
+->
+hmac
+, 
+kt
+->
+hmac_Ëngth
+))
+
+1259  
+çl£
+;
+
+1261  
+Œue
+;
+
+1262 
+	}
+}
+
+1271 
+	$»ad_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+, 
+bufãr
+ *
+buf
+)
+
+1273 
+ušt8_t
+ 
+c�h”_Ëngth
+;
+
+1274 
+ušt8_t
+ 
+hmac_Ëngth
+;
+
+1276 
+	`CLEAR
+ (*
+key
+);
+
+1277 ià(!
+	`buf_»ad
+ (
+buf
+, &
+c�h”_Ëngth
+, 1))
+
+1278 
+»ad_”r
+;
+
+1279 ià(!
+	`buf_»ad
+ (
+buf
+, &
+hmac_Ëngth
+, 1))
+
+1280 
+»ad_”r
+;
+
+1282 ià(!
+	`buf_»ad
+ (
+buf
+, 
+key
+->
+c�h”
+, 
+c�h”_Ëngth
+))
+
+1283 
+»ad_”r
+;
+
+1284 ià(!
+	`buf_»ad
+ (
+buf
+, 
+key
+->
+hmac
+, 
+hmac_Ëngth
+))
+
+1285 
+»ad_”r
+;
+
+1287 ià(
+c�h”_Ëngth
+ !ð
+kt
+->c�h”_Ëngth || 
+hmac_Ëngth
+ != kt->hmac_length)
+
+1288 
+key_Ën_”r
+;
+
+1292 
+»ad_”r
+:
+
+1293 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error:ƒrror„eading key from„emote");
+
+1296 
+key_Ën_”r
+:
+
+1297 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+1299 
+kt
+->
+c�h”_Ëngth
+, kt->
+hmac_Ëngth
+, cipher_length, hmac_length);
+
+1301 
+	}
+}
+
+1310 
+ušt8_t
+ *
+	gnÚû_d©a
+ = 
+NULL
+;
+
+1311 cÚ¡ 
+md_kt_t
+ *
+	gnÚû_md
+ = 
+NULL
+;
+
+1312 
+	gnÚû_£ü‘_Ën
+ = 0;
+
+1316 
+	$´ng_»£t_nÚû
+ ()
+
+1318 cÚ¡ 
+size
+ = 
+	`md_kt_size
+ (
+nÚû_md
+è+ 
+nÚû_£ü‘_Ën
+;
+
+1320 ià(!
+	`¿nd_by‹s
+ (
+nÚû_d©a
+, 
+size
+))
+
+1321 
+	`msg
+ (
+M_FATAL
+, "ERROR: Random‚umber generator cannot obtainƒntropy for PRNG");
+
+1325 
+i
+;
+
+1326 
+i
+ = 0; i < 
+size
+; ++i)
+
+1327 
+nÚû_d©a
+[
+i
+] = (
+ušt8_t
+) i;
+
+1330 
+	}
+}
+
+1333 
+	$´ng_š™
+ (cÚ¡ *
+md_Çme
+, cÚ¡ 
+nÚû_£ü‘_Ën_·rm
+)
+
+1335 
+	`´ng_unš™
+ ();
+
+1336 
+nÚû_md
+ = 
+md_Çme
+ ? 
+	`md_kt_g‘
+ (md_Çmeè: 
+NULL
+;
+
+1337 ià(
+nÚû_md
+)
+
+1339 
+	`ASSERT
+ (
+nÚû_£ü‘_Ën_·rm
+ >ð
+NONCE_SECRET_LEN_MIN
+ &&‚Úû_£ü‘_Ën_·rm <ð
+NONCE_SECRET_LEN_MAX
+);
+
+1340 
+nÚû_£ü‘_Ën
+ = 
+nÚû_£ü‘_Ën_·rm
+;
+
+1342 cÚ¡ 
+size
+ = 
+	`md_kt_size
+(
+nÚû_md
+è+ 
+nÚû_£ü‘_Ën
+;
+
+1343 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "PRNG in™ md=% size=%d", 
+	`md_kt_Çme
+(
+nÚû_md
+), 
+size
+);
+
+1344 
+nÚû_d©a
+ = (
+ušt8_t
+*è
+	`m®loc
+ (
+size
+);
+
+1345 
+	`check_m®loc_»tuº
+ (
+nÚû_d©a
+);
+
+1346 
+	`´ng_»£t_nÚû
+();
+
+1349 
+	}
+}
+
+1352 
+	$´ng_unš™
+ ()
+
+1354 
+	`ä“
+ (
+nÚû_d©a
+);
+
+1355 
+nÚû_d©a
+ = 
+NULL
+;
+
+1356 
+nÚû_md
+ = 
+NULL
+;
+
+1357 
+nÚû_£ü‘_Ën
+ = 0;
+
+1358 
+	}
+}
+
+1361 
+	$´ng_by‹s
+ (
+ušt8_t
+ *
+ou�ut
+, 
+Ën
+)
+
+1363 
+size_t
+ 
+´oûs£d
+ = 0;
+
+1365 ià(
+nÚû_md
+)
+
+1367 cÚ¡ 
+md_size
+ = 
+	`md_kt_size
+ (
+nÚû_md
+);
+
+1368 
+Ën
+ > 0)
+
+1370 
+ouŽ’
+ = 0;
+
+1371 cÚ¡ 
+bËn
+ = 
+	`mš_št
+ (
+Ën
+, 
+md_size
+);
+
+1372 
+	`md_fuÎ
+(
+nÚû_md
+, 
+nÚû_d©a
+, 
+md_size
+ + 
+nÚû_£ü‘_Ën
+,‚once_data);
+
+1373 
+	`memýy
+ (
+ou�ut
+, 
+nÚû_d©a
+, 
+bËn
+);
+
+1374 
+ou�ut
+ +ð
+bËn
+;
+
+1375 
+Ën
+ -ð
+bËn
+;
+
+1378 
+´oûs£d
+ +ð
+bËn
+;
+
+1379 if(
+´oûs£d
+ > 
+PRNG_NONCE_RESET_BYTES
+) {
+
+1380 
+	`´ng_»£t_nÚû
+();
+
+1381 
+´oûs£d
+ = 0;
+
+1386 
+	`¿nd_by‹s
+ (
+ou�ut
+, 
+Ën
+);
+
+1387 
+	}
+}
+
+1391 
+	$g‘_¿ndom
+()
+
+1393 
+l
+;
+
+1394 
+	`´ng_by‹s
+ ((*)&
+l
+, (l));
+
+1395 ià(
+l
+ < 0)
+
+1396 
+l
+ = -l;
+
+1397  
+l
+;
+
+1398 
+	}
+}
+
+1400 #iâdeà
+ENABLE_SSL
+
+
+1403 
+	$š™_s¦_lib
+ ()
+
+1405 
+	`üy±o_š™_lib
+ ();
+
+1406 
+	}
+}
+
+1409 
+	$ä“_s¦_lib
+ ()
+
+1411 
+	`üy±o_unš™_lib
+ ();
+
+1412 
+	`´ng_unš™
+();
+
+1413 
+	}
+}
+
+1422 
+	$md5sum
+ (
+ušt8_t
+ *
+buf
+, 
+Ën
+, 
+n_´št_ch¬s
+, 
+gc_¬’a
+ *
+gc
+)
+
+1424 
+ušt8_t
+ 
+dige¡
+[
+MD5_DIGEST_LENGTH
+];
+
+1425 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+1427 
+	`md_fuÎ
+(
+md5_kt
+, 
+buf
+, 
+Ën
+, 
+dige¡
+);
+
+1429  
+	`fÜm©_hex
+ (
+dige¡
+, 
+MD5_DIGEST_LENGTH
+, 
+n_´št_ch¬s
+, 
+gc
+);
+
+1430 
+	}
+}
+
+1433 
+	$md5_¡©e_š™
+ (
+md5_¡©e
+ *
+s
+)
+
+1435 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+1437 
+	`md_ùx_š™
+(&
+s
+->
+ùx
+, 
+md5_kt
+);
+
+1438 
+	}
+}
+
+1441 
+	$md5_¡©e_upd©e
+ (
+md5_¡©e
+ *
+s
+, *
+d©a
+, 
+size_t
+ 
+Ën
+)
+
+1443 
+	`md_ùx_upd©e
+(&
+s
+->
+ùx
+, 
+d©a
+, 
+Ën
+);
+
+1444 
+	}
+}
+
+1447 
+	$md5_¡©e_fš®
+ (
+md5_¡©e
+ *
+s
+, 
+md5_dige¡
+ *
+out
+)
+
+1449 
+	`md_ùx_fš®
+(&
+s
+->
+ùx
+, 
+out
+->
+dige¡
+);
+
+1450 
+	`md_ùx_þ—nup
+(&
+s
+->
+ùx
+);
+
+1451 
+	}
+}
+
+1454 
+	$md5_dige¡_þ—r
+ (
+md5_dige¡
+ *
+dige¡
+)
+
+1456 
+	`CLEAR
+ (*
+dige¡
+);
+
+1457 
+	}
+}
+
+1459 
+boÞ
+
+
+1460 
+	$md5_dige¡_defšed
+ (cÚ¡ 
+md5_dige¡
+ *
+dige¡
+)
+
+1462 
+i
+;
+
+1463 
+i
+ = 0; i < 
+MD5_DIGEST_LENGTH
+; ++i)
+
+1464 ià(
+dige¡
+->dige¡[
+i
+])
+
+1465  
+Œue
+;
+
+1466  
+çl£
+;
+
+1467 
+	}
+}
+
+1469 
+boÞ
+
+
+1470 
+	$md5_dige¡_equ®
+ (cÚ¡ 
+md5_dige¡
+ *
+d1
+, cÚ¡ md5_dige¡ *
+d2
+)
+
+1472  
+	`memcmp
+(
+d1
+->
+dige¡
+, 
+d2
+->dige¡, 
+MD5_DIGEST_LENGTH
+) == 0;
+
+1473 
+	}
+}
+
+	@crypto.h
+
+100 #iâdeà
+CRYPTO_H
+
+
+101 
+	#CRYPTO_H
+
+
+	)
+
+103 #ifdeà
+ENABLE_CRYPTO
+
+
+105 
+	~"üy±o_back’d.h
+"
+
+106 
+	~"basic.h
+"
+
+107 
+	~"bufãr.h
+"
+
+108 
+	~"·ck‘_id.h
+"
+
+109 
+	~"mtu.h
+"
+
+114 
+	skey_ty³
+
+
+116 
+ušt8_t
+ 
+	mc�h”_Ëngth
+;
+
+117 
+ušt8_t
+ 
+	mhmac_Ëngth
+;
+
+118 cÚ¡ 
+c�h”_kt_t
+ *
+	mc�h”
+;
+
+119 cÚ¡ 
+md_kt_t
+ *
+	mdige¡
+;
+
+126 
+	skey
+
+
+128 
+ušt8_t
+ 
+	mc�h”
+[
+MAX_CIPHER_KEY_LENGTH
+];
+
+130 
+ušt8_t
+ 
+	mhmac
+[
+MAX_HMAC_KEY_LENGTH
+];
+
+139 
+	skey_ùx
+
+
+141 
+c�h”_ùx_t
+ *
+	mc�h”
+;
+
+142 
+hmac_ùx_t
+ *
+	mhmac
+;
+
+145 
+	#KEY_DIRECTION_BIDIRECTIONAL
+ 0
+
+	)
+
+146 
+	#KEY_DIRECTION_NORMAL
+ 1
+
+	)
+
+147 
+	#KEY_DIRECTION_INVERSE
+ 2
+
+	)
+
+153 
+	skey2
+
+
+155 
+	mn
+;
+
+157 
+key
+ 
+	mkeys
+[2];
+
+170 
+	skey_dœeùiÚ_¡©e
+
+
+172 
+	mout_key
+;
+
+174 
+	mš_key
+;
+
+176 
+	mÃed_keys
+;
+
+191 
+	skey_ùx_bi
+
+
+193 
+key_ùx
+ 
+	m’üy±
+;
+
+195 
+key_ùx
+ 
+	mdeüy±
+;
+
+203 
+	süy±o_ÝtiÚs
+
+
+205 
+key_ùx_bi
+ *
+	mkey_ùx_bi
+;
+
+209 
+·ck‘_id
+ *
+	m·ck‘_id
+;
+
+211 
+·ck‘_id_³rsi¡
+ *
+	mpid_³rsi¡
+;
+
+216 
+	#CO_PACKET_ID_LONG_FORM
+ (1<<0)
+
+	)
+
+219 
+	#CO_USE_IV
+ (1<<1)
+
+	)
+
+223 
+	#CO_IGNORE_PACKET_ID
+ (1<<2)
+
+	)
+
+229 
+	#CO_MUTE_REPLAY_WARNINGS
+ (1<<3)
+
+	)
+
+232 
+	mæags
+;
+
+236 
+	#RKF_MUST_SUCCEED
+ (1<<0)
+
+	)
+
+237 
+	#RKF_INLINE
+ (1<<1)
+
+	)
+
+238 
+»ad_key_fže
+ (
+key2
+ *key2, cÚ¡ *
+fže
+, cÚ¡ 
+æags
+);
+
+240 
+wr™e_key_fže
+ (cÚ¡ 
+nkeys
+, cÚ¡ *
+fž’ame
+);
+
+242 
+»ad_·s¥h¿£_hash
+ (cÚ¡ *
+·s¥h¿£_fže
+,
+
+243 cÚ¡ 
+md_kt_t
+ *
+dige¡
+,
+
+244 
+ušt8_t
+ *
+ou�ut
+,
+
+245 
+Ën
+);
+
+247 
+g’”©e_key_¿ndom
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+);
+
+249 
+check_»¶ay_iv_cÚsi¡’cy
+(cÚ¡ 
+key_ty³
+ *
+kt
+, 
+boÞ
+ 
+·ck‘_id
+, boÞ 
+u£_iv
+);
+
+251 
+boÞ
+ 
+check_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+);
+
+253 
+fixup_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+);
+
+255 
+boÞ
+ 
+wr™e_key
+ (cÚ¡ 
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+,
+
+256 
+bufãr
+ *
+buf
+);
+
+258 
+»ad_key
+ (
+key
+ *key, cÚ¡ 
+key_ty³
+ *
+kt
+, 
+bufãr
+ *
+buf
+);
+
+260 
+š™_key_ty³
+ (
+key_ty³
+ *
+kt
+, cÚ¡ *
+c�h”Çme
+,
+
+261 
+boÞ
+ 
+c�h”Çme_defšed
+, cÚ¡ *
+authÇme
+, boÞ 
+authÇme_defšed
+,
+
+262 
+keysize
+, 
+boÞ
+ 
+cfb_ofb_®lowed
+, boÞ 
+w¬n
+);
+
+268 
+š™_key_ùx
+ (
+key_ùx
+ *
+ùx
+, 
+key
+ *key,
+
+269 cÚ¡ 
+key_ty³
+ *
+kt
+, 
+’c
+,
+
+270 cÚ¡ *
+´efix
+);
+
+272 
+ä“_key_ùx
+ (
+key_ùx
+ *
+ùx
+);
+
+274 
+ä“_key_ùx_bi
+ (
+key_ùx_bi
+ *
+ùx
+);
+
+308 
+Ý’v²_’üy±
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+309 cÚ¡ 
+üy±o_ÝtiÚs
+ *
+Ýt
+,
+
+310 cÚ¡ 
+äame
+* frame);
+
+344 
+boÞ
+ 
+Ý’v²_deüy±
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+345 cÚ¡ 
+üy±o_ÝtiÚs
+ *
+Ýt
+,
+
+346 cÚ¡ 
+äame
+* frame);
+
+350 
+üy±o_adju¡_äame_·¿m‘”s
+(
+äame
+ *frame,
+
+351 cÚ¡ 
+key_ty³
+* 
+kt
+,
+
+352 
+boÞ
+ 
+c�h”_defšed
+,
+
+353 
+boÞ
+ 
+u£_iv
+,
+
+354 
+boÞ
+ 
+·ck‘_id
+,
+
+355 
+boÞ
+ 
+·ck‘_id_lÚg_fÜm
+);
+
+359 
+	#NONCE_SECRET_LEN_MIN
+ 16
+
+	)
+
+362 
+	#NONCE_SECRET_LEN_MAX
+ 64
+
+	)
+
+365 
+	#PRNG_NONCE_RESET_BYTES
+ 1024
+
+	)
+
+374 
+´ng_š™
+ (cÚ¡ *
+md_Çme
+, cÚ¡ 
+nÚû_£ü‘_Ën_·rm
+);
+
+391 
+´ng_by‹s
+ (
+ušt8_t
+ *
+ou�ut
+, 
+Ën
+);
+
+393 
+´ng_unš™
+ ();
+
+395 
+‹¡_üy±o
+ (cÚ¡ 
+üy±o_ÝtiÚs
+ *
+co
+, 
+äame
+* 
+f
+);
+
+400 
+key_dœeùiÚ_¡©e_š™
+ (
+key_dœeùiÚ_¡©e
+ *
+kds
+, 
+key_dœeùiÚ
+);
+
+402 
+v”ify_fix_key2
+ (
+key2
+ *key2, cÚ¡ 
+key_ty³
+ *
+kt
+, cÚ¡ *
+sh¬ed_£ü‘_fže
+);
+
+404 
+mu¡_have_n_keys
+ (cÚ¡ *
+fž’ame
+, cÚ¡ *
+ÝtiÚ
+, cÚ¡ 
+key2
+ *key2, 
+n
+);
+
+406 
+ascii2keydœeùiÚ
+ (
+msgËv–
+, cÚ¡ *
+¡r
+);
+
+408 cÚ¡ *
+keydœeùiÚ2ascii
+ (
+kd
+, 
+boÞ
+ 
+»mÙe
+);
+
+411 
+key2_´št
+ (cÚ¡ 
+key2
+* 
+k
+,
+
+412 cÚ¡ 
+key_ty³
+ *
+kt
+,
+
+413 cÚ¡ * 
+´efix0
+,
+
+414 cÚ¡ * 
+´efix1
+);
+
+416 #ifdeà
+ENABLE_SSL
+
+
+418 
+	#GHK_INLINE
+ (1<<0)
+
+	)
+
+419 
+g‘_Žs_hªdshake_key
+ (cÚ¡ 
+key_ty³
+ *key_type,
+
+420 
+key_ùx_bi
+ *
+ùx
+,
+
+421 cÚ¡ *
+·s¥h¿£_fže
+,
+
+422 cÚ¡ 
+key_dœeùiÚ
+,
+
+423 cÚ¡ 
+æags
+);
+
+427 
+š™_s¦_lib
+ ();
+
+428 
+ä“_s¦_lib
+ ();
+
+436 
+	smd5_¡©e
+ {
+
+437 
+md_ùx_t
+ 
+	mùx
+;
+
+440 
+	smd5_dige¡
+ {
+
+441 
+ušt8_t
+ 
+	mdige¡
+ [
+MD5_DIGEST_LENGTH
+];
+
+444 cÚ¡ *
+md5sum
+(
+ušt8_t
+ *
+buf
+, 
+Ën
+, 
+n_´št_ch¬s
+, 
+gc_¬’a
+ *
+gc
+);
+
+445 
+md5_¡©e_š™
+ (
+md5_¡©e
+ *
+s
+);
+
+446 
+md5_¡©e_upd©e
+ (
+md5_¡©e
+ *
+s
+, *
+d©a
+, 
+size_t
+ 
+Ën
+);
+
+447 
+md5_¡©e_fš®
+ (
+md5_¡©e
+ *
+s
+, 
+md5_dige¡
+ *
+out
+);
+
+448 
+md5_dige¡_þ—r
+ (
+md5_dige¡
+ *
+dige¡
+);
+
+449 
+boÞ
+ 
+md5_dige¡_defšed
+ (cÚ¡ 
+md5_dige¡
+ *
+dige¡
+);
+
+450 
+boÞ
+ 
+md5_dige¡_equ®
+ (cÚ¡ 
+md5_dige¡
+ *
+d1
+, cÚ¡ md5_dige¡ *
+d2
+);
+
+456 
+šlše
+ 
+boÞ
+
+
+457 
+	$key_ùx_bi_defšed
+(cÚ¡ 
+key_ùx_bi
+* 
+key
+)
+
+459  
+key
+->
+’üy±
+.
+c�h”
+ || key->’üy±.
+hmac
+ || key->
+deüy±
+.cipher || key->decrypt.hmac;
+
+460 
+	}
+}
+
+	@crypto_backend.h
+
+30 #iâdeà
+CRYPTO_BACKEND_H_
+
+
+31 
+	#CRYPTO_BACKEND_H_
+
+
+	)
+
+33 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+34 
+	~"üy±o_Ý’s¦.h
+"
+
+36 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+37 
+	~"üy±o_pÞ¬s¦.h
+"
+
+39 
+	~"basic.h
+"
+
+46 
+üy±o_š™_lib
+ ();
+
+48 
+üy±o_unš™_lib
+ ();
+
+50 
+üy±o_þ—r_”rÜ
+ ();
+
+55 
+üy±o_š™_lib_’gše
+ (cÚ¡ *
+’gše_Çme
+);
+
+57 #ifdeà
+DMALLOC
+
+
+63 
+üy±o_š™_dm®loc
+ ();
+
+70 cÚ¡ * 
+Œª¦©e_c�h”_Çme_äom_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+);
+
+76 cÚ¡ * 
+Œª¦©e_c�h”_Çme_äom_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+);
+
+78 
+show_avažabË_c�h”s
+ ();
+
+80 
+show_avažabË_dige¡s
+ ();
+
+82 
+show_avažabË_’gšes
+ ();
+
+102 
+¿nd_by‹s
+ (
+ušt8_t
+ *
+ou�ut
+, 
+Ën
+);
+
+119 
+key_des_num_cblocks
+ (cÚ¡ 
+c�h”_kt_t
+ *
+kt
+);
+
+130 
+boÞ
+ 
+key_des_check
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+);
+
+139 
+key_des_fixup
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+);
+
+148 
+c�h”_des_’üy±_ecb
+ (cÚ¡ 
+key
+[
+DES_KEY_LENGTH
+],
+
+149 
+¤c
+[
+DES_KEY_LENGTH
+],
+
+150 
+d¡
+[
+DES_KEY_LENGTH
+]);
+
+169 
+	#MAX_CIPHER_KEY_LENGTH
+ 64
+
+	)
+
+182 cÚ¡ 
+c�h”_kt_t
+ * 
+c�h”_kt_g‘
+ (cÚ¡ *
+c�h”Çme
+);
+
+191 cÚ¡ * 
+c�h”_kt_Çme
+ (cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+);
+
+201 
+c�h”_kt_key_size
+ (cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+);
+
+212 
+c�h”_kt_iv_size
+ (cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+);
+
+221 
+c�h”_kt_block_size
+ (cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+);
+
+231 
+c�h”_kt_mode
+ (cÚ¡ 
+c�h”_kt_t
+ *
+c�h”_kt
+);
+
+240 
+boÞ
+ 
+c�h”_kt_mode_cbc
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+);
+
+249 
+boÞ
+ 
+c�h”_kt_mode_ofb_cfb
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+);
+
+268 
+c�h”_ùx_š™
+ (
+c�h”_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+key
+, 
+key_Ën
+,
+
+269 cÚ¡ 
+c�h”_kt_t
+ *
+kt
+, 
+’c
+);
+
+276 
+c�h”_ùx_þ—nup
+ (
+c�h”_ùx_t
+ *
+ùx
+);
+
+287 
+c�h”_ùx_iv_Ëngth
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+);
+
+296 
+c�h”_ùx_block_size
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+);
+
+306 
+c�h”_ùx_mode
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+);
+
+315 cÚ¡ 
+c�h”_kt_t
+ *
+	$c�h”_ùx_g‘_c�h”_kt
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+)
+
+316 
+	`__©Œibu‹__
+((
+nÚnuÎ
+));
+
+327 
+	`c�h”_ùx_»£t
+ (
+c�h”_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+iv_buf
+);
+
+346 
+	`c�h”_ùx_upd©e
+ (
+c�h”_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+,
+
+347 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+);
+
+359 
+	`c�h”_ùx_fš®
+ (
+c�h”_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+);
+
+374 
+	#MAX_HMAC_KEY_LENGTH
+ 64
+
+	)
+
+387 cÚ¡ 
+md_kt_t
+ * 
+	`md_kt_g‘
+ (cÚ¡ *
+dige¡
+);
+
+397 cÚ¡ * 
+	`md_kt_Çme
+ (cÚ¡ 
+md_kt_t
+ *
+kt
+);
+
+406 
+	`md_kt_size
+ (cÚ¡ 
+md_kt_t
+ *
+kt
+);
+
+425 
+	`md_fuÎ
+ (cÚ¡ 
+md_kt_t
+ *
+kt
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+, ušt8_ˆ*
+d¡
+);
+
+433 
+	`md_ùx_š™
+ (
+md_ùx_t
+ *
+ùx
+, cÚ¡ 
+md_kt_t
+ *
+kt
+);
+
+440 
+	`md_ùx_þ—nup
+(
+md_ùx_t
+ *
+ùx
+);
+
+449 
+	`md_ùx_size
+ (cÚ¡ 
+md_ùx_t
+ *
+ùx
+);
+
+458 
+	`md_ùx_upd©e
+ (
+md_ùx_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+);
+
+466 
+	`md_ùx_fš®
+ (
+md_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+);
+
+485 
+	`hmac_ùx_š™
+ (
+hmac_ùx_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+key
+, 
+key_Ëngth
+,
+
+486 cÚ¡ 
+md_kt_t
+ *
+kt
+);
+
+493 
+	`hmac_ùx_þ—nup
+(
+hmac_ùx_t
+ *
+ùx
+);
+
+502 
+	`hmac_ùx_size
+ (cÚ¡ 
+hmac_ùx_t
+ *
+ùx
+);
+
+509 
+	`hmac_ùx_»£t
+ (
+hmac_ùx_t
+ *
+ùx
+);
+
+518 
+	`hmac_ùx_upd©e
+ (
+hmac_ùx_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+);
+
+526 
+	`hmac_ùx_fš®
+ (
+hmac_ùx_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+);
+
+	@crypto_openssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_CRYPTO_OPENSSL
+)
+
+40 
+	~"basic.h
+"
+
+41 
+	~"bufãr.h
+"
+
+42 
+	~"š‹g”.h
+"
+
+43 
+	~"üy±o.h
+"
+
+44 
+	~"üy±o_back’d.h
+"
+
+45 
+	~<Ý’s¦/objeùs.h
+>
+
+46 
+	~<Ý’s¦/evp.h
+>
+
+47 
+	~<Ý’s¦/des.h
+>
+
+53 #ià
+MAX_CIPHER_KEY_LENGTH
+ < 
+EVP_MAX_KEY_LENGTH
+
+
+54 #w¬nšg 
+Some
+ 
+O³nSSL
+ 
+EVP
+ 
+c�h”s
+ 
+now
+ 
+suµÜt
+ 
+key
+ 
+Ëngths
+ 
+g»©”
+ 
+thª
+ 
+MAX_CIPHER_KEY_LENGTH
+ -- 
+cÚsid”
+ 
+šü—sšg
+ MAX_CIPHER_KEY_LENGTH
+
+57 #ià
+MAX_HMAC_KEY_LENGTH
+ < 
+EVP_MAX_MD_SIZE
+
+
+58 #w¬nšg 
+Some
+ 
+O³nSSL
+ 
+HMAC
+ 
+mes§ge
+ 
+dige¡s
+ 
+now
+ 
+suµÜt
+ 
+key
+ 
+Ëngths
+ 
+g»©”
+ 
+thª
+ 
+MAX_HMAC_KEY_LENGTH
+ -- 
+cÚsid”
+ 
+šü—sšg
+ MAX_HMAC_KEY_LENGTH
+
+68 #ià
+SSLEAY_VERSION_NUMBER
+ < 0x00907000L
+
+71 #undeà
+EVP_CIPHER_mode
+
+
+72 
+	#EVP_CIPHER_mode
+(
+e
+è((Ó)->
+æags
+è& 
+EVP_CIPH_MODE
+)
+
+	)
+
+74 
+	#DES_cblock
+ 
+des_cblock
+
+
+	)
+
+75 
+	#DES_is_w—k_key
+ 
+des_is_w—k_key
+
+
+	)
+
+76 
+	#DES_check_key_·r™y
+ 
+des_check_key_·r™y
+
+
+	)
+
+77 
+	#DES_£t_odd_·r™y
+ 
+des_£t_odd_·r™y
+
+
+	)
+
+79 
+	#HMAC_CTX_š™
+(
+ùx
+è
+	`CLEAR
+ (*ùx)
+
+	)
+
+80 
+	#HMAC_In™_ex
+(
+ùx
+,
+£c
+,
+Ën
+,
+md
+,
+im¶
+è
+	`HMAC_In™
+(ùx, sec,†’, md)
+
+	)
+
+81 
+	#HMAC_CTX_þ—nup
+(
+ùx
+è
+	`HMAC_þ—nup
+(ùx)
+
+	)
+
+82 
+	#EVP_MD_CTX_þ—nup
+(
+md
+è
+	`CLEAR
+ (*md)
+
+	)
+
+84 
+	#INFO_CALLBACK_SSL_CONST
+
+
+	)
+
+88 #iâdeà
+EVP_CIPHER_Çme
+
+
+89 
+	#EVP_CIPHER_Çme
+(
+e
+è
+	`OBJ_nid2¢
+(
+	`EVP_CIPHER_nid
+Ó))
+
+	)
+
+92 #iâdeà
+EVP_MD_Çme
+
+
+93 
+	#EVP_MD_Çme
+(
+e
+è
+	`OBJ_nid2¢
+(
+	`EVP_MD_ty³
+Ó))
+
+	)
+
+96 #ià
+HAVE_OPENSSL_ENGINE
+
+
+97 
+	~<Ý’s¦/’gše.h
+>
+
+99 
+boÞ
+ 
+	g’gše_š™Ÿlized
+ = 
+çl£
+;
+
+101 
+ENGINE
+ *
+	g’gše_³rsi¡
+ = 
+NULL
+;
+
+104 
+ENGINE
+ *
+
+105 
+	$Œy_lßd_’gše
+ (cÚ¡ *
+’gše
+)
+
+107 
+ENGINE
+ *
+e
+ = 
+	`ENGINE_by_id
+ ("dynamic");
+
+108 ià(
+e
+)
+
+110 ià(!
+	`ENGINE_ù¾_cmd_¡ršg
+ (
+e
+, "SO_PATH", 
+’gše
+, 0)
+
+111 || !
+	`ENGINE_ù¾_cmd_¡ršg
+ (
+e
+, "LOAD", 
+NULL
+, 0))
+
+113 
+	`ENGINE_ä“
+ (
+e
+);
+
+114 
+e
+ = 
+NULL
+;
+
+117  
+e
+;
+
+118 
+	}
+}
+
+120 
+ENGINE
+ *
+
+121 
+	$£tup_’gše
+ (cÚ¡ *
+’gše
+)
+
+123 
+ENGINE
+ *
+e
+ = 
+NULL
+;
+
+125 
+	`ENGINE_lßd_bužtš_’gšes
+ ();
+
+127 ià(
+’gše
+)
+
+129 ià(
+	`¡rcmp
+ (
+’gše
+, "auto") == 0)
+
+131 
+	`msg
+ (
+M_INFO
+, "Initializing OpenSSL‡utoƒngine support");
+
+132 
+	`ENGINE_»gi¡”_®l_com¶‘e
+ ();
+
+133  
+NULL
+;
+
+135 ià((
+e
+ = 
+	`ENGINE_by_id
+ (
+’gše
+)è=ð
+NULL
+
+
+136 && (
+e
+ = 
+	`Œy_lßd_’gše
+ (
+’gše
+)è=ð
+NULL
+)
+
+138 
+	`msg
+ (
+M_FATAL
+, "O³nSSLƒ¼Ü: cªnÙ†ßdƒngš�'%s'", 
+’gše
+);
+
+141 ià(!
+	`ENGINE_£t_deçuÉ
+ (
+e
+, 
+ENGINE_METHOD_ALL
+))
+
+143 
+	`msg
+ (
+M_FATAL
+, "OpenSSLƒrror: ENGINE_set_default failed onƒngine '%s'",
+
+144 
+’gše
+);
+
+147 
+	`msg
+ (
+M_INFO
+, "Initializing OpenSSL support forƒngine '%s'",
+
+148 
+	`ENGINE_g‘_id
+ (
+e
+));
+
+150  
+e
+;
+
+151 
+	}
+}
+
+156 
+	$üy±o_š™_lib_’gše
+ (cÚ¡ *
+’gše_Çme
+)
+
+158 #ià
+HAVE_OPENSSL_ENGINE
+
+
+159 ià(!
+’gše_š™Ÿlized
+)
+
+161 
+	`ASSERT
+ (
+’gše_Çme
+);
+
+162 
+	`ASSERT
+ (!
+’gše_³rsi¡
+);
+
+163 
+’gše_³rsi¡
+ = 
+	`£tup_’gše
+ (
+’gše_Çme
+);
+
+164 
+’gše_š™Ÿlized
+ = 
+Œue
+;
+
+167 
+	`msg
+ (
+M_WARN
+, "Note: OpenSSL hardware cryptoƒngine functionality is‚ot‡vailable");
+
+169 
+	}
+}
+
+178 
+	$üy±o_š™_lib
+ ()
+
+180 #iâdeà
+ENABLE_SSL
+
+
+182 #iâdeà
+ENABLE_SMALL
+
+
+183 
+	`ERR_lßd_üy±o_¡ršgs
+ ();
+
+185 
+	`O³nSSL_add_®l_®gÜ™hms
+ ();
+
+194 #ifdeà
+CRYPTO_MDEBUG
+
+
+195 
+	`CRYPTO_mem_ù¾
+(
+CRYPTO_MEM_CHECK_ON
+);
+
+197 
+	}
+}
+
+200 
+	$üy±o_unš™_lib
+ ()
+
+202 #iâdeà
+ENABLE_SSL
+
+
+204 
+	`EVP_þ—nup
+ ();
+
+205 #iâdeà
+ENABLE_SMALL
+
+
+206 
+	`ERR_ä“_¡ršgs
+ ();
+
+210 #ifdeà
+CRYPTO_MDEBUG
+
+
+211 
+FILE
+* 
+å
+ = 
+	`fÝ’
+ ("sdlog", "w");
+
+212 
+	`ASSERT
+ (
+å
+);
+
+213 
+	`CRYPTO_mem_Ëaks_å
+ (
+å
+);
+
+214 
+	`fþo£
+ (
+å
+);
+
+217 #ià
+HAVE_OPENSSL_ENGINE
+
+
+218 ià(
+’gše_š™Ÿlized
+)
+
+220 
+	`ENGINE_þ—nup
+ ();
+
+221 
+’gše_³rsi¡
+ = 
+NULL
+;
+
+222 
+’gše_š™Ÿlized
+ = 
+çl£
+;
+
+225 
+	}
+}
+
+228 
+	$üy±o_þ—r_”rÜ
+ ()
+
+230 
+	`ERR_þ—r_”rÜ
+ ();
+
+231 
+	}
+}
+
+241 #ifdeà
+DMALLOC
+
+
+243 
+	$üy±o_m®loc
+ (
+size_t
+ 
+size
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+245  
+	`dm®loc_m®loc
+(
+fže
+, 
+lše
+, 
+size
+, 
+DMALLOC_FUNC_MALLOC
+, 0, 0);
+
+246 
+	}
+}
+
+249 
+	$üy±o_»®loc
+ (*
+±r
+, 
+size_t
+ 
+size
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+251  
+	`dm®loc_»®loc
+(
+fže
+, 
+lše
+, 
+±r
+, 
+size
+, 
+DMALLOC_FUNC_REALLOC
+, 0);
+
+252 
+	}
+}
+
+255 
+	$üy±o_ä“
+ (*
+±r
+)
+
+257 
+	`dm®loc_ä“
+ (
+__FILE__
+, 
+__LINE__
+, 
+±r
+, 
+DMALLOC_FUNC_FREE
+);
+
+258 
+	}
+}
+
+261 
+	$üy±o_š™_dm®loc
+ ()
+
+263 
+	`CRYPTO_£t_mem_ex_funùiÚs
+ (
+üy±o_m®loc
+,
+
+264 
+üy±o_»®loc
+,
+
+265 
+üy±o_ä“
+);
+
+266 
+	}
+}
+
+270 
+	$Œª¦©e_c�h”_Çme_äom_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+) {
+
+272  
+c�h”_Çme
+;
+
+273 
+	}
+}
+
+276 
+	$Œª¦©e_c�h”_Çme_to_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+) {
+
+278  
+c�h”_Çme
+;
+
+279 
+	}
+}
+
+282 
+	$show_avažabË_c�h”s
+ ()
+
+284 
+nid
+;
+
+286 #iâdeà
+ENABLE_SMALL
+
+
+287 
+	`´štf
+ ("The following ciphers‡nd cipher modes‡re‡vailable\n"
+
+288 "fÜ u£ w™h " 
+PACKAGE_NAME
+ ". Each cipher shown below may be\n"
+
+295 
+nid
+ = 0;‚id < 10000; ++nid)
+
+297 cÚ¡ 
+EVP_CIPHER
+ *
+c�h”
+ = 
+	`EVP_g‘_c�h”bynid
+ (
+nid
+);
+
+298 ià(
+c�h”
+)
+
+300 ià(
+	`c�h”_kt_mode_cbc
+(
+c�h”
+)
+
+301 #ifdeà
+ENABLE_OFB_CFB_MODE
+
+
+302 || 
+	`c�h”_kt_mode_ofb_cfb
+(
+c�h”
+)
+
+306 cÚ¡ *
+v¬_key_size
+ =
+
+307 (
+	`EVP_CIPHER_æags
+ (
+c�h”
+è& 
+EVP_CIPH_VARIABLE_LENGTH
+) ?
+
+309 cÚ¡ *
+s¦_Úly
+ = 
+	`c�h”_kt_mode_ofb_cfb
+(
+c�h”
+) ?
+
+312 
+	`´štf
+ ("% %d b™ deçuÉ key (%s)%s\n", 
+	`OBJ_nid2¢
+ (
+nid
+),
+
+313 
+	`EVP_CIPHER_key_Ëngth
+ (
+c�h”
+è* 8, 
+v¬_key_size
+,
+
+314 
+s¦_Úly
+);
+
+318 
+	`´štf
+ ("\n");
+
+319 
+	}
+}
+
+322 
+	$show_avažabË_dige¡s
+ ()
+
+324 
+nid
+;
+
+326 #iâdeà
+ENABLE_SMALL
+
+
+327 
+	`´štf
+ ("The following message digests‡re‡vailable for use with\n"
+
+328 
+PACKAGE_NAME
+ ". A message digest is used in conjunction with\n"
+
+334 
+nid
+ = 0;‚id < 10000; ++nid)
+
+336 cÚ¡ 
+EVP_MD
+ *
+dige¡
+ = 
+	`EVP_g‘_dige¡bynid
+ (
+nid
+);
+
+337 ià(
+dige¡
+)
+
+339 
+	`´štf
+ ("%s %d bit digest size\n",
+
+340 
+	`OBJ_nid2¢
+ (
+nid
+), 
+	`EVP_MD_size
+ (
+dige¡
+) * 8);
+
+343 
+	`´štf
+ ("\n");
+
+344 
+	}
+}
+
+347 
+	$show_avažabË_’gšes
+ ()
+
+349 #ià
+HAVE_OPENSSL_ENGINE
+
+
+350 
+ENGINE
+ *
+e
+;
+
+352 
+	`´štf
+ ("OpenSSL Crypto Engines\n\n");
+
+354 
+	`ENGINE_lßd_bužtš_’gšes
+ ();
+
+356 
+e
+ = 
+	`ENGINE_g‘_fœ¡
+ ();
+
+357 
+e
+)
+
+359 
+	`´štf
+ ("%s [%s]\n",
+
+360 
+	`ENGINE_g‘_Çme
+ (
+e
+),
+
+361 
+	`ENGINE_g‘_id
+ (
+e
+));
+
+362 
+e
+ = 
+	`ENGINE_g‘_Ãxt
+ (e);
+
+364 
+	`ENGINE_þ—nup
+ ();
+
+366 
+	`´štf
+ ("Sorry, OpenSSL hardware cryptoƒngine functionality is‚ot‡vailable.\n");
+
+368 
+	}
+}
+
+379 
+	$¿nd_by‹s
+(
+ušt8_t
+ *
+ou�ut
+, 
+Ën
+)
+
+381  
+	`RAND_by‹s
+ (
+ou�ut
+, 
+Ën
+);
+
+382 
+	}
+}
+
+392 
+	$key_des_num_cblocks
+ (cÚ¡ 
+EVP_CIPHER
+ *
+kt
+)
+
+394 
+»t
+ = 0;
+
+395 cÚ¡ *
+Çme
+ = 
+	`OBJ_nid2¢
+ (
+	`EVP_CIPHER_nid
+ (
+kt
+));
+
+396 ià(
+Çme
+)
+
+398 ià(!
+	`¡ºcmp
+ (
+Çme
+, "DES-", 4))
+
+400 
+»t
+ = 
+	`EVP_CIPHER_key_Ëngth
+ (
+kt
+è/  (
+DES_cblock
+);
+
+402 ià(!
+	`¡ºcmp
+ (
+Çme
+, "DESX-", 5))
+
+404 
+»t
+ = 1;
+
+407 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "CRYPTO INFO:‚_DES_cblocks=%d", 
+»t
+);
+
+408  
+»t
+;
+
+409 
+	}
+}
+
+411 
+boÞ
+
+
+412 
+	$key_des_check
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+)
+
+414 
+i
+;
+
+415 
+bufãr
+ 
+b
+;
+
+417 
+	`buf_£t_»ad
+ (&
+b
+, 
+key
+, 
+key_Ën
+);
+
+419 
+i
+ = 0; i < 
+ndc
+; ++i)
+
+421 
+DES_cblock
+ *
+dc
+ = (DES_cblock*è
+	`buf_»ad_®loc
+ (&
+b
+,  (DES_cblock));
+
+422 ià(!
+dc
+)
+
+424 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: insufficient key material");
+
+425 
+”r
+;
+
+427 ià(
+	`DES_is_w—k_key
+(
+dc
+))
+
+429 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: weak key detected");
+
+430 
+”r
+;
+
+432 ià(!
+	`DES_check_key_·r™y
+ (
+dc
+))
+
+434 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: bad…arity detected");
+
+435 
+”r
+;
+
+438  
+Œue
+;
+
+440 
+”r
+:
+
+441 
+	`ERR_þ—r_”rÜ
+ ();
+
+442  
+çl£
+;
+
+443 
+	}
+}
+
+446 
+	$key_des_fixup
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+)
+
+448 
+i
+;
+
+449 
+bufãr
+ 
+b
+;
+
+451 
+	`buf_£t_»ad
+ (&
+b
+, 
+key
+, 
+key_Ën
+);
+
+452 
+i
+ = 0; i < 
+ndc
+; ++i)
+
+454 
+DES_cblock
+ *
+dc
+ = (DES_cblock*è
+	`buf_»ad_®loc
+(&
+b
+, (DES_cblock));
+
+455 ià(!
+dc
+)
+
+457 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: fixup_key_DES: insufficient key material");
+
+458 
+	`ERR_þ—r_”rÜ
+ ();
+
+461 
+	`DES_£t_odd_·r™y
+ (
+dc
+);
+
+463 
+	}
+}
+
+473 cÚ¡ 
+EVP_CIPHER
+ *
+
+474 
+	$c�h”_kt_g‘
+ (cÚ¡ *
+c�h”Çme
+)
+
+476 cÚ¡ 
+EVP_CIPHER
+ *
+c�h”
+ = 
+NULL
+;
+
+478 
+	`ASSERT
+ (
+c�h”Çme
+);
+
+480 
+c�h”
+ = 
+	`EVP_g‘_c�h”byÇme
+ (
+c�h”Çme
+);
+
+482 ià(
+NULL
+ =ð
+c�h”
+)
+
+483 
+	`msg
+ (
+M_SSLERR
+, "C�h”‡lgÜ™hm '%s'‚Ù found", 
+c�h”Çme
+);
+
+485 ià(
+	`EVP_CIPHER_key_Ëngth
+ (
+c�h”
+è> 
+MAX_CIPHER_KEY_LENGTH
+)
+
+486 
+	`msg
+ (
+M_FATAL
+, "C�h”‡lgÜ™hm '%s' u£ ¨deçuÉ key siz�(%d by‹sèwhich i Ïrg”�hª " 
+PACKAGE_NAME
+ "'s current maximum key size (%d bytes)",
+
+487 
+c�h”Çme
+,
+
+488 
+	`EVP_CIPHER_key_Ëngth
+ (
+c�h”
+),
+
+489 
+MAX_CIPHER_KEY_LENGTH
+);
+
+491  
+c�h”
+;
+
+492 
+	}
+}
+
+495 
+	$c�h”_kt_Çme
+ (cÚ¡ 
+EVP_CIPHER
+ *
+c�h”_kt
+)
+
+497 ià(
+NULL
+ =ð
+c�h”_kt
+)
+
+499  
+	`EVP_CIPHER_Çme
+ (
+c�h”_kt
+);
+
+500 
+	}
+}
+
+503 
+	$c�h”_kt_key_size
+ (cÚ¡ 
+EVP_CIPHER
+ *
+c�h”_kt
+)
+
+505  
+	`EVP_CIPHER_key_Ëngth
+ (
+c�h”_kt
+);
+
+506 
+	}
+}
+
+509 
+	$c�h”_kt_iv_size
+ (cÚ¡ 
+EVP_CIPHER
+ *
+c�h”_kt
+)
+
+511  
+	`EVP_CIPHER_iv_Ëngth
+ (
+c�h”_kt
+);
+
+512 
+	}
+}
+
+515 
+	$c�h”_kt_block_size
+ (cÚ¡ 
+EVP_CIPHER
+ *
+c�h”_kt
+)
+
+517  
+	`EVP_CIPHER_block_size
+ (
+c�h”_kt
+);
+
+518 
+	}
+}
+
+521 
+	$c�h”_kt_mode
+ (cÚ¡ 
+EVP_CIPHER
+ *
+c�h”_kt
+)
+
+523 
+	`ASSERT
+(
+NULL
+ !ð
+c�h”_kt
+);
+
+524  
+	`EVP_CIPHER_mode
+ (
+c�h”_kt
+);
+
+525 
+	}
+}
+
+527 
+boÞ
+
+
+528 
+	$c�h”_kt_mode_cbc
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+)
+
+530  
+c�h”
+ && 
+	`c�h”_kt_mode
+(c�h”è=ð
+OPENVPN_MODE_CBC
+
+
+531 #ifdeà
+EVP_CIPH_FLAG_AEAD_CIPHER
+
+
+533 && !(
+	`EVP_CIPHER_æags
+(
+c�h”
+è& 
+EVP_CIPH_FLAG_AEAD_CIPHER
+)
+
+536 
+	}
+}
+
+538 
+boÞ
+
+
+539 
+	$c�h”_kt_mode_ofb_cfb
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+)
+
+541  
+c�h”
+ && (
+	`c�h”_kt_mode
+(c�h”è=ð
+OPENVPN_MODE_OFB
+ ||
+
+542 
+	`c�h”_kt_mode
+(
+c�h”
+è=ð
+OPENVPN_MODE_CFB
+)
+
+543 #ifdeà
+EVP_CIPH_FLAG_AEAD_CIPHER
+
+
+545 && !(
+	`EVP_CIPHER_æags
+(
+c�h”
+è& 
+EVP_CIPH_FLAG_AEAD_CIPHER
+)
+
+548 
+	}
+}
+
+558 
+	$c�h”_ùx_š™
+ (
+EVP_CIPHER_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+key
+, 
+key_Ën
+,
+
+559 cÚ¡ 
+EVP_CIPHER
+ *
+kt
+, 
+’c
+)
+
+561 
+	`ASSERT
+(
+NULL
+ !ð
+kt
+ && NULL !ð
+ùx
+);
+
+563 
+	`CLEAR
+ (*
+ùx
+);
+
+565 
+	`EVP_CIPHER_CTX_š™
+ (
+ùx
+);
+
+566 ià(!
+	`EVP_C�h”In™
+ (
+ùx
+, 
+kt
+, 
+NULL
+, NULL, 
+’c
+))
+
+567 
+	`msg
+ (
+M_SSLERR
+, "EVP cipher init #1");
+
+568 #ifdeà
+HAVE_EVP_CIPHER_CTX_SET_KEY_LENGTH
+
+
+569 ià(!
+	`EVP_CIPHER_CTX_£t_key_Ëngth
+ (
+ùx
+, 
+key_Ën
+))
+
+570 
+	`msg
+ (
+M_SSLERR
+, "EVP set key size");
+
+572 ià(!
+	`EVP_C�h”In™
+ (
+ùx
+, 
+NULL
+, 
+key
+, NULL, 
+’c
+))
+
+573 
+	`msg
+ (
+M_SSLERR
+, "EVP cipher init #2");
+
+576 
+	`ASSERT
+ (
+	`EVP_CIPHER_CTX_key_Ëngth
+ (
+ùx
+è<ð
+key_Ën
+);
+
+577 
+	}
+}
+
+580 
+	$c�h”_ùx_þ—nup
+ (
+EVP_CIPHER_CTX
+ *
+ùx
+)
+
+582 
+	`EVP_CIPHER_CTX_þ—nup
+ (
+ùx
+);
+
+583 
+	}
+}
+
+586 
+	$c�h”_ùx_iv_Ëngth
+ (cÚ¡ 
+EVP_CIPHER_CTX
+ *
+ùx
+)
+
+588  
+	`EVP_CIPHER_CTX_iv_Ëngth
+ (
+ùx
+);
+
+589 
+	}
+}
+
+592 
+	$c�h”_ùx_block_size
+(cÚ¡ 
+EVP_CIPHER_CTX
+ *
+ùx
+)
+
+594  
+	`EVP_CIPHER_CTX_block_size
+ (
+ùx
+);
+
+595 
+	}
+}
+
+598 
+	$c�h”_ùx_mode
+ (cÚ¡ 
+EVP_CIPHER_CTX
+ *
+ùx
+)
+
+600  
+	`EVP_CIPHER_CTX_mode
+ (
+ùx
+);
+
+601 
+	}
+}
+
+603 cÚ¡ 
+c�h”_kt_t
+ *
+
+604 
+	$c�h”_ùx_g‘_c�h”_kt
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+)
+
+606  
+	`EVP_CIPHER_CTX_c�h”
+(
+ùx
+);
+
+607 
+	}
+}
+
+611 
+	$c�h”_ùx_»£t
+ (
+EVP_CIPHER_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+iv_buf
+)
+
+613  
+	`EVP_C�h”In™
+ (
+ùx
+, 
+NULL
+, NULL, 
+iv_buf
+, -1);
+
+614 
+	}
+}
+
+617 
+	$c�h”_ùx_upd©e
+ (
+EVP_CIPHER_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+,
+
+618 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+620  
+	`EVP_C�h”Upd©e
+ (
+ùx
+, 
+d¡
+, 
+d¡_Ën
+, 
+¤c
+, 
+¤c_Ën
+);
+
+621 
+	}
+}
+
+624 
+	$c�h”_ùx_fš®
+ (
+EVP_CIPHER_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+)
+
+626  
+	`EVP_C�h”Fš®
+ (
+ùx
+, 
+d¡
+, 
+d¡_Ën
+);
+
+627 
+	}
+}
+
+631 
+	$c�h”_des_’üy±_ecb
+ (cÚ¡ 
+key
+[
+DES_KEY_LENGTH
+],
+
+632 *
+¤c
+,
+
+633 *
+d¡
+)
+
+635 
+DES_key_scheduË
+ 
+sched
+;
+
+637 
+	`DES_£t_key_unchecked
+((
+DES_cblock
+*)
+key
+, &
+sched
+);
+
+638 
+	`DES_ecb_’üy±
+((
+DES_cblock
+ *)
+¤c
+, (DES_cblock *)
+d¡
+, &
+sched
+, 
+DES_ENCRYPT
+);
+
+639 
+	}
+}
+
+648 cÚ¡ 
+EVP_MD
+ *
+
+649 
+	$md_kt_g‘
+ (cÚ¡ *
+dige¡
+)
+
+651 cÚ¡ 
+EVP_MD
+ *
+md
+ = 
+NULL
+;
+
+652 
+	`ASSERT
+ (
+dige¡
+);
+
+653 
+md
+ = 
+	`EVP_g‘_dige¡byÇme
+ (
+dige¡
+);
+
+654 ià(!
+md
+)
+
+655 
+	`msg
+ (
+M_SSLERR
+, "Mes§g�hash‡lgÜ™hm '%s'‚Ù found", 
+dige¡
+);
+
+656 ià(
+	`EVP_MD_size
+ (
+md
+è> 
+MAX_HMAC_KEY_LENGTH
+)
+
+657 
+	`msg
+ (
+M_FATAL
+, "Mes§g�hash‡lgÜ™hm '%s' u£ ¨deçuÉ hash siz�(%d by‹sèwhich i Ïrg”�hª " 
+PACKAGE_NAME
+ "'s current maximum hash size (%d bytes)",
+
+658 
+dige¡
+,
+
+659 
+	`EVP_MD_size
+ (
+md
+),
+
+660 
+MAX_HMAC_KEY_LENGTH
+);
+
+661  
+md
+;
+
+662 
+	}
+}
+
+665 
+	$md_kt_Çme
+ (cÚ¡ 
+EVP_MD
+ *
+kt
+)
+
+667 ià(
+NULL
+ =ð
+kt
+)
+
+669  
+	`EVP_MD_Çme
+ (
+kt
+);
+
+670 
+	}
+}
+
+673 
+	$md_kt_size
+ (cÚ¡ 
+EVP_MD
+ *
+kt
+)
+
+675  
+	`EVP_MD_size
+(
+kt
+);
+
+676 
+	}
+}
+
+686 
+	$md_fuÎ
+ (cÚ¡ 
+EVP_MD
+ *
+kt
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+, ušt8_ˆ*
+d¡
+)
+
+688 
+š_md_Ën
+ = 0;
+
+690  
+	`EVP_Dige¡
+(
+¤c
+, 
+¤c_Ën
+, 
+d¡
+, &
+š_md_Ën
+, 
+kt
+, 
+NULL
+);
+
+691 
+	}
+}
+
+694 
+	$md_ùx_š™
+ (
+EVP_MD_CTX
+ *
+ùx
+, cÚ¡ 
+EVP_MD
+ *
+kt
+)
+
+696 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+ && NULL !ð
+kt
+);
+
+698 
+	`CLEAR
+ (*
+ùx
+);
+
+700 
+	`EVP_MD_CTX_š™
+ (
+ùx
+);
+
+701 
+	`EVP_Dige¡In™
+(
+ùx
+, 
+kt
+);
+
+702 
+	}
+}
+
+705 
+	$md_ùx_þ—nup
+(
+EVP_MD_CTX
+ *
+ùx
+)
+
+707 
+	`EVP_MD_CTX_þ—nup
+(
+ùx
+);
+
+708 
+	}
+}
+
+711 
+	$md_ùx_size
+ (cÚ¡ 
+EVP_MD_CTX
+ *
+ùx
+)
+
+713  
+	`EVP_MD_CTX_size
+(
+ùx
+);
+
+714 
+	}
+}
+
+717 
+	$md_ùx_upd©e
+ (
+EVP_MD_CTX
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+719 
+	`EVP_Dige¡Upd©e
+(
+ùx
+, 
+¤c
+, 
+¤c_Ën
+);
+
+720 
+	}
+}
+
+723 
+	$md_ùx_fš®
+ (
+EVP_MD_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+)
+
+725 
+š_md_Ën
+ = 0;
+
+727 
+	`EVP_Dige¡Fš®
+(
+ùx
+, 
+d¡
+, &
+š_md_Ën
+);
+
+728 
+	}
+}
+
+739 
+	$hmac_ùx_š™
+ (
+HMAC_CTX
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+key
+, 
+key_Ën
+,
+
+740 cÚ¡ 
+EVP_MD
+ *
+kt
+)
+
+742 
+	`ASSERT
+(
+NULL
+ !ð
+kt
+ && NULL !ð
+ùx
+);
+
+744 
+	`CLEAR
+(*
+ùx
+);
+
+746 
+	`HMAC_CTX_š™
+ (
+ùx
+);
+
+747 
+	`HMAC_In™_ex
+ (
+ùx
+, 
+key
+, 
+key_Ën
+, 
+kt
+, 
+NULL
+);
+
+750 
+	`ASSERT
+ (
+	`HMAC_size
+ (
+ùx
+è<ð
+key_Ën
+);
+
+751 
+	}
+}
+
+754 
+	$hmac_ùx_þ—nup
+(
+HMAC_CTX
+ *
+ùx
+)
+
+756 
+	`HMAC_CTX_þ—nup
+ (
+ùx
+);
+
+757 
+	}
+}
+
+760 
+	$hmac_ùx_size
+ (cÚ¡ 
+HMAC_CTX
+ *
+ùx
+)
+
+762  
+	`HMAC_size
+ (
+ùx
+);
+
+763 
+	}
+}
+
+766 
+	$hmac_ùx_»£t
+ (
+HMAC_CTX
+ *
+ùx
+)
+
+768 
+	`HMAC_In™_ex
+ (
+ùx
+, 
+NULL
+, 0, NULL, NULL);
+
+769 
+	}
+}
+
+772 
+	$hmac_ùx_upd©e
+ (
+HMAC_CTX
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+774 
+	`HMAC_Upd©e
+ (
+ùx
+, 
+¤c
+, 
+¤c_Ën
+);
+
+775 
+	}
+}
+
+778 
+	$hmac_ùx_fš®
+ (
+HMAC_CTX
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+)
+
+780 
+š_hmac_Ën
+ = 0;
+
+782 
+	`HMAC_Fš®
+ (
+ùx
+, 
+d¡
+, &
+š_hmac_Ën
+);
+
+783 
+	}
+}
+
+	@crypto_openssl.h
+
+30 #iâdeà
+CRYPTO_OPENSSL_H_
+
+
+31 
+	#CRYPTO_OPENSSL_H_
+
+
+	)
+
+33 
+	~<Ý’s¦/evp.h
+>
+
+34 
+	~<Ý’s¦/hmac.h
+>
+
+35 
+	~<Ý’s¦/md5.h
+>
+
+38 
+EVP_CIPHER
+ 
+	tc�h”_kt_t
+;
+
+41 
+EVP_MD
+ 
+	tmd_kt_t
+;
+
+44 
+EVP_CIPHER_CTX
+ 
+	tc�h”_ùx_t
+;
+
+47 
+EVP_MD_CTX
+ 
+	tmd_ùx_t
+;
+
+50 
+HMAC_CTX
+ 
+	thmac_ùx_t
+;
+
+53 
+	#OPENVPN_MAX_IV_LENGTH
+ 
+EVP_MAX_IV_LENGTH
+
+
+	)
+
+56 
+	#OPENVPN_MODE_CBC
+ 
+EVP_CIPH_CBC_MODE
+
+
+	)
+
+59 
+	#OPENVPN_MODE_OFB
+ 
+EVP_CIPH_OFB_MODE
+
+
+	)
+
+62 
+	#OPENVPN_MODE_CFB
+ 
+EVP_CIPH_CFB_MODE
+
+
+	)
+
+65 
+	#OPENVPN_OP_ENCRYPT
+ 1
+
+	)
+
+68 
+	#OPENVPN_OP_DECRYPT
+ 0
+
+	)
+
+70 
+	#DES_KEY_LENGTH
+ 8
+
+	)
+
+71 
+	#MD4_DIGEST_LENGTH
+ 16
+
+	)
+
+	@crypto_polarssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_CRYPTO_POLARSSL
+)
+
+40 
+	~"”¾ev–.h
+"
+
+41 
+	~"basic.h
+"
+
+42 
+	~"bufãr.h
+"
+
+43 
+	~"š‹g”.h
+"
+
+44 
+	~"üy±o_back’d.h
+"
+
+45 
+	~"Ùime.h
+"
+
+46 
+	~"misc.h
+"
+
+48 
+	~<pÞ¬s¦/des.h
+>
+
+49 
+	~<pÞ¬s¦/md5.h
+>
+
+50 
+	~<pÞ¬s¦/c�h”.h
+>
+
+51 
+	~<pÞ¬s¦/havege.h
+>
+
+53 
+	~<pÞ¬s¦/’ŒÝy.h
+>
+
+62 
+	$üy±o_š™_lib_’gše
+ (cÚ¡ *
+’gše_Çme
+)
+
+64 
+	`msg
+ (
+M_WARN
+, "Note: PolarSSL hardware cryptoƒngine functionality is‚ot "
+
+66 
+	}
+}
+
+75 
+	$üy±o_š™_lib
+ ()
+
+77 
+	}
+}
+
+80 
+	$üy±o_unš™_lib
+ ()
+
+82 
+	}
+}
+
+85 
+	$üy±o_þ—r_”rÜ
+ ()
+
+87 
+	}
+}
+
+89 #ifdeà
+DMALLOC
+
+
+91 
+	$üy±o_š™_dm®loc
+ ()
+
+93 
+	`msg
+ (
+M_ERR
+, "Error: dmalloc support is‚ot‡vailable for PolarSSL.");
+
+94 
+	}
+}
+
+97 ¡ruù { cÚ¡ * 
+	mÝ’v²_Çme
+; cÚ¡ * 
+	mpÞ¬s¦_Çme
+; } 
+	tc�h”_Çme_·œ
+;
+
+98 
+c�h”_Çme_·œ
+ 
+	gc�h”_Çme_Œª¦©iÚ_�bË
+[] = {
+
+106 cÚ¡ 
+c�h”_Çme_·œ
+ *
+
+107 
+	$g‘_c�h”_Çme_·œ
+(cÚ¡ *
+c�h”_Çme
+) {
+
+108 
+c�h”_Çme_·œ
+ *
+·œ
+;
+
+109 
+size_t
+ 
+i
+ = 0;
+
+112 ; 
+i
+ <  (
+c�h”_Çme_Œª¦©iÚ_�bË
+) /  (*cipher_name_translation_table); i++)
+
+114 
+·œ
+ = &
+c�h”_Çme_Œª¦©iÚ_�bË
+[
+i
+];
+
+115 ià(0 =ð
+	`¡rcmp
+ (
+c�h”_Çme
+, 
+·œ
+->
+Ý’v²_Çme
+) ||
+
+116 0 =ð
+	`¡rcmp
+ (
+c�h”_Çme
+, 
+·œ
+->
+pÞ¬s¦_Çme
+))
+
+117  
+·œ
+;
+
+121  
+NULL
+;
+
+122 
+	}
+}
+
+125 
+	$Œª¦©e_c�h”_Çme_äom_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+) {
+
+126 cÚ¡ 
+c�h”_Çme_·œ
+ *
+·œ
+ = 
+	`g‘_c�h”_Çme_·œ
+(
+c�h”_Çme
+);
+
+128 ià(
+NULL
+ =ð
+·œ
+)
+
+129  
+c�h”_Çme
+;
+
+131  
+·œ
+->
+pÞ¬s¦_Çme
+;
+
+132 
+	}
+}
+
+135 
+	$Œª¦©e_c�h”_Çme_to_Ý’v²
+ (cÚ¡ *
+c�h”_Çme
+) {
+
+136 cÚ¡ 
+c�h”_Çme_·œ
+ *
+·œ
+ = 
+	`g‘_c�h”_Çme_·œ
+(
+c�h”_Çme
+);
+
+138 ià(
+NULL
+ =ð
+·œ
+)
+
+139  
+c�h”_Çme
+;
+
+141  
+·œ
+->
+Ý’v²_Çme
+;
+
+142 
+	}
+}
+
+145 
+	$show_avažabË_c�h”s
+ ()
+
+147 cÚ¡ *
+c�h”s
+ = 
+	`c�h”_li¡
+();
+
+149 #iâdeà
+ENABLE_SMALL
+
+
+150 
+	`´štf
+ ("The following ciphers‡nd cipher modes‡re‡vailable\n"
+
+151 "fÜ u£ w™h " 
+PACKAGE_NAME
+ ". Each cipher shown below may be\n"
+
+158 *
+c�h”s
+ != 0)
+
+160 cÚ¡ 
+c�h”_šfo_t
+ *
+šfo
+ = 
+	`c�h”_šfo_äom_ty³
+(*
+c�h”s
+);
+
+162 ià(
+šfo
+ && info->
+mode
+ =ð
+POLARSSL_MODE_CBC
+)
+
+163 
+	`´štf
+ ("%s %d bit default key\n",
+
+164 
+	`c�h”_kt_Çme
+(
+šfo
+), 
+	`c�h”_kt_key_size
+(info) * 8);
+
+166 
+c�h”s
+++;
+
+168 
+	`´štf
+ ("\n");
+
+169 
+	}
+}
+
+172 
+	$show_avažabË_dige¡s
+ ()
+
+174 cÚ¡ *
+dige¡s
+ = 
+	`md_li¡
+();
+
+176 #iâdeà
+ENABLE_SMALL
+
+
+177 
+	`´štf
+ ("The following message digests‡re‡vailable for use with\n"
+
+178 
+PACKAGE_NAME
+ ". A message digest is used in conjunction with\n"
+
+184 *
+dige¡s
+ != 0)
+
+186 cÚ¡ 
+md_šfo_t
+ *
+šfo
+ = 
+	`md_šfo_äom_ty³
+(*
+dige¡s
+);
+
+188 ià(
+šfo
+)
+
+189 
+	`´štf
+ ("%s %d bit default key\n",
+
+190 
+šfo
+->
+Çme
+, info->
+size
+ * 8);
+
+191 
+dige¡s
+++;
+
+193 
+	`´štf
+ ("\n");
+
+194 
+	}
+}
+
+197 
+	$show_avažabË_’gšes
+ ()
+
+199 
+	`´štf
+ ("Sorry, PolarSSL hardware cryptoƒngine functionality is‚ot "
+
+201 
+	}
+}
+
+216 
+ùr_drbg_cÚ‹xt
+ * 
+	$¿nd_ùx_g‘
+()
+
+218 
+’ŒÝy_cÚ‹xt
+ 
+ec
+ = {0};
+
+219 
+ùr_drbg_cÚ‹xt
+ 
+cd_ùx
+ = {0};
+
+220 
+boÞ
+ 
+¿nd_š™Ÿli£d
+ = 
+çl£
+;
+
+222 ià(!
+¿nd_š™Ÿli£d
+)
+
+224 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+225 
+bufãr
+ 
+³rs_¡ršg
+ = 
+	`®loc_buf_gc
+(100, &
+gc
+);
+
+232 
+	`buf_´štf
+(&
+³rs_¡ršg
+, "O³nVPN %0u %°%s", 
+	`¶©fÜm_g‘pid
+(), &
+cd_ùx
+, 
+	`time_¡ršg
+(0, 0, 0, &
+gc
+));
+
+235 
+	`’ŒÝy_š™
+(&
+ec
+);
+
+237 ià(0 !ð
+	`ùr_drbg_š™
+(&
+cd_ùx
+, 
+’ŒÝy_func
+, &
+ec
+, 
+	`BPTR
+(&
+³rs_¡ršg
+), 
+	`BLEN
+(&pers_string)))
+
+238 
+	`msg
+ (
+M_FATAL
+, "Failed�o initialize„andom generator");
+
+240 
+	`gc_ä“
+(&
+gc
+);
+
+241 
+¿nd_š™Ÿli£d
+ = 
+Œue
+;
+
+244  &
+cd_ùx
+;
+
+245 
+	}
+}
+
+247 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+248 
+	$¿nd_ùx_’abË_´ediùiÚ_»si¡ªû
+()
+
+250 
+ùr_drbg_cÚ‹xt
+ *
+cd_ùx
+ = 
+	`¿nd_ùx_g‘
+();
+
+252 
+	`ùr_drbg_£t_´ediùiÚ_»si¡ªû
+(
+cd_ùx
+, 1);
+
+253 
+	}
+}
+
+257 
+	$¿nd_by‹s
+ (
+ušt8_t
+ *
+ou�ut
+, 
+Ën
+)
+
+259 
+ùr_drbg_cÚ‹xt
+ *
+ºg_ùx
+ = 
+	`¿nd_ùx_g‘
+();
+
+261 
+Ën
+ > 0)
+
+263 cÚ¡ 
+size_t
+ 
+bËn
+ = 
+	`mš_št
+ (
+Ën
+, 
+CTR_DRBG_MAX_REQUEST
+);
+
+264 ià(0 !ð
+	`ùr_drbg_¿ndom
+(
+ºg_ùx
+, 
+ou�ut
+, 
+bËn
+))
+
+267 
+ou�ut
+ +ð
+bËn
+;
+
+268 
+Ën
+ -ð
+bËn
+;
+
+272 
+	}
+}
+
+282 
+	$key_des_num_cblocks
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+kt
+)
+
+284 
+»t
+ = 0;
+
+285 ià(
+kt
+->
+ty³
+ =ð
+POLARSSL_CIPHER_DES_CBC
+)
+
+286 
+»t
+ = 1;
+
+287 ià(
+kt
+->
+ty³
+ =ð
+POLARSSL_CIPHER_DES_EDE_CBC
+)
+
+288 
+»t
+ = 2;
+
+289 ià(
+kt
+->
+ty³
+ =ð
+POLARSSL_CIPHER_DES_EDE3_CBC
+)
+
+290 
+»t
+ = 3;
+
+292 
+	`dmsg
+ (
+D_CRYPTO_DEBUG
+, "CRYPTO INFO:‚_DES_cblocks=%d", 
+»t
+);
+
+293  
+»t
+;
+
+294 
+	}
+}
+
+296 
+boÞ
+
+
+297 
+	$key_des_check
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+)
+
+299 
+i
+;
+
+300 
+bufãr
+ 
+b
+;
+
+302 
+	`buf_£t_»ad
+ (&
+b
+, 
+key
+, 
+key_Ën
+);
+
+304 
+i
+ = 0; i < 
+ndc
+; ++i)
+
+306 *
+key
+ = 
+	`buf_»ad_®loc
+(&
+b
+, 
+DES_KEY_SIZE
+);
+
+307 ià(!
+key
+)
+
+309 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: insufficient key material");
+
+310 
+”r
+;
+
+312 ià(0 !ð
+	`des_key_check_w—k
+(
+key
+))
+
+314 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: weak key detected");
+
+315 
+”r
+;
+
+317 ià(0 !ð
+	`des_key_check_key_·r™y
+(
+key
+))
+
+319 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: check_key_DES: bad…arity detected");
+
+320 
+”r
+;
+
+323  
+Œue
+;
+
+325 
+”r
+:
+
+326  
+çl£
+;
+
+327 
+	}
+}
+
+330 
+	$key_des_fixup
+ (
+ušt8_t
+ *
+key
+, 
+key_Ën
+, 
+ndc
+)
+
+332 
+i
+;
+
+333 
+bufãr
+ 
+b
+;
+
+335 
+	`buf_£t_»ad
+ (&
+b
+, 
+key
+, 
+key_Ën
+);
+
+336 
+i
+ = 0; i < 
+ndc
+; ++i)
+
+338 *
+key
+ = 
+	`buf_»ad_®loc
+(&
+b
+, 
+DES_KEY_SIZE
+);
+
+339 ià(!
+key
+)
+
+341 
+	`msg
+ (
+D_CRYPT_ERRORS
+, "CRYPTO INFO: fixup_key_DES: insufficient key material");
+
+344 
+	`des_key_£t_·r™y
+(
+key
+);
+
+346 
+	}
+}
+
+355 cÚ¡ 
+c�h”_šfo_t
+ *
+
+356 
+	$c�h”_kt_g‘
+ (cÚ¡ *
+c�h”Çme
+)
+
+358 cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”
+ = 
+NULL
+;
+
+360 
+	`ASSERT
+ (
+c�h”Çme
+);
+
+362 
+c�h”
+ = 
+	`c�h”_šfo_äom_¡ršg
+(
+c�h”Çme
+);
+
+364 ià(
+NULL
+ =ð
+c�h”
+)
+
+365 
+	`msg
+ (
+M_FATAL
+, "C�h”‡lgÜ™hm '%s'‚Ù found", 
+c�h”Çme
+);
+
+367 ià(
+c�h”
+->
+key_Ëngth
+/8 > 
+MAX_CIPHER_KEY_LENGTH
+)
+
+368 
+	`msg
+ (
+M_FATAL
+, "C�h”‡lgÜ™hm '%s' u£ ¨deçuÉ key siz�(%d by‹sèwhich i Ïrg”�hª " 
+PACKAGE_NAME
+ "'s current maximum key size (%d bytes)",
+
+369 
+c�h”Çme
+,
+
+370 
+c�h”
+->
+key_Ëngth
+/8,
+
+371 
+MAX_CIPHER_KEY_LENGTH
+);
+
+373  
+c�h”
+;
+
+374 
+	}
+}
+
+377 
+	$c�h”_kt_Çme
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”_kt
+)
+
+379 ià(
+NULL
+ =ð
+c�h”_kt
+)
+
+382  
+	`Œª¦©e_c�h”_Çme_to_Ý’v²
+(
+c�h”_kt
+->
+Çme
+);
+
+383 
+	}
+}
+
+386 
+	$c�h”_kt_key_size
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”_kt
+)
+
+388 ià(
+NULL
+ =ð
+c�h”_kt
+)
+
+390 ià(
+POLARSSL_CIPHER_ID_BLOWFISH
+ =ð
+c�h”_kt
+->
+ba£
+->
+c�h”
+)
+
+393  
+c�h”_kt
+->
+key_Ëngth
+/8;
+
+394 
+	}
+}
+
+397 
+	$c�h”_kt_iv_size
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”_kt
+)
+
+399 ià(
+NULL
+ =ð
+c�h”_kt
+)
+
+401  
+c�h”_kt
+->
+iv_size
+;
+
+402 
+	}
+}
+
+405 
+	$c�h”_kt_block_size
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”_kt
+)
+
+407 ià(
+NULL
+ =ð
+c�h”_kt
+)
+
+409  
+c�h”_kt
+->
+block_size
+;
+
+410 
+	}
+}
+
+413 
+	$c�h”_kt_mode
+ (cÚ¡ 
+c�h”_šfo_t
+ *
+c�h”_kt
+)
+
+415 
+	`ASSERT
+(
+NULL
+ !ð
+c�h”_kt
+);
+
+416  
+c�h”_kt
+->
+mode
+;
+
+417 
+	}
+}
+
+419 
+boÞ
+
+
+420 
+	$c�h”_kt_mode_cbc
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+)
+
+422  
+c�h”
+ && 
+	`c�h”_kt_mode
+(c�h”è=ð
+OPENVPN_MODE_CBC
+;
+
+423 
+	}
+}
+
+425 
+boÞ
+
+
+426 
+	$c�h”_kt_mode_ofb_cfb
+(cÚ¡ 
+c�h”_kt_t
+ *
+c�h”
+)
+
+428  
+c�h”
+ && (
+	`c�h”_kt_mode
+(c�h”è=ð
+OPENVPN_MODE_OFB
+ ||
+
+429 
+	`c�h”_kt_mode
+(
+c�h”
+è=ð
+OPENVPN_MODE_CFB
+);
+
+430 
+	}
+}
+
+441 
+	$c�h”_ùx_š™
+ (
+c�h”_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+key
+, 
+key_Ën
+,
+
+442 cÚ¡ 
+c�h”_šfo_t
+ *
+kt
+, 
+’c
+)
+
+444 
+	`ASSERT
+(
+NULL
+ !ð
+kt
+ && NULL !ð
+ùx
+);
+
+446 
+	`CLEAR
+ (*
+ùx
+);
+
+448 ià(0 !ð
+	`c�h”_š™_ùx
+(
+ùx
+, 
+kt
+))
+
+449 
+	`msg
+ (
+M_FATAL
+, "PolarSSL cipher context init #1");
+
+451 ià(0 !ð
+	`c�h”_£tkey
+(
+ùx
+, 
+key
+, 
+key_Ën
+*8, 
+’c
+))
+
+452 
+	`msg
+ (
+M_FATAL
+, "PolarSSL cipher set key");
+
+455 
+	`ASSERT
+ (
+ùx
+->
+key_Ëngth
+ <ð
+key_Ën
+*8);
+
+456 
+	}
+}
+
+458 
+	$c�h”_ùx_þ—nup
+ (
+c�h”_cÚ‹xt_t
+ *
+ùx
+)
+
+460 
+	`c�h”_ä“_ùx
+(
+ùx
+);
+
+461 
+	}
+}
+
+463 
+	$c�h”_ùx_iv_Ëngth
+ (cÚ¡ 
+c�h”_cÚ‹xt_t
+ *
+ùx
+)
+
+465  
+	`c�h”_g‘_iv_size
+(
+ùx
+);
+
+466 
+	}
+}
+
+468 
+	$c�h”_ùx_block_size
+(cÚ¡ 
+c�h”_cÚ‹xt_t
+ *
+ùx
+)
+
+470  
+	`c�h”_g‘_block_size
+(
+ùx
+);
+
+471 
+	}
+}
+
+473 
+	$c�h”_ùx_mode
+ (cÚ¡ 
+c�h”_cÚ‹xt_t
+ *
+ùx
+)
+
+475 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+477  
+	`c�h”_kt_mode
+(
+ùx
+->
+c�h”_šfo
+);
+
+478 
+	}
+}
+
+480 cÚ¡ 
+c�h”_kt_t
+ *
+
+481 
+	$c�h”_ùx_g‘_c�h”_kt
+ (cÚ¡ 
+c�h”_ùx_t
+ *
+ùx
+)
+
+483 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+485  
+ùx
+->
+c�h”_šfo
+;
+
+486 
+	}
+}
+
+488 
+	$c�h”_ùx_»£t
+ (
+c�h”_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+iv_buf
+)
+
+490  0 =ð
+	`c�h”_»£t
+(
+ùx
+, 
+iv_buf
+);
+
+491 
+	}
+}
+
+493 
+	$c�h”_ùx_upd©e
+ (
+c�h”_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+,
+
+494 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+496 
+»tv®
+ = 0;
+
+497 
+size_t
+ 
+s_d¡_Ën
+ = *
+d¡_Ën
+;
+
+499 
+»tv®
+ = 
+	`c�h”_upd©e
+(
+ùx
+, 
+¤c
+, (
+size_t
+)
+¤c_Ën
+, 
+d¡
+, &
+s_d¡_Ën
+);
+
+501 *
+d¡_Ën
+ = 
+s_d¡_Ën
+;
+
+503  0 =ð
+»tv®
+;
+
+504 
+	}
+}
+
+506 
+	$c�h”_ùx_fš®
+ (
+c�h”_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+, *
+d¡_Ën
+)
+
+508 
+»tv®
+ = 0;
+
+509 
+size_t
+ 
+s_d¡_Ën
+ = *
+d¡_Ën
+;
+
+511 
+»tv®
+ = 
+	`c�h”_fšish
+(
+ùx
+, 
+d¡
+, &
+s_d¡_Ën
+);
+
+512 *
+d¡_Ën
+ = 
+s_d¡_Ën
+;
+
+514  0 =ð
+»tv®
+;
+
+515 
+	}
+}
+
+518 
+	$c�h”_des_’üy±_ecb
+ (cÚ¡ 
+key
+[
+DES_KEY_LENGTH
+],
+
+519 *
+¤c
+,
+
+520 *
+d¡
+)
+
+522 
+des_cÚ‹xt
+ 
+ùx
+;
+
+524 
+	`des_£tkey_’c
+(&
+ùx
+, 
+key
+);
+
+525 
+	`des_üy±_ecb
+(&
+ùx
+, 
+¤c
+, 
+d¡
+);
+
+526 
+	}
+}
+
+537 cÚ¡ 
+md_šfo_t
+ *
+
+538 
+	$md_kt_g‘
+ (cÚ¡ *
+dige¡
+)
+
+540 cÚ¡ 
+md_šfo_t
+ *
+md
+ = 
+NULL
+;
+
+541 
+	`ASSERT
+ (
+dige¡
+);
+
+543 
+md
+ = 
+	`md_šfo_äom_¡ršg
+(
+dige¡
+);
+
+544 ià(!
+md
+)
+
+545 
+	`msg
+ (
+M_FATAL
+, "Mes§g�hash‡lgÜ™hm '%s'‚Ù found", 
+dige¡
+);
+
+546 ià(
+md
+->
+size
+ > 
+MAX_HMAC_KEY_LENGTH
+)
+
+547 
+	`msg
+ (
+M_FATAL
+, "Mes§g�hash‡lgÜ™hm '%s' u£ ¨deçuÉ hash siz�(%d by‹sèwhich i Ïrg”�hª " 
+PACKAGE_NAME
+ "'s current maximum hash size (%d bytes)",
+
+548 
+dige¡
+,
+
+549 
+md
+->
+size
+,
+
+550 
+MAX_HMAC_KEY_LENGTH
+);
+
+551  
+md
+;
+
+552 
+	}
+}
+
+555 
+	$md_kt_Çme
+ (cÚ¡ 
+md_šfo_t
+ *
+kt
+)
+
+557 ià(
+NULL
+ =ð
+kt
+)
+
+559  
+	`md_g‘_Çme
+ (
+kt
+);
+
+560 
+	}
+}
+
+563 
+	$md_kt_size
+ (cÚ¡ 
+md_šfo_t
+ *
+kt
+)
+
+565 ià(
+NULL
+ =ð
+kt
+)
+
+567  
+	`md_g‘_size
+(
+kt
+);
+
+568 
+	}
+}
+
+577 
+	$md_fuÎ
+ (cÚ¡ 
+md_kt_t
+ *
+kt
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+, ušt8_ˆ*
+d¡
+)
+
+579  0 =ð
+	`md
+(
+kt
+, 
+¤c
+, 
+¤c_Ën
+, 
+d¡
+);
+
+580 
+	}
+}
+
+584 
+	$md_ùx_š™
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, cÚ¡ 
+md_šfo_t
+ *
+kt
+)
+
+586 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+ && NULL !ð
+kt
+);
+
+588 
+	`CLEAR
+(*
+ùx
+);
+
+590 
+	`ASSERT
+(0 =ð
+	`md_š™_ùx
+(
+ùx
+, 
+kt
+));
+
+591 
+	`ASSERT
+(0 =ð
+	`md_¡¬ts
+(
+ùx
+));
+
+592 
+	}
+}
+
+595 
+	$md_ùx_þ—nup
+(
+md_cÚ‹xt_t
+ *
+ùx
+)
+
+597 
+	}
+}
+
+600 
+	$md_ùx_size
+ (cÚ¡ 
+md_cÚ‹xt_t
+ *
+ùx
+)
+
+602 ià(
+NULL
+ =ð
+ùx
+)
+
+604  
+	`md_g‘_size
+(
+ùx
+->
+md_šfo
+);
+
+605 
+	}
+}
+
+608 
+	$md_ùx_upd©e
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+610 
+	`ASSERT
+(0 =ð
+	`md_upd©e
+(
+ùx
+, 
+¤c
+, 
+¤c_Ën
+));
+
+611 
+	}
+}
+
+614 
+	$md_ùx_fš®
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+)
+
+616 
+	`ASSERT
+(0 =ð
+	`md_fšish
+(
+ùx
+, 
+d¡
+));
+
+617 
+	`ASSERT
+(0 =ð
+	`md_ä“_ùx
+(
+ùx
+));
+
+618 
+	}
+}
+
+632 
+	$hmac_ùx_š™
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+key
+, 
+key_Ën
+, cÚ¡ 
+md_šfo_t
+ *
+kt
+)
+
+634 
+	`ASSERT
+(
+NULL
+ !ð
+kt
+ && NULL !ð
+ùx
+);
+
+636 
+	`CLEAR
+(*
+ùx
+);
+
+638 
+	`ASSERT
+(0 =ð
+	`md_š™_ùx
+(
+ùx
+, 
+kt
+));
+
+639 
+	`ASSERT
+(0 =ð
+	`md_hmac_¡¬ts
+(
+ùx
+, 
+key
+, 
+key_Ën
+));
+
+642 
+	`ASSERT
+ (
+	`md_g‘_size
+(
+kt
+è<ð
+key_Ën
+);
+
+643 
+	}
+}
+
+646 
+	$hmac_ùx_þ—nup
+(
+md_cÚ‹xt_t
+ *
+ùx
+)
+
+648 
+	`ASSERT
+(0 =ð
+	`md_ä“_ùx
+(
+ùx
+));
+
+649 
+	}
+}
+
+652 
+	$hmac_ùx_size
+ (cÚ¡ 
+md_cÚ‹xt_t
+ *
+ùx
+)
+
+654 ià(
+NULL
+ =ð
+ùx
+)
+
+656  
+	`md_g‘_size
+(
+ùx
+->
+md_šfo
+);
+
+657 
+	}
+}
+
+660 
+	$hmac_ùx_»£t
+ (
+md_cÚ‹xt_t
+ *
+ùx
+)
+
+662 
+	`ASSERT
+(0 =ð
+	`md_hmac_»£t
+(
+ùx
+));
+
+663 
+	}
+}
+
+666 
+	$hmac_ùx_upd©e
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, cÚ¡ 
+ušt8_t
+ *
+¤c
+, 
+¤c_Ën
+)
+
+668 
+	`ASSERT
+(0 =ð
+	`md_hmac_upd©e
+(
+ùx
+, 
+¤c
+, 
+¤c_Ën
+));
+
+669 
+	}
+}
+
+672 
+	$hmac_ùx_fš®
+ (
+md_cÚ‹xt_t
+ *
+ùx
+, 
+ušt8_t
+ *
+d¡
+)
+
+674 
+	`ASSERT
+(0 =ð
+	`md_hmac_fšish
+(
+ùx
+, 
+d¡
+));
+
+675 
+	}
+}
+
+	@crypto_polarssl.h
+
+30 #iâdeà
+CRYPTO_POLARSSL_H_
+
+
+31 
+	#CRYPTO_POLARSSL_H_
+
+
+	)
+
+33 
+	~<pÞ¬s¦/c�h”.h
+>
+
+34 
+	~<pÞ¬s¦/md.h
+>
+
+35 
+	~<pÞ¬s¦/ùr_drbg.h
+>
+
+38 
+c�h”_šfo_t
+ 
+	tc�h”_kt_t
+;
+
+41 
+md_šfo_t
+ 
+	tmd_kt_t
+;
+
+44 
+c�h”_cÚ‹xt_t
+ 
+	tc�h”_ùx_t
+;
+
+47 
+md_cÚ‹xt_t
+ 
+	tmd_ùx_t
+;
+
+50 
+md_cÚ‹xt_t
+ 
+	thmac_ùx_t
+;
+
+53 
+	#OPENVPN_MAX_IV_LENGTH
+ 
+POLARSSL_MAX_IV_LENGTH
+
+
+	)
+
+56 
+	#OPENVPN_MODE_CBC
+ 
+POLARSSL_MODE_CBC
+
+
+	)
+
+59 
+	#OPENVPN_MODE_OFB
+ 
+POLARSSL_MODE_OFB
+
+
+	)
+
+62 
+	#OPENVPN_MODE_CFB
+ 
+POLARSSL_MODE_CFB
+
+
+	)
+
+65 
+	#OPENVPN_OP_ENCRYPT
+ 
+POLARSSL_ENCRYPT
+
+
+	)
+
+68 
+	#OPENVPN_OP_DECRYPT
+ 
+POLARSSL_DECRYPT
+
+
+	)
+
+70 
+	#MD4_DIGEST_LENGTH
+ 16
+
+	)
+
+71 
+	#MD5_DIGEST_LENGTH
+ 16
+
+	)
+
+72 
+	#SHA_DIGEST_LENGTH
+ 20
+
+	)
+
+73 
+	#DES_KEY_LENGTH
+ 8
+
+	)
+
+85 
+ùr_drbg_cÚ‹xt
+ * 
+¿nd_ùx_g‘
+();
+
+87 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+91 
+¿nd_ùx_’abË_´ediùiÚ_»si¡ªû
+();
+
+	@cryptoapi.c
+
+31 #ifdeà
+HAVE_CONFIG_H
+
+
+32 
+	~"cÚfig.h
+"
+
+33 #–ià
+defšed
+(
+_MSC_VER
+)
+
+34 
+	~"cÚfig-msvc.h
+"
+
+37 
+	~"sysh—d.h
+"
+
+39 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+41 
+	~<Ý’s¦/s¦.h
+>
+
+42 
+	~<Ý’s¦/”r.h
+>
+
+43 
+	~<wšdows.h
+>
+
+44 
+	~<wšüy±.h
+>
+
+45 
+	~<¡dio.h
+>
+
+46 
+	~<ùy³.h
+>
+
+47 
+	~<as£¹.h
+>
+
+52 #iâdeà
+CERT_SYSTEM_STORE_LOCATION_SHIFT
+
+
+53 
+	#CERT_SYSTEM_STORE_LOCATION_SHIFT
+ 16
+
+	)
+
+55 #iâdeà
+CERT_SYSTEM_STORE_CURRENT_USER_ID
+
+
+56 
+	#CERT_SYSTEM_STORE_CURRENT_USER_ID
+ 1
+
+	)
+
+58 #iâdeà
+CERT_SYSTEM_STORE_CURRENT_USER
+
+
+59 
+	#CERT_SYSTEM_STORE_CURRENT_USER
+ (
+CERT_SYSTEM_STORE_CURRENT_USER_ID
+ << 
+CERT_SYSTEM_STORE_LOCATION_SHIFT
+)
+
+	)
+
+61 #iâdeà
+CERT_STORE_READONLY_FLAG
+
+
+62 
+	#CERT_STORE_READONLY_FLAG
+ 0x00008000
+
+	)
+
+64 #iâdeà
+CERT_STORE_OPEN_EXISTING_FLAG
+
+
+65 
+	#CERT_STORE_OPEN_EXISTING_FLAG
+ 0x00004000
+
+	)
+
+69 
+	#SSL_SIG_LENGTH
+ 36
+
+	)
+
+72 
+	#ERR_LIB_CRYPTOAPI
+ (
+ERR_LIB_USER
+ + 69è
+
+	)
+
+73 
+	#CRYPTOAPI”r
+(
+f
+è
+	`”r_put_ms_”rÜ
+(
+	`G‘La¡E¼Ü
+(), (f), 
+__FILE__
+, 
+__LINE__
+)
+
+	)
+
+74 
+	#CRYPTOAPI_F_CERT_OPEN_SYSTEM_STORE
+ 100
+
+	)
+
+75 
+	#CRYPTOAPI_F_CERT_FIND_CERTIFICATE_IN_STORE
+ 101
+
+	)
+
+76 
+	#CRYPTOAPI_F_CRYPT_ACQUIRE_CERTIFICATE_PRIVATE_KEY
+ 102
+
+	)
+
+77 
+	#CRYPTOAPI_F_CRYPT_CREATE_HASH
+ 103
+
+	)
+
+78 
+	#CRYPTOAPI_F_CRYPT_GET_HASH_PARAM
+ 104
+
+	)
+
+79 
+	#CRYPTOAPI_F_CRYPT_SET_HASH_PARAM
+ 105
+
+	)
+
+80 
+	#CRYPTOAPI_F_CRYPT_SIGN_HASH
+ 106
+
+	)
+
+81 
+	#CRYPTOAPI_F_LOAD_LIBRARY
+ 107
+
+	)
+
+82 
+	#CRYPTOAPI_F_GET_PROC_ADDRESS
+ 108
+
+	)
+
+84 
+ERR_STRING_DATA
+ 
+	gCRYPTOAPI_¡r_funùs
+[] = {
+
+85 { 
+ERR_PACK
+(
+ERR_LIB_CRYPTOAPI
+, 0, 0), "microsoft cryptoapi"},
+
+86 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CERT_OPEN_SYSTEM_STORE
+, 0), "CertOpenSystemStore" },
+
+87 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CERT_FIND_CERTIFICATE_IN_STORE
+, 0), "CertFindCertificateInStore" },
+
+88 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CRYPT_ACQUIRE_CERTIFICATE_PRIVATE_KEY
+, 0), "CryptAcquireCertificatePrivateKey" },
+
+89 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CRYPT_CREATE_HASH
+, 0), "CryptCreateHash" },
+
+90 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CRYPT_GET_HASH_PARAM
+, 0), "CryptGetHashParam" },
+
+91 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CRYPT_SET_HASH_PARAM
+, 0), "CryptSetHashParam" },
+
+92 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_CRYPT_SIGN_HASH
+, 0), "CryptSignHash" },
+
+93 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_LOAD_LIBRARY
+, 0), "LoadLibrary" },
+
+94 { 
+ERR_PACK
+(0, 
+CRYPTOAPI_F_GET_PROC_ADDRESS
+, 0), "GetProcAddress" },
+
+95 { 0, 
+NULL
+ }
+
+98 
+	s_CAPI_DATA
+ {
+
+99 cÚ¡ 
+CERT_CONTEXT
+ *
+	mû¹_cÚ‹xt
+;
+
+100 
+HCRYPTPROV
+ 
+	müy±_´ov
+;
+
+101 
+DWORD
+ 
+	mkey_¥ec
+;
+
+102 
+BOOL
+ 
+	mä“_üy±_´ov
+;
+
+103 } 
+	tCAPI_DATA
+;
+
+105 *
+	$ms_”rÜ_‹xt
+(
+DWORD
+ 
+ms_”r
+)
+
+107 
+LPVOID
+ 
+ÍMsgBuf
+ = 
+NULL
+;
+
+108 *
+rv
+ = 
+NULL
+;
+
+110 
+	`FÜm©Mes§ge
+(
+
+111 
+FORMAT_MESSAGE_ALLOCATE_BUFFER
+ |
+
+112 
+FORMAT_MESSAGE_FROM_SYSTEM
+ |
+
+113 
+FORMAT_MESSAGE_IGNORE_INSERTS
+,
+
+114 
+NULL
+, 
+ms_”r
+,
+
+115 
+	`MAKELANGID
+(
+LANG_NEUTRAL
+, 
+SUBLANG_DEFAULT
+),
+
+116 (
+LPTSTR
+è&
+ÍMsgBuf
+, 0, 
+NULL
+);
+
+117 ià(
+ÍMsgBuf
+) {
+
+118 *
+p
+;
+
+119 
+rv
+ = 
+	`¡rdup
+(
+ÍMsgBuf
+);
+
+120 
+	`LoÿlF»e
+(
+ÍMsgBuf
+);
+
+122 ià(
+rv
+)
+
+123 
+p
+ = 
+rv
+ + 
+	`¡¾’
+(rv) - 1;… >=„v;…--) {
+
+124 ià(
+	`is¥aû
+(*
+p
+))
+
+125 *
+p
+ = '\0';
+
+130  
+rv
+;
+
+131 
+	}
+}
+
+133 
+	$”r_put_ms_”rÜ
+(
+DWORD
+ 
+ms_”r
+, 
+func
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+135 
+š™
+ = 0;
+
+136 
+	#ERR_MAP_SZ
+ 16
+
+	)
+
+138 
+”r
+;
+
+139 
+DWORD
+ 
+ms_”r
+;
+
+140 } 
+”r_m­
+[
+ERR_MAP_SZ
+];
+
+141 
+i
+;
+
+143 ià(
+ms_”r
+ == 0)
+
+146 ià(!
+š™
+) {
+
+147 
+	`ERR_lßd_¡ršgs
+(
+ERR_LIB_CRYPTOAPI
+, 
+CRYPTOAPI_¡r_funùs
+);
+
+148 
+	`mem£t
+(&
+”r_m­
+, 0, (err_map));
+
+149 
+š™
+++;
+
+153 
+i
+ = 0; i < 
+ERR_MAP_SZ
+; i++) {
+
+154 ià(
+”r_m­
+[
+i
+].
+ms_”r
+ == ms_err) {
+
+155 
+	`ERR_PUT_”rÜ
+(
+ERR_LIB_CRYPTOAPI
+, 
+func
+, 
+”r_m­
+[
+i
+].
+”r
+, 
+fže
+, 
+lše
+);
+
+157 } ià(
+”r_m­
+[
+i
+].
+ms_”r
+ == 0 ) {
+
+159 
+ERR_STRING_DATA
+ *
+esd
+ = 
+	`ÿÎoc
+(2, (*esd));
+
+160 ià(
+esd
+ =ð
+NULL
+)
+
+162 
+”r_m­
+[
+i
+].
+ms_”r
+ = ms_err;
+
+163 
+”r_m­
+[
+i
+].
+”r
+ = 
+esd
+->
+”rÜ
+ = i + 100;
+
+164 
+esd
+->
+¡ršg
+ = 
+	`ms_”rÜ_‹xt
+(
+ms_”r
+);
+
+165 
+	`ERR_lßd_¡ršgs
+(
+ERR_LIB_CRYPTOAPI
+, 
+esd
+);
+
+166 
+	`ERR_PUT_”rÜ
+(
+ERR_LIB_CRYPTOAPI
+, 
+func
+, 
+”r_m­
+[
+i
+].
+”r
+, 
+fže
+, 
+lše
+);
+
+170 
+	}
+}
+
+173 
+	$r§_pub_’c
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+176 
+	`as£¹
+(0);
+
+179 
+	}
+}
+
+182 
+	$r§_pub_dec
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+185 
+	`as£¹
+(0);
+
+188 
+	}
+}
+
+191 
+	$r§_´iv_’c
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+193 
+CAPI_DATA
+ *
+cd
+ = (CAPI_DATA *è
+r§
+->
+m‘h
+->
+­p_d©a
+;
+
+194 
+HCRYPTHASH
+ 
+hash
+;
+
+195 
+DWORD
+ 
+hash_size
+, 
+Ën
+, 
+i
+;
+
+196 *
+buf
+;
+
+198 ià(
+cd
+ =ð
+NULL
+) {
+
+199 
+	`RSA”r
+(
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+ERR_R_PASSED_NULL_PARAMETER
+);
+
+202 ià(
+·ddšg
+ !ð
+RSA_PKCS1_PADDING
+) {
+
+204 
+	`RSA”r
+(
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+RSA_R_UNKNOWN_PADDING_TYPE
+);
+
+212 ià(
+æ’
+ !ð
+SSL_SIG_LENGTH
+) {
+
+213 
+	`RSA”r
+(
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+RSA_R_INVALID_MESSAGE_LENGTH
+);
+
+216 ià(!
+	`Cry±C»©eHash
+(
+cd
+->
+üy±_´ov
+, 
+CALG_SSL3_SHAMD5
+, 0, 0, &
+hash
+)) {
+
+217 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CRYPT_CREATE_HASH
+);
+
+220 
+Ën
+ = (
+hash_size
+);
+
+221 ià(!
+	`Cry±G‘HashP¬am
+(
+hash
+, 
+HP_HASHSIZE
+, (
+BYTE
+ *è&
+hash_size
+, &
+Ën
+, 0)) {
+
+222 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CRYPT_GET_HASH_PARAM
+);
+
+223 
+	`Cry±De¡royHash
+(
+hash
+);
+
+226 ià((è
+hash_size
+ !ð
+æ’
+) {
+
+227 
+	`RSA”r
+(
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+RSA_R_INVALID_MESSAGE_LENGTH
+);
+
+228 
+	`Cry±De¡royHash
+(
+hash
+);
+
+231 ià(!
+	`Cry±S‘HashP¬am
+(
+hash
+, 
+HP_HASHVAL
+, (
+BYTE
+ * ) 
+äom
+, 0)) {
+
+232 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CRYPT_SET_HASH_PARAM
+);
+
+233 
+	`Cry±De¡royHash
+(
+hash
+);
+
+237 
+Ën
+ = 
+	`RSA_size
+(
+r§
+);
+
+238 
+buf
+ = 
+	`m®loc
+(
+Ën
+);
+
+239 ià(
+buf
+ =ð
+NULL
+) {
+
+240 
+	`RSA”r
+(
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+ERR_R_MALLOC_FAILURE
+);
+
+241 
+	`Cry±De¡royHash
+(
+hash
+);
+
+244 ià(!
+	`Cry±SignHash
+(
+hash
+, 
+cd
+->
+key_¥ec
+, 
+NULL
+, 0, 
+buf
+, &
+Ën
+)) {
+
+245 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CRYPT_SIGN_HASH
+);
+
+246 
+	`Cry±De¡royHash
+(
+hash
+);
+
+247 
+	`ä“
+(
+buf
+);
+
+251 
+i
+ = 0; i < 
+Ën
+; i++)
+
+252 
+to
+[
+i
+] = 
+buf
+[
+Ën
+ - i - 1];
+
+253 
+	`ä“
+(
+buf
+);
+
+255 
+	`Cry±De¡royHash
+(
+hash
+);
+
+256  
+Ën
+;
+
+257 
+	}
+}
+
+260 
+	$r§_´iv_dec
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+263 
+	`as£¹
+(0);
+
+266 
+	}
+}
+
+269 
+	$š™
+(
+RSA
+ *
+r§
+)
+
+273 
+	}
+}
+
+276 
+	$fšish
+(
+RSA
+ *
+r§
+)
+
+278 
+CAPI_DATA
+ *
+cd
+ = (CAPI_DATA *è
+r§
+->
+m‘h
+->
+­p_d©a
+;
+
+280 ià(
+cd
+ =ð
+NULL
+)
+
+282 ià(
+cd
+->
+üy±_´ov
+ && cd->
+ä“_üy±_´ov
+)
+
+283 
+	`Cry±R–—£CÚ‹xt
+(
+cd
+->
+üy±_´ov
+, 0);
+
+284 ià(
+cd
+->
+û¹_cÚ‹xt
+)
+
+285 
+	`C”tF»eC”tifiÿ‹CÚ‹xt
+(
+cd
+->
+û¹_cÚ‹xt
+);
+
+286 
+	`ä“
+(
+r§
+->
+m‘h
+->
+­p_d©a
+);
+
+287 
+	`ä“
+((*è
+r§
+->
+m‘h
+);
+
+288 
+r§
+->
+m‘h
+ = 
+NULL
+;
+
+290 
+	}
+}
+
+292 cÚ¡ 
+CERT_CONTEXT
+ *
+	$fšd_û¹ifiÿ‹_š_¡Üe
+(cÚ¡ *
+û¹_´Ý
+, 
+HCERTSTORE
+ 
+û¹_¡Üe
+)
+
+300 cÚ¡ 
+CERT_CONTEXT
+ *
+rv
+ = 
+NULL
+;
+
+302 ià(!
+	`¡ºcmp
+(
+û¹_´Ý
+, "SUBJ:", 5)) {
+
+304 
+û¹_´Ý
+ += 5;
+
+305 
+rv
+ = 
+	`C”tFšdC”tifiÿ‹InStÜe
+(
+û¹_¡Üe
+, 
+X509_ASN_ENCODING
+ | 
+PKCS_7_ASN_ENCODING
+,
+
+306 0, 
+CERT_FIND_SUBJECT_STR_A
+, 
+û¹_´Ý
+, 
+NULL
+);
+
+308 } ià(!
+	`¡ºcmp
+(
+û¹_´Ý
+, "THUMB:", 6)) {
+
+309 
+hash
+[255];
+
+310 *
+p
+;
+
+311 
+i
+, 
+x
+ = 0;
+
+312 
+CRYPT_HASH_BLOB
+ 
+blob
+;
+
+315 
+û¹_´Ý
+ += 6;
+
+316 
+p
+ = (*è
+û¹_´Ý
+, 
+i
+ = 0; *°&& i < (
+hash
+); i++) {
+
+317 ià(*
+p
+ >= '0' && *p <= '9')
+
+318 
+x
+ = (*
+p
+ - '0') << 4;
+
+319 ià(*
+p
+ >= 'A' && *p <= 'F')
+
+320 
+x
+ = (*
+p
+ - 'A' + 10) << 4;
+
+321 ià(*
+p
+ >= 'a' && *p <= 'f')
+
+322 
+x
+ = (*
+p
+ - 'a' + 10) << 4;
+
+323 ià(!*++
+p
+)
+
+325 ià(*
+p
+ >= '0' && *p <= '9')
+
+326 
+x
+ +ð*
+p
+ - '0';
+
+327 ià(*
+p
+ >= 'A' && *p <= 'F')
+
+328 
+x
+ +ð*
+p
+ - 'A' + 10;
+
+329 ià(*
+p
+ >= 'a' && *p <= 'f')
+
+330 
+x
+ +ð*
+p
+ - 'a' + 10;
+
+331 
+hash
+[
+i
+] = 
+x
+;
+
+333 
+p
+++; *p && *p == ' ';…++);
+
+335 
+blob
+.
+cbD©a
+ = 
+i
+;
+
+336 
+blob
+.
+pbD©a
+ = (*è&
+hash
+;
+
+337 
+rv
+ = 
+	`C”tFšdC”tifiÿ‹InStÜe
+(
+û¹_¡Üe
+, 
+X509_ASN_ENCODING
+ | 
+PKCS_7_ASN_ENCODING
+,
+
+338 0, 
+CERT_FIND_HASH
+, &
+blob
+, 
+NULL
+);
+
+342  
+rv
+;
+
+343 
+	}
+}
+
+345 
+	$SSL_CTX_u£_Cry±oAPI_û¹ifiÿ‹
+(
+SSL_CTX
+ *
+s¦_ùx
+, cÚ¡ *
+û¹_´Ý
+)
+
+347 
+HCERTSTORE
+ 
+cs
+;
+
+348 
+X509
+ *
+û¹
+ = 
+NULL
+;
+
+349 
+RSA
+ *
+r§
+ = 
+NULL
+, *
+pub_r§
+;
+
+350 
+CAPI_DATA
+ *
+cd
+ = 
+	`ÿÎoc
+(1, (*cd));
+
+351 
+RSA_METHOD
+ *
+my_r§_m‘hod
+ = 
+	`ÿÎoc
+(1, (*my_rsa_method));
+
+353 ià(
+cd
+ =ð
+NULL
+ || 
+my_r§_m‘hod
+ == NULL) {
+
+354 
+	`SSL”r
+(
+SSL_F_SSL_CTX_USE_CERTIFICATE_FILE
+, 
+ERR_R_MALLOC_FAILURE
+);
+
+355 
+”r
+;
+
+358 
+cs
+ = 
+	`C”tO³nStÜe
+((
+LPCSTR
+è
+CERT_STORE_PROV_SYSTEM
+, 0, 0, 
+CERT_SYSTEM_STORE_CURRENT_USER
+ |
+
+359 
+CERT_STORE_OPEN_EXISTING_FLAG
+ | 
+CERT_STORE_READONLY_FLAG
+, 
+L
+"MY");
+
+360 ià(
+cs
+ =ð
+NULL
+) {
+
+361 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CERT_OPEN_SYSTEM_STORE
+);
+
+362 
+”r
+;
+
+364 
+cd
+->
+û¹_cÚ‹xt
+ = 
+	`fšd_û¹ifiÿ‹_š_¡Üe
+(
+û¹_´Ý
+, 
+cs
+);
+
+365 
+	`C”tClo£StÜe
+(
+cs
+, 0);
+
+366 ià(!
+cd
+->
+û¹_cÚ‹xt
+) {
+
+367 
+cs
+ = 
+	`C”tO³nStÜe
+((
+LPCSTR
+è
+CERT_STORE_PROV_SYSTEM
+, 0, 0, 
+CERT_SYSTEM_STORE_LOCAL_MACHINE
+ |
+
+368 
+CERT_STORE_OPEN_EXISTING_FLAG
+ | 
+CERT_STORE_READONLY_FLAG
+, 
+L
+"MY");
+
+369 ià(
+cs
+ =ð
+NULL
+) {
+
+370 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CERT_OPEN_SYSTEM_STORE
+);
+
+371 
+”r
+;
+
+373 
+cd
+->
+û¹_cÚ‹xt
+ = 
+	`fšd_û¹ifiÿ‹_š_¡Üe
+(
+û¹_´Ý
+, 
+cs
+);
+
+374 
+	`C”tClo£StÜe
+(
+cs
+, 0);
+
+375 ià(
+cd
+->
+û¹_cÚ‹xt
+ =ð
+NULL
+) {
+
+376 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CERT_FIND_CERTIFICATE_IN_STORE
+);
+
+377 
+”r
+;
+
+382 
+û¹
+ = 
+	`d2i_X509
+(
+NULL
+, (cÚ¡ **è&
+cd
+->
+û¹_cÚ‹xt
+->
+pbC”tEncoded
+,
+
+383 
+cd
+->
+û¹_cÚ‹xt
+->
+cbC”tEncoded
+);
+
+384 ià(
+û¹
+ =ð
+NULL
+) {
+
+385 
+	`SSL”r
+(
+SSL_F_SSL_CTX_USE_CERTIFICATE_FILE
+, 
+ERR_R_ASN1_LIB
+);
+
+386 
+”r
+;
+
+390 ià(!
+	`Cry±AcquœeC”tifiÿ‹Priv©eKey
+(
+cd
+->
+û¹_cÚ‹xt
+, 
+CRYPT_ACQUIRE_COMPARE_KEY_FLAG
+,
+
+391 
+NULL
+, &
+cd
+->
+üy±_´ov
+, &cd->
+key_¥ec
+, &cd->
+ä“_üy±_´ov
+)) {
+
+395 
+	`CRYPTOAPI”r
+(
+CRYPTOAPI_F_CRYPT_ACQUIRE_CERTIFICATE_PRIVATE_KEY
+);
+
+396 
+”r
+;
+
+401 
+my_r§_m‘hod
+->
+Çme
+ = "Microsoft CryptoAPI RSA Method";
+
+402 
+my_r§_m‘hod
+->
+r§_pub_’c
+ =„sa_pub_enc;
+
+403 
+my_r§_m‘hod
+->
+r§_pub_dec
+ =„sa_pub_dec;
+
+404 
+my_r§_m‘hod
+->
+r§_´iv_’c
+ =„sa_priv_enc;
+
+405 
+my_r§_m‘hod
+->
+r§_´iv_dec
+ =„sa_priv_dec;
+
+407 
+my_r§_m‘hod
+->
+fšish
+ = finish;
+
+408 
+my_r§_m‘hod
+->
+æags
+ = 
+RSA_METHOD_FLAG_NO_CHECK
+;
+
+409 
+my_r§_m‘hod
+->
+­p_d©a
+ = (*è
+cd
+;
+
+411 
+r§
+ = 
+	`RSA_Ãw
+();
+
+412 ià(
+r§
+ =ð
+NULL
+) {
+
+413 
+	`SSL”r
+(
+SSL_F_SSL_CTX_USE_CERTIFICATE_FILE
+, 
+ERR_R_MALLOC_FAILURE
+);
+
+414 
+”r
+;
+
+419 ià(!
+	`SSL_CTX_u£_û¹ifiÿ‹
+(
+s¦_ùx
+, 
+û¹
+))
+
+420 
+”r
+;
+
+422 
+pub_r§
+ = 
+û¹
+->
+û¹_šfo
+->
+key
+->
+pkey
+->pkey.
+r§
+;
+
+425 
+	`X509_ä“
+(
+û¹
+);
+
+426 
+û¹
+ = 
+NULL
+;
+
+430 
+r§
+->
+n
+ = 
+	`BN_dup
+(
+pub_r§
+->n);
+
+431 
+r§
+->
+æags
+ |ð
+RSA_FLAG_EXT_PKEY
+;
+
+432 ià(!
+	`RSA_£t_m‘hod
+(
+r§
+, 
+my_r§_m‘hod
+))
+
+433 
+”r
+;
+
+435 ià(!
+	`SSL_CTX_u£_RSAPriv©eKey
+(
+s¦_ùx
+, 
+r§
+))
+
+436 
+”r
+;
+
+439 
+	`RSA_ä“
+(
+r§
+);
+
+442 
+”r
+:
+
+443 ià(
+û¹
+)
+
+444 
+	`X509_ä“
+(
+û¹
+);
+
+445 ià(
+r§
+)
+
+446 
+	`RSA_ä“
+(
+r§
+);
+
+448 ià(
+my_r§_m‘hod
+)
+
+449 
+	`ä“
+(
+my_r§_m‘hod
+);
+
+450 ià(
+cd
+) {
+
+451 ià(
+cd
+->
+ä“_üy±_´ov
+ && cd->
+üy±_´ov
+)
+
+452 
+	`Cry±R–—£CÚ‹xt
+(
+cd
+->
+üy±_´ov
+, 0);
+
+453 ià(
+cd
+->
+û¹_cÚ‹xt
+)
+
+454 
+	`C”tF»eC”tifiÿ‹CÚ‹xt
+(
+cd
+->
+û¹_cÚ‹xt
+);
+
+455 
+	`ä“
+(
+cd
+);
+
+459 
+	}
+}
+
+462 #ifdeà
+_MSC_VER
+
+
+463 
+	$dummy
+ (è{
+	}
+}
+
+	@cryptoapi.h
+
+1 #iâdeà
+_CRYPTOAPI_H_
+
+
+2 
+	#_CRYPTOAPI_H_
+
+
+	)
+
+4 
+SSL_CTX_u£_Cry±oAPI_û¹ifiÿ‹
+(
+SSL_CTX
+ *
+s¦_ùx
+, cÚ¡ *
+û¹_´Ý
+);
+
+	@dhcp.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"dhý.h
+"
+
+34 
+	~"sock‘.h
+"
+
+35 
+	~"”rÜ.h
+"
+
+37 
+	~"memdbg.h
+"
+
+40 
+	$g‘_dhý_mes§ge_ty³
+ (cÚ¡ 
+dhý
+ *dhý, cÚ¡ 
+ÝŽ’
+)
+
+42 cÚ¡ 
+ušt8_t
+ *
+p
+ = (ušt8_ˆ*è(
+dhý
+ + 1);
+
+43 
+i
+;
+
+45 
+i
+ = 0; i < 
+ÝŽ’
+; ++i)
+
+47 cÚ¡ 
+ušt8_t
+ 
+ty³
+ = 
+p
+[
+i
+];
+
+48 cÚ¡ 
+room
+ = 
+ÝŽ’
+ - 
+i
+;
+
+49 ià(
+ty³
+ =ð
+DHCP_END
+)
+
+51 ià(
+ty³
+ =ð
+DHCP_PAD
+)
+
+53 ià(
+ty³
+ =ð
+DHCP_MSG_TYPE
+)
+
+55 ià(
+room
+ >= 3)
+
+57 ià(
+p
+[
+i
++1] == 1)
+
+58  
+p
+[
+i
++2];
+
+64 ià(
+room
+ >= 2)
+
+66 cÚ¡ 
+Ën
+ = 
+p
+[
+i
++1];
+
+67 
+i
+ +ð(
+Ën
+ + 1);
+
+72 
+	}
+}
+
+74 
+š_addr_t
+
+
+75 
+	$do_exŒaù
+ (
+dhý
+ *dhý, 
+ÝŽ’
+)
+
+77 
+ušt8_t
+ *
+p
+ = (ušt8_ˆ*è(
+dhý
+ + 1);
+
+78 
+i
+;
+
+79 
+š_addr_t
+ 
+»t
+ = 0;
+
+81 
+i
+ = 0; i < 
+ÝŽ’
+; )
+
+83 cÚ¡ 
+ušt8_t
+ 
+ty³
+ = 
+p
+[
+i
+];
+
+84 cÚ¡ 
+room
+ = 
+ÝŽ’
+ - 
+i
+;
+
+85 ià(
+ty³
+ =ð
+DHCP_END
+)
+
+87 ià(
+ty³
+ =ð
+DHCP_PAD
+)
+
+88 ++
+i
+;
+
+89 ià(
+ty³
+ =ð
+DHCP_ROUTER
+)
+
+91 ià(
+room
+ >= 2)
+
+93 cÚ¡ 
+Ën
+ = 
+p
+[
+i
++1];
+
+94 ià(
+Ën
+ <ð(
+room
+-2))
+
+97 ià(!
+»t
+ && 
+Ën
+ >= 4 && (len & 3) == 0)
+
+99 
+	`memýy
+ (&
+»t
+, 
+p
++
+i
++2, 4);
+
+100 
+»t
+ = 
+	`Áohl
+ (ret);
+
+104 
+ušt8_t
+ *
+de¡
+ = 
+p
+ + 
+i
+;
+
+105 cÚ¡ 
+owËn
+ = 
+Ën
+ + 2;
+
+106 
+ušt8_t
+ *
+¤c
+ = 
+de¡
+ + 
+owËn
+;
+
+107 
+ušt8_t
+ *
+’d
+ = 
+p
+ + 
+ÝŽ’
+;
+
+108 cÚ¡ 
+movËn
+ = 
+’d
+ - 
+¤c
+;
+
+109 ià(
+movËn
+ > 0)
+
+110 
+	`memmove
+(
+de¡
+, 
+¤c
+, 
+movËn
+);
+
+111 
+	`mem£t
+(
+’d
+ - 
+owËn
+, 
+DHCP_PAD
+, owlen);
+
+122 ià(
+room
+ >= 2)
+
+124 cÚ¡ 
+Ën
+ = 
+p
+[
+i
++1];
+
+125 
+i
+ +ð(
+Ën
+ + 2);
+
+131  
+»t
+;
+
+132 
+	}
+}
+
+134 
+ušt16_t
+
+
+135 
+	$udp_checksum
+ (cÚ¡ 
+ušt8_t
+ *
+buf
+,
+
+136 cÚ¡ 
+Ën_udp
+,
+
+137 cÚ¡ 
+ušt8_t
+ *
+¤c_addr
+,
+
+138 cÚ¡ 
+ušt8_t
+ *
+de¡_addr
+)
+
+140 
+ušt16_t
+ 
+wÜd16
+;
+
+141 
+ušt32_t
+ 
+sum
+ = 0;
+
+142 
+i
+;
+
+146 
+i
+ = 0; i < 
+Ën_udp
+; i += 2){
+
+147 
+wÜd16
+ = ((
+buf
+[
+i
+] << 8è& 0xFF00è+ ((˜+ 1 < 
+Ën_udp
+) ? (buf[i+1] & 0xFF) : 0);
+
+148 
+sum
+ +ð
+wÜd16
+;
+
+152 
+i
+ = 0; i < 4; i += 2){
+
+153 
+wÜd16
+ =((
+¤c_addr
+[
+i
+] << 8) & 0xFF00) + (src_addr[i+1] & 0xFF);
+
+154 
+sum
+ +ð
+wÜd16
+;
+
+156 
+i
+ = 0; i < 4; i += 2){
+
+157 
+wÜd16
+ =((
+de¡_addr
+[
+i
+] << 8) & 0xFF00) + (dest_addr[i+1] & 0xFF);
+
+158 
+sum
+ +ð
+wÜd16
+;
+
+162 
+sum
+ +ð(
+ušt16_t
+è
+OPENVPN_IPPROTO_UDP
+ + (ušt16_tè
+Ën_udp
+;
+
+165 
+sum
+ >> 16)
+
+166 
+sum
+ = (sum & 0xFFFF) + (sum >> 16);
+
+169  ((
+ušt16_t
+è~
+sum
+);
+
+170 
+	}
+}
+
+172 
+š_addr_t
+
+
+173 
+	$dhý_exŒaù_rou‹r_msg
+ (
+bufãr
+ *
+�buf
+)
+
+175 
+dhý_fuÎ
+ *
+df
+ = (dhý_fuÎ *è
+	`BPTR
+ (
+�buf
+);
+
+176 cÚ¡ 
+ÝŽ’
+ = 
+	`BLEN
+ (
+�buf
+è- ( (
+Ý’v²_�hdr
+è+  (
+Ý’v²_udphdr
+è+  (
+dhý
+));
+
+178 ià(
+ÝŽ’
+ >= 0
+
+179 && 
+df
+->
+�
+.
+´ÙocÞ
+ =ð
+OPENVPN_IPPROTO_UDP
+
+
+180 && 
+df
+->
+udp
+.
+sourû
+ =ð
+	`htÚs
+ (
+BOOTPS_PORT
+)
+
+181 && 
+df
+->
+udp
+.
+de¡
+ =ð
+	`htÚs
+ (
+BOOTPC_PORT
+)
+
+182 && 
+df
+->
+dhý
+.
+Ý
+ =ð
+BOOTREPLY
+)
+
+184 cÚ¡ 
+mes§ge_ty³
+ = 
+	`g‘_dhý_mes§ge_ty³
+ (&
+df
+->
+dhý
+, 
+ÝŽ’
+);
+
+185 ià(
+mes§ge_ty³
+ =ð
+DHCPACK
+ || mes§ge_ty³ =ð
+DHCPOFFER
+)
+
+188 cÚ¡ 
+š_addr_t
+ 
+»t
+ = 
+	`do_exŒaù
+ (&
+df
+->
+dhý
+, 
+ÝŽ’
+);
+
+191 
+df
+->
+udp
+.
+check
+ = 0;
+
+192 
+df
+->
+udp
+.
+check
+ = 
+	`htÚs
+ (
+	`udp_checksum
+ ((
+ušt8_t
+ *) &df->udp,
+
+193  (
+Ý’v²_udphdr
+è+  (
+dhý
+è+ 
+ÝŽ’
+,
+
+194 (
+ušt8_t
+ *)&
+df
+->
+�
+.
+§ddr
+,
+
+195 (
+ušt8_t
+ *)&
+df
+->
+�
+.
+daddr
+));
+
+198 ià(
+mes§ge_ty³
+ =ð
+DHCPACK
+)
+
+200 ià(
+»t
+)
+
+202 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+203 
+	`msg
+ (
+D_ROUTE
+, "ExŒaùed DHCP„ou‹¸add»ss: %s", 
+	`´št_š_addr_t
+ (
+»t
+, 0, &
+gc
+));
+
+204 
+	`gc_ä“
+ (&
+gc
+);
+
+207  
+»t
+;
+
+212 
+	}
+}
+
+	@dhcp.h
+
+25 #iâdeà
+DHCP_H
+
+
+26 
+	#DHCP_H
+
+
+	)
+
+28 
+	~"commÚ.h
+"
+
+29 
+	~"bufãr.h
+"
+
+30 
+	~"´Ùo.h
+"
+
+32 #´agm¨
+·ck
+(1)
+
+35 
+	#DHCP_PAD
+ 0
+
+	)
+
+36 
+	#DHCP_ROUTER
+ 3
+
+	)
+
+37 
+	#DHCP_MSG_TYPE
+ 53
+
+	)
+
+38 
+	#DHCP_END
+ 255
+
+	)
+
+41 
+	#DHCPDISCOVER
+ 1
+
+	)
+
+42 
+	#DHCPOFFER
+ 2
+
+	)
+
+43 
+	#DHCPREQUEST
+ 3
+
+	)
+
+44 
+	#DHCPDECLINE
+ 4
+
+	)
+
+45 
+	#DHCPACK
+ 5
+
+	)
+
+46 
+	#DHCPNAK
+ 6
+
+	)
+
+47 
+	#DHCPRELEASE
+ 7
+
+	)
+
+48 
+	#DHCPINFORM
+ 8
+
+	)
+
+51 
+	#BOOTPS_PORT
+ 67
+
+	)
+
+52 
+	#BOOTPC_PORT
+ 68
+
+	)
+
+54 
+	sdhý
+ {
+
+55 
+	#BOOTREQUEST
+ 1
+
+	)
+
+56 
+	#BOOTREPLY
+ 2
+
+	)
+
+57 
+ušt8_t
+ 
+	mÝ
+;
+
+59 
+ušt8_t
+ 
+	mhty³
+;
+
+60 
+ušt8_t
+ 
+	mhËn
+;
+
+61 
+ušt8_t
+ 
+	mhÝs
+;
+
+62 
+ušt32_t
+ 
+	mxid
+;
+
+63 
+ušt16_t
+ 
+	m£cs
+;
+
+64 
+ušt16_t
+ 
+	mæags
+;
+
+65 
+ušt32_t
+ 
+	mcŸddr
+;
+
+66 
+ušt32_t
+ 
+	myŸddr
+;
+
+67 
+ušt32_t
+ 
+	msŸddr
+;
+
+68 
+ušt32_t
+ 
+	mgŸddr
+;
+
+69 
+ušt8_t
+ 
+	mchaddr
+[16];
+
+70 
+ušt8_t
+ 
+	m¢ame
+[64];
+
+71 
+ušt8_t
+ 
+	mfže
+[128];
+
+72 
+ušt32_t
+ 
+	mmagic
+;
+
+75 
+	sdhý_fuÎ
+ {
+
+76 
+Ý’v²_�hdr
+ 
+	m�
+;
+
+77 
+Ý’v²_udphdr
+ 
+	mudp
+;
+
+78 
+dhý
+ 
+	mdhý
+;
+
+79 
+	#DHCP_OPTIONS_BUFFER_SIZE
+ 256
+
+	)
+
+80 
+ušt8_t
+ 
+	mÝtiÚs
+[
+DHCP_OPTIONS_BUFFER_SIZE
+];
+
+83 #´agm¨
+·ck
+()
+
+85 
+š_addr_t
+ 
+dhý_exŒaù_rou‹r_msg
+ (
+bufãr
+ *
+�buf
+);
+
+	@errlevel.h
+
+25 #iâdeà
+ERRLEVEL_H
+
+
+26 
+	#ERRLEVEL_H
+
+
+	)
+
+28 
+	~"”rÜ.h
+"
+
+34 
+	#DEBUG_LEVEL_USEC_TIME
+ 4
+
+	)
+
+42 
+	#P2P_ERROR_DELAY_MS
+ 0
+
+	)
+
+47 
+	#LOG_RW
+
+
+	)
+
+54 
+	#M_VERB0
+ 
+	`LOGLEV
+(0, 0, 0è
+
+	)
+
+56 
+	#M_INFO
+ 
+	`LOGLEV
+(1, 0, 0è
+
+	)
+
+58 
+	#D_LINK_ERRORS
+ 
+	`LOGLEV
+(1, 1, 
+M_NONFATAL
+è
+
+	)
+
+59 
+	#D_CRYPT_ERRORS
+ 
+	`LOGLEV
+(1, 2, 
+M_NONFATAL
+è
+
+	)
+
+60 
+	#D_TLS_ERRORS
+ 
+	`LOGLEV
+(1, 3, 
+M_NONFATAL
+è
+
+	)
+
+61 
+	#D_RESOLVE_ERRORS
+ 
+	`LOGLEV
+(1, 4, 
+M_NONFATAL
+è
+
+	)
+
+62 
+	#D_COMP_ERRORS
+ 
+	`LOGLEV
+(1, 5, 
+M_NONFATAL
+è
+
+	)
+
+63 
+	#D_REPLAY_ERRORS
+ 
+	`LOGLEV
+(1, 6, 
+M_NONFATAL
+è
+
+	)
+
+64 
+	#D_STREAM_ERRORS
+ 
+	`LOGLEV
+(1, 7, 
+M_NONFATAL
+è
+
+	)
+
+65 
+	#D_IMPORT_ERRORS
+ 
+	`LOGLEV
+(1, 8, 
+M_NONFATAL
+è
+
+	)
+
+66 
+	#D_MULTI_ERRORS
+ 
+	`LOGLEV
+(1, 9, 
+M_NONFATAL
+è
+
+	)
+
+67 
+	#D_EVENT_ERRORS
+ 
+	`LOGLEV
+(1, 10, 
+M_NONFATAL
+è
+
+	)
+
+68 
+	#D_PUSH_ERRORS
+ 
+	`LOGLEV
+(1, 11, 
+M_NONFATAL
+è
+
+	)
+
+69 
+	#D_PID_PERSIST
+ 
+	`LOGLEV
+(1, 12, 
+M_NONFATAL
+è
+
+	)
+
+70 
+	#D_FRAG_ERRORS
+ 
+	`LOGLEV
+(1, 13, 
+M_NONFATAL
+è
+
+	)
+
+71 
+	#D_ALIGN_ERRORS
+ 
+	`LOGLEV
+(1, 14, 
+M_NONFATAL
+è
+
+	)
+
+73 
+	#D_HANDSHAKE
+ 
+	`LOGLEV
+(2, 20, 0è
+
+	)
+
+74 
+	#D_CLOSE
+ 
+	`LOGLEV
+(2, 22, 0è
+
+	)
+
+75 
+	#D_PROXY
+ 
+	`LOGLEV
+(2, 24, 0è
+
+	)
+
+76 
+	#D_ARGV
+ 
+	`LOGLEV
+(2, 25, 0è
+
+	)
+
+78 
+	#D_TLS_DEBUG_LOW
+ 
+	`LOGLEV
+(3, 20, 0è
+
+	)
+
+79 
+	#D_GREMLIN
+ 
+	`LOGLEV
+(3, 30, 0è
+
+	)
+
+80 
+	#D_GENKEY
+ 
+	`LOGLEV
+(3, 31, 0è
+
+	)
+
+81 
+	#D_ROUTE
+ 
+	`LOGLEV
+(3, 0, 0è
+
+	)
+
+82 
+	#D_TUNTAP_INFO
+ 
+	`LOGLEV
+(3, 32, 0è
+
+	)
+
+83 
+	#D_RESTART
+ 
+	`LOGLEV
+(3, 33, 0è
+
+	)
+
+84 
+	#D_PUSH
+ 
+	`LOGLEV
+(3, 34, 0è
+
+	)
+
+85 
+	#D_IFCONFIG_POOL
+ 
+	`LOGLEV
+(3, 35, 0è
+
+	)
+
+86 
+	#D_AUTH
+ 
+	`LOGLEV
+(3, 37, 0è
+
+	)
+
+87 
+	#D_MULTI_LOW
+ 
+	`LOGLEV
+(3, 38, 0è
+
+	)
+
+88 
+	#D_PLUGIN
+ 
+	`LOGLEV
+(3, 39, 0è
+
+	)
+
+89 
+	#D_MANAGEMENT
+ 
+	`LOGLEV
+(3, 40, 0è
+
+	)
+
+90 
+	#D_SCHED_EXIT
+ 
+	`LOGLEV
+(3, 41, 0è
+
+	)
+
+91 
+	#D_ROUTE_QUOTA
+ 
+	`LOGLEV
+(3, 42, 0è
+
+	)
+
+92 
+	#D_OSBUF
+ 
+	`LOGLEV
+(3, 43, 0è
+
+	)
+
+93 
+	#D_PS_PROXY
+ 
+	`LOGLEV
+(3, 44, 0è
+
+	)
+
+94 
+	#D_PF_INFO
+ 
+	`LOGLEV
+(3, 45, 0è
+
+	)
+
+96 
+	#D_SHOW_PARMS
+ 
+	`LOGLEV
+(4, 50, 0è
+
+	)
+
+97 
+	#D_SHOW_OCC
+ 
+	`LOGLEV
+(4, 51, 0è
+
+	)
+
+98 
+	#D_LOW
+ 
+	`LOGLEV
+(4, 52, 0è
+
+	)
+
+99 
+	#D_DHCP_OPT
+ 
+	`LOGLEV
+(4, 53, 0è
+
+	)
+
+100 
+	#D_MBUF
+ 
+	`LOGLEV
+(4, 54, 0è
+
+	)
+
+101 
+	#D_PACKET_TRUNC_ERR
+ 
+	`LOGLEV
+(4, 55, 0è
+
+	)
+
+102 
+	#D_PF_DROPPED
+ 
+	`LOGLEV
+(4, 56, 0è
+
+	)
+
+103 
+	#D_MULTI_DROPPED
+ 
+	`LOGLEV
+(4, 57, 0è
+
+	)
+
+104 
+	#D_MULTI_MEDIUM
+ 
+	`LOGLEV
+(4, 58, 0è
+
+	)
+
+105 
+	#D_X509_ATTR
+ 
+	`LOGLEV
+(4, 59, 0è
+
+	)
+
+106 
+	#D_INIT_MEDIUM
+ 
+	`LOGLEV
+(4, 60, 0è
+
+	)
+
+107 
+	#D_MTU_INFO
+ 
+	`LOGLEV
+(4, 61, 0è
+
+	)
+
+108 
+	#D_SHOW_OCC_HASH
+ 
+	`LOGLEV
+(4, 62, 0è
+
+	)
+
+109 
+	#D_PID_DEBUG_LOW
+ 
+	`LOGLEV
+(4, 63, 0è
+
+	)
+
+110 
+	#D_PID_DEBUG_MEDIUM
+ 
+	`LOGLEV
+(4, 64, 0è
+
+	)
+
+112 
+	#D_LOG_RW
+ 
+	`LOGLEV
+(5, 0, 0è
+
+	)
+
+114 
+	#D_LINK_RW
+ 
+	`LOGLEV
+(6, 69, 
+M_DEBUG
+è
+
+	)
+
+115 
+	#D_TUN_RW
+ 
+	`LOGLEV
+(6, 69, 
+M_DEBUG
+è
+
+	)
+
+116 
+	#D_TAP_WIN_DEBUG
+ 
+	`LOGLEV
+(6, 69, 
+M_DEBUG
+è
+
+	)
+
+117 
+	#D_CLIENT_NAT
+ 
+	`LOGLEV
+(6, 69, 
+M_DEBUG
+è
+
+	)
+
+119 
+	#D_SHOW_KEYS
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+120 
+	#D_SHOW_KEY_SOURCE
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+121 
+	#D_REL_LOW
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+122 
+	#D_FRAG_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+123 
+	#D_WIN32_IO_LOW
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+124 
+	#D_MTU_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+125 
+	#D_MULTI_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+126 
+	#D_MSS
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+127 
+	#D_COMP_LOW
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+128 
+	#D_CONNECTION_LIST
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+129 
+	#D_SCRIPT
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+130 
+	#D_SHOW_NET
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+131 
+	#D_ROUTE_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+132 
+	#D_TLS_STATE_ERRORS
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+133 
+	#D_SEMAPHORE_LOW
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+134 
+	#D_SEMAPHORE
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+135 
+	#D_TEST_FILE
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+136 
+	#D_MANAGEMENT_DEBUG
+ 
+	`LOGLEV
+(3, 70, 
+M_DEBUG
+è
+
+	)
+
+137 
+	#D_PLUGIN_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+138 
+	#D_SOCKET_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+139 
+	#D_SHOW_PKCS11
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+140 
+	#D_ALIGN_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+141 
+	#D_PACKET_TRUNC_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+142 
+	#D_PING
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+143 
+	#D_PS_PROXY_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+144 
+	#D_AUTO_USERID
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+145 
+	#D_TLS_KEYSELECT
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+146 
+	#D_ARGV_PARSE_CMD
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+147 
+	#D_CRYPTO_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+148 
+	#D_PID_DEBUG
+ 
+	`LOGLEV
+(7, 70, 
+M_DEBUG
+è
+
+	)
+
+149 
+	#D_PF_DROPPED_BCAST
+ 
+	`LOGLEV
+(7, 71, 
+M_DEBUG
+è
+
+	)
+
+150 
+	#D_PF_DEBUG
+ 
+	`LOGLEV
+(7, 72, 
+M_DEBUG
+è
+
+	)
+
+152 
+	#D_HANDSHAKE_VERBOSE
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+153 
+	#D_TLS_DEBUG_MED
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+154 
+	#D_INTERVAL
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+155 
+	#D_SCHEDULER
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+156 
+	#D_GREMLIN_VERBOSE
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+157 
+	#D_REL_DEBUG
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+158 
+	#D_EVENT_WAIT
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+159 
+	#D_MULTI_TCP
+ 
+	`LOGLEV
+(8, 70, 
+M_DEBUG
+è
+
+	)
+
+161 
+	#D_TLS_DEBUG
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+162 
+	#D_COMP
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+163 
+	#D_READ_WRITE
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+164 
+	#D_PACKET_CONTENT
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+165 
+	#D_TLS_NO_SEND_KEY
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+166 
+	#D_PID_PERSIST_DEBUG
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+167 
+	#D_LINK_RW_VERBOSE
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+168 
+	#D_STREAM_DEBUG
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+169 
+	#D_WIN32_IO
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+170 
+	#D_PKCS11_DEBUG
+ 
+	`LOGLEV
+(9, 70, 
+M_DEBUG
+è
+
+	)
+
+172 
+	#D_SHAPER_DEBUG
+ 
+	`LOGLEV
+(10, 70, 
+M_DEBUG
+è
+
+	)
+
+174 
+	#D_REGISTRY
+ 
+	`LOGLEV
+(11, 70, 
+M_DEBUG
+è
+
+	)
+
+175 
+	#D_OPENSSL_LOCK
+ 
+	`LOGLEV
+(11, 70, 
+M_DEBUG
+è
+
+	)
+
+	@error.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"”rÜ.h
+"
+
+34 
+	~"bufãr.h
+"
+
+35 
+	~"misc.h
+"
+
+36 
+	~"wš32.h
+"
+
+37 
+	~"sock‘.h
+"
+
+38 
+	~"tun.h
+"
+
+39 
+	~"Ùime.h
+"
+
+40 
+	~"³rf.h
+"
+
+41 
+	~"¡©us.h
+"
+
+42 
+	~"š‹g”.h
+"
+
+43 
+	~"ps.h
+"
+
+44 
+	~"m¡©s.h
+"
+
+46 #ifdeà
+ENABLE_CRYPTO
+
+
+47 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+48 
+	~<Ý’s¦/”r.h
+>
+
+52 
+	~"memdbg.h
+"
+
+54 #ià
+SYSLOG_CAPABILITY
+
+
+55 #iâdeà
+LOG_OPENVPN
+
+
+56 
+	#LOG_OPENVPN
+ 
+LOG_DAEMON
+
+
+	)
+
+61 
+	gx_debug_Ëv–
+;
+
+64 
+	gmu‹_cutoff
+;
+
+65 
+	gmu‹_couÁ
+;
+
+66 
+	gmu‹_ÿ‹gÜy
+;
+
+80 
+boÞ
+ 
+	g¡d_»dœ
+;
+
+83 
+boÞ
+ 
+	gu£_sy¦og
+;
+
+86 
+boÞ
+ 
+	gsuµ»ss_time¡amps
+;
+
+89 #ià
+SYSLOG_CAPABILITY
+
+
+90 *
+	gpgmÇme_sy¦og
+;
+
+94 
+FILE
+ *
+	gmsgå
+;
+
+97 
+boÞ
+ 
+	gfÜked
+;
+
+100 
+FILE
+ *
+	gdeçuÉ_out
+;
+
+101 
+FILE
+ *
+	gdeçuÉ_”r
+;
+
+104 
+	$msg_fÜked
+ ()
+
+106 
+fÜked
+ = 
+Œue
+;
+
+107 
+	}
+}
+
+109 
+boÞ
+
+
+110 
+	$£t_debug_Ëv–
+ (cÚ¡ 
+Ëv–
+, cÚ¡ 
+æags
+)
+
+112 cÚ¡ 
+ûžšg
+ = 15;
+
+114 ià(
+Ëv–
+ >ð0 &&†ev– <ð
+ûžšg
+)
+
+116 
+x_debug_Ëv–
+ = 
+Ëv–
+;
+
+117  
+Œue
+;
+
+119 ià(
+æags
+ & 
+SDL_CONSTRAIN
+)
+
+121 
+x_debug_Ëv–
+ = 
+	`cÚ¡¿š_št
+ (
+Ëv–
+, 0, 
+ûžšg
+);
+
+122  
+Œue
+;
+
+124  
+çl£
+;
+
+125 
+	}
+}
+
+127 
+boÞ
+
+
+128 
+	$£t_mu‹_cutoff
+ (cÚ¡ 
+cutoff
+)
+
+130 ià(
+cutoff
+ >= 0)
+
+132 
+mu‹_cutoff
+ = 
+cutoff
+;
+
+133  
+Œue
+;
+
+136  
+çl£
+;
+
+137 
+	}
+}
+
+140 
+	$g‘_debug_Ëv–
+ ()
+
+142  
+x_debug_Ëv–
+;
+
+143 
+	}
+}
+
+146 
+	$g‘_mu‹_cutoff
+ ()
+
+148  
+mu‹_cutoff
+;
+
+149 
+	}
+}
+
+152 
+	$£t_suµ»ss_time¡amps
+ (
+boÞ
+ 
+suµ»s£d
+)
+
+154 
+suµ»ss_time¡amps
+ = 
+suµ»s£d
+;
+
+155 
+	}
+}
+
+158 
+	$”rÜ_»£t
+ ()
+
+160 
+u£_sy¦og
+ = 
+¡d_»dœ
+ = 
+çl£
+;
+
+161 
+suµ»ss_time¡amps
+ = 
+çl£
+;
+
+162 
+x_debug_Ëv–
+ = 1;
+
+163 
+mu‹_cutoff
+ = 0;
+
+164 
+mu‹_couÁ
+ = 0;
+
+165 
+mu‹_ÿ‹gÜy
+ = 0;
+
+166 
+deçuÉ_out
+ = 
+OPENVPN_MSG_FP
+;
+
+167 
+deçuÉ_”r
+ = 
+OPENVPN_MSG_FP
+;
+
+169 #ifdeà
+OPENVPN_DEBUG_COMMAND_LINE
+
+
+170 
+msgå
+ = 
+	`fÝ’
+ (
+OPENVPN_DEBUG_FILE
+, "w");
+
+171 ià(!
+msgå
+)
+
+172 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_CANNOT_OPEN_DEBUG_FILE
+);
+
+174 
+msgå
+ = 
+NULL
+;
+
+176 
+	}
+}
+
+179 
+	$”rÜs_to_¡d”r
+ ()
+
+181 
+deçuÉ_”r
+ = 
+OPENVPN_ERROR_FP
+;
+
+182 
+	}
+}
+
+187 
+FILE
+ *
+
+188 
+	$msg_å
+(cÚ¡ 
+æags
+)
+
+190 
+FILE
+ *
+å
+ = 
+msgå
+;
+
+191 ià(!
+å
+)
+
+192 
+å
+ = (
+æags
+ & (
+M_FATAL
+|
+M_USAGE_SMALL
+)è? 
+deçuÉ_”r
+ : 
+deçuÉ_out
+;
+
+193 ià(!
+å
+)
+
+194 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_CANNOT_OPEN_DEBUG_FILE
+);
+
+195  
+å
+;
+
+196 
+	}
+}
+
+198 
+	#SWAP
+ { 
+tmp
+ = 
+m1
+; m1 = 
+m2
+; m2 =�mp; }
+
+	)
+
+200 
+	gx_msg_lše_num
+;
+
+202 
+	$x_msg
+ (cÚ¡ 
+æags
+, cÚ¡ *
+fÜm©
+, ...)
+
+204 
+va_li¡
+ 
+¬gli¡
+;
+
+205 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+206 
+	`x_msg_va
+ (
+æags
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+207 
+	`va_’d
+ (
+¬gli¡
+);
+
+208 
+	}
+}
+
+210 
+	$x_msg_va
+ (cÚ¡ 
+æags
+, cÚ¡ *
+fÜm©
+, 
+va_li¡
+ 
+¬gli¡
+)
+
+212 
+gc_¬’a
+ 
+gc
+;
+
+213 #ià
+SYSLOG_CAPABILITY
+
+
+214 
+Ëv–
+;
+
+216 *
+m1
+;
+
+217 *
+m2
+;
+
+218 *
+tmp
+;
+
+219 
+e
+;
+
+220 cÚ¡ *
+´efix
+;
+
+221 cÚ¡ *
+´efix_£p
+;
+
+223 
+	`u§ge_sm®l
+ ();
+
+225 #iâdeà
+HAVE_VARARG_MACROS
+
+
+227 ià(!
+	`MSG_TEST
+ (
+æags
+))
+
+231 
+e
+ = 
+	`Ý’v²_”ºo
+ ();
+
+236 #iâdeà
+HAVE_VARARG_MACROS
+
+
+238 ià(!
+	`dÚt_mu‹
+ (
+æags
+))
+
+242 
+	`gc_š™
+ (&
+gc
+);
+
+244 
+m1
+ = (*è
+	`gc_m®loc
+ (
+ERR_BUF_SIZE
+, 
+çl£
+, &
+gc
+);
+
+245 
+m2
+ = (*è
+	`gc_m®loc
+ (
+ERR_BUF_SIZE
+, 
+çl£
+, &
+gc
+);
+
+247 
+	`v¢´štf
+ (
+m1
+, 
+ERR_BUF_SIZE
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+248 
+m1
+[
+ERR_BUF_SIZE
+ - 1] = 0;
+
+250 ià((
+æags
+ & 
+M_ERRNO
+è&& 
+e
+)
+
+252 
+	`Ý’v²_¢´štf
+ (
+m2
+, 
+ERR_BUF_SIZE
+, "%s: %s (errno=%d)",
+
+253 
+m1
+, 
+	`¡»¼Ü_ts
+ (
+e
+, &
+gc
+),ƒ);
+
+254 
+SWAP
+;
+
+257 #ifdeà
+ENABLE_CRYPTO
+
+
+258 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+259 ià(
+æags
+ & 
+M_SSL
+)
+
+261 
+Ã¼s
+ = 0;
+
+262 
+”r
+;
+
+263 (
+”r
+ = 
+	`ERR_g‘_”rÜ
+ ()))
+
+265 
+	`Ý’v²_¢´štf
+ (
+m2
+, 
+ERR_BUF_SIZE
+, "%s: %s",
+
+266 
+m1
+, 
+	`ERR_”rÜ_¡ršg
+ (
+”r
+, 
+NULL
+));
+
+267 
+SWAP
+;
+
+268 ++
+Ã¼s
+;
+
+270 ià(!
+Ã¼s
+)
+
+272 
+	`Ý’v²_¢´štf
+ (
+m2
+, 
+ERR_BUF_SIZE
+, "% (O³nSSL)", 
+m1
+);
+
+273 
+SWAP
+;
+
+279 ià(
+æags
+ & 
+M_OPTERR
+)
+
+281 
+	`Ý’v²_¢´štf
+ (
+m2
+, 
+ERR_BUF_SIZE
+, "O±iÚ ”rÜ: %s", 
+m1
+);
+
+282 
+SWAP
+;
+
+285 #ià
+SYSLOG_CAPABILITY
+
+
+286 ià(
+æags
+ & (
+M_FATAL
+|
+M_NONFATAL
+|
+M_USAGE_SMALL
+))
+
+287 
+Ëv–
+ = 
+LOG_ERR
+;
+
+288 ià(
+æags
+ & 
+M_WARN
+)
+
+289 
+Ëv–
+ = 
+LOG_WARNING
+;
+
+291 
+Ëv–
+ = 
+LOG_NOTICE
+;
+
+295 ià(
+æags
+ & 
+M_NOIPREFIX
+)
+
+296 
+´efix
+ = 
+NULL
+;
+
+298 
+´efix
+ = 
+	`msg_g‘_´efix
+ ();
+
+299 
+´efix_£p
+ = " ";
+
+300 ià(!
+´efix
+)
+
+301 
+´efix_£p
+ = 
+´efix
+ = "";
+
+304 ià(!
+fÜked
+)
+
+306 cÚ¡ 
+vœtu®_ou�ut
+ *
+vo
+ = 
+	`msg_g‘_vœtu®_ou�ut
+ ();
+
+307 ià(
+vo
+)
+
+309 
+	`Ý’v²_¢´štf
+ (
+m2
+, 
+ERR_BUF_SIZE
+, "%s%s%s",
+
+310 
+´efix
+,
+
+311 
+´efix_£p
+,
+
+312 
+m1
+);
+
+313 
+	`vœtu®_ou�ut_´št
+ (
+vo
+, 
+æags
+, 
+m2
+);
+
+317 ià(!(
+æags
+ & 
+M_MSG_VIRT_OUT
+))
+
+319 ià(
+u£_sy¦og
+ && !
+¡d_»dœ
+ && !
+fÜked
+)
+
+321 #ià
+SYSLOG_CAPABILITY
+
+
+322 
+	`sy¦og
+ (
+Ëv–
+, "%s%s%s",
+
+323 
+´efix
+,
+
+324 
+´efix_£p
+,
+
+325 
+m1
+);
+
+330 
+FILE
+ *
+å
+ = 
+	`msg_å
+(
+æags
+);
+
+331 cÚ¡ 
+boÞ
+ 
+show_u£c
+ = 
+	`check_debug_Ëv–
+ (
+DEBUG_LEVEL_USEC_TIME
+);
+
+333 ià((
+æags
+ & 
+M_NOPREFIX
+è|| 
+suµ»ss_time¡amps
+)
+
+335 
+	`årštf
+ (
+å
+, "%s%s%s%s",
+
+336 
+´efix
+,
+
+337 
+´efix_£p
+,
+
+338 
+m1
+,
+
+339 (
+æags
+&
+M_NOLF
+) ? "" : "\n");
+
+343 
+	`årštf
+ (
+å
+, "%s %s%s%s%s",
+
+344 
+	`time_¡ršg
+ (0, 0, 
+show_u£c
+, &
+gc
+),
+
+345 
+´efix
+,
+
+346 
+´efix_£p
+,
+
+347 
+m1
+,
+
+348 (
+æags
+&
+M_NOLF
+) ? "" : "\n");
+
+350 
+	`fæush
+(
+å
+);
+
+351 ++
+x_msg_lše_num
+;
+
+355 ià(
+æags
+ & 
+M_FATAL
+)
+
+356 
+	`msg
+ (
+M_INFO
+, "Exiting due�o fatalƒrror");
+
+358 ià(
+æags
+ & 
+M_FATAL
+)
+
+359 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_ERROR
+);
+
+361 ià(
+æags
+ & 
+M_USAGE_SMALL
+)
+
+362 
+	`u§ge_sm®l
+ ();
+
+364 
+	`gc_ä“
+ (&
+gc
+);
+
+365 
+	}
+}
+
+370 
+boÞ
+
+
+371 
+	$dÚt_mu‹
+ (
+æags
+)
+
+373 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+374 ià(
+mu‹_cutoff
+ > 0 && !(
+æags
+ & 
+M_NOMUTE
+))
+
+376 cÚ¡ 
+mu‹_Ëv–
+ = 
+	`DECODE_MUTE_LEVEL
+ (
+æags
+);
+
+377 ià(
+mu‹_Ëv–
+ > 0 && mu‹_Ëv– =ð
+mu‹_ÿ‹gÜy
+)
+
+379 ià(
+mu‹_couÁ
+ =ð
+mu‹_cutoff
+)
+
+380 
+	`msg
+ (
+M_INFO
+ | 
+M_NOMUTE
+, "NOTE: --mute�riggered...");
+
+381 ià(++
+mu‹_couÁ
+ > 
+mu‹_cutoff
+)
+
+382 
+»t
+ = 
+çl£
+;
+
+386 cÚ¡ 
+suµ»s£d
+ = 
+mu‹_couÁ
+ - 
+mu‹_cutoff
+;
+
+387 ià(
+suµ»s£d
+ > 0)
+
+388 
+	`msg
+ (
+M_INFO
+ | 
+M_NOMUTE
+,
+
+390 
+suµ»s£d
+,
+
+391 
+mu‹_cutoff
+);
+
+392 
+mu‹_couÁ
+ = 1;
+
+393 
+mu‹_ÿ‹gÜy
+ = 
+mu‹_Ëv–
+;
+
+396  
+»t
+;
+
+397 
+	}
+}
+
+400 
+	$as£¹_çžed
+ (cÚ¡ *
+fž’ame
+, 
+lše
+)
+
+402 
+	`msg
+ (
+M_FATAL
+, "As£¹iÚ fažed‡ˆ%s:%d", 
+fž’ame
+, 
+lše
+);
+
+403 
+	}
+}
+
+410 
+	$out_of_memÜy
+ ()
+
+412 
+	`årštf
+ (
+¡d”r
+, 
+PACKAGE_NAME
+ ": Out of Memory\n");
+
+413 
+	`ex™
+ (1);
+
+414 
+	}
+}
+
+417 
+	$Ý’_sy¦og
+ (cÚ¡ *
+pgmÇme
+, 
+boÞ
+ 
+¡dio_to_nuÎ
+)
+
+419 #ià
+SYSLOG_CAPABILITY
+
+
+420 ià(!
+msgå
+ && !
+¡d_»dœ
+)
+
+422 ià(!
+u£_sy¦og
+)
+
+424 
+pgmÇme_sy¦og
+ = 
+	`¡ršg_®loc
+ (
+pgmÇme
+ ?…gmÇm�: 
+PACKAGE
+, 
+NULL
+);
+
+425 
+	`Ý’log
+ (
+pgmÇme_sy¦og
+, 
+LOG_PID
+, 
+LOG_OPENVPN
+);
+
+426 
+u£_sy¦og
+ = 
+Œue
+;
+
+429 ià(
+¡dio_to_nuÎ
+)
+
+430 
+	`£t_¡d_fžes_to_nuÎ
+ (
+çl£
+);
+
+434 
+	`msg
+ (
+M_WARN
+, "Warning on use of --daemon/--inetd:�his operating system†acks daemon†ogging features,�herefore when I become‡ daemon, I won't be‡ble�o†og status orƒrror messages");
+
+436 
+	}
+}
+
+439 
+	$þo£_sy¦og
+ ()
+
+441 #ià
+SYSLOG_CAPABILITY
+
+
+442 ià(
+u£_sy¦og
+)
+
+444 
+	`þo£log
+();
+
+445 
+u£_sy¦og
+ = 
+çl£
+;
+
+446 ià(
+pgmÇme_sy¦og
+)
+
+448 
+	`ä“
+ (
+pgmÇme_sy¦og
+);
+
+449 
+pgmÇme_sy¦og
+ = 
+NULL
+;
+
+453 
+	}
+}
+
+455 #ifdeà
+WIN32
+
+
+457 
+HANDLE
+ 
+	gÜig_¡d”r
+;
+
+459 
+HANDLE
+
+
+460 
+	$g‘_Üig_¡d”r
+ ()
+
+462 ià(
+Üig_¡d”r
+)
+
+463  
+Üig_¡d”r
+;
+
+465  
+	`G‘StdHªdË
+ (
+STD_ERROR_HANDLE
+);
+
+466 
+	}
+}
+
+471 
+	$»dœeù_¡dout_¡d”r
+ (cÚ¡ *
+fže
+, 
+boÞ
+ 
+­³nd
+)
+
+473 #ià
+	`defšed
+(
+WIN32
+)
+
+474 ià(!
+¡d_»dœ
+)
+
+476 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+477 
+HANDLE
+ 
+log_hªdË
+;
+
+478 
+log_fd
+;
+
+480 
+SECURITY_ATTRIBUTES
+ 
+§A‰r
+;
+
+481 
+§A‰r
+.
+nL’gth
+ = (
+SECURITY_ATTRIBUTES
+);
+
+482 
+§A‰r
+.
+bInh”™HªdË
+ = 
+TRUE
+;
+
+483 
+§A‰r
+.
+ÍSecur™yDesü�tÜ
+ = 
+NULL
+;
+
+485 
+log_hªdË
+ = 
+	`C»©eFžeW
+ (
+	`wide_¡ršg
+ (
+fže
+, &
+gc
+),
+
+486 
+GENERIC_WRITE
+,
+
+487 
+FILE_SHARE_READ
+,
+
+488 &
+§A‰r
+,
+
+489 
+­³nd
+ ? 
+OPEN_ALWAYS
+ : 
+CREATE_ALWAYS
+,
+
+490 
+FILE_ATTRIBUTE_NORMAL
+,
+
+491 
+NULL
+);
+
+493 
+	`gc_ä“
+ (&
+gc
+);
+
+495 ià(
+log_hªdË
+ =ð
+INVALID_HANDLE_VALUE
+)
+
+497 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "W¬nšg: cªnÙ o³À--log fže: %s", 
+fže
+);
+
+502 ià(
+­³nd
+)
+
+504 ià(
+	`S‘FžePoš‹r
+ (
+log_hªdË
+, 0, 
+NULL
+, 
+FILE_END
+è=ð
+INVALID_SET_FILE_POINTER
+)
+
+505 
+	`msg
+ (
+M_ERR
+, "E¼Ü: cªnÙ s“k�Ø’d oà--log fže: %s", 
+fže
+);
+
+509 
+Üig_¡d”r
+ = 
+	`G‘StdHªdË
+ (
+STD_ERROR_HANDLE
+);
+
+513 ià(!
+	`S‘StdHªdË
+ (
+STD_OUTPUT_HANDLE
+, 
+log_hªdË
+)
+
+514 || !
+	`S‘StdHªdË
+ (
+STD_ERROR_HANDLE
+, 
+log_hªdË
+))
+
+515 
+	`msg
+ (
+M_ERR
+, "E¼Ü: cªnÙ„edœeù stdout/¡d”¸tØ--log fže: %s", 
+fže
+);
+
+519 
+log_fd
+ = 
+	`_Ý’_osfhªdË
+ ((
+š�Œ_t
+)
+log_hªdË
+, 
+_O_TEXT
+);
+
+520 ià(
+log_fd
+ == -1)
+
+521 
+	`msg
+ (
+M_ERR
+, "Error: --log„edirect failed due�o _open_osfhandle failure");
+
+524 
+	`ASSERT
+ (
+msgå
+ =ð
+NULL
+);
+
+525 
+msgå
+ = 
+	`_fdÝ’
+ (
+log_fd
+, "wt");
+
+526 ià(
+msgå
+ =ð
+NULL
+)
+
+527 
+	`msg
+ (
+M_ERR
+, "Error: --log„edirect failed due�o _fdopen");
+
+530 ià(
+	`_dup2
+ (
+log_fd
+, 1) == -1 || _dup2 (log_fd, 2) == -1)
+
+531 
+	`msg
+ (
+M_WARN
+, "Error: --log„edirect of stdout/stderr failed");
+
+533 
+¡d_»dœ
+ = 
+Œue
+;
+
+535 #–ià
+	`defšed
+(
+HAVE_DUP2
+)
+
+536 ià(!
+¡d_»dœ
+)
+
+538 
+out
+ = 
+	`Ý’
+ (
+fže
+,
+
+539 
+O_CREAT
+ | 
+O_WRONLY
+ | (
+­³nd
+ ? 
+O_APPEND
+ : 
+O_TRUNC
+),
+
+540 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+542 ià(
+out
+ < 0)
+
+544 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "W¬nšg: E¼Ü„edœeùšg stdout/¡d”¸tØ--log fže: %s", 
+fže
+);
+
+548 ià(
+	`dup2
+ (
+out
+, 1) == -1)
+
+549 
+	`msg
+ (
+M_ERR
+, "--log file„edirectionƒrror on stdout");
+
+550 ià(
+	`dup2
+ (
+out
+, 2) == -1)
+
+551 
+	`msg
+ (
+M_ERR
+, "--log file„edirectionƒrror on stderr");
+
+553 ià(
+out
+ > 2)
+
+554 
+	`þo£
+ (
+out
+);
+
+556 
+¡d_»dœ
+ = 
+Œue
+;
+
+560 
+	`msg
+ (
+M_WARN
+, "WARNING: The --log option is‚ot supported on�his OS because it†acks�he dup2 function");
+
+562 
+	}
+}
+
+569 
+	gx_cs_šfo_Ëv–
+;
+
+570 
+	gx_cs_v”bo£_Ëv–
+;
+
+571 
+	gx_cs_”r_d–ay_ms
+;
+
+574 
+	$»£t_check_¡©us
+ ()
+
+576 
+x_cs_šfo_Ëv–
+ = 0;
+
+577 
+x_cs_v”bo£_Ëv–
+ = 0;
+
+578 
+	}
+}
+
+581 
+	$£t_check_¡©us
+ (
+šfo_Ëv–
+, 
+v”bo£_Ëv–
+)
+
+583 
+x_cs_šfo_Ëv–
+ = 
+šfo_Ëv–
+;
+
+584 
+x_cs_v”bo£_Ëv–
+ = 
+v”bo£_Ëv–
+;
+
+585 
+	}
+}
+
+596 
+	$x_check_¡©us
+ (
+¡©us
+,
+
+597 cÚ¡ *
+desü�tiÚ
+,
+
+598 
+lšk_sock‘
+ *
+sock
+,
+
+599 
+tuÁ­
+ *
+‰
+)
+
+601 cÚ¡ 
+my_”ºo
+ = 
+	`Ý’v²_”ºo
+ ();
+
+602 cÚ¡ *
+ex‹nded_msg
+ = 
+NULL
+;
+
+604 
+	`msg
+ (
+x_cs_v”bo£_Ëv–
+, "%s %s„eturned %d",
+
+605 
+sock
+ ? 
+	`´Ùo2ascii
+ (sock->
+šfo
+.
+´Ùo
+, 
+Œue
+) : "",
+
+606 
+desü�tiÚ
+,
+
+607 
+¡©us
+);
+
+609 ià(
+¡©us
+ < 0)
+
+611 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+612 #ià
+EXTENDED_SOCKET_ERROR_CAPABILITY
+
+
+614 ià(
+sock
+)
+
+616 
+mtu
+;
+
+617 
+ex‹nded_msg
+ = 
+	`fÜm©_ex‹nded_sock‘_”rÜ
+ (
+sock
+->
+sd
+, &
+mtu
+, &
+gc
+);
+
+618 ià(
+mtu
+ > 0 && 
+sock
+->mtu != mtu)
+
+620 
+sock
+->
+mtu
+ = mtu;
+
+621 
+sock
+->
+šfo
+.
+mtu_chªged
+ = 
+Œue
+;
+
+624 #–ià
+	`defšed
+(
+WIN32
+)
+
+626 
+ex‹nded_msg
+ = 
+	`�p_wš_g‘šfo
+ (
+‰
+, &
+gc
+);
+
+628 ià(!
+	`ignÜe_sys_”rÜ
+ (
+my_”ºo
+))
+
+630 ià(
+ex‹nded_msg
+)
+
+631 
+	`msg
+ (
+x_cs_šfo_Ëv–
+, "%s %s [%s]: %s (code=%d)",
+
+632 
+desü�tiÚ
+,
+
+633 
+sock
+ ? 
+	`´Ùo2ascii
+ (sock->
+šfo
+.
+´Ùo
+, 
+Œue
+) : "",
+
+634 
+ex‹nded_msg
+,
+
+635 
+	`¡»¼Ü_ts
+ (
+my_”ºo
+, &
+gc
+),
+
+636 
+my_”ºo
+);
+
+638 
+	`msg
+ (
+x_cs_šfo_Ëv–
+, "%s %s: %s (code=%d)",
+
+639 
+desü�tiÚ
+,
+
+640 
+sock
+ ? 
+	`´Ùo2ascii
+ (sock->
+šfo
+.
+´Ùo
+, 
+Œue
+) : "",
+
+641 
+	`¡»¼Ü_ts
+ (
+my_”ºo
+, &
+gc
+),
+
+642 
+my_”ºo
+);
+
+644 ià(
+x_cs_”r_d–ay_ms
+)
+
+645 
+	`¶©fÜm_¦“p_mžli£cÚds
+ (
+x_cs_”r_d–ay_ms
+);
+
+647 
+	`gc_ä“
+ (&
+gc
+);
+
+649 
+	}
+}
+
+655 cÚ¡ *
+	gx_msg_´efix
+;
+
+661 cÚ¡ 
+vœtu®_ou�ut
+ *
+	gx_msg_vœtu®_ou�ut
+;
+
+668 
+	$Ý’v²_ex™
+ (cÚ¡ 
+¡©us
+)
+
+670 ià(!
+fÜked
+)
+
+672 
+	`tun_abÜt
+();
+
+673 #ifdeà
+ENABLE_PLUGIN
+
+
+674 
+	`¶ugš_abÜt
+ ();
+
+677 
+	`tun_abÜt
+();
+
+679 #ifdeà
+WIN32
+
+
+680 
+	`unš™_wš32
+ ();
+
+683 
+	`þo£_sy¦og
+ ();
+
+685 #ifdeà
+ENABLE_PLUGIN
+
+
+686 
+	`¶ugš_abÜt
+ ();
+
+689 #ià
+PORT_SHARE
+
+
+690 ià(
+pÜt_sh¬e
+)
+
+691 
+	`pÜt_sh¬e_abÜt
+ (
+pÜt_sh¬e
+);
+
+694 #ifdeà
+ENABLE_MEMSTATS
+
+
+695 
+	`m¡©s_þo£
+();
+
+698 #ifdeà
+ABORT_ON_ERROR
+
+
+699 ià(
+¡©us
+ =ð
+OPENVPN_EXIT_STATUS_ERROR
+)
+
+700 
+	`abÜt
+ ();
+
+703 ià(
+¡©us
+ =ð
+OPENVPN_EXIT_STATUS_GOOD
+)
+
+704 
+	`³rf_ou�ut_»suÉs
+ ();
+
+707 
+	`ex™
+ (
+¡©us
+);
+
+708 
+	}
+}
+
+714 
+	$msg_æags_¡ršg
+ (cÚ¡ 
+æags
+, 
+gc_¬’a
+ *
+gc
+)
+
+716 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (16, 
+gc
+);
+
+717 ià(
+æags
+ =ð
+M_INFO
+)
+
+718 
+	`buf_´štf
+ (&
+out
+, "I");
+
+719 ià(
+æags
+ & 
+M_FATAL
+)
+
+720 
+	`buf_´štf
+ (&
+out
+, "F");
+
+721 ià(
+æags
+ & 
+M_NONFATAL
+)
+
+722 
+	`buf_´štf
+ (&
+out
+, "N");
+
+723 ià(
+æags
+ & 
+M_WARN
+)
+
+724 
+	`buf_´štf
+ (&
+out
+, "W");
+
+725 ià(
+æags
+ & 
+M_DEBUG
+)
+
+726 
+	`buf_´štf
+ (&
+out
+, "D");
+
+727  
+	`BSTR
+ (&
+out
+);
+
+728 
+	}
+}
+
+730 #ifdeà
+ENABLE_DEBUG
+
+
+732 
+	$üash
+ ()
+
+734 *
+nuÎ
+ = 
+NULL
+;
+
+735 *
+nuÎ
+ = 0;
+
+736 
+	}
+}
+
+739 #ifdeà
+WIN32
+
+
+742 
+	$¡»¼Ü_wš32
+ (
+DWORD
+ 
+”ºum
+, 
+gc_¬’a
+ *
+gc
+)
+
+750 
+”ºum
+) {
+
+755 
+ERROR_GEN_FAILURE
+:
+
+757 
+ERROR_IO_PENDING
+:
+
+759 
+WSA_IO_INCOMPLETE
+:
+
+761 
+WSAEINTR
+:
+
+763 
+WSAEBADF
+:
+
+765 
+WSAEACCES
+:
+
+767 
+WSAEFAULT
+:
+
+769 
+WSAEINVAL
+:
+
+771 
+WSAEMFILE
+:
+
+773 
+WSAEWOULDBLOCK
+:
+
+775 
+WSAEINPROGRESS
+:
+
+777 
+WSAEALREADY
+:
+
+779 
+WSAEDESTADDRREQ
+:
+
+781 
+WSAEMSGSIZE
+:
+
+783 
+WSAEPROTOTYPE
+:
+
+785 
+WSAENOPROTOOPT
+:
+
+787 
+WSAEPROTONOSUPPORT
+:
+
+789 
+WSAESOCKTNOSUPPORT
+:
+
+791 
+WSAEOPNOTSUPP
+:
+
+793 
+WSAEPFNOSUPPORT
+:
+
+795 
+WSAEAFNOSUPPORT
+:
+
+797 
+WSAEADDRINUSE
+:
+
+799 
+WSAENETDOWN
+:
+
+801 
+WSAENETUNREACH
+:
+
+803 
+WSAENETRESET
+:
+
+805 
+WSAECONNABORTED
+:
+
+807 
+WSAECONNRESET
+:
+
+809 
+WSAENOBUFS
+:
+
+811 
+WSAEISCONN
+:
+
+813 
+WSAENOTCONN
+:
+
+815 
+WSAETIMEDOUT
+:
+
+817 
+WSAECONNREFUSED
+:
+
+819 
+WSAELOOP
+:
+
+821 
+WSAENAMETOOLONG
+:
+
+823 
+WSAEHOSTDOWN
+:
+
+825 
+WSAEHOSTUNREACH
+:
+
+827 
+WSAENOTEMPTY
+:
+
+829 
+WSAEPROCLIM
+:
+
+831 
+WSAEUSERS
+:
+
+833 
+WSAEDQUOT
+:
+
+835 
+WSAESTALE
+:
+
+837 
+WSASYSNOTREADY
+:
+
+839 
+WSAVERNOTSUPPORTED
+:
+
+841 
+WSANOTINITIALISED
+:
+
+843 
+WSAEREMOTE
+:
+
+845 
+WSAHOST_NOT_FOUND
+:
+
+854 
+mes§ge
+[256];
+
+855 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+856 cÚ¡ 
+¡©us
+ = 
+	`FÜm©Mes§ge
+ (
+
+857 
+FORMAT_MESSAGE_IGNORE_INSERTS
+
+
+858 | 
+FORMAT_MESSAGE_FROM_SYSTEM
+
+
+859 | 
+FORMAT_MESSAGE_ARGUMENT_ARRAY
+,
+
+860 
+NULL
+,
+
+861 
+”ºum
+,
+
+863 
+mes§ge
+,
+
+864  (
+mes§ge
+),
+
+865 
+NULL
+);
+
+866 ià(!
+¡©us
+)
+
+868 
+	`buf_´štf
+ (&
+out
+, "[Unknown Win32 Error]");
+
+872 *
+ý
+;
+
+873 
+ý
+ = 
+mes§ge
+; *cp != '\0'; ++cp)
+
+875 ià(*
+ý
+ == '\n' || *cp == '\r')
+
+876 *
+ý
+ = ' ';
+
+879 
+	`buf_´štf
+(&
+out
+, "%s", 
+mes§ge
+);
+
+882  
+	`BSTR
+ (&
+out
+);
+
+884 
+	}
+}
+
+	@error.h
+
+25 #iâdeà
+ERROR_H
+
+
+26 
+	#ERROR_H
+
+
+	)
+
+28 
+	~"basic.h
+"
+
+32 #ifdeà
+ENABLE_PKCS11
+
+
+33 
+	#ERR_BUF_SIZE
+ 8192
+
+	)
+
+35 
+	#ERR_BUF_SIZE
+ 1280
+
+	)
+
+38 
+	ggc_¬’a
+;
+
+44 
+	#OPENVPN_MSG_FP
+ 
+¡dout
+
+
+	)
+
+45 
+	#OPENVPN_ERROR_FP
+ 
+¡d”r
+
+
+	)
+
+51 
+	#OPENVPN_EXIT_STATUS_GOOD
+ 0
+
+	)
+
+52 
+	#OPENVPN_EXIT_STATUS_ERROR
+ 1
+
+	)
+
+53 
+	#OPENVPN_EXIT_STATUS_USAGE
+ 1
+
+	)
+
+54 
+	#OPENVPN_EXIT_STATUS_CANNOT_OPEN_DEBUG_FILE
+ 1
+
+	)
+
+65 
+	#OPENVPN_DEBUG_FILE
+ 
+PACKAGE
+ ".log"
+
+	)
+
+69 #ifdeà
+WIN32
+
+
+70 
+	#Ý’v²_”ºo
+(è
+	`G‘La¡E¼Ü
+()
+
+	)
+
+71 
+	#Ý’v²_¡»¼Ü
+(
+e
+, 
+gc
+è
+	`¡»¼Ü_wš32
+Ó, gc)
+
+	)
+
+72 cÚ¡ *
+¡»¼Ü_wš32
+ (
+DWORD
+ 
+”ºum
+, 
+gc_¬’a
+ *
+gc
+);
+
+74 
+	#Ý’v²_”ºo
+(è
+”ºo
+
+
+	)
+
+75 
+	#Ý’v²_¡»¼Ü
+(
+x
+, 
+gc
+è
+	`¡»¼Ü
+(x)
+
+	)
+
+82 

+x_debug_Ëv–
+;
+
+83 

+x_msg_lše_num
+;
+
+87 
+	#M_DEBUG_LEVEL
+ (0x0Fè
+
+	)
+
+89 
+	#M_FATAL
+ (1<<4è
+
+	)
+
+90 
+	#M_NONFATAL
+ (1<<5è
+
+	)
+
+91 
+	#M_WARN
+ (1<<6è
+
+	)
+
+92 
+	#M_DEBUG
+ (1<<7)
+
+	)
+
+94 
+	#M_ERRNO
+ (1<<8è
+
+	)
+
+96 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+97 
+	#M_SSL
+ (1<<10è
+
+	)
+
+100 
+	#M_NOMUTE
+ (1<<11è
+
+	)
+
+101 
+	#M_NOPREFIX
+ (1<<12è
+
+	)
+
+102 
+	#M_USAGE_SMALL
+ (1<<13è
+
+	)
+
+103 
+	#M_MSG_VIRT_OUT
+ (1<<14è
+
+	)
+
+104 
+	#M_OPTERR
+ (1<<15è
+
+	)
+
+105 
+	#M_NOLF
+ (1<<16è
+
+	)
+
+106 
+	#M_NOIPREFIX
+ (1<<17è
+
+	)
+
+109 
+	#M_ERR
+ (
+M_FATAL
+ | 
+M_ERRNO
+)
+
+	)
+
+110 
+	#M_SSLERR
+ (
+M_FATAL
+ | 
+M_SSL
+)
+
+	)
+
+111 
+	#M_USAGE
+ (
+M_USAGE_SMALL
+ | 
+M_NOPREFIX
+ | 
+M_OPTERR
+)
+
+	)
+
+112 
+	#M_CLIENT
+ (
+M_MSG_VIRT_OUT
+ | 
+M_NOMUTE
+ | 
+M_NOIPREFIX
+)
+
+	)
+
+120 
+	#MUTE_LEVEL_SHIFT
+ 24
+
+	)
+
+121 
+	#MUTE_LEVEL_MASK
+ 0xFF
+
+	)
+
+123 
+	#ENCODE_MUTE_LEVEL
+(
+mu‹_Ëv–
+è(((mu‹_Ëv–è& 
+MUTE_LEVEL_MASK
+è<< 
+MUTE_LEVEL_SHIFT
+)
+
+	)
+
+124 
+	#DECODE_MUTE_LEVEL
+(
+æags
+è(((æagsè>> 
+MUTE_LEVEL_SHIFT
+è& 
+MUTE_LEVEL_MASK
+)
+
+	)
+
+136 
+	#LOGLEV
+(
+log_Ëv–
+, 
+mu‹_Ëv–
+, 
+Ùh”
+è(Öog_Ëv–è| 
+	`ENCODE_MUTE_LEVEL
+(mu‹_Ëv–è| oth”)
+
+	)
+
+143 
+boÞ
+ 
+dÚt_mu‹
+ (
+æags
+);
+
+145 
+	#MSG_TEST
+(
+æags
+è(
+	`uÆik–y
+(((()æagsè& 
+M_DEBUG_LEVEL
+è<ð
+x_debug_Ëv–
+è&& 
+	`dÚt_mu‹
+ (æags))
+
+	)
+
+147 #ià
+defšed
+(
+HAVE_CPP_VARARG_MACRO_ISO
+è&& !defšed(
+__LCLINT__
+)
+
+148 
+	#HAVE_VARARG_MACROS
+
+
+	)
+
+149 
+	#msg
+(
+æags
+, ...èdØ{ ià(
+	`MSG_TEST
+(æags)è
+	`x_msg
+((æags), 
+__VA_ARGS__
+); } 
+çl£
+)
+
+	)
+
+150 #ifdeà
+ENABLE_DEBUG
+
+
+151 
+	#dmsg
+(
+æags
+, ...èdØ{ ià(
+	`MSG_TEST
+(æags)è
+	`x_msg
+((æags), 
+__VA_ARGS__
+); } 
+çl£
+)
+
+	)
+
+153 
+	#dmsg
+(
+æags
+, ...)
+
+	)
+
+155 #–ià
+defšed
+(
+HAVE_CPP_VARARG_MACRO_GCC
+è&& !defšed(
+__LCLINT__
+)
+
+156 
+	#HAVE_VARARG_MACROS
+
+
+	)
+
+157 
+	#msg
+(
+æags
+, 
+¬gs
+...èdØ{ ià(
+	`MSG_TEST
+(æags)è
+	`x_msg
+((æags),‡rgs); } 
+çl£
+)
+
+	)
+
+158 #ifdeà
+ENABLE_DEBUG
+
+
+159 
+	#dmsg
+(
+æags
+, 
+¬gs
+...èdØ{ ià(
+	`MSG_TEST
+(æags)è
+	`x_msg
+((æags),‡rgs); } 
+çl£
+)
+
+	)
+
+161 
+	#dmsg
+(
+æags
+, 
+¬gs
+...)
+
+	)
+
+164 #ià!
+PEDANTIC
+
+
+165 #ifdeà
+_MSC_VER
+
+
+166 #´agm¨
+mes§ge
+("this compiler‡ppears�o†ack vararg macros which will cause‡ significant degradation inƒfficiency")
+
+168 #w¬nšg 
+this
+ 
+compž”
+ 
+­³¬s
+ 
+to
+ 
+Ïck
+ 
+v¬¬g
+ 
+maüos
+ 
+which
+ 
+wžl
+ 
+ÿu£
+ 
+a
+ 
+signifiÿÁ
+ 
+deg¿d©iÚ
+ 
+š
+ 
+effic›ncy
+ (
+you
+ 
+ÿn
+ 
+ignÜe
+�hi 
+w¬nšg
+ you 
+¬e
+ 
+usšg
+ 
+LCLINT
+)
+
+171 
+	#msg
+ 
+x_msg
+
+
+	)
+
+172 
+	#dmsg
+ 
+x_msg
+
+
+	)
+
+175 
+	$x_msg
+ (cÚ¡ 
+æags
+, cÚ¡ *
+fÜm©
+, ...)
+
+176 #ifdeà
+__GNUC__
+
+
+177 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+178 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 2, 3)))
+
+180 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 2, 3)))
+
+185 
+	`x_msg_va
+ (cÚ¡ 
+æags
+, cÚ¡ *
+fÜm©
+, 
+va_li¡
+ 
+¬gli¡
+);
+
+191 
+	`”rÜ_»£t
+ ();
+
+194 
+	`”rÜs_to_¡d”r
+ ();
+
+196 
+	`£t_suµ»ss_time¡amps
+ (
+boÞ
+ 
+suµ»s£d
+);
+
+198 
+	#SDL_CONSTRAIN
+ (1<<0)
+
+	)
+
+199 
+boÞ
+ 
+	`£t_debug_Ëv–
+ (cÚ¡ 
+Ëv–
+, cÚ¡ 
+æags
+);
+
+201 
+boÞ
+ 
+	`£t_mu‹_cutoff
+ (cÚ¡ 
+cutoff
+);
+
+203 
+	`g‘_debug_Ëv–
+ ();
+
+204 
+	`g‘_mu‹_cutoff
+ ();
+
+206 cÚ¡ *
+	`msg_æags_¡ršg
+ (cÚ¡ 
+æags
+, 
+gc_¬’a
+ *
+gc
+);
+
+211 
+FILE
+ *
+	`msg_å
+(cÚ¡ 
+æags
+);
+
+214 
+	#ASSERT
+(
+x
+èdØ{ ià(!(x)è
+	`as£¹_çžed
+(
+__FILE__
+, 
+__LINE__
+); 
+	}
+} 
+çl£
+)
+
+	)
+
+216 
+as£¹_çžed
+ (cÚ¡ *
+fž’ame
+, 
+lše
+);
+
+218 #ifdeà
+ENABLE_DEBUG
+
+
+219 
+üash
+ ();
+
+224 
+šlše
+ 
+boÞ
+
+
+225 
+	$check_debug_Ëv–
+ (
+Ëv–
+)
+
+227  (
+Ëv–
+ & 
+M_DEBUG_LEVEL
+è<ð
+x_debug_Ëv–
+;
+
+228 
+	}
+}
+
+231 
+msg_fÜked
+ ();
+
+235 
+Ý’_sy¦og
+ (cÚ¡ *
+pgmÇme
+, 
+boÞ
+ 
+¡dio_to_nuÎ
+);
+
+236 
+þo£_sy¦og
+ ();
+
+239 
+»dœeù_¡dout_¡d”r
+ (cÚ¡ *
+fže
+, 
+boÞ
+ 
+­³nd
+);
+
+241 #ifdeà
+WIN32
+
+
+243 
+HANDLE
+ 
+g‘_Üig_¡d”r
+ ();
+
+247 
+Ý’v²_ex™
+ (cÚ¡ 
+¡©us
+);
+
+250 
+out_of_memÜy
+ ();
+
+256 
+	glšk_sock‘
+;
+
+257 
+	gtuÁ­
+;
+
+259 

+x_cs_šfo_Ëv–
+;
+
+260 

+x_cs_v”bo£_Ëv–
+;
+
+261 

+x_cs_”r_d–ay_ms
+;
+
+263 
+»£t_check_¡©us
+ ();
+
+264 
+£t_check_¡©us
+ (
+šfo_Ëv–
+, 
+v”bo£_Ëv–
+);
+
+266 
+x_check_¡©us
+ (
+¡©us
+,
+
+267 cÚ¡ *
+desü�tiÚ
+,
+
+268 
+lšk_sock‘
+ *
+sock
+,
+
+269 
+tuÁ­
+ *
+‰
+);
+
+271 
+šlše
+ 
+
+272 
+	$check_¡©us
+ (
+¡©us
+, cÚ¡ *
+desü�tiÚ
+, 
+lšk_sock‘
+ *
+sock
+, 
+tuÁ­
+ *
+‰
+)
+
+274 ià(
+¡©us
+ < 0 || 
+	`check_debug_Ëv–
+ (
+x_cs_v”bo£_Ëv–
+))
+
+275 
+	`x_check_¡©us
+ (
+¡©us
+, 
+desü�tiÚ
+, 
+sock
+, 
+‰
+);
+
+276 
+	}
+}
+
+278 
+šlše
+ 
+
+279 
+	$£t_check_¡©us_”rÜ_d–ay
+ (
+mžli£cÚds
+)
+
+281 
+x_cs_”r_d–ay_ms
+ = 
+mžli£cÚds
+;
+
+282 
+	}
+}
+
+291 
cÚ¡ *
+x_msg_´efix
+;
+
+293 
+msg_th»ad_š™
+ ();
+
+294 
+msg_th»ad_unš™
+ ();
+
+296 
+šlše
+ 
+
+297 
+	$msg_£t_´efix
+ (cÚ¡ *
+´efix
+)
+
+299 
+x_msg_´efix
+ = 
+´efix
+;
+
+300 
+	}
+}
+
+302 
+šlše
+ const *
+
+303 
+	$msg_g‘_´efix
+ ()
+
+305  
+x_msg_´efix
+;
+
+306 
+	}
+}
+
+312 
+	gvœtu®_ou�ut
+;
+
+314 
cÚ¡ 
+vœtu®_ou�ut
+ *
+x_msg_vœtu®_ou�ut
+;
+
+316 
+šlše
+ 
+
+317 
+	$msg_£t_vœtu®_ou�ut
+ (cÚ¡ 
+vœtu®_ou�ut
+ *
+vo
+)
+
+319 
+x_msg_vœtu®_ou�ut
+ = 
+vo
+;
+
+320 
+	}
+}
+
+322 
+šlše
+ cÚ¡ 
+vœtu®_ou�ut
+ *
+
+323 
+	$msg_g‘_vœtu®_ou�ut
+ ()
+
+325  
+x_msg_vœtu®_ou�ut
+;
+
+326 
+	}
+}
+
+332 
+šlše
+ 
+boÞ
+
+
+333 
+	$ignÜe_sys_”rÜ
+ (cÚ¡ 
+”r
+)
+
+336 #ifdeà
+WIN32
+
+
+337 ià(
+”r
+ =ð
+WSAEWOULDBLOCK
+ ||ƒ¼ =ð
+WSAEINVAL
+)
+
+338  
+Œue
+;
+
+340 ià(
+”r
+ =ð
+EAGAIN
+)
+
+341  
+Œue
+;
+
+345 #ifdeà
+ENOBUFS
+
+
+347 ià(
+”r
+ =ð
+ENOBUFS
+)
+
+348  
+Œue
+;
+
+352  
+çl£
+;
+
+353 
+	}
+}
+
+355 
+	~"”¾ev–.h
+"
+
+	@event.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"bufãr.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+35 
+	~"š‹g”.h
+"
+
+36 
+	~"ev’t.h
+"
+
+37 
+	~"fdmisc.h
+"
+
+39 
+	~"memdbg.h
+"
+
+45 #ià
+defšed
+(
+TARGET_DARWIN
+)
+
+46 
+	#SELECT_PREFERRED_OVER_POLL
+
+
+	)
+
+52 #ifdeà
+WIN32
+
+
+53 
+	#SELECT
+ 0
+
+	)
+
+55 
+	#SELECT
+ 1
+
+	)
+
+62 #ifdeà
+FD_SETSIZE
+
+
+63 
+	#SELECT_MAX_FDS
+ 
+FD_SETSIZE
+
+
+	)
+
+65 
+	#SELECT_MAX_FDS
+ 256
+
+	)
+
+68 
+šlše
+ 
+
+69 
+	$tv_to_ms_timeout
+ (cÚ¡ 
+timev®
+ *
+tv
+)
+
+71 ià(
+tv
+->
+tv_£c
+ =ð0 &&�v->
+tv_u£c
+ == 0)
+
+74  
+	`max_št
+ (
+tv
+->
+tv_£c
+ * 1000 + (tv->
+tv_u£c
+ + 500) / 1000, 1);
+
+75 
+	}
+}
+
+77 #ifdeà
+WIN32
+
+
+79 
+	swe_£t
+
+
+81 
+ev’t_£t_funùiÚs
+ 
+	mfunc
+;
+
+82 
+boÞ
+ 
+	mç¡
+;
+
+83 
+HANDLE
+ *
+	mev’ts
+;
+
+84 
+ev’t_£t_»tuº
+ *
+	me¤
+;
+
+85 
+	mn_ev’ts
+;
+
+86 
+	mÿ·c™y
+;
+
+89 
+šlše
+ 
+
+90 
+	$we_£t_ev’t
+ (
+we_£t
+ *
+wes
+, 
+i
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+92 
+	`ASSERT
+ (
+i
+ >ð0 && i < 
+wes
+->
+ÿ·c™y
+);
+
+94 ià(
+rwæags
+ =ð
+EVENT_READ
+)
+
+96 
+	`ASSERT
+ (
+ev’t
+->
+»ad
+ !ð
+NULL
+);
+
+97 
+wes
+->
+ev’ts
+[
+i
+] = 
+ev’t
+->
+»ad
+;
+
+99 ià(
+rwæags
+ =ð
+EVENT_WRITE
+)
+
+101 
+	`ASSERT
+ (
+ev’t
+->
+wr™e
+ !ð
+NULL
+);
+
+102 
+wes
+->
+ev’ts
+[
+i
+] = 
+ev’t
+->
+wr™e
+;
+
+105 
+	`msg
+ (
+M_FATAL
+, "ç�È”rÜ iÀwe_£t_ev’ts:„wæags=%d", 
+rwæags
+);
+
+107 
+wes
+->
+e¤
+[
+i
+].
+rwæags
+ =„wflags;
+
+108 
+wes
+->
+e¤
+[
+i
+].
+¬g
+ =‡rg;
+
+109 
+	}
+}
+
+111 
+šlše
+ 
+boÞ
+
+
+112 
+	$we_­³nd_ev’t
+ (
+we_£t
+ *
+wes
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+114 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+116 ià(
+wes
+->
+n_ev’ts
+ < wes->
+ÿ·c™y
+)
+
+118 
+	`we_£t_ev’t
+ (
+wes
+, wes->
+n_ev’ts
+, 
+ev’t
+, 
+EVENT_WRITE
+, 
+¬g
+);
+
+119 ++
+wes
+->
+n_ev’ts
+;
+
+122  
+çl£
+;
+
+124 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+126 ià(
+wes
+->
+n_ev’ts
+ < wes->
+ÿ·c™y
+)
+
+128 
+	`we_£t_ev’t
+ (
+wes
+, wes->
+n_ev’ts
+, 
+ev’t
+, 
+EVENT_READ
+, 
+¬g
+);
+
+129 ++
+wes
+->
+n_ev’ts
+;
+
+132  
+çl£
+;
+
+134  
+Œue
+;
+
+135 
+	}
+}
+
+138 
+	$we_d–_ev’t
+ (
+we_£t
+ *
+wes
+, 
+ev’t_t
+ 
+ev’t
+)
+
+140 
+i
+, 
+j
+ = 0;
+
+141 cÚ¡ 
+Ën
+ = 
+wes
+->
+n_ev’ts
+;
+
+143 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+145 cÚ¡ 
+HANDLE
+ 
+h
+ = 
+wes
+->
+ev’ts
+[
+i
+];
+
+146 ià(
+h
+ =ð
+ev’t
+->
+»ad
+ || h =ðev’t->
+wr™e
+)
+
+147 --
+wes
+->
+n_ev’ts
+;
+
+150 ià(
+i
+ !ð
+j
+)
+
+152 
+wes
+->
+ev’ts
+[
+j
+] = wes->ev’ts[
+i
+];
+
+153 
+wes
+->
+e¤
+[
+j
+] = wes->e¤[
+i
+];
+
+155 ++
+j
+;
+
+158 
+	}
+}
+
+161 
+	$we_d–_šdex
+ (
+we_£t
+ *
+wes
+, 
+šdex
+)
+
+163 
+i
+;
+
+164 
+	`ASSERT
+ (
+šdex
+ >ð0 && index < 
+wes
+->
+n_ev’ts
+);
+
+165 
+i
+ = 
+šdex
+; i < 
+wes
+->
+n_ev’ts
+ - 1; ++i)
+
+167 
+wes
+->
+ev’ts
+[
+i
+] = wes->events[i+1];
+
+168 
+wes
+->
+e¤
+[
+i
+] = wes->esr[i+1];
+
+170 --
+wes
+->
+n_ev’ts
+;
+
+171 
+	}
+}
+
+174 
+	$we_g‘_rw_šdiûs
+ (
+we_£t
+ *
+wes
+, 
+ev’t_t
+ 
+ev’t
+, *
+ri
+, *
+wi
+)
+
+176 
+i
+;
+
+177 *
+ri
+ = *
+wi
+ = -1;
+
+178 
+i
+ = 0; i < 
+wes
+->
+n_ev’ts
+; ++i)
+
+180 cÚ¡ 
+HANDLE
+ 
+h
+ = 
+wes
+->
+ev’ts
+[
+i
+];
+
+181 ià(
+h
+ =ð
+ev’t
+->
+»ad
+)
+
+183 
+	`ASSERT
+ (*
+ri
+ == -1);
+
+184 *
+ri
+ = 
+i
+;
+
+186 ià(
+h
+ =ð
+ev’t
+->
+wr™e
+)
+
+188 
+	`ASSERT
+ (*
+wi
+ == -1);
+
+189 *
+wi
+ = 
+i
+;
+
+192 
+	}
+}
+
+195 
+	$we_ä“
+ (
+ev’t_£t
+ *
+es
+)
+
+197 
+we_£t
+ *
+wes
+ = (we_£ˆ*è
+es
+;
+
+198 
+	`ä“
+ (
+wes
+->
+ev’ts
+);
+
+199 
+	`ä“
+ (
+wes
+->
+e¤
+);
+
+200 
+	`ä“
+ (
+wes
+);
+
+201 
+	}
+}
+
+204 
+	$we_»£t
+ (
+ev’t_£t
+ *
+es
+)
+
+206 
+we_£t
+ *
+wes
+ = (we_£ˆ*è
+es
+;
+
+207 
+	`ASSERT
+ (
+wes
+->
+ç¡
+);
+
+208 
+wes
+->
+n_ev’ts
+ = 0;
+
+209 
+	}
+}
+
+212 
+	$we_d–
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+)
+
+214 
+we_£t
+ *
+wes
+ = (we_£ˆ*è
+es
+;
+
+215 
+	`ASSERT
+ (!
+wes
+->
+ç¡
+);
+
+216 
+	`we_d–_ev’t
+ (
+wes
+, 
+ev’t
+);
+
+217 
+	}
+}
+
+220 
+	$we_ùl
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+222 
+we_£t
+ *
+wes
+ = (we_£ˆ*è
+es
+;
+
+224 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_CTL‚=%dƒv=%°rwæags=0x%04x‡rg=" 
+±r_fÜm©
+,
+
+225 
+wes
+->
+n_ev’ts
+,
+
+226 
+ev’t
+,
+
+227 
+rwæags
+,
+
+228 (
+±r_ty³
+)
+¬g
+);
+
+230 ià(
+wes
+->
+ç¡
+)
+
+232 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+rwæags
+, 
+¬g
+))
+
+233 
+”r
+;
+
+237 
+ri
+, 
+wi
+;
+
+238 
+Úe
+ = -1;
+
+239 
+n
+ = 0;
+
+241 
+	`we_g‘_rw_šdiûs
+ (
+wes
+, 
+ev’t
+, &
+ri
+, &
+wi
+);
+
+242 ià(
+wi
+ >= 0)
+
+244 
+Úe
+ = 
+wi
+;
+
+245 ++
+n
+;
+
+247 ià(
+ri
+ >= 0)
+
+249 
+Úe
+ = 
+ri
+;
+
+250 ++
+n
+;
+
+252 
+rwæags
+)
+
+255 
+n
+)
+
+260 
+	`we_d–_šdex
+ (
+wes
+, 
+Úe
+);
+
+263 
+	`we_d–_ev’t
+ (
+wes
+, 
+ev’t
+);
+
+266 
+	`ASSERT
+ (0);
+
+269 
+EVENT_READ
+:
+
+270 
+n
+)
+
+273 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+EVENT_READ
+, 
+¬g
+))
+
+274 
+”r
+;
+
+277 
+	`we_£t_ev’t
+ (
+wes
+, 
+Úe
+, 
+ev’t
+, 
+EVENT_READ
+, 
+¬g
+);
+
+280 
+	`we_d–_šdex
+ (
+wes
+, 
+wi
+);
+
+283 
+	`ASSERT
+ (0);
+
+286 
+EVENT_WRITE
+:
+
+287 
+n
+)
+
+290 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+EVENT_WRITE
+, 
+¬g
+))
+
+291 
+”r
+;
+
+294 
+	`we_£t_ev’t
+ (
+wes
+, 
+Úe
+, 
+ev’t
+, 
+EVENT_WRITE
+, 
+¬g
+);
+
+297 
+	`we_d–_šdex
+ (
+wes
+, 
+ri
+);
+
+300 
+	`ASSERT
+ (0);
+
+303 
+EVENT_READ
+|
+EVENT_WRITE
+:
+
+304 
+n
+)
+
+307 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+EVENT_READ
+|
+EVENT_WRITE
+, 
+¬g
+))
+
+308 
+”r
+;
+
+311 ià(
+ri
+ == -1)
+
+313 
+	`ASSERT
+ (
+wi
+ != -1);
+
+314 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+EVENT_READ
+, 
+¬g
+))
+
+315 
+”r
+;
+
+317 ià(
+wi
+ == -1)
+
+319 ià(!
+	`we_­³nd_ev’t
+ (
+wes
+, 
+ev’t
+, 
+EVENT_WRITE
+, 
+¬g
+))
+
+320 
+”r
+;
+
+323 
+	`ASSERT
+ (0);
+
+328 
+	`ASSERT
+ (0);
+
+332 
+	`msg
+ (
+M_FATAL
+, "ç�È”rÜ iÀwe_ùl:„wæags=%d", 
+rwæags
+);
+
+337 
+”r
+:
+
+338 
+	`msg
+ (
+D_EVENT_ERRORS
+, "E¼Ü: Wšdow »sourû†im™ WSA_MAXIMUM_WAIT_EVENTS (%dèha b“Àexûeded", 
+WSA_MAXIMUM_WAIT_EVENTS
+);
+
+339 
+	}
+}
+
+342 
+	$we_wa™
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+344 
+we_£t
+ *
+wes
+ = (we_£ˆ*è
+es
+;
+
+345 cÚ¡ 
+timeout
+ = 
+	`tv_to_ms_timeout
+ (
+tv
+);
+
+346 
+DWORD
+ 
+¡©us
+;
+
+348 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_WAITƒÁ”‚=%d�o=%d", 
+wes
+->
+n_ev’ts
+, 
+timeout
+);
+
+350 #ifdeà
+ENABLE_DEBUG
+
+
+351 ià(
+	`check_debug_Ëv–
+ (
+D_EVENT_WAIT
+)) {
+
+352 
+i
+;
+
+353 
+i
+ = 0; i < 
+wes
+->
+n_ev’ts
+; ++i)
+
+354 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "[%d]ƒv=%°rwæags=0x%04x‡rg=" 
+±r_fÜm©
+,
+
+355 
+i
+,
+
+356 
+wes
+->
+ev’ts
+[
+i
+],
+
+357 
+wes
+->
+e¤
+[
+i
+].
+rwæags
+,
+
+358 (
+±r_ty³
+)
+wes
+->
+e¤
+[
+i
+].
+¬g
+);
+
+365 
+¡©us
+ = 
+	`WSAWa™FÜMuÉ�ËEv’ts
+(
+
+366 (
+DWORD
+è
+wes
+->
+n_ev’ts
+,
+
+367 
+wes
+->
+ev’ts
+,
+
+368 
+FALSE
+,
+
+369 (
+DWORD
+) 0,
+
+370 
+FALSE
+);
+
+376 ià(
+¡©us
+ >ð
+WSA_WAIT_EVENT_0
+ && s�tu < WSA_WAIT_EVENT_0 + (
+DWORD
+è
+wes
+->
+n_ev’ts
+)
+
+378 
+i
+;
+
+379 
+j
+ = 0;
+
+380 
+i
+ = 0; i < 
+wes
+->
+n_ev’ts
+; ++i)
+
+382 ià(
+j
+ >ð
+ouŽ’
+)
+
+384 ià(
+	`Wa™FÜSšgËObjeù
+ (
+wes
+->
+ev’ts
+[
+i
+], 0è=ð
+WAIT_OBJECT_0
+)
+
+386 *
+out
+ = 
+wes
+->
+e¤
+[
+i
+];
+
+387 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_WAIT†—v�[%d,%d]„wæags=0x%04x‡rg=" 
+±r_fÜm©
+,
+
+388 
+i
+, 
+j
+, 
+out
+->
+rwæags
+, (
+±r_ty³
+)out->
+¬g
+);
+
+389 ++
+j
+;
+
+390 ++
+out
+;
+
+393  
+j
+;
+
+406 ià(
+timeout
+ > 0)
+
+407 
+¡©us
+ = 
+	`WSAWa™FÜMuÉ�ËEv’ts
+(
+
+408 (
+DWORD
+è
+wes
+->
+n_ev’ts
+,
+
+409 
+wes
+->
+ev’ts
+,
+
+410 
+FALSE
+,
+
+411 (
+DWORD
+è
+timeout
+,
+
+412 
+FALSE
+);
+
+414 ià(
+ouŽ’
+ >ð1 && 
+¡©us
+ >ð
+WSA_WAIT_EVENT_0
+ && s�tu < WSA_WAIT_EVENT_0 + (
+DWORD
+è
+wes
+->
+n_ev’ts
+)
+
+416 *
+out
+ = 
+wes
+->
+e¤
+[
+¡©us
+ - 
+WSA_WAIT_EVENT_0
+];
+
+417 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_WAIT†—v�rwæags=0x%04x‡rg=" 
+±r_fÜm©
+,
+
+418 
+out
+->
+rwæags
+, (
+±r_ty³
+)out->
+¬g
+);
+
+421 ià(
+¡©us
+ =ð
+WSA_WAIT_TIMEOUT
+)
+
+426 
+	}
+}
+
+428 
+ev’t_£t
+ *
+
+429 
+	$we_š™
+ (*
+maxev’ts
+, 
+æags
+)
+
+431 
+we_£t
+ *
+wes
+;
+
+433 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_INIT maxev’ts=%d fÏgs=0x%08x", *
+maxev’ts
+, 
+æags
+);
+
+435 
+	`ALLOC_OBJ_CLEAR
+ (
+wes
+, 
+we_£t
+);
+
+438 
+wes
+->
+func
+.
+ä“
+ = 
+we_ä“
+;
+
+439 
+wes
+->
+func
+.
+»£t
+ = 
+we_»£t
+;
+
+440 
+wes
+->
+func
+.
+d–
+ = 
+we_d–
+;
+
+441 
+wes
+->
+func
+.
+ùl
+ = 
+we_ùl
+;
+
+442 
+wes
+->
+func
+.
+wa™
+ = 
+we_wa™
+;
+
+444 ià(
+æags
+ & 
+EVENT_METHOD_FAST
+)
+
+445 
+wes
+->
+ç¡
+ = 
+Œue
+;
+
+446 
+wes
+->
+n_ev’ts
+ = 0;
+
+449 
+	`ASSERT
+ (*
+maxev’ts
+ > 0);
+
+450 
+wes
+->
+ÿ·c™y
+ = 
+	`mš_št
+ (*
+maxev’ts
+ * 2, 
+WSA_MAXIMUM_WAIT_EVENTS
+);
+
+451 *
+maxev’ts
+ = 
+	`mš_št
+ (*maxev’ts, 
+WSA_MAXIMUM_WAIT_EVENTS
+);
+
+454 
+	`ALLOC_ARRAY_CLEAR
+ (
+wes
+->
+ev’ts
+, 
+HANDLE
+, wes->
+ÿ·c™y
+);
+
+457 
+	`ALLOC_ARRAY_CLEAR
+ (
+wes
+->
+e¤
+, 
+ev’t_£t_»tuº
+, wes->
+ÿ·c™y
+);
+
+459 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "WE_INIT maxevents=%d capacity=%d",
+
+460 *
+maxev’ts
+, 
+wes
+->
+ÿ·c™y
+);
+
+462  (
+ev’t_£t
+ *è
+wes
+;
+
+463 
+	}
+}
+
+467 #ià
+EPOLL
+
+
+469 
+	s•_£t
+
+
+471 
+ev’t_£t_funùiÚs
+ 
+	mfunc
+;
+
+472 
+boÞ
+ 
+	mç¡
+;
+
+473 
+	m•fd
+;
+
+474 
+	mmaxev’ts
+;
+
+475 
+•Þl_ev’t
+ *
+	mev’ts
+;
+
+479 
+	$•_ä“
+ (
+ev’t_£t
+ *
+es
+)
+
+481 
+•_£t
+ *
+•s
+ = (•_£ˆ*è
+es
+;
+
+482 
+	`þo£
+ (
+•s
+->
+•fd
+);
+
+483 
+	`ä“
+ (
+•s
+->
+ev’ts
+);
+
+484 
+	`ä“
+ (
+•s
+);
+
+485 
+	}
+}
+
+488 
+	$•_»£t
+ (
+ev’t_£t
+ *
+es
+)
+
+490 cÚ¡ 
+•_£t
+ *
+•s
+ = (•_£ˆ*è
+es
+;
+
+491 
+	`ASSERT
+ (
+•s
+->
+ç¡
+);
+
+492 
+	}
+}
+
+495 
+	$•_d–
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+)
+
+497 
+•Þl_ev’t
+ 
+ev
+;
+
+498 
+•_£t
+ *
+•s
+ = (•_£ˆ*è
+es
+;
+
+500 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "EP_DELƒv=%d", ()
+ev’t
+);
+
+502 
+	`ASSERT
+ (!
+•s
+->
+ç¡
+);
+
+503 
+	`CLEAR
+ (
+ev
+);
+
+504 
+	`•Þl_ùl
+ (
+•s
+->
+•fd
+, 
+EPOLL_CTL_DEL
+, 
+ev’t
+, &
+ev
+);
+
+505 
+	}
+}
+
+508 
+	$•_ùl
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+510 
+•_£t
+ *
+•s
+ = (•_£ˆ*è
+es
+;
+
+511 
+•Þl_ev’t
+ 
+ev
+;
+
+513 
+	`CLEAR
+ (
+ev
+);
+
+515 
+ev
+.
+d©a
+.
+±r
+ = 
+¬g
+;
+
+516 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+517 
+ev
+.
+ev’ts
+ |ð
+EPOLLIN
+;
+
+518 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+519 
+ev
+.
+ev’ts
+ |ð
+EPOLLOUT
+;
+
+521 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "EP_CTL fd=%d„wæags=0x%04xƒv=0x%08x‡rg=" 
+±r_fÜm©
+,
+
+522 ()
+ev’t
+,
+
+523 
+rwæags
+,
+
+524 ()
+ev
+.
+ev’ts
+,
+
+525 (
+±r_ty³
+)
+ev
+.
+d©a
+.
+±r
+);
+
+527 ià(
+	`•Þl_ùl
+ (
+•s
+->
+•fd
+, 
+EPOLL_CTL_MOD
+, 
+ev’t
+, &
+ev
+) < 0)
+
+529 ià(
+”ºo
+ =ð
+ENOENT
+)
+
+531 ià(
+	`•Þl_ùl
+ (
+•s
+->
+•fd
+, 
+EPOLL_CTL_ADD
+, 
+ev’t
+, &
+ev
+) < 0)
+
+532 
+	`msg
+ (
+M_ERR
+, "EVENT:ƒpÞl_ùÈEPOLL_CTL_ADD fažed, sd=%d", ()
+ev’t
+);
+
+535 
+	`msg
+ (
+M_ERR
+, "EVENT:ƒpÞl_ùÈEPOLL_CTL_MOD fažed, sd=%d", ()
+ev’t
+);
+
+537 
+	}
+}
+
+540 
+	$•_wa™
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+542 
+•_£t
+ *
+•s
+ = (•_£ˆ*è
+es
+;
+
+543 
+¡©
+;
+
+545 ià(
+ouŽ’
+ > 
+•s
+->
+maxev’ts
+)
+
+546 
+ouŽ’
+ = 
+•s
+->
+maxev’ts
+;
+
+548 
+¡©
+ = 
+	`•Þl_wa™
+ (
+•s
+->
+•fd
+,ƒps->
+ev’ts
+, 
+ouŽ’
+, 
+	`tv_to_ms_timeout
+ (
+tv
+));
+
+549 
+	`ASSERT
+ (
+¡©
+ <ð
+ouŽ’
+);
+
+551 ià(
+¡©
+ > 0)
+
+553 
+i
+;
+
+554 cÚ¡ 
+•Þl_ev’t
+ *
+ev
+ = 
+•s
+->
+ev’ts
+;
+
+555 
+ev’t_£t_»tuº
+ *
+e¤
+ = 
+out
+;
+
+556 
+i
+ = 0; i < 
+¡©
+; ++i)
+
+558 
+e¤
+->
+rwæags
+ = 0;
+
+559 ià(
+ev
+->
+ev’ts
+ & (
+EPOLLIN
+|
+EPOLLPRI
+|
+EPOLLERR
+|
+EPOLLHUP
+))
+
+560 
+e¤
+->
+rwæags
+ |ð
+EVENT_READ
+;
+
+561 ià(
+ev
+->
+ev’ts
+ & 
+EPOLLOUT
+)
+
+562 
+e¤
+->
+rwæags
+ |ð
+EVENT_WRITE
+;
+
+563 
+e¤
+->
+¬g
+ = 
+ev
+->
+d©a
+.
+±r
+;
+
+564 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "EP_WAIT[%d]„wæags=0x%04xƒv=0x%08x‡rg=" 
+±r_fÜm©
+,
+
+565 
+i
+, 
+e¤
+->
+rwæags
+, 
+ev
+->
+ev’ts
+, (
+±r_ty³
+ëv->
+d©a
+.
+±r
+);
+
+566 ++
+ev
+;
+
+567 ++
+e¤
+;
+
+570  
+¡©
+;
+
+571 
+	}
+}
+
+573 
+ev’t_£t
+ *
+
+574 
+	$•_š™
+ (*
+maxev’ts
+, 
+æags
+)
+
+576 
+•_£t
+ *
+•s
+;
+
+577 
+fd
+;
+
+579 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "EP_INIT maxev’ts=%d fÏgs=0x%08x", *
+maxev’ts
+, 
+æags
+);
+
+582 
+fd
+ = 
+	`•Þl_ü—‹
+ (*
+maxev’ts
+);
+
+583 ià(
+fd
+ < 0)
+
+584  
+NULL
+;
+
+586 
+	`£t_þÛxec
+ (
+fd
+);
+
+588 
+	`ALLOC_OBJ_CLEAR
+ (
+•s
+, 
+•_£t
+);
+
+591 
+•s
+->
+func
+.
+ä“
+ = 
+•_ä“
+;
+
+592 
+•s
+->
+func
+.
+»£t
+ = 
+•_»£t
+;
+
+593 
+•s
+->
+func
+.
+d–
+ = 
+•_d–
+;
+
+594 
+•s
+->
+func
+.
+ùl
+ = 
+•_ùl
+;
+
+595 
+•s
+->
+func
+.
+wa™
+ = 
+•_wa™
+;
+
+598 ià(
+æags
+ & 
+EVENT_METHOD_FAST
+)
+
+599 
+•s
+->
+ç¡
+ = 
+Œue
+;
+
+602 
+	`ASSERT
+ (*
+maxev’ts
+ > 0);
+
+603 
+•s
+->
+maxev’ts
+ = *maxevents;
+
+604 
+	`ALLOC_ARRAY_CLEAR
+ (
+•s
+->
+ev’ts
+, 
+•Þl_ev’t
+,ƒps->
+maxev’ts
+);
+
+607 
+•s
+->
+•fd
+ = 
+fd
+;
+
+609  (
+ev’t_£t
+ *è
+•s
+;
+
+610 
+	}
+}
+
+613 #ià
+POLL
+
+
+615 
+	spo_£t
+
+
+617 
+ev’t_£t_funùiÚs
+ 
+	mfunc
+;
+
+618 
+boÞ
+ 
+	mç¡
+;
+
+619 
+pÞlfd
+ *
+	mev’ts
+;
+
+620 **
+	m¬gs
+;
+
+621 
+	mn_ev’ts
+;
+
+622 
+	mÿ·c™y
+;
+
+626 
+	$po_ä“
+ (
+ev’t_£t
+ *
+es
+)
+
+628 
+po_£t
+ *
+pos
+ = (po_£ˆ*è
+es
+;
+
+629 
+	`ä“
+ (
+pos
+->
+ev’ts
+);
+
+630 
+	`ä“
+ (
+pos
+->
+¬gs
+);
+
+631 
+	`ä“
+ (
+pos
+);
+
+632 
+	}
+}
+
+635 
+	$po_»£t
+ (
+ev’t_£t
+ *
+es
+)
+
+637 
+po_£t
+ *
+pos
+ = (po_£ˆ*è
+es
+;
+
+638 
+	`ASSERT
+ (
+pos
+->
+ç¡
+);
+
+639 
+pos
+->
+n_ev’ts
+ = 0;
+
+640 
+	}
+}
+
+643 
+	$po_d–
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+)
+
+645 
+po_£t
+ *
+pos
+ = (po_£ˆ*è
+es
+;
+
+646 
+i
+;
+
+648 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "PO_DELƒv=%d", ()
+ev’t
+);
+
+650 
+	`ASSERT
+ (!
+pos
+->
+ç¡
+);
+
+651 
+i
+ = 0; i < 
+pos
+->
+n_ev’ts
+; ++i)
+
+653 ià(
+pos
+->
+ev’ts
+[
+i
+].
+fd
+ =ð
+ev’t
+)
+
+655 
+j
+;
+
+656 
+j
+ = 
+i
+; j < 
+pos
+->
+n_ev’ts
+ - 1; ++j)
+
+658 
+pos
+->
+ev’ts
+[
+j
+] =…os->events[j+1];
+
+659 
+pos
+->
+¬gs
+[
+j
+] =…os->args[j+1];
+
+661 --
+pos
+->
+n_ev’ts
+;
+
+665 
+	}
+}
+
+667 
+šlše
+ 
+
+668 
+	$po_£t_pÞlfd_ev’ts
+ (
+pÞlfd
+ *
+pfdp
+, 
+rwæags
+)
+
+670 
+pfdp
+->
+ev’ts
+ = 0;
+
+671 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+672 
+pfdp
+->
+ev’ts
+ |ð
+POLLOUT
+;
+
+673 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+674 
+pfdp
+->
+ev’ts
+ |ð(
+POLLIN
+|
+POLLPRI
+);
+
+675 
+	}
+}
+
+677 
+šlše
+ 
+boÞ
+
+
+678 
+	$po_­³nd_ev’t
+ (
+po_£t
+ *
+pos
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+680 ià(
+pos
+->
+n_ev’ts
+ <…os->
+ÿ·c™y
+)
+
+682 
+pÞlfd
+ *
+pfdp
+ = &
+pos
+->
+ev’ts
+[pos->
+n_ev’ts
+];
+
+683 
+pfdp
+->
+fd
+ = 
+ev’t
+;
+
+684 
+pos
+->
+¬gs
+[pos->
+n_ev’ts
+] = 
+¬g
+;
+
+685 
+	`po_£t_pÞlfd_ev’ts
+ (
+pfdp
+, 
+rwæags
+);
+
+686 ++
+pos
+->
+n_ev’ts
+;
+
+687  
+Œue
+;
+
+690  
+çl£
+;
+
+691 
+	}
+}
+
+694 
+	$po_ùl
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+696 
+po_£t
+ *
+pos
+ = (po_£ˆ*è
+es
+;
+
+698 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "PO_CTL„wæags=0x%04xƒv=%d‡rg=" 
+±r_fÜm©
+,
+
+699 
+rwæags
+, ()
+ev’t
+, (
+±r_ty³
+)
+¬g
+);
+
+701 ià(
+pos
+->
+ç¡
+)
+
+703 ià(!
+	`po_­³nd_ev’t
+ (
+pos
+, 
+ev’t
+, 
+rwæags
+, 
+¬g
+))
+
+704 
+”r
+;
+
+708 
+i
+;
+
+709 
+i
+ = 0; i < 
+pos
+->
+n_ev’ts
+; ++i)
+
+711 
+pÞlfd
+ *
+pfdp
+ = &
+pos
+->
+ev’ts
+[
+i
+];
+
+712 ià(
+pfdp
+->
+fd
+ =ð
+ev’t
+)
+
+714 
+pos
+->
+¬gs
+[
+i
+] = 
+¬g
+;
+
+715 
+	`po_£t_pÞlfd_ev’ts
+ (
+pfdp
+, 
+rwæags
+);
+
+716 
+dÚe
+;
+
+719 ià(!
+	`po_­³nd_ev’t
+ (
+pos
+, 
+ev’t
+, 
+rwæags
+, 
+¬g
+))
+
+720 
+”r
+;
+
+723 
+dÚe
+:
+
+726 
+”r
+:
+
+727 
+	`msg
+ (
+D_EVENT_ERRORS
+, "Error:…oll:�oo many I/O waitƒvents");
+
+728 
+	}
+}
+
+731 
+	$po_wa™
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+733 
+po_£t
+ *
+pos
+ = (po_£ˆ*è
+es
+;
+
+734 
+¡©
+;
+
+736 
+¡©
+ = 
+	`pÞl
+ (
+pos
+->
+ev’ts
+,…os->
+n_ev’ts
+, 
+	`tv_to_ms_timeout
+ (
+tv
+));
+
+738 
+	`ASSERT
+ (
+¡©
+ <ð
+pos
+->
+n_ev’ts
+);
+
+740 ià(
+¡©
+ > 0)
+
+742 
+i
+, 
+j
+=0;
+
+743 cÚ¡ 
+pÞlfd
+ *
+pfdp
+ = 
+pos
+->
+ev’ts
+;
+
+744 
+i
+ = 0; i < 
+pos
+->
+n_ev’ts
+ && 
+j
+ < 
+ouŽ’
+; ++i)
+
+746 ià(
+pfdp
+->
+»v’ts
+ & (
+POLLIN
+|
+POLLPRI
+|
+POLLERR
+|
+POLLHUP
+|
+POLLOUT
+))
+
+748 
+out
+->
+rwæags
+ = 0;
+
+749 ià(
+pfdp
+->
+»v’ts
+ & (
+POLLIN
+|
+POLLPRI
+|
+POLLERR
+|
+POLLHUP
+))
+
+750 
+out
+->
+rwæags
+ |ð
+EVENT_READ
+;
+
+751 ià(
+pfdp
+->
+»v’ts
+ & 
+POLLOUT
+)
+
+752 
+out
+->
+rwæags
+ |ð
+EVENT_WRITE
+;
+
+753 
+out
+->
+¬g
+ = 
+pos
+->
+¬gs
+[
+i
+];
+
+754 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "PO_WAIT[%d,%d] fd=%d„ev=0x%08x„wæags=0x%04x‡rg=" 
+±r_fÜm©
+ " %s",
+
+755 
+i
+, 
+j
+, 
+pfdp
+->
+fd
+,…fdp->
+»v’ts
+, 
+out
+->
+rwæags
+, (
+±r_ty³
+)out->
+¬g
+, 
+pos
+->
+ç¡
+ ? "" : "[scalable]");
+
+756 ++
+out
+;
+
+757 ++
+j
+;
+
+759 ià(
+pfdp
+->
+»v’ts
+)
+
+761 
+	`msg
+ (
+D_EVENT_ERRORS
+, "E¼Ü:…Þl: unknowÀ»v’ts=0x%04x", ()
+pfdp
+->
+»v’ts
+);
+
+763 ++
+pfdp
+;
+
+765  
+j
+;
+
+767  
+¡©
+;
+
+768 
+	}
+}
+
+770 
+ev’t_£t
+ *
+
+771 
+	$po_š™
+ (*
+maxev’ts
+, 
+æags
+)
+
+773 
+po_£t
+ *
+pos
+;
+
+775 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "PO_INIT maxev’ts=%d fÏgs=0x%08x", *
+maxev’ts
+, 
+æags
+);
+
+777 
+	`ALLOC_OBJ_CLEAR
+ (
+pos
+, 
+po_£t
+);
+
+780 
+pos
+->
+func
+.
+ä“
+ = 
+po_ä“
+;
+
+781 
+pos
+->
+func
+.
+»£t
+ = 
+po_»£t
+;
+
+782 
+pos
+->
+func
+.
+d–
+ = 
+po_d–
+;
+
+783 
+pos
+->
+func
+.
+ùl
+ = 
+po_ùl
+;
+
+784 
+pos
+->
+func
+.
+wa™
+ = 
+po_wa™
+;
+
+786 ià(
+æags
+ & 
+EVENT_METHOD_FAST
+)
+
+787 
+pos
+->
+ç¡
+ = 
+Œue
+;
+
+789 
+pos
+->
+n_ev’ts
+ = 0;
+
+792 
+	`ASSERT
+ (*
+maxev’ts
+ > 0);
+
+793 
+pos
+->
+ÿ·c™y
+ = *
+maxev’ts
+;
+
+796 
+	`ALLOC_ARRAY_CLEAR
+ (
+pos
+->
+ev’ts
+, 
+pÞlfd
+,…os->
+ÿ·c™y
+);
+
+799 
+	`ALLOC_ARRAY_CLEAR
+ (
+pos
+->
+¬gs
+, *,…os->
+ÿ·c™y
+);
+
+801  (
+ev’t_£t
+ *è
+pos
+;
+
+802 
+	}
+}
+
+805 #ià
+SELECT
+
+
+807 
+	s£_£t
+
+
+809 
+ev’t_£t_funùiÚs
+ 
+	mfunc
+;
+
+810 
+boÞ
+ 
+	mç¡
+;
+
+811 
+fd_£t
+ 
+	m»adfds
+;
+
+812 
+fd_£t
+ 
+	mwr™efds
+;
+
+813 **
+	m¬gs
+;
+
+814 
+	mmaxfd
+;
+
+815 
+	mÿ·c™y
+;
+
+819 
+	$£_ä“
+ (
+ev’t_£t
+ *
+es
+)
+
+821 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+822 
+	`ä“
+ (
+£s
+->
+¬gs
+);
+
+823 
+	`ä“
+ (
+£s
+);
+
+824 
+	}
+}
+
+827 
+	$£_»£t
+ (
+ev’t_£t
+ *
+es
+)
+
+829 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+830 
+i
+;
+
+831 
+	`ASSERT
+ (
+£s
+->
+ç¡
+);
+
+833 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_RESET");
+
+835 
+	`FD_ZERO
+ (&
+£s
+->
+»adfds
+);
+
+836 
+	`FD_ZERO
+ (&
+£s
+->
+wr™efds
+);
+
+837 
+i
+ = 0; i <ð
+£s
+->
+maxfd
+; ++i)
+
+838 
+£s
+->
+¬gs
+[
+i
+] = 
+NULL
+;
+
+839 
+£s
+->
+maxfd
+ = -1;
+
+840 
+	}
+}
+
+843 
+	$£_d–
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+)
+
+845 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+846 
+	`ASSERT
+ (!
+£s
+->
+ç¡
+);
+
+848 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_DELƒv=%d", ()
+ev’t
+);
+
+850 ià(
+ev’t
+ >ð0 &&ƒv’ˆ< 
+£s
+->
+ÿ·c™y
+)
+
+852 
+	`FD_CLR
+ (
+ev’t
+, &
+£s
+->
+»adfds
+);
+
+853 
+	`FD_CLR
+ (
+ev’t
+, &
+£s
+->
+wr™efds
+);
+
+854 
+£s
+->
+¬gs
+[
+ev’t
+] = 
+NULL
+;
+
+857 
+	`msg
+ (
+D_EVENT_ERRORS
+, "Error: select/se_del:�oo many I/O waitƒvents");
+
+859 
+	}
+}
+
+862 
+	$£_ùl
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+864 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+866 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_CTL„wæags=0x%04xƒv=%d fa¡=%d c­=%d maxfd=%d‡rg=" 
+±r_fÜm©
+,
+
+867 
+rwæags
+, ()
+ev’t
+, ()
+£s
+->
+ç¡
+, ses->
+ÿ·c™y
+, ses->
+maxfd
+, (
+±r_ty³
+)
+¬g
+);
+
+869 ià(
+ev’t
+ >ð0 &&ƒv’ˆ< 
+£s
+->
+ÿ·c™y
+)
+
+871 
+£s
+->
+maxfd
+ = 
+	`max_št
+ (
+ev’t
+, ses->maxfd);
+
+872 
+£s
+->
+¬gs
+[
+ev’t
+] = 
+¬g
+;
+
+873 ià(
+£s
+->
+ç¡
+)
+
+875 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+876 
+	`FD_SET
+ (
+ev’t
+, &
+£s
+->
+»adfds
+);
+
+877 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+878 
+	`FD_SET
+ (
+ev’t
+, &
+£s
+->
+wr™efds
+);
+
+882 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+883 
+	`FD_SET
+ (
+ev’t
+, &
+£s
+->
+»adfds
+);
+
+885 
+	`FD_CLR
+ (
+ev’t
+, &
+£s
+->
+»adfds
+);
+
+886 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+887 
+	`FD_SET
+ (
+ev’t
+, &
+£s
+->
+wr™efds
+);
+
+889 
+	`FD_CLR
+ (
+ev’t
+, &
+£s
+->
+wr™efds
+);
+
+894 
+	`msg
+ (
+D_EVENT_ERRORS
+, "Error: select:�oo many I/O waitƒvents, fd=%d cap=%d",
+
+895 (è
+ev’t
+,
+
+896 
+£s
+->
+ÿ·c™y
+);
+
+898 
+	}
+}
+
+901 
+	$£_wa™_»tuº
+ (
+£_£t
+ *
+£s
+,
+
+902 
+fd_£t
+ *
+»ad
+,
+
+903 
+fd_£t
+ *
+wr™e
+,
+
+904 
+ev’t_£t_»tuº
+ *
+out
+,
+
+905 
+ouŽ’
+)
+
+907 
+i
+, 
+j
+ = 0;
+
+908 
+i
+ = 0; i <ð
+£s
+->
+maxfd
+ && 
+j
+ < 
+ouŽ’
+; ++i)
+
+910 cÚ¡ 
+boÞ
+ 
+r
+ = 
+	`FD_ISSET
+ (
+i
+, 
+»ad
+);
+
+911 cÚ¡ 
+boÞ
+ 
+w
+ = 
+	`FD_ISSET
+ (
+i
+, 
+wr™e
+);
+
+912 ià(
+r
+ || 
+w
+)
+
+914 
+out
+->
+rwæags
+ = 0;
+
+915 ià(
+r
+)
+
+916 
+out
+->
+rwæags
+ |ð
+EVENT_READ
+;
+
+917 ià(
+w
+)
+
+918 
+out
+->
+rwæags
+ |ð
+EVENT_WRITE
+;
+
+919 
+out
+->
+¬g
+ = 
+£s
+->
+¬gs
+[
+i
+];
+
+920 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_WAIT[%d,%d]„wæags=0x%04x‡rg=" 
+±r_fÜm©
+,
+
+921 
+i
+, 
+j
+, 
+out
+->
+rwæags
+, (
+±r_ty³
+)out->
+¬g
+);
+
+922 ++
+out
+;
+
+923 ++
+j
+;
+
+926  
+j
+;
+
+927 
+	}
+}
+
+930 
+	$£_wa™_ç¡
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+932 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+933 
+timev®
+ 
+tv_tmp
+ = *
+tv
+;
+
+934 
+¡©
+;
+
+936 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_WAIT_FAST maxfd=%d�v=%d/%d",
+
+937 
+£s
+->
+maxfd
+,
+
+938 ()
+tv_tmp
+.
+tv_£c
+,
+
+939 ()
+tv_tmp
+.
+tv_u£c
+);
+
+941 
+¡©
+ = 
+	`£Ëù
+ (
+£s
+->
+maxfd
+ + 1, &£s->
+»adfds
+, &£s->
+wr™efds
+, 
+NULL
+, &
+tv_tmp
+);
+
+943 ià(
+¡©
+ > 0)
+
+944 
+¡©
+ = 
+	`£_wa™_»tuº
+ (
+£s
+, &£s->
+»adfds
+, &£s->
+wr™efds
+, 
+out
+, 
+ouŽ’
+);
+
+946  
+¡©
+;
+
+947 
+	}
+}
+
+950 
+	$£_wa™_sÿÏbË
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+952 
+£_£t
+ *
+£s
+ = (£_£ˆ*è
+es
+;
+
+953 
+timev®
+ 
+tv_tmp
+ = *
+tv
+;
+
+954 
+fd_£t
+ 
+»ad
+ = 
+£s
+->
+»adfds
+;
+
+955 
+fd_£t
+ 
+wr™e
+ = 
+£s
+->
+wr™efds
+;
+
+956 
+¡©
+;
+
+958 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_WAIT_SCALEABLE maxfd=%d�v=%d/%d",
+
+959 
+£s
+->
+maxfd
+, ()
+tv_tmp
+.
+tv_£c
+, (év_tmp.
+tv_u£c
+);
+
+961 
+¡©
+ = 
+	`£Ëù
+ (
+£s
+->
+maxfd
+ + 1, &
+»ad
+, &
+wr™e
+, 
+NULL
+, &
+tv_tmp
+);
+
+963 ià(
+¡©
+ > 0)
+
+964 
+¡©
+ = 
+	`£_wa™_»tuº
+ (
+£s
+, &
+»ad
+, &
+wr™e
+, 
+out
+, 
+ouŽ’
+);
+
+966  
+¡©
+;
+
+967 
+	}
+}
+
+969 
+ev’t_£t
+ *
+
+970 
+	$£_š™
+ (*
+maxev’ts
+, 
+æags
+)
+
+972 
+£_£t
+ *
+£s
+;
+
+974 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "SE_INIT maxev’ts=%d fÏgs=0x%08x", *
+maxev’ts
+, 
+æags
+);
+
+976 
+	`ALLOC_OBJ_CLEAR
+ (
+£s
+, 
+£_£t
+);
+
+979 
+£s
+->
+func
+.
+ä“
+ = 
+£_ä“
+;
+
+980 
+£s
+->
+func
+.
+»£t
+ = 
+£_»£t
+;
+
+981 
+£s
+->
+func
+.
+d–
+ = 
+£_d–
+;
+
+982 
+£s
+->
+func
+.
+ùl
+ = 
+£_ùl
+;
+
+983 
+£s
+->
+func
+.
+wa™
+ = 
+£_wa™_sÿÏbË
+;
+
+985 ià(
+æags
+ & 
+EVENT_METHOD_FAST
+)
+
+987 
+£s
+->
+ç¡
+ = 
+Œue
+;
+
+988 
+£s
+->
+func
+.
+wa™
+ = 
+£_wa™_ç¡
+;
+
+992 
+£s
+->
+maxfd
+ = -1;
+
+995 
+	`ASSERT
+ (*
+maxev’ts
+ > 0);
+
+996 *
+maxev’ts
+ = 
+	`mš_št
+ (*maxev’ts, 
+SELECT_MAX_FDS
+);
+
+997 
+£s
+->
+ÿ·c™y
+ = 
+SELECT_MAX_FDS
+;
+
+1000 
+	`ALLOC_ARRAY_CLEAR
+ (
+£s
+->
+¬gs
+, *, ses->
+ÿ·c™y
+);
+
+1002  (
+ev’t_£t
+ *è
+£s
+;
+
+1003 
+	}
+}
+
+1006 
+ev’t_£t
+ *
+
+1007 
+	$ev’t_£t_š™_sim¶e
+ (*
+maxev’ts
+, 
+æags
+)
+
+1009 
+ev’t_£t
+ *
+»t
+ = 
+NULL
+;
+
+1010 #ifdeà
+WIN32
+
+
+1011 
+»t
+ = 
+	`we_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1012 #–ià
+POLL
+ && 
+SELECT
+
+
+1014 ià(
+æags
+ & 
+EVENT_METHOD_US_TIMEOUT
+)
+
+1015 
+»t
+ = 
+	`£_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1017 #ifdeà
+SELECT_PREFERRED_OVER_POLL
+
+
+1018 ià(!
+»t
+)
+
+1019 
+»t
+ = 
+	`£_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1020 ià(!
+»t
+)
+
+1021 
+»t
+ = 
+	`po_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1023 ià(!
+»t
+)
+
+1024 
+»t
+ = 
+	`po_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1025 ià(!
+»t
+)
+
+1026 
+»t
+ = 
+	`£_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1028 #–ià
+POLL
+
+
+1029 
+»t
+ = 
+	`po_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1030 #–ià
+SELECT
+
+
+1031 
+»t
+ = 
+	`£_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1033 #”rÜ 
+At
+ 
+Ëa¡
+ 
+Úe
+ 
+of
+ 
+pÞl
+, 
+£Ëù
+, 
+Ü
+ 
+WSAWa™FÜMuÉ�ËEv’ts
+ 
+mu¡
+ 
+be
+ 
+suµÜ‹d
+ 
+by
+ 
+the
+ 
+k”Ãl
+
+
+1035 
+	`ASSERT
+ (
+»t
+);
+
+1036  
+»t
+;
+
+1037 
+	}
+}
+
+1039 
+ev’t_£t
+ *
+
+1040 
+	$ev’t_£t_š™_sÿÏbË
+ (*
+maxev’ts
+, 
+æags
+)
+
+1042 
+ev’t_£t
+ *
+»t
+ = 
+NULL
+;
+
+1043 #ià
+EPOLL
+
+
+1044 
+»t
+ = 
+	`•_š™
+ (
+maxev’ts
+, 
+æags
+);
+
+1045 ià(!
+»t
+)
+
+1047 
+	`msg
+ (
+M_WARN
+, "Note: sys_epoll API is unavailable, falling back�o…oll/select API");
+
+1048 
+»t
+ = 
+	`ev’t_£t_š™_sim¶e
+ (
+maxev’ts
+, 
+æags
+);
+
+1051 
+»t
+ = 
+	`ev’t_£t_š™_sim¶e
+ (
+maxev’ts
+, 
+æags
+);
+
+1053 
+	`ASSERT
+ (
+»t
+);
+
+1054  
+»t
+;
+
+1055 
+	}
+}
+
+1057 
+ev’t_£t
+ *
+
+1058 
+	$ev’t_£t_š™
+ (*
+maxev’ts
+, 
+æags
+)
+
+1060 ià(
+æags
+ & 
+EVENT_METHOD_FAST
+)
+
+1061  
+	`ev’t_£t_š™_sim¶e
+ (
+maxev’ts
+, 
+æags
+);
+
+1063  
+	`ev’t_£t_š™_sÿÏbË
+ (
+maxev’ts
+, 
+æags
+);
+
+1064 
+	}
+}
+
+	@event.h
+
+25 #iâdeà
+EVENT_H
+
+
+26 
+	#EVENT_H
+
+
+	)
+
+28 
+	~"wš32.h
+"
+
+29 
+	~"sig.h
+"
+
+30 
+	~"³rf.h
+"
+
+36 
+	#EVENT_UNDEF
+ 4
+
+	)
+
+37 
+	#EVENT_READ
+ (1<<0)
+
+	)
+
+38 
+	#EVENT_WRITE
+ (1<<1)
+
+	)
+
+42 
+	#EVENT_METHOD_US_TIMEOUT
+ (1<<0)
+
+	)
+
+43 
+	#EVENT_METHOD_FAST
+ (1<<1)
+
+	)
+
+45 #ifdeà
+WIN32
+
+
+47 cÚ¡ 
+	trw_hªdË
+ *
+	tev’t_t
+;
+
+49 
+	#UNDEFINED_EVENT
+ (
+NULL
+)
+
+	)
+
+53 
+	tev’t_t
+;
+
+55 
+	#UNDEFINED_EVENT
+ (-1)
+
+	)
+
+59 
+	gev’t_£t
+;
+
+60 
+	gev’t_£t_»tuº
+;
+
+62 
+	sev’t_£t_funùiÚs
+
+
+64 (*
+	mä“
+)(
+ev’t_£t
+ *
+	mes
+);
+
+65 (*
+	m»£t
+)(
+ev’t_£t
+ *
+	mes
+);
+
+66 (*
+	md–
+)(
+ev’t_£t
+ *
+	mes
+, 
+ev’t_t
+ 
+	mev’t
+);
+
+67 (*
+	mùl
+)(
+ev’t_£t
+ *
+	mes
+, 
+ev’t_t
+ 
+	mev’t
+, 
+	mrwæags
+, *
+	m¬g
+);
+
+75 (*
+	mwa™
+)(
+ev’t_£t
+ *
+	mes
+, cÚ¡ 
+timev®
+ *
+	mtv
+, 
+ev’t_£t_»tuº
+ *
+	mout
+, 
+	mouŽ’
+);
+
+78 
+	sev’t_£t_»tuº
+
+
+80 
+	mrwæags
+;
+
+81 *
+	m¬g
+;
+
+84 
+	sev’t_£t
+
+
+86 
+ev’t_£t_funùiÚs
+ 
+	mfunc
+;
+
+96 
+ev’t_£t
+ *
+ev’t_£t_š™
+ (*
+maxev’ts
+, 
+æags
+);
+
+98 
+šlše
+ 
+
+99 
+	$ev’t_ä“
+ (
+ev’t_£t
+ *
+es
+)
+
+101 ià(
+es
+)
+
+102 (*
+es
+->
+func
+.
+ä“
+)(es);
+
+103 
+	}
+}
+
+105 
+šlše
+ 
+
+106 
+	$ev’t_»£t
+ (
+ev’t_£t
+ *
+es
+)
+
+108 (*
+es
+->
+func
+.
+»£t
+)(es);
+
+109 
+	}
+}
+
+111 
+šlše
+ 
+
+112 
+	$ev’t_d–
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+)
+
+114 (*
+es
+->
+func
+.
+d–
+)Ós, 
+ev’t
+);
+
+115 
+	}
+}
+
+117 
+šlše
+ 
+
+118 
+	$ev’t_ùl
+ (
+ev’t_£t
+ *
+es
+, 
+ev’t_t
+ 
+ev’t
+, 
+rwæags
+, *
+¬g
+)
+
+120 (*
+es
+->
+func
+.
+ùl
+)Ós, 
+ev’t
+, 
+rwæags
+, 
+¬g
+);
+
+121 
+	}
+}
+
+123 
+šlše
+ 
+
+124 
+	$ev’t_wa™
+ (
+ev’t_£t
+ *
+es
+, cÚ¡ 
+timev®
+ *
+tv
+, 
+ev’t_£t_»tuº
+ *
+out
+, 
+ouŽ’
+)
+
+126 
+»t
+;
+
+127 
+	`³rf_push
+ (
+PERF_IO_WAIT
+);
+
+128 
+»t
+ = (*
+es
+->
+func
+.
+wa™
+)Ós, 
+tv
+, 
+out
+, 
+ouŽ’
+);
+
+129 
+	`³rf_pÝ
+ ();
+
+130  
+»t
+;
+
+131 
+	}
+}
+
+133 
+šlše
+ 
+
+134 
+	$ev’t_£t_»tuº_š™
+ (
+ev’t_£t_»tuº
+ *
+e¤
+)
+
+136 
+e¤
+->
+rwæags
+ = 0;
+
+137 
+e¤
+->
+¬g
+ = 
+NULL
+;
+
+138 
+	}
+}
+
+140 #ifdeà
+WIN32
+
+
+142 
+šlše
+ 
+
+143 
+	$wa™_sigÇl
+ (
+ev’t_£t
+ *
+es
+, *
+¬g
+)
+
+145 ià(
+	`HANDLE_DEFINED
+ (
+wš32_sigÇl
+.
+š
+.
+»ad
+))
+
+146 
+	`ev’t_ùl
+ (
+es
+, &
+wš32_sigÇl
+.
+š
+, 
+EVENT_READ
+, 
+¬g
+);
+
+147 
+	}
+}
+
+151 
+šlše
+ 
+
+152 
+	$wa™_sigÇl
+ (
+ev’t_£t
+ *
+es
+, *
+¬g
+)
+
+154 
+	}
+}
+
+	@fdmisc.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"fdmisc.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+36 
+	~"memdbg.h
+"
+
+39 
+boÞ
+
+
+40 
+	$£t_nÚblock_aùiÚ
+ (
+fd
+)
+
+42 #ifdeà
+WIN32
+
+
+43 
+u_lÚg
+ 
+¬g
+ = 1;
+
+44 ià(
+	`ioùlsock‘
+ (
+fd
+, 
+FIONBIO
+, &
+¬g
+))
+
+45  
+çl£
+;
+
+47 ià(
+	`fúŽ
+ (
+fd
+, 
+F_SETFL
+, 
+O_NONBLOCK
+) < 0)
+
+48  
+çl£
+;
+
+50  
+Œue
+;
+
+51 
+	}
+}
+
+54 
+boÞ
+
+
+55 
+	$£t_þÛxec_aùiÚ
+ (
+fd
+)
+
+57 #iâdeà
+WIN32
+
+
+58 ià(
+	`fúŽ
+ (
+fd
+, 
+F_SETFD
+, 
+FD_CLOEXEC
+) < 0)
+
+59  
+çl£
+;
+
+61  
+Œue
+;
+
+62 
+	}
+}
+
+66 
+	$£t_nÚblock
+ (
+fd
+)
+
+68 ià(!
+	`£t_nÚblock_aùiÚ
+ (
+fd
+))
+
+69 
+	`msg
+ (
+M_ERR
+, "Set socket�o‚on-blocking mode failed");
+
+70 
+	}
+}
+
+74 
+	$£t_þÛxec
+ (
+fd
+)
+
+76 ià(!
+	`£t_þÛxec_aùiÚ
+ (
+fd
+))
+
+77 
+	`msg
+ (
+M_ERR
+, "Set FD_CLOEXEC flag on file descriptor failed");
+
+78 
+	}
+}
+
+	@fdmisc.h
+
+25 
+	~"basic.h
+"
+
+27 
+boÞ
+ 
+£t_nÚblock_aùiÚ
+ (
+fd
+);
+
+28 
+boÞ
+ 
+£t_þÛxec_aùiÚ
+ (
+fd
+);
+
+30 
+£t_nÚblock
+ (
+fd
+);
+
+31 
+£t_þÛxec
+ (
+fd
+);
+
+	@forward-inline.h
+
+25 #iâdeà
+FORWARD_INLINE_H
+
+
+26 
+	#FORWARD_INLINE_H
+
+
+	)
+
+35 
+šlše
+ 
+
+36 
+	$check_Žs
+ (
+cÚ‹xt
+ *
+c
+)
+
+38 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+39 
+	`check_Žs_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+40 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+41 
+	`check_Žs_dowÜk
+ (
+c
+);
+
+43 
+	}
+}
+
+49 
+šlše
+ 
+
+50 
+	$check_Žs_”rÜs
+ (
+cÚ‹xt
+ *
+c
+)
+
+52 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+53 
+	`check_Žs_”rÜs_co
+ (
+cÚ‹xt
+ *
+c
+);
+
+54 
+	`check_Žs_”rÜs_nco
+ (
+cÚ‹xt
+ *
+c
+);
+
+55 ià(
+c
+->
+c2
+.
+Žs_muÉi
+ && c->c2.
+Žs_ex™_sigÇl
+)
+
+57 ià(
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+c
+->
+c2
+.
+lšk_sock‘
+))
+
+59 ià(
+c
+->
+c2
+.
+Žs_muÉi
+->
+n_soá_”rÜs
+)
+
+60 
+	`check_Žs_”rÜs_co
+ (
+c
+);
+
+64 ià(
+c
+->
+c2
+.
+Žs_muÉi
+->
+n_h¬d_”rÜs
+)
+
+65 
+	`check_Žs_”rÜs_nco
+ (
+c
+);
+
+69 
+	}
+}
+
+75 
+šlše
+ 
+
+76 
+	$check_šcomšg_cÚŒÞ_chªÃl
+ (
+cÚ‹xt
+ *
+c
+)
+
+78 #ià
+P2MP
+
+
+79 
+	`check_šcomšg_cÚŒÞ_chªÃl_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+80 ià(
+	`Žs_‹¡_·ylßd_Ën
+ (
+c
+->
+c2
+.
+Žs_muÉi
+) > 0)
+
+81 
+	`check_šcomšg_cÚŒÞ_chªÃl_dowÜk
+ (
+c
+);
+
+83 
+	}
+}
+
+89 
+šlše
+ 
+
+90 
+	$check_cÚÃùiÚ_e¡ablished
+ (
+cÚ‹xt
+ *
+c
+)
+
+92 
+	`check_cÚÃùiÚ_e¡ablished_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+93 ià(
+	`ev’t_timeout_defšed
+ (&
+c
+->
+c2
+.
+wa™_fÜ_cÚÃù
+))
+
+94 
+	`check_cÚÃùiÚ_e¡ablished_dowÜk
+ (
+c
+);
+
+95 
+	}
+}
+
+100 
+šlše
+ 
+
+101 
+	$check_add_rou‹s
+ (
+cÚ‹xt
+ *
+c
+)
+
+103 
+	`check_add_rou‹s_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+104 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+rou‹_wakeup
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+105 
+	`check_add_rou‹s_dowÜk
+ (
+c
+);
+
+106 
+	}
+}
+
+111 
+šlše
+ 
+
+112 
+	$check_šaùiv™y_timeout
+ (
+cÚ‹xt
+ *
+c
+)
+
+114 
+	`check_šaùiv™y_timeout_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+116 ià(
+c
+->
+ÝtiÚs
+.
+šaùiv™y_timeout
+
+
+117 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+šaùiv™y_š‹rv®
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+118 
+	`check_šaùiv™y_timeout_dowÜk
+ (
+c
+);
+
+119 
+	}
+}
+
+121 #ià
+P2MP
+
+
+123 
+šlše
+ 
+
+124 
+	$check_£rv”_pÞl_timeout
+ (
+cÚ‹xt
+ *
+c
+)
+
+126 
+	`check_£rv”_pÞl_timeout_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+128 ià(
+c
+->
+ÝtiÚs
+.
+£rv”_pÞl_timeout
+
+
+129 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+£rv”_pÞl_š‹rv®
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+130 
+	`check_£rv”_pÞl_timeout_dowÜk
+ (
+c
+);
+
+131 
+	}
+}
+
+136 
+šlše
+ 
+
+137 
+	$check_scheduËd_ex™
+ (
+cÚ‹xt
+ *
+c
+)
+
+139 
+	`check_scheduËd_ex™_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+141 ià(
+	`ev’t_timeout_defšed
+ (&
+c
+->
+c2
+.
+scheduËd_ex™
+))
+
+143 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+scheduËd_ex™
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+144 
+	`check_scheduËd_ex™_dowÜk
+ (
+c
+);
+
+146 
+	}
+}
+
+152 
+šlše
+ 
+
+153 
+	$check_¡©us_fže
+ (
+cÚ‹xt
+ *
+c
+)
+
+155 
+	`check_¡©us_fže_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+157 ià(
+c
+->
+c1
+.
+¡©us_ou�ut
+)
+
+159 ià(
+	`¡©us_Œigg”_tv
+ (
+c
+->
+c1
+.
+¡©us_ou�ut
+, &c->
+c2
+.
+timev®
+))
+
+160 
+	`check_¡©us_fže_dowÜk
+ (
+c
+);
+
+162 
+	}
+}
+
+164 #ifdeà
+ENABLE_FRAGMENT
+
+
+168 
+šlše
+ 
+
+169 
+	$check_äagm’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+171 
+	`check_äagm’t_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+172 ià(
+c
+->
+c2
+.
+äagm’t
+)
+
+173 
+	`check_äagm’t_dowÜk
+ (
+c
+);
+
+174 
+	}
+}
+
+177 #ià
+P2MP
+
+
+182 
+šlše
+ 
+
+183 
+	$check_push_»que¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+185 
+	`check_push_»que¡_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+186 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+push_»que¡_š‹rv®
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+187 
+	`check_push_»que¡_dowÜk
+ (
+c
+);
+
+188 
+	}
+}
+
+192 #ifdeà
+ENABLE_CRYPTO
+
+
+196 
+šlše
+ 
+
+197 
+	$check_·ck‘_id_³rsi¡_æush
+ (
+cÚ‹xt
+ *
+c
+)
+
+199 ià(
+	`·ck‘_id_³rsi¡_’abËd
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+)
+
+200 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+·ck‘_id_³rsi¡_š‹rv®
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+201 
+	`·ck‘_id_³rsi¡_§ve
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+);
+
+202 
+	}
+}
+
+209 
+šlše
+ 
+
+210 
+	$cÚ‹xt_immedŸ‹_»scheduË
+ (
+cÚ‹xt
+ *
+c
+)
+
+212 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 0;
+
+213 
+c
+->
+c2
+.
+timev®
+.
+tv_u£c
+ = 0;
+
+214 
+	}
+}
+
+216 
+šlše
+ 
+
+217 
+	$cÚ‹xt_»scheduË_£c
+ (
+cÚ‹xt
+ *
+c
+, 
+£c
+)
+
+219 ià(
+£c
+ < 0)
+
+220 
+£c
+ = 0;
+
+221 ià(
+£c
+ < 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+)
+
+223 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 
+£c
+;
+
+224 
+c
+->
+c2
+.
+timev®
+.
+tv_u£c
+ = 0;
+
+226 
+	}
+}
+
+228 
+šlše
+ 
+lšk_sock‘_šfo
+ *
+
+229 
+	$g‘_lšk_sock‘_šfo
+ (
+cÚ‹xt
+ *
+c
+)
+
+231 ià(
+c
+->
+c2
+.
+lšk_sock‘_šfo
+)
+
+232  
+c
+->
+c2
+.
+lšk_sock‘_šfo
+;
+
+234  &
+c
+->
+c2
+.
+lšk_sock‘
+->
+šfo
+;
+
+235 
+	}
+}
+
+237 
+šlše
+ 
+
+238 
+	$»gi¡”_aùiv™y
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+size
+)
+
+240 ià(
+c
+->
+ÝtiÚs
+.
+šaùiv™y_timeout
+)
+
+242 
+c
+->
+c2
+.
+šaùiv™y_by‹s
+ +ð
+size
+;
+
+243 ià(
+c
+->
+c2
+.
+šaùiv™y_by‹s
+ >ðc->
+ÝtiÚs
+.
+šaùiv™y_mšimum_by‹s
+)
+
+245 
+c
+->
+c2
+.
+šaùiv™y_by‹s
+ = 0;
+
+246 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+šaùiv™y_š‹rv®
+);
+
+249 
+	}
+}
+
+255 
+šlše
+ 
+
+256 
+	$p2p_iow_æags
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+258 
+æags
+ = (
+IOW_SHAPER
+|
+IOW_CHECK_RESIDUAL
+|
+IOW_FRAG
+|
+IOW_READ
+|
+IOW_WAIT_SIGNAL
+);
+
+259 ià(
+c
+->
+c2
+.
+to_lšk
+.
+Ën
+ > 0)
+
+260 
+æags
+ |ð
+IOW_TO_LINK
+;
+
+261 ià(
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ > 0)
+
+262 
+æags
+ |ð
+IOW_TO_TUN
+;
+
+263  
+æags
+;
+
+264 
+	}
+}
+
+270 
+šlše
+ 
+
+271 
+	$io_wa™
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+273 
+	`io_wa™_dowÜk
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+);
+
+275 ià(
+c
+->
+c2
+.
+ç¡_io
+ && (
+æags
+ & (
+IOW_TO_TUN
+|
+IOW_TO_LINK
+|
+IOW_MBUF
+)))
+
+278 
+»t
+ = 0;
+
+279 ià(
+æags
+ & 
+IOW_TO_TUN
+)
+
+280 
+»t
+ |ð
+TUN_WRITE
+;
+
+281 ià(
+æags
+ & (
+IOW_TO_LINK
+|
+IOW_MBUF
+))
+
+282 
+»t
+ |ð
+SOCKET_WRITE
+;
+
+283 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ = 
+»t
+;
+
+288 
+	`io_wa™_dowÜk
+ (
+c
+, 
+æags
+);
+
+290 
+	}
+}
+
+292 
+	#CONNECTION_ESTABLISHED
+(
+c
+è(
+	`g‘_lšk_sock‘_šfo
+(c)->
+cÚÃùiÚ_e¡ablished
+)
+
+	)
+
+	@forward.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"fÜw¬d.h
+"
+
+34 
+	~"š™.h
+"
+
+35 
+	~"push.h
+"
+
+36 
+	~"g»mlš.h
+"
+
+37 
+	~"mss.h
+"
+
+38 
+	~"ev’t.h
+"
+
+39 
+	~"ps.h
+"
+
+40 
+	~"dhý.h
+"
+
+41 
+	~"commÚ.h
+"
+
+43 
+	~"memdbg.h
+"
+
+45 
+	~"fÜw¬d-šlše.h
+"
+
+46 
+	~"occ-šlše.h
+"
+
+47 
+	~"pšg-šlše.h
+"
+
+48 
+	~"m¡©s.h
+"
+
+50 
+couÁ”_ty³
+ 
+	glšk_»ad_by‹s_glob®
+;
+
+51 
+couÁ”_ty³
+ 
+	glšk_wr™e_by‹s_glob®
+;
+
+55 #ifdeà
+ENABLE_DEBUG
+
+
+58 
+	$wa™_¡©us_¡ršg
+ (
+cÚ‹xt
+ *
+c
+, 
+gc_¬’a
+ *
+gc
+)
+
+60 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+61 
+	`buf_´štf
+ (&
+out
+, "I/O WAIT %s|%s|%s|%s %s",
+
+62 
+	`tun_¡©
+ (
+c
+->
+c1
+.
+tuÁ­
+, 
+EVENT_READ
+, 
+gc
+),
+
+63 
+	`tun_¡©
+ (
+c
+->
+c1
+.
+tuÁ­
+, 
+EVENT_WRITE
+, 
+gc
+),
+
+64 
+	`sock‘_¡©
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, 
+EVENT_READ
+, 
+gc
+),
+
+65 
+	`sock‘_¡©
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, 
+EVENT_WRITE
+, 
+gc
+),
+
+66 
+	`tv_¡ršg
+ (&
+c
+->
+c2
+.
+timev®
+, 
+gc
+));
+
+67  
+	`BSTR
+ (&
+out
+);
+
+68 
+	}
+}
+
+71 
+	$show_wa™_¡©us
+ (
+cÚ‹xt
+ *
+c
+)
+
+73 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+74 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "%s", 
+	`wa™_¡©us_¡ršg
+ (
+c
+, &
+gc
+));
+
+75 
+	`gc_ä“
+ (&
+gc
+);
+
+76 
+	}
+}
+
+90 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+92 
+	$check_Žs_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+94 
+š‹rv®_t
+ 
+wakeup
+ = 
+BIG_TIMEOUT
+;
+
+96 ià(
+	`š‹rv®_‹¡
+ (&
+c
+->
+c2
+.
+tmp_št
+))
+
+98 cÚ¡ 
+tmp_¡©us
+ = 
+Žs_muÉi_´oûss
+
+
+99 (
+c
+->
+c2
+.
+Žs_muÉi
+, &c->c2.
+to_lšk
+, &c->c2.
+to_lšk_addr
+,
+
+100 
+	`g‘_lšk_sock‘_šfo
+ (
+c
+), &
+wakeup
+);
+
+101 ià(
+tmp_¡©us
+ =ð
+TLSMP_ACTIVE
+)
+
+103 
+	`upd©e_time
+ ();
+
+104 
+	`š‹rv®_aùiÚ
+ (&
+c
+->
+c2
+.
+tmp_št
+);
+
+106 ià(
+tmp_¡©us
+ =ð
+TLSMP_KILL
+)
+
+108 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGTERM
+, "auth-control-exit");
+
+111 
+	`š‹rv®_futu»_Œigg”
+ (&
+c
+->
+c2
+.
+tmp_št
+, 
+wakeup
+);
+
+114 
+	`š‹rv®_scheduË_wakeup
+ (&
+c
+->
+c2
+.
+tmp_št
+, &
+wakeup
+);
+
+116 ià(
+wakeup
+)
+
+117 
+	`cÚ‹xt_»scheduË_£c
+ (
+c
+, 
+wakeup
+);
+
+118 
+	}
+}
+
+121 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+124 
+	$check_Žs_”rÜs_co
+ (
+cÚ‹xt
+ *
+c
+)
+
+126 
+	`msg
+ (
+D_STREAM_ERRORS
+, "Fatal TLSƒrror (check_tls_errors_co),„estarting");
+
+127 
+	`»gi¡”_sigÇl
+ (
+c
+, c->
+c2
+.
+Žs_ex™_sigÇl
+, "tls-error");
+
+128 
+	}
+}
+
+131 
+	$check_Žs_”rÜs_nco
+ (
+cÚ‹xt
+ *
+c
+)
+
+133 
+	`»gi¡”_sigÇl
+ (
+c
+, c->
+c2
+.
+Žs_ex™_sigÇl
+, "tls-error");
+
+134 
+	}
+}
+
+138 #ià
+P2MP
+
+
+145 
+	$check_šcomšg_cÚŒÞ_chªÃl_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+147 cÚ¡ 
+Ën
+ = 
+	`Žs_‹¡_·ylßd_Ën
+ (
+c
+->
+c2
+.
+Žs_muÉi
+);
+
+148 ià(
+Ën
+)
+
+150 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+151 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf_gc
+ (
+Ën
+, &
+gc
+);
+
+152 ià(
+	`Žs_»c_·ylßd
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, &
+buf
+))
+
+155 
+	`buf_nuÎ_‹rmš©e
+ (&
+buf
+);
+
+158 
+	`¡ršg_mod
+ (
+	`BSTR
+ (&
+buf
+), 
+CC_PRINT
+, 
+CC_CRLF
+, 0);
+
+160 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (&
+buf
+, "AUTH_FAILED"))
+
+161 
+	`»ûive_auth_çžed
+ (
+c
+, &
+buf
+);
+
+162 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (&
+buf
+, "PUSH_"))
+
+163 
+	`šcomšg_push_mes§ge
+ (
+c
+, &
+buf
+);
+
+164 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (&
+buf
+, "RESTART"))
+
+165 
+	`£rv”_pushed_sigÇl
+ (
+c
+, &
+buf
+, 
+Œue
+, 7);
+
+166 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (&
+buf
+, "HALT"))
+
+167 
+	`£rv”_pushed_sigÇl
+ (
+c
+, &
+buf
+, 
+çl£
+, 4);
+
+169 
+	`msg
+ (
+D_PUSH_ERRORS
+, "WARNING: Reûived unknowÀcÚŒÞ mes§ge: %s", 
+	`BSTR
+ (&
+buf
+));
+
+173 
+	`msg
+ (
+D_PUSH_ERRORS
+, "WARNING: Receive control message failed");
+
+176 
+	`gc_ä“
+ (&
+gc
+);
+
+178 
+	}
+}
+
+184 
+	$check_push_»que¡_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+186 
+	`£nd_push_»que¡
+ (
+c
+);
+
+189 
+	`ev’t_timeout_modify_wakeup
+ (&
+c
+->
+c2
+.
+push_»que¡_š‹rv®
+, 
+PUSH_REQUEST_INTERVAL
+);
+
+190 
+	}
+}
+
+198 
+	$check_cÚÃùiÚ_e¡ablished_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+200 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+wa™_fÜ_cÚÃù
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+202 ià(
+	`CONNECTION_ESTABLISHED
+ (
+c
+))
+
+204 #ià
+P2MP
+
+
+206 ià(
+c
+->
+c2
+.
+Žs_muÉi
+ && c->
+ÝtiÚs
+.
+puÎ
+)
+
+208 #ifdeà
+ENABLE_MANAGEMENT
+
+
+209 ià(
+mªagem’t
+)
+
+211 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+212 
+OPENVPN_STATE_GET_CONFIG
+,
+
+213 
+NULL
+,
+
+219 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+push_»que¡_š‹rv®
+, 1, 
+now
+);
+
+220 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+225 
+	`do_up
+ (
+c
+, 
+çl£
+, 0);
+
+228 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+wa™_fÜ_cÚÃù
+);
+
+231 
+	}
+}
+
+238 
+boÞ
+
+
+239 
+	$£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+¡r
+, 
+msgËv–
+)
+
+241 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+242 ià(
+c
+->
+c2
+.
+Žs_muÉi
+) {
+
+243 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+244 
+boÞ
+ 
+¡©
+;
+
+247 
+¡©
+ = 
+	`Žs_£nd_·ylßd
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, (
+ušt8_t
+*è
+¡r
+, 
+	`¡¾’
+ (str) + 1);
+
+255 
+	`š‹rv®_aùiÚ
+ (&
+c
+->
+c2
+.
+tmp_št
+);
+
+256 
+	`cÚ‹xt_immedŸ‹_»scheduË
+ (
+c
+);
+
+258 
+	`msg
+ (
+msgËv–
+, "SENT CONTROL [%s]: '%s' (status=%d)",
+
+259 
+	`Žs_commÚ_Çme
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+260 
+	`§n™ize_cÚŒÞ_mes§ge
+ (
+¡r
+, &
+gc
+),
+
+261 (è
+¡©
+);
+
+263 
+	`gc_ä“
+ (&
+gc
+);
+
+264  
+¡©
+;
+
+267  
+Œue
+;
+
+268 
+	}
+}
+
+275 
+	$check_add_rou‹s_aùiÚ
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+boÞ
+ 
+”rÜs
+)
+
+277 
+	`do_rou‹
+ (&
+c
+->
+ÝtiÚs
+, c->
+c1
+.
+rou‹_li¡
+, c->c1.
+rou‹_�v6_li¡
+,
+
+278 
+c
+->
+c1
+.
+tuÁ­
+, c->
+¶ugšs
+, c->
+c2
+.
+es
+);
+
+279 
+	`upd©e_time
+ ();
+
+280 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+rou‹_wakeup
+);
+
+281 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+rou‹_wakeup_expœe
+);
+
+282 
+	`š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+c
+, 
+”rÜs
+ ? 
+ISC_ERRORS
+ : 0);
+
+283 
+	}
+}
+
+286 
+	$check_add_rou‹s_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+288 ià(
+	`‹¡_rou‹s
+ (
+c
+->
+c1
+.
+rou‹_li¡
+, c->c1.
+tuÁ­
+))
+
+290 
+	`check_add_rou‹s_aùiÚ
+ (
+c
+, 
+çl£
+);
+
+292 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+rou‹_wakeup_expœe
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+294 
+	`check_add_rou‹s_aùiÚ
+ (
+c
+, 
+Œue
+);
+
+298 
+	`msg
+ (
+D_ROUTE
+, "Route: Waiting for TUN/TAP interface�o come up...");
+
+299 ià(
+c
+->
+c1
+.
+tuÁ­
+)
+
+301 ià(!
+	`tun_¡ªdby
+ (
+c
+->
+c1
+.
+tuÁ­
+))
+
+303 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGHUP
+, "ip-fail");
+
+304 
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+ = 10;
+
+305 #ifdeà
+WIN32
+
+
+306 
+	`show_rou‹s
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+307 
+	`show_ad­‹rs
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+311 
+	`upd©e_time
+ ();
+
+312 ià(
+c
+->
+c2
+.
+rou‹_wakeup
+.
+n
+ != 1)
+
+313 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+rou‹_wakeup
+, 1, 
+now
+);
+
+314 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+pšg_»c_š‹rv®
+);
+
+316 
+	}
+}
+
+322 
+	$check_šaùiv™y_timeout_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+324 
+	`msg
+ (
+M_INFO
+, "Inactivity�imeout (--inactive),ƒxiting");
+
+325 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGTERM
+, "inactive");
+
+326 
+	}
+}
+
+328 #ià
+P2MP
+
+
+331 
+	$check_£rv”_pÞl_timeout_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+333 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+£rv”_pÞl_š‹rv®
+);
+
+334 
+	`ASSERT
+(
+c
+->
+c2
+.
+Žs_muÉi
+);
+
+335 ià(!
+	`Žs_š™Ÿl_·ck‘_»ûived
+ (
+c
+->
+c2
+.
+Žs_muÉi
+))
+
+337 
+	`msg
+ (
+M_INFO
+, "Server…oll�imeout,„estarting");
+
+338 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGUSR1
+, "server_poll");
+
+339 
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+ = -1;
+
+341 
+	}
+}
+
+346 
+boÞ
+
+
+347 
+	$scheduË_ex™
+ (
+cÚ‹xt
+ *
+c
+)
+
+349 cÚ¡ 
+n_£cÚds
+ = 
+c
+->
+ÝtiÚs
+.
+scheduËd_ex™_š‹rv®
+;
+
+351 ià(
+	`ev’t_timeout_defšed
+(&
+c
+->
+c2
+.
+scheduËd_ex™
+))
+
+353  
+çl£
+;
+
+355 
+	`Žs_£t_sšgË_£ssiÚ
+ (
+c
+->
+c2
+.
+Žs_muÉi
+);
+
+356 
+	`upd©e_time
+ ();
+
+357 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+358 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+scheduËd_ex™
+, 
+n_£cÚds
+, 
+now
+);
+
+359 
+c
+->
+c2
+.
+scheduËd_ex™_sigÇl
+ = 
+SIGTERM
+;
+
+360 
+	`msg
+ (
+D_SCHED_EXIT
+, "D–ayedƒx™ iÀ%d secÚds", 
+n_£cÚds
+);
+
+361  
+Œue
+;
+
+362 
+	}
+}
+
+368 
+	$check_scheduËd_ex™_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+370 
+	`»gi¡”_sigÇl
+ (
+c
+, c->
+c2
+.
+scheduËd_ex™_sigÇl
+, "delayed-exit");
+
+371 
+	}
+}
+
+379 
+	$check_¡©us_fže_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+381 ià(
+c
+->
+c1
+.
+¡©us_ou�ut
+)
+
+382 
+	`´št_¡©us
+ (
+c
+, c->
+c1
+.
+¡©us_ou�ut
+);
+
+383 
+	}
+}
+
+385 #ifdeà
+ENABLE_FRAGMENT
+
+
+390 
+	$check_äagm’t_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+392 
+lšk_sock‘_šfo
+ *
+lsi
+ = 
+	`g‘_lšk_sock‘_šfo
+ (
+c
+);
+
+395 ià(
+lsi
+->
+mtu_chªged
+ && 
+c
+->
+c2
+.
+�v4_tun
+)
+
+397 
+	`äame_adju¡_·th_mtu
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+, c->c2.
+lšk_sock‘
+->
+mtu
+,
+
+398 
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+);
+
+399 
+lsi
+->
+mtu_chªged
+ = 
+çl£
+;
+
+402 ià(
+	`äagm’t_outgošg_defšed
+ (
+c
+->
+c2
+.
+äagm’t
+))
+
+404 ià(!
+c
+->
+c2
+.
+to_lšk
+.
+Ën
+)
+
+407 
+	`ASSERT
+ (
+	`äagm’t_»ady_to_£nd
+ (
+c
+->
+c2
+.
+äagm’t
+, &c->c2.
+buf
+, &c->c2.
+äame_äagm’t
+));
+
+408 
+	`’üy±_sign
+ (
+c
+, 
+çl£
+);
+
+412 
+	`äagm’t_hou£k“pšg
+ (
+c
+->
+c2
+.
+äagm’t
+, &c->c2.
+äame_äagm’t
+, &c->c2.
+timev®
+);
+
+413 
+	}
+}
+
+419 
+šlše
+ 
+
+420 
+	$bufãr_tuºov”
+ (cÚ¡ 
+ušt8_t
+ *
+Üig_buf
+, 
+bufãr
+ *
+de¡_¡ub
+, bufã¸*
+¤c_¡ub
+, bufã¸*
+¡Üage
+)
+
+422 ià(
+Üig_buf
+ =ð
+¤c_¡ub
+->
+d©a
+ && src_¡ub->d©¨!ð
+¡Üage
+->data)
+
+424 
+	`buf_assign
+ (
+¡Üage
+, 
+¤c_¡ub
+);
+
+425 *
+de¡_¡ub
+ = *
+¡Üage
+;
+
+429 *
+de¡_¡ub
+ = *
+¤c_¡ub
+;
+
+431 
+	}
+}
+
+439 
+	$’üy±_sign
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+comp_äag
+)
+
+441 
+cÚ‹xt_bufãrs
+ *
+b
+ = 
+c
+->
+c2
+.
+bufãrs
+;
+
+442 cÚ¡ 
+ušt8_t
+ *
+Üig_buf
+ = 
+c
+->
+c2
+.
+buf
+.
+d©a
+;
+
+444 #ià
+P2MP_SERVER
+
+
+449 ià(
+c
+->
+c2
+.
+cÚ‹xt_auth
+ !ð
+CAS_SUCCEEDED
+)
+
+450 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+453 ià(
+comp_äag
+)
+
+455 #ifdeà
+ENABLE_LZO
+
+
+457 ià(
+	`lzo_defšed
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+))
+
+458 
+	`lzo_com´ess
+ (&
+c
+->
+c2
+.
+buf
+, 
+b
+->
+lzo_com´ess_buf
+, &c->c2.
+lzo_compwÜk
+, &c->c2.
+äame
+);
+
+460 #ifdeà
+ENABLE_FRAGMENT
+
+
+461 ià(
+c
+->
+c2
+.
+äagm’t
+)
+
+462 
+	`äagm’t_outgošg
+ (
+c
+->
+c2
+.
+äagm’t
+, &c->c2.
+buf
+, &c->c2.
+äame_äagm’t
+);
+
+466 #ifdeà
+ENABLE_CRYPTO
+
+
+467 #ifdeà
+ENABLE_SSL
+
+
+472 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+474 
+	`Žs_´e_’üy±
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, &c->c2.
+buf
+, &c->c2.
+üy±o_ÝtiÚs
+);
+
+482 
+	`Ý’v²_’üy±
+ (&
+c
+->
+c2
+.
+buf
+, 
+b
+->
+’üy±_buf
+, &c->c2.
+üy±o_ÝtiÚs
+, &c->c2.
+äame
+);
+
+487 
+	`lšk_sock‘_g‘_outgošg_addr
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`g‘_lšk_sock‘_šfo
+ (c),
+
+488 &
+c
+->
+c2
+.
+to_lšk_addr
+);
+
+489 #ifdeà
+ENABLE_CRYPTO
+
+
+490 #ifdeà
+ENABLE_SSL
+
+
+498 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+500 
+	`Žs_po¡_’üy±
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, &c->c2.
+buf
+);
+
+506 
+	`bufãr_tuºov”
+ (
+Üig_buf
+, &
+c
+->
+c2
+.
+to_lšk
+, &c->c2.
+buf
+, &
+b
+->
+»ad_tun_buf
+);
+
+507 
+	}
+}
+
+513 
+	$´oûss_cßr£_tim”s
+ (
+cÚ‹xt
+ *
+c
+)
+
+515 #ifdeà
+ENABLE_CRYPTO
+
+
+518 
+	`check_·ck‘_id_³rsi¡_æush
+ (
+c
+);
+
+522 
+	`check_¡©us_fže
+ (
+c
+);
+
+525 
+	`check_cÚÃùiÚ_e¡ablished
+ (
+c
+);
+
+527 #ià
+P2MP
+
+
+529 
+	`check_push_»que¡
+ (
+c
+);
+
+532 #ifdeà
+PLUGIN_PF
+
+
+533 
+	`pf_check_»lßd
+ (
+c
+);
+
+537 
+	`check_add_rou‹s
+ (
+c
+);
+
+540 
+	`check_šaùiv™y_timeout
+ (
+c
+);
+
+541 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+545 
+	`check_pšg_»¡¬t
+ (
+c
+);
+
+546 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+549 #ià
+P2MP
+
+
+550 
+	`check_£rv”_pÞl_timeout
+ (
+c
+);
+
+551 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+554 
+	`check_scheduËd_ex™
+ (
+c
+);
+
+555 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+559 #ifdeà
+ENABLE_OCC
+
+
+561 
+	`check_£nd_occ_»q
+ (
+c
+);
+
+564 
+	`check_£nd_occ_lßd_‹¡
+ (
+c
+);
+
+567 ià(
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+)
+
+568 
+	`´oûss_ex¶ic™_ex™_nÙifiÿtiÚ_tim”_wakeup
+ (
+c
+);
+
+572 
+	`check_pšg_£nd
+ (
+c
+);
+
+573 
+	}
+}
+
+576 
+	$check_cßr£_tim”s_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+578 cÚ¡ 
+timev®
+ 
+§ve
+ = 
+c
+->
+c2
+.timeval;
+
+579 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 
+BIG_TIMEOUT
+;
+
+580 
+c
+->
+c2
+.
+timev®
+.
+tv_u£c
+ = 0;
+
+581 
+	`´oûss_cßr£_tim”s
+ (
+c
+);
+
+582 
+c
+->
+c2
+.
+cßr£_tim”_wakeup
+ = 
+now
+ + c->c2.
+timev®
+.
+tv_£c
+;
+
+584 
+	`dmsg
+ (
+D_INTERVAL
+, "TIMER: cßr£�im” wakeu°%d secÚds", (è
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+);
+
+587 ià(
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ > 
+§ve
+.tv_sec)
+
+588 
+c
+->
+c2
+.
+timev®
+ = 
+§ve
+;
+
+589 
+	}
+}
+
+591 
+šlše
+ 
+
+592 
+	$check_cßr£_tim”s
+ (
+cÚ‹xt
+ *
+c
+)
+
+594 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+595 ià(
+loÿl_now
+ >ð
+c
+->
+c2
+.
+cßr£_tim”_wakeup
+)
+
+596 
+	`check_cßr£_tim”s_dowÜk
+ (
+c
+);
+
+598 
+	`cÚ‹xt_»scheduË_£c
+ (
+c
+, c->
+c2
+.
+cßr£_tim”_wakeup
+ - 
+loÿl_now
+);
+
+599 
+	}
+}
+
+602 
+	$check_timeout_¿ndom_compÚ’t_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+604 cÚ¡ 
+upd©e_š‹rv®
+ = 10;
+
+605 
+c
+->
+c2
+.
+upd©e_timeout_¿ndom_compÚ’t
+ = 
+now
+ + 
+upd©e_š‹rv®
+;
+
+606 
+c
+->
+c2
+.
+timeout_¿ndom_compÚ’t
+.
+tv_u£c
+ = (
+time_t
+è
+	`g‘_¿ndom
+ () & 0x0003FFFF;
+
+607 
+c
+->
+c2
+.
+timeout_¿ndom_compÚ’t
+.
+tv_£c
+ = 0;
+
+609 
+	`dmsg
+ (
+D_INTERVAL
+, "RANDOM USEC=%d", (è
+c
+->
+c2
+.
+timeout_¿ndom_compÚ’t
+.
+tv_u£c
+);
+
+610 
+	}
+}
+
+612 
+šlše
+ 
+
+613 
+	$check_timeout_¿ndom_compÚ’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+615 ià(
+now
+ >ð
+c
+->
+c2
+.
+upd©e_timeout_¿ndom_compÚ’t
+)
+
+616 
+	`check_timeout_¿ndom_compÚ’t_dowÜk
+ (
+c
+);
+
+617 ià(
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ >= 1)
+
+618 
+	`tv_add
+ (&
+c
+->
+c2
+.
+timev®
+, &c->c2.
+timeout_¿ndom_compÚ’t
+);
+
+619 
+	}
+}
+
+621 #ifdeà
+ENABLE_SOCKS
+
+
+628 
+šlše
+ 
+
+629 
+	$socks_po¡´oûss_šcomšg_lšk
+ (
+cÚ‹xt
+ *
+c
+)
+
+631 ià(
+c
+->
+c2
+.
+lšk_sock‘
+->
+socks_´oxy
+ && c->c2.lšk_sock‘->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+632 
+	`socks_´oûss_šcomšg_udp
+ (&
+c
+->
+c2
+.
+buf
+, &c->c2.
+äom
+);
+
+633 
+	}
+}
+
+635 
+šlše
+ 
+
+636 
+	$socks_´•roûss_outgošg_lšk
+ (
+cÚ‹xt
+ *
+c
+,
+
+637 
+lšk_sock‘_aùu®
+ **
+to_addr
+,
+
+638 *
+size_d–�
+)
+
+640 ià(
+c
+->
+c2
+.
+lšk_sock‘
+->
+socks_´oxy
+ && c->c2.lšk_sock‘->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+642 *
+size_d–�
+ +ð
+	`socks_´oûss_outgošg_udp
+ (&
+c
+->
+c2
+.
+to_lšk
+, c->c2.
+to_lšk_addr
+);
+
+643 *
+to_addr
+ = &
+c
+->
+c2
+.
+lšk_sock‘
+->
+socks_»Ïy
+;
+
+645 
+	}
+}
+
+648 
+šlše
+ 
+
+649 
+	$lšk_sock‘_wr™e_po¡_size_adju¡
+ (*
+size
+,
+
+650 
+size_d–�
+,
+
+651 
+bufãr
+ *
+buf
+)
+
+653 ià(
+size_d–�
+ > 0 && *
+size
+ > size_delta)
+
+655 *
+size
+ -ð
+size_d–�
+;
+
+656 ià(!
+	`buf_advªû
+ (
+buf
+, 
+size_d–�
+))
+
+657 *
+size
+ = 0;
+
+659 
+	}
+}
+
+667 
+	$»ad_šcomšg_lšk
+ (
+cÚ‹xt
+ *
+c
+)
+
+673 
+¡©us
+;
+
+677 
+	`³rf_push
+ (
+PERF_READ_IN_LINK
+);
+
+679 
+c
+->
+c2
+.
+buf
+ = c->c2.
+bufãrs
+->
+»ad_lšk_buf
+;
+
+680 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`FRAME_HEADROOM_ADJ
+ (&c->c2.
+äame
+, 
+FRAME_HEADROOM_MARKER_READ_LINK
+)));
+
+682 
+¡©us
+ = 
+	`lšk_sock‘_»ad
+ (
+c
+->
+c2
+.
+lšk_sock‘
+,
+
+683 &
+c
+->
+c2
+.
+buf
+,
+
+684 
+	`MAX_RW_SIZE_LINK
+ (&
+c
+->
+c2
+.
+äame
+),
+
+685 &
+c
+->
+c2
+.
+äom
+);
+
+687 ià(
+	`sock‘_cÚÃùiÚ_»£t
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, 
+¡©us
+))
+
+689 #ià
+PORT_SHARE
+
+
+690 ià(
+pÜt_sh¬e
+ && 
+	`sock‘_fÜeign_´ÙocÞ_d‘eùed
+ (
+c
+->
+c2
+.
+lšk_sock‘
+))
+
+692 cÚ¡ 
+bufãr
+ *
+fbuf
+ = 
+	`sock‘_fÜeign_´ÙocÞ_h—d
+ (
+c
+->
+c2
+.
+lšk_sock‘
+);
+
+693 cÚ¡ 
+sd
+ = 
+	`sock‘_fÜeign_´ÙocÞ_sd
+ (
+c
+->
+c2
+.
+lšk_sock‘
+);
+
+694 
+	`pÜt_sh¬e_»dœeù
+ (
+pÜt_sh¬e
+, 
+fbuf
+, 
+sd
+);
+
+695 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGTERM
+, "port-share-redirect");
+
+701 ià(
+c
+->
+ÝtiÚs
+.
+š‘d
+)
+
+703 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGTERM
+, "connection-reset-inetd");
+
+704 
+	`msg
+ (
+D_STREAM_ERRORS
+, "CÚÃùiÚ„e£t, iÃtd/xš‘dƒx™ [%d]", 
+¡©us
+);
+
+708 #ifdeà
+ENABLE_OCC
+
+
+709 ià(
+	`ev’t_timeout_defšed
+(&
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_š‹rv®
+))
+
+711 
+	`msg
+ (
+D_STREAM_ERRORS
+, "CÚÃùiÚ„e£ˆduršgƒx™‚ÙifiÿtiÚ…”iod, ignÜšg [%d]", 
+¡©us
+);
+
+712 
+	`Ý’v²_¦“p
+(1);
+
+717 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGUSR1
+, "connection-reset");
+
+718 
+	`msg
+ (
+D_STREAM_ERRORS
+, "CÚÃùiÚ„e£t,„e¡¬tšg [%d]", 
+¡©us
+);
+
+722 
+	`³rf_pÝ
+ ();
+
+727 
+	`check_¡©us
+ (
+¡©us
+, "»ad", 
+c
+->
+c2
+.
+lšk_sock‘
+, 
+NULL
+);
+
+729 #ifdeà
+ENABLE_SOCKS
+
+
+731 
+	`socks_po¡´oûss_šcomšg_lšk
+ (
+c
+);
+
+734 
+	`³rf_pÝ
+ ();
+
+735 
+	}
+}
+
+743 
+	$´oûss_šcomšg_lšk
+ (
+cÚ‹xt
+ *
+c
+)
+
+745 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+746 
+boÞ
+ 
+deüy±_¡©us
+;
+
+747 
+lšk_sock‘_šfo
+ *
+lsi
+ = 
+	`g‘_lšk_sock‘_šfo
+ (
+c
+);
+
+748 cÚ¡ 
+ušt8_t
+ *
+Üig_buf
+ = 
+c
+->
+c2
+.
+buf
+.
+d©a
+;
+
+750 
+	`³rf_push
+ (
+PERF_PROC_IN_LINK
+);
+
+752 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+754 
+c
+->
+c2
+.
+lšk_»ad_by‹s
+ +ðc->c2.
+buf
+.
+Ën
+;
+
+755 
+lšk_»ad_by‹s_glob®
+ +ð
+c
+->
+c2
+.
+buf
+.
+Ën
+;
+
+756 #ifdeà
+ENABLE_MEMSTATS
+
+
+757 ià(
+mm­_¡©s
+)
+
+758 
+mm­_¡©s
+->
+lšk_»ad_by‹s
+ = 
+lšk_»ad_by‹s_glob®
+;
+
+760 
+c
+->
+c2
+.
+Üigš®_»cv_size
+ = c->c2.
+buf
+.
+Ën
+;
+
+761 #ifdeà
+ENABLE_MANAGEMENT
+
+
+762 ià(
+mªagem’t
+)
+
+764 
+	`mªagem’t_by‹s_š
+ (
+mªagem’t
+, 
+c
+->
+c2
+.
+buf
+.
+Ën
+);
+
+765 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+766 
+	`mªagem’t_by‹s_£rv”
+ (
+mªagem’t
+, &
+c
+->
+c2
+.
+lšk_»ad_by‹s
+, &c->c2.
+lšk_wr™e_by‹s
+, &c->c2.
+mda_cÚ‹xt
+);
+
+772 
+c
+->
+c2
+.
+Üigš®_»cv_size
+ = 0;
+
+774 #ifdeà
+ENABLE_DEBUG
+
+
+776 ià(
+c
+->
+ÝtiÚs
+.
+g»mlš
+) {
+
+777 ià(!
+	`ask_g»mlš
+ (
+c
+->
+ÝtiÚs
+.
+g»mlš
+))
+
+778 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+779 
+	`cÜru±_g»mlš
+ (&
+c
+->
+c2
+.
+buf
+, c->
+ÝtiÚs
+.
+g»mlš
+);
+
+784 #ifdeà
+LOG_RW
+
+
+785 ià(
+c
+->
+c2
+.
+log_rw
+ && c->c2.
+buf
+.
+Ën
+ > 0)
+
+786 
+	`årštf
+ (
+¡d”r
+, "R");
+
+788 
+	`msg
+ (
+D_LINK_RW
+, "%s READ [%d] from %s: %s",
+
+789 
+	`´Ùo2ascii
+ (
+lsi
+->
+´Ùo
+, 
+Œue
+),
+
+790 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+),
+
+791 
+	`´št_lšk_sock‘_aùu®
+ (&
+c
+->
+c2
+.
+äom
+, &
+gc
+),
+
+792 
+	`PROTO_DUMP
+ (&
+c
+->
+c2
+.
+buf
+, &
+gc
+));
+
+801 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+803 ià(!
+	`lšk_sock‘_v”ify_šcomšg_addr
+ (&
+c
+->
+c2
+.
+buf
+, 
+lsi
+, &c->c2.
+äom
+))
+
+804 
+	`lšk_sock‘_bad_šcomšg_addr
+ (&
+c
+->
+c2
+.
+buf
+, 
+lsi
+, &c->c2.
+äom
+);
+
+806 #ifdeà
+ENABLE_CRYPTO
+
+
+807 #ifdeà
+ENABLE_SSL
+
+
+808 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+820 ià(
+	`Žs_´e_deüy±
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, &c->c2.
+äom
+, &c->c2.
+buf
+, &c->c2.
+üy±o_ÝtiÚs
+))
+
+822 
+	`š‹rv®_aùiÚ
+ (&
+c
+->
+c2
+.
+tmp_št
+);
+
+825 ià(
+c
+->
+ÝtiÚs
+.
+pšg_»c_timeout
+)
+
+826 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+pšg_»c_š‹rv®
+);
+
+829 #ià
+P2MP_SERVER
+
+
+834 ià(
+c
+->
+c2
+.
+cÚ‹xt_auth
+ !ð
+CAS_SUCCEEDED
+)
+
+835 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+840 
+deüy±_¡©us
+ = 
+	`Ý’v²_deüy±
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+bufãrs
+->
+deüy±_buf
+, &c->c2.
+üy±o_ÝtiÚs
+, &c->c2.
+äame
+);
+
+842 ià(!
+deüy±_¡©us
+ && 
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+c
+->
+c2
+.
+lšk_sock‘
+))
+
+845 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGUSR1
+, "decryption-error");
+
+846 
+	`msg
+ (
+D_STREAM_ERRORS
+, "Fatal decryptionƒrror (process_incoming_link),„estarting");
+
+847 
+dÚe
+;
+
+852 #ifdeà
+ENABLE_FRAGMENT
+
+
+853 ià(
+c
+->
+c2
+.
+äagm’t
+)
+
+854 
+	`äagm’t_šcomšg
+ (
+c
+->
+c2
+.
+äagm’t
+, &c->c2.
+buf
+, &c->c2.
+äame_äagm’t
+);
+
+857 #ifdeà
+ENABLE_LZO
+
+
+859 ià(
+	`lzo_defšed
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+))
+
+860 
+	`lzo_decom´ess
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+bufãrs
+->
+lzo_decom´ess_buf
+, &c->c2.
+lzo_compwÜk
+, &c->c2.
+äame
+);
+
+863 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+865 
+	`�v4_·ck‘_size_v”ify
+ (
+	`BPTR
+ (&
+c
+->
+c2
+.
+buf
+),
+
+866 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+),
+
+867 
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+),
+
+869 &
+c
+->
+c2
+.
+n_Œunc_po¡_deüy±
+);
+
+881 ià(!
+	`TLS_MODE
+ (
+c
+))
+
+882 
+	`lšk_sock‘_£t_outgošg_addr
+ (&
+c
+->
+c2
+.
+buf
+, 
+lsi
+, &c->c2.
+äom
+, 
+NULL
+, c->c2.
+es
+);
+
+885 ià(
+c
+->
+ÝtiÚs
+.
+pšg_»c_timeout
+ && c->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+886 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+pšg_»c_š‹rv®
+);
+
+889 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+891 
+c
+->
+c2
+.
+lšk_»ad_by‹s_auth
+ +ðc->c2.
+buf
+.
+Ën
+;
+
+892 
+c
+->
+c2
+.
+max_»cv_size_loÿl
+ = 
+	`max_št
+ (c->c2.
+Üigš®_»cv_size
+, c->c2.max_recv_size_local);
+
+896 ià(
+	`is_pšg_msg
+ (&
+c
+->
+c2
+.
+buf
+))
+
+898 
+	`dmsg
+ (
+D_PING
+, "RECEIVED PING PACKET");
+
+899 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+902 #ifdeà
+ENABLE_OCC
+
+
+904 ià(
+	`is_occ_msg
+ (&
+c
+->
+c2
+.
+buf
+))
+
+905 
+	`´oûss_»ûived_occ_msg
+ (
+c
+);
+
+908 
+	`bufãr_tuºov”
+ (
+Üig_buf
+, &
+c
+->
+c2
+.
+to_tun
+, &c->c2.
+buf
+, &c->c2.
+bufãrs
+->
+»ad_lšk_buf
+);
+
+911 ià(!
+	`tuÁ­_defšed
+ (
+c
+->
+c1
+.
+tuÁ­
+))
+
+912 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+916 
+	`buf_»£t
+ (&
+c
+->
+c2
+.
+to_tun
+);
+
+918 
+dÚe
+:
+
+919 
+	`³rf_pÝ
+ ();
+
+920 
+	`gc_ä“
+ (&
+gc
+);
+
+921 
+	}
+}
+
+928 
+	$»ad_šcomšg_tun
+ (
+cÚ‹xt
+ *
+c
+)
+
+935 
+	`³rf_push
+ (
+PERF_READ_IN_TUN
+);
+
+937 
+c
+->
+c2
+.
+buf
+ = c->c2.
+bufãrs
+->
+»ad_tun_buf
+;
+
+938 #ifdeà
+TUN_PASS_BUFFER
+
+
+939 
+	`»ad_tun_bufã»d
+ (
+c
+->
+c1
+.
+tuÁ­
+, &c->
+c2
+.
+buf
+, 
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+));
+
+941 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`FRAME_HEADROOM
+ (&c->c2.
+äame
+)));
+
+942 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+)));
+
+943 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 
+	`»ad_tun
+ (c->
+c1
+.
+tuÁ­
+, 
+	`BPTR
+ (&c->c2.buf), 
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+));
+
+946 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+947 
+	`�v4_·ck‘_size_v”ify
+ (
+	`BPTR
+ (&
+c
+->
+c2
+.
+buf
+),
+
+948 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+),
+
+949 
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+),
+
+951 &
+c
+->
+c2
+.
+n_Œunc_tun_»ad
+);
+
+955 ià(
+	`tuÁ­_¡Ý
+ (
+c
+->
+c2
+.
+buf
+.
+Ën
+))
+
+957 
+	`»gi¡”_sigÇl
+ (
+c
+, 
+SIGTERM
+, "tun-stop");
+
+958 
+	`msg
+ (
+M_INFO
+, "TUN/TAP interface has been stopped,ƒxiting");
+
+959 
+	`³rf_pÝ
+ ();
+
+964 ià(
+	`tuÁ­_abÜt
+(
+c
+->
+c2
+.
+buf
+.
+Ën
+))
+
+966 
+	`»gi¡”_sigÇl
+(
+c
+, 
+SIGTERM
+, "tun-abort");
+
+967 
+	`msg
+(
+M_FATAL
+, "TUN/TAP I/O operation‡borted,ƒxiting");
+
+968 
+	`³rf_pÝ
+();
+
+973 
+	`check_¡©us
+ (
+c
+->
+c2
+.
+buf
+.
+Ën
+, "»ad from TUN/TAP", 
+NULL
+, c->
+c1
+.
+tuÁ­
+);
+
+975 
+	`³rf_pÝ
+ ();
+
+976 
+	}
+}
+
+984 
+	$´oûss_šcomšg_tun
+ (
+cÚ‹xt
+ *
+c
+)
+
+986 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+988 
+	`³rf_push
+ (
+PERF_PROC_IN_TUN
+);
+
+990 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+991 
+c
+->
+c2
+.
+tun_»ad_by‹s
+ +ðc->c2.
+buf
+.
+Ën
+;
+
+993 #ifdeà
+LOG_RW
+
+
+994 ià(
+c
+->
+c2
+.
+log_rw
+ && c->c2.
+buf
+.
+Ën
+ > 0)
+
+995 
+	`årštf
+ (
+¡d”r
+, "r");
+
+999 
+	`dmsg
+ (
+D_TUN_RW
+, "TUN READ [%d]", 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+));
+
+1001 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0)
+
+1007 
+	`´oûss_�_h—d”
+ (
+c
+, 
+PIPV4_PASSTOS
+|
+PIP_MSSFIX
+|
+PIPV4_CLIENT_NAT
+, &c->
+c2
+.
+buf
+);
+
+1009 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+1011 
+	`�v4_·ck‘_size_v”ify
+ (
+	`BPTR
+ (&
+c
+->
+c2
+.
+buf
+),
+
+1012 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+),
+
+1013 
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+),
+
+1015 &
+c
+->
+c2
+.
+n_Œunc_´e_’üy±
+);
+
+1018 
+	`’üy±_sign
+ (
+c
+, 
+Œue
+);
+
+1022 
+	`buf_»£t
+ (&
+c
+->
+c2
+.
+to_lšk
+);
+
+1024 
+	`³rf_pÝ
+ ();
+
+1025 
+	`gc_ä“
+ (&
+gc
+);
+
+1026 
+	}
+}
+
+1029 
+	$´oûss_�_h—d”
+ (
+cÚ‹xt
+ *
+c
+, 
+æags
+, 
+bufãr
+ *
+buf
+)
+
+1031 ià(!
+c
+->
+ÝtiÚs
+.
+û
+.
+mssfix
+)
+
+1032 
+æags
+ &ð~
+PIP_MSSFIX
+;
+
+1033 #ià
+PASSTOS_CAPABILITY
+
+
+1034 ià(!
+c
+->
+ÝtiÚs
+.
+·s¡os
+)
+
+1035 
+æags
+ &ð~
+PIPV4_PASSTOS
+;
+
+1037 ià(!
+c
+->
+ÝtiÚs
+.
+rou‹_g©eway_vŸ_dhý
+)
+
+1038 
+æags
+ &ð~
+PIPV4_EXTRACT_DHCP_ROUTER
+;
+
+1040 ià(
+buf
+->
+Ën
+ > 0)
+
+1046 #ià
+PASSTOS_CAPABILITY
+
+
+1047 ià(
+æags
+ & (
+PIPV4_PASSTOS
+|
+PIP_MSSFIX
+))
+
+1049 ià(
+æags
+ & 
+PIP_MSSFIX
+)
+
+1052 
+bufãr
+ 
+�buf
+ = *
+buf
+;
+
+1053 ià(
+	`is_�v4
+ (
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+), &
+�buf
+))
+
+1055 #ià
+PASSTOS_CAPABILITY
+
+
+1057 ià(
+æags
+ & 
+PIPV4_PASSTOS
+)
+
+1058 
+	`lšk_sock‘_exŒaù_tos
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, &
+�buf
+);
+
+1062 ià(
+æags
+ & 
+PIP_MSSFIX
+)
+
+1063 
+	`mss_fixup_�v4
+ (&
+�buf
+, 
+	`MTU_TO_MSS
+ (
+	`TUN_MTU_SIZE_DYNAMIC
+ (&
+c
+->
+c2
+.
+äame
+)));
+
+1065 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+1067 ià((
+æags
+ & 
+PIPV4_CLIENT_NAT
+è&& 
+c
+->
+ÝtiÚs
+.
+þ›Á_Çt
+)
+
+1069 cÚ¡ 
+dœeùiÚ
+ = (
+æags
+ & 
+PIPV4_OUTGOING
+è? 
+CN_INCOMING
+ : 
+CN_OUTGOING
+;
+
+1070 
+	`þ›Á_Çt_ŒªsfÜm
+ (
+c
+->
+ÝtiÚs
+.
+þ›Á_Çt
+, &
+�buf
+, 
+dœeùiÚ
+);
+
+1074 ià(
+æags
+ & 
+PIPV4_EXTRACT_DHCP_ROUTER
+)
+
+1076 cÚ¡ 
+š_addr_t
+ 
+dhý_rou‹r
+ = 
+	`dhý_exŒaù_rou‹r_msg
+ (&
+�buf
+);
+
+1077 ià(
+dhý_rou‹r
+)
+
+1078 
+	`rou‹_li¡_add_v²_g©eway
+ (
+c
+->
+c1
+.
+rou‹_li¡
+, c->
+c2
+.
+es
+, 
+dhý_rou‹r
+);
+
+1081 ià(
+	`is_�v6
+ (
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+), &
+�buf
+))
+
+1084 ià(
+æags
+ & 
+PIP_MSSFIX
+)
+
+1085 
+	`mss_fixup_�v6
+ (&
+�buf
+, 
+	`MTU_TO_MSS
+ (
+	`TUN_MTU_SIZE_DYNAMIC
+ (&
+c
+->
+c2
+.
+äame
+)));
+
+1089 
+	}
+}
+
+1096 
+	$´oûss_outgošg_lšk
+ (
+cÚ‹xt
+ *
+c
+)
+
+1098 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1100 
+	`³rf_push
+ (
+PERF_PROC_OUT_LINK
+);
+
+1102 ià(
+c
+->
+c2
+.
+to_lšk
+.
+Ën
+ > 0 && c->c2.to_lšk.ËÀ<ð
+	`EXPANDED_SIZE
+ (&c->c2.
+äame
+))
+
+1108 
+size
+ = 0;
+
+1109 
+	`ASSERT
+ (
+	`lšk_sock‘_aùu®_defšed
+ (
+c
+->
+c2
+.
+to_lšk_addr
+));
+
+1111 #ifdeà
+ENABLE_DEBUG
+
+
+1113 ià(!
+c
+->
+ÝtiÚs
+.
+g»mlš
+ || 
+	`ask_g»mlš
+ (c->options.gremlin))
+
+1120 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+1121 ià(
+c
+->
+ÝtiÚs
+.
+sh­”
+)
+
+1122 
+	`sh­”_wrÙe_by‹s
+ (&
+c
+->
+c2
+.
+sh­”
+, 
+	`BLEN
+ (&c->c2.
+to_lšk
+)
+
+1123 + 
+	`d©ag¿m_ov”h—d
+ (
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+));
+
+1128 ià(
+c
+->
+ÝtiÚs
+.
+pšg_£nd_timeout
+)
+
+1129 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+pšg_£nd_š‹rv®
+);
+
+1131 #ià
+PASSTOS_CAPABILITY
+
+
+1133 
+	`lšk_sock‘_£t_tos
+ (
+c
+->
+c2
+.
+lšk_sock‘
+);
+
+1137 #ifdeà
+LOG_RW
+
+
+1138 ià(
+c
+->
+c2
+.
+log_rw
+)
+
+1139 
+	`årštf
+ (
+¡d”r
+, "W");
+
+1141 
+	`msg
+ (
+D_LINK_RW
+, "%s WRITE [%d]�o %s: %s",
+
+1142 
+	`´Ùo2ascii
+ (
+c
+->
+c2
+.
+lšk_sock‘
+->
+šfo
+.
+´Ùo
+, 
+Œue
+),
+
+1143 
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_lšk
+),
+
+1144 
+	`´št_lšk_sock‘_aùu®
+ (
+c
+->
+c2
+.
+to_lšk_addr
+, &
+gc
+),
+
+1145 
+	`PROTO_DUMP
+ (&
+c
+->
+c2
+.
+to_lšk
+, &
+gc
+));
+
+1149 
+lšk_sock‘_aùu®
+ *
+to_addr
+ = 
+c
+->
+c2
+.
+to_lšk_addr
+;
+
+1150 #ifdeà
+ENABLE_SOCKS
+
+
+1151 
+size_d–�
+ = 0;
+
+1154 #ifdeà
+ENABLE_SOCKS
+
+
+1156 
+	`socks_´•roûss_outgošg_lšk
+ (
+c
+, &
+to_addr
+, &
+size_d–�
+);
+
+1159 
+size
+ = 
+	`lšk_sock‘_wr™e
+ (
+c
+->
+c2
+.
+lšk_sock‘
+,
+
+1160 &
+c
+->
+c2
+.
+to_lšk
+,
+
+1161 
+to_addr
+);
+
+1163 #ifdeà
+ENABLE_SOCKS
+
+
+1165 
+	`lšk_sock‘_wr™e_po¡_size_adju¡
+ (&
+size
+, 
+size_d–�
+, &
+c
+->
+c2
+.
+to_lšk
+);
+
+1169 ià(
+size
+ > 0)
+
+1171 
+c
+->
+c2
+.
+max_£nd_size_loÿl
+ = 
+	`max_št
+ (
+size
+, c->c2.max_send_size_local);
+
+1172 
+c
+->
+c2
+.
+lšk_wr™e_by‹s
+ +ð
+size
+;
+
+1173 
+lšk_wr™e_by‹s_glob®
+ +ð
+size
+;
+
+1174 #ifdeà
+ENABLE_MEMSTATS
+
+
+1175 ià(
+mm­_¡©s
+)
+
+1176 
+mm­_¡©s
+->
+lšk_wr™e_by‹s
+ = 
+lšk_wr™e_by‹s_glob®
+;
+
+1178 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1179 ià(
+mªagem’t
+)
+
+1181 
+	`mªagem’t_by‹s_out
+ (
+mªagem’t
+, 
+size
+);
+
+1182 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1183 
+	`mªagem’t_by‹s_£rv”
+ (
+mªagem’t
+, &
+c
+->
+c2
+.
+lšk_»ad_by‹s
+, &c->c2.
+lšk_wr™e_by‹s
+, &c->c2.
+mda_cÚ‹xt
+);
+
+1191 
+	`check_¡©us
+ (
+size
+, "wr™e", 
+c
+->
+c2
+.
+lšk_sock‘
+, 
+NULL
+);
+
+1193 ià(
+size
+ > 0)
+
+1196 ià(
+size
+ !ð
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_lšk
+))
+
+1197 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1199 
+	`´št_lšk_sock‘_aùu®
+ (
+c
+->
+c2
+.
+to_lšk_addr
+, &
+gc
+),
+
+1200 
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_lšk
+),
+
+1201 
+size
+);
+
+1205 ià(
+c
+->
+c2
+.
+buf
+.
+Ën
+ > 0 )
+
+1206 
+	`»gi¡”_aùiv™y
+ (
+c
+, 
+size
+);
+
+1210 ià(
+c
+->
+c2
+.
+to_lšk
+.
+Ën
+ > 0)
+
+1211 
+	`msg
+ (
+D_LINK_ERRORS
+, "TCP/UDP…acket�oo†arge on write�o %s (tried=%d,max=%d)",
+
+1212 
+	`´št_lšk_sock‘_aùu®
+ (
+c
+->
+c2
+.
+to_lšk_addr
+, &
+gc
+),
+
+1213 
+c
+->
+c2
+.
+to_lšk
+.
+Ën
+,
+
+1214 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+));
+
+1217 
+	`buf_»£t
+ (&
+c
+->
+c2
+.
+to_lšk
+);
+
+1219 
+	`³rf_pÝ
+ ();
+
+1220 
+	`gc_ä“
+ (&
+gc
+);
+
+1221 
+	}
+}
+
+1228 
+	$´oûss_outgošg_tun
+ (
+cÚ‹xt
+ *
+c
+)
+
+1230 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1236 ià(
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ <= 0)
+
+1239 
+	`³rf_push
+ (
+PERF_PROC_OUT_TUN
+);
+
+1245 
+	`´oûss_�_h—d”
+ (
+c
+, 
+PIP_MSSFIX
+|
+PIPV4_EXTRACT_DHCP_ROUTER
+|
+PIPV4_CLIENT_NAT
+|
+PIPV4_OUTGOING
+, &c->
+c2
+.
+to_tun
+);
+
+1247 ià(
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ <ð
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+))
+
+1252 
+size
+;
+
+1254 #ifdeà
+LOG_RW
+
+
+1255 ià(
+c
+->
+c2
+.
+log_rw
+)
+
+1256 
+	`årštf
+ (
+¡d”r
+, "w");
+
+1258 
+	`dmsg
+ (
+D_TUN_RW
+, "TUN WRITE [%d]", 
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_tun
+));
+
+1260 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+1261 
+	`�v4_·ck‘_size_v”ify
+ (
+	`BPTR
+ (&
+c
+->
+c2
+.
+to_tun
+),
+
+1262 
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_tun
+),
+
+1263 
+	`TUNNEL_TYPE
+ (
+c
+->
+c1
+.
+tuÁ­
+),
+
+1265 &
+c
+->
+c2
+.
+n_Œunc_tun_wr™e
+);
+
+1268 #ifdeà
+TUN_PASS_BUFFER
+
+
+1269 
+size
+ = 
+	`wr™e_tun_bufã»d
+ (
+c
+->
+c1
+.
+tuÁ­
+, &c->
+c2
+.
+to_tun
+);
+
+1271 
+size
+ = 
+	`wr™e_tun
+ (
+c
+->
+c1
+.
+tuÁ­
+, 
+	`BPTR
+ (&c->
+c2
+.
+to_tun
+), 
+	`BLEN
+ (&c->c2.to_tun));
+
+1274 ià(
+size
+ > 0)
+
+1275 
+c
+->
+c2
+.
+tun_wr™e_by‹s
+ +ð
+size
+;
+
+1276 
+	`check_¡©us
+ (
+size
+, "wr™�tØTUN/TAP", 
+NULL
+, 
+c
+->
+c1
+.
+tuÁ­
+);
+
+1279 ià(
+size
+ > 0)
+
+1282 ià(
+size
+ !ð
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_tun
+))
+
+1283 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1285 
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+,
+
+1286 
+	`BLEN
+ (&
+c
+->
+c2
+.
+to_tun
+),
+
+1287 
+size
+);
+
+1290 
+	`»gi¡”_aùiv™y
+ (
+c
+, 
+size
+);
+
+1299 
+	`msg
+ (
+D_LINK_ERRORS
+, "tun…acket�oo†arge on write (tried=%d,max=%d)",
+
+1300 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+,
+
+1301 
+	`MAX_RW_SIZE_TUN
+ (&
+c
+->
+c2
+.
+äame
+));
+
+1304 
+	`buf_»£t
+ (&
+c
+->
+c2
+.
+to_tun
+);
+
+1306 
+	`³rf_pÝ
+ ();
+
+1307 
+	`gc_ä“
+ (&
+gc
+);
+
+1308 
+	}
+}
+
+1311 
+	$´e_£Ëù
+ (
+cÚ‹xt
+ *
+c
+)
+
+1320 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 
+BIG_TIMEOUT
+;
+
+1321 
+c
+->
+c2
+.
+timev®
+.
+tv_u£c
+ = 0;
+
+1323 #ià
+	`defšed
+(
+WIN32
+)
+
+1324 ià(
+	`check_debug_Ëv–
+ (
+D_TAP_WIN_DEBUG
+))
+
+1326 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 1;
+
+1327 ià(
+	`tuÁ­_defšed
+ (
+c
+->
+c1
+.
+tuÁ­
+))
+
+1328 
+	`tun_show_debug
+ (
+c
+->
+c1
+.
+tuÁ­
+);
+
+1333 
+	`check_cßr£_tim”s
+ (
+c
+);
+
+1334 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+1338 
+	`check_Žs
+ (
+c
+);
+
+1341 
+	`check_Žs_”rÜs
+ (
+c
+);
+
+1342 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+1346 
+	`check_šcomšg_cÚŒÞ_chªÃl
+ (
+c
+);
+
+1348 #ifdeà
+ENABLE_OCC
+
+
+1350 
+	`check_£nd_occ_msg
+ (
+c
+);
+
+1353 #ifdeà
+ENABLE_FRAGMENT
+
+
+1355 
+	`check_äagm’t
+ (
+c
+);
+
+1359 
+	`check_timeout_¿ndom_compÚ’t
+ (
+c
+);
+
+1360 
+	}
+}
+
+1369 
+	$io_wa™_dowÜk
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+1371 
+sock‘
+ = 0;
+
+1372 
+tuÁ­
+ = 0;
+
+1373 
+ev’t_£t_»tuº
+ 
+e¤
+[4];
+
+1376 
+sock‘_shiá
+ = 0;
+
+1377 
+tun_shiá
+ = 2;
+
+1378 
+”r_shiá
+ = 4;
+
+1379 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1380 
+mªagem’t_shiá
+ = 6;
+
+1386 
+	`ev’t_»£t
+ (
+c
+->
+c2
+.
+ev’t_£t
+);
+
+1392 ià(
+æags
+ & 
+IOW_WAIT_SIGNAL
+)
+
+1393 
+	`wa™_sigÇl
+ (
+c
+->
+c2
+.
+ev’t_£t
+, (*)&
+”r_shiá
+);
+
+1400 ià(
+æags
+ & 
+IOW_TO_LINK
+)
+
+1402 ià(
+æags
+ & 
+IOW_SHAPER
+)
+
+1409 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+1410 
+d–ay
+ = 0;
+
+1413 ià(
+c
+->
+ÝtiÚs
+.
+sh­”
+)
+
+1414 
+d–ay
+ = 
+	`max_št
+ (d–ay, 
+	`sh­”_d–ay
+ (&
+c
+->
+c2
+.
+sh­”
+));
+
+1416 ià(
+d–ay
+ < 1000)
+
+1418 
+sock‘
+ |ð
+EVENT_WRITE
+;
+
+1422 
+	`sh­”_soÚe¡_ev’t
+ (&
+c
+->
+c2
+.
+timev®
+, 
+d–ay
+);
+
+1425 
+sock‘
+ |ð
+EVENT_WRITE
+;
+
+1430 
+sock‘
+ |ð
+EVENT_WRITE
+;
+
+1433 ià(!((
+æags
+ & 
+IOW_FRAG
+è&& 
+	`TO_LINK_FRAG
+ (
+c
+)))
+
+1435 ià(
+æags
+ & 
+IOW_READ_TUN
+)
+
+1436 
+tuÁ­
+ |ð
+EVENT_READ
+;
+
+1443 ià(
+æags
+ & 
+IOW_TO_TUN
+)
+
+1445 
+tuÁ­
+ |ð
+EVENT_WRITE
+;
+
+1449 ià(
+æags
+ & 
+IOW_READ_LINK
+)
+
+1450 
+sock‘
+ |ð
+EVENT_READ
+;
+
+1456 ià(
+æags
+ & 
+IOW_MBUF
+)
+
+1457 
+sock‘
+ |ð
+EVENT_WRITE
+;
+
+1462 ià(
+æags
+ & 
+IOW_READ_TUN_FORCE
+)
+
+1463 
+tuÁ­
+ |ð
+EVENT_READ
+;
+
+1468 
+	`sock‘_£t
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, c->c2.
+ev’t_£t
+, 
+sock‘
+, (*)&
+sock‘_shiá
+, 
+NULL
+);
+
+1469 
+	`tun_£t
+ (
+c
+->
+c1
+.
+tuÁ­
+, c->
+c2
+.
+ev’t_£t
+,�uÁ­, (*)&
+tun_shiá
+, 
+NULL
+);
+
+1471 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1472 ià(
+mªagem’t
+)
+
+1473 
+	`mªagem’t_sock‘_£t
+ (
+mªagem’t
+, 
+c
+->
+c2
+.
+ev’t_£t
+, (*)&
+mªagem’t_shiá
+, 
+NULL
+);
+
+1486 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ = 
+ES_ERROR
+;
+
+1488 ià(!
+c
+->
+sig
+->
+sigÇl_»ûived
+)
+
+1490 ià(!(
+æags
+ & 
+IOW_CHECK_RESIDUAL
+è|| !
+	`sock‘_»ad_»sidu®
+ (
+c
+->
+c2
+.
+lšk_sock‘
+))
+
+1492 
+¡©us
+;
+
+1494 #ifdeà
+ENABLE_DEBUG
+
+
+1495 ià(
+	`check_debug_Ëv–
+ (
+D_EVENT_WAIT
+))
+
+1496 
+	`show_wa™_¡©us
+ (
+c
+);
+
+1502 
+¡©us
+ = 
+	`ev’t_wa™
+ (
+c
+->
+c2
+.
+ev’t_£t
+, &c->c2.
+timev®
+, 
+e¤
+, 
+	`SIZE
+(esr));
+
+1504 
+	`check_¡©us
+ (
+¡©us
+, "ev’t_wa™", 
+NULL
+, NULL);
+
+1506 ià(
+¡©us
+ > 0)
+
+1508 
+i
+;
+
+1509 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ = 0;
+
+1510 
+i
+ = 0; i < 
+¡©us
+; ++i)
+
+1512 cÚ¡ 
+ev’t_£t_»tuº
+ *
+e
+ = &
+e¤
+[
+i
+];
+
+1513 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ |ð((
+e
+->
+rwæags
+ & 3è<< *((*ë->
+¬g
+));
+
+1516 ià(
+¡©us
+ == 0)
+
+1518 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ = 
+ES_TIMEOUT
+;
+
+1523 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ = 
+SOCKET_READ
+;
+
+1528 
+	`upd©e_time
+ ();
+
+1531 ià(
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ & 
+ES_ERROR
+)
+
+1532 
+	`g‘_sigÇl
+ (&
+c
+->
+sig
+->
+sigÇl_»ûived
+);
+
+1534 
+	`dmsg
+ (
+D_EVENT_WAIT
+, "I/O WAIT s�tus=0x%04x", 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+);
+
+1535 
+	}
+}
+
+1538 
+	$´oûss_io
+ (
+cÚ‹xt
+ *
+c
+)
+
+1540 cÚ¡ 
+¡©us
+ = 
+c
+->
+c2
+.
+ev’t_£t_¡©us
+;
+
+1542 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1543 ià(
+¡©us
+ & (
+MANAGEMENT_READ
+|
+MANAGEMENT_WRITE
+))
+
+1545 
+	`ASSERT
+ (
+mªagem’t
+);
+
+1546 
+	`mªagem’t_io
+ (
+mªagem’t
+);
+
+1551 ià(
+¡©us
+ & 
+SOCKET_WRITE
+)
+
+1553 
+	`´oûss_outgošg_lšk
+ (
+c
+);
+
+1556 ià(
+¡©us
+ & 
+TUN_WRITE
+)
+
+1558 
+	`´oûss_outgošg_tun
+ (
+c
+);
+
+1561 ià(
+¡©us
+ & 
+SOCKET_READ
+)
+
+1563 
+	`»ad_šcomšg_lšk
+ (
+c
+);
+
+1564 ià(!
+	`IS_SIG
+ (
+c
+))
+
+1565 
+	`´oûss_šcomšg_lšk
+ (
+c
+);
+
+1568 ià(
+¡©us
+ & 
+TUN_READ
+)
+
+1570 
+	`»ad_šcomšg_tun
+ (
+c
+);
+
+1571 ià(!
+	`IS_SIG
+ (
+c
+))
+
+1572 
+	`´oûss_šcomšg_tun
+ (
+c
+);
+
+1574 
+	}
+}
+
+	@forward.h
+
+32 #iâdeà
+FORWARD_H
+
+
+33 
+	#FORWARD_H
+
+
+	)
+
+35 
+	~"Ý’v².h
+"
+
+36 
+	~"occ.h
+"
+
+37 
+	~"pšg.h
+"
+
+39 
+	#TUN_OUT
+(
+c
+è(
+	`BLEN
+(&(c)->
+c2
+.
+to_tun
+è> 0)
+
+	)
+
+40 
+	#LINK_OUT
+(
+c
+è(
+	`BLEN
+(&(c)->
+c2
+.
+to_lšk
+è> 0)
+
+	)
+
+41 
+	#ANY_OUT
+(
+c
+è(
+	`TUN_OUT
+(cè|| 
+	`LINK_OUT
+(c))
+
+	)
+
+43 #ifdeà
+ENABLE_FRAGMENT
+
+
+44 
+	#TO_LINK_FRAG
+(
+c
+è((c)->
+c2
+.
+äagm’t
+ && 
+	`äagm’t_outgošg_defšed
+ ((c)->c2.äagm’t))
+
+	)
+
+46 
+	#TO_LINK_FRAG
+(
+c
+è(
+çl£
+)
+
+	)
+
+49 
+	#TO_LINK_DEF
+(
+c
+è(
+	`LINK_OUT
+(cè|| 
+	`TO_LINK_FRAG
+(c))
+
+	)
+
+51 
+	#IOW_TO_TUN
+ (1<<0)
+
+	)
+
+52 
+	#IOW_TO_LINK
+ (1<<1)
+
+	)
+
+53 
+	#IOW_READ_TUN
+ (1<<2)
+
+	)
+
+54 
+	#IOW_READ_LINK
+ (1<<3)
+
+	)
+
+55 
+	#IOW_SHAPER
+ (1<<4)
+
+	)
+
+56 
+	#IOW_CHECK_RESIDUAL
+ (1<<5)
+
+	)
+
+57 
+	#IOW_FRAG
+ (1<<6)
+
+	)
+
+58 
+	#IOW_MBUF
+ (1<<7)
+
+	)
+
+59 
+	#IOW_READ_TUN_FORCE
+ (1<<8)
+
+	)
+
+60 
+	#IOW_WAIT_SIGNAL
+ (1<<9)
+
+	)
+
+62 
+	#IOW_READ
+ (
+IOW_READ_TUN
+|
+IOW_READ_LINK
+)
+
+	)
+
+65 
+´e_£Ëù
+ (
+cÚ‹xt
+ *
+c
+);
+
+66 
+´oûss_io
+ (
+cÚ‹xt
+ *
+c
+);
+
+68 cÚ¡ *
+wa™_¡©us_¡ršg
+ (
+cÚ‹xt
+ *
+c
+, 
+gc_¬’a
+ *
+gc
+);
+
+69 
+show_wa™_¡©us
+ (
+cÚ‹xt
+ *
+c
+);
+
+105 
+’üy±_sign
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+comp_äag
+);
+
+128 
+»ad_šcomšg_lšk
+ (
+cÚ‹xt
+ *
+c
+);
+
+162 
+´oûss_šcomšg_lšk
+ (
+cÚ‹xt
+ *
+c
+);
+
+177 
+´oûss_outgošg_lšk
+ (
+cÚ‹xt
+ *
+c
+);
+
+193 
+»ad_šcomšg_tun
+ (
+cÚ‹xt
+ *
+c
+);
+
+208 
+´oûss_šcomšg_tun
+ (
+cÚ‹xt
+ *
+c
+);
+
+223 
+´oûss_outgošg_tun
+ (
+cÚ‹xt
+ *
+c
+);
+
+228 
+boÞ
+ 
+£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+¡r
+, 
+msgËv–
+);
+
+230 
+	#PIPV4_PASSTOS
+ (1<<0)
+
+	)
+
+231 
+	#PIP_MSSFIX
+ (1<<1è
+
+	)
+
+232 
+	#PIPV4_OUTGOING
+ (1<<2)
+
+	)
+
+233 
+	#PIPV4_EXTRACT_DHCP_ROUTER
+ (1<<3)
+
+	)
+
+234 
+	#PIPV4_CLIENT_NAT
+ (1<<4)
+
+	)
+
+236 
+´oûss_�_h—d”
+ (
+cÚ‹xt
+ *
+c
+, 
+æags
+, 
+bufãr
+ *
+buf
+);
+
+238 #ià
+P2MP
+
+
+239 
+boÞ
+ 
+scheduË_ex™
+ (
+cÚ‹xt
+ *
+c
+);
+
+	@fragment.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ifdeà
+ENABLE_FRAGMENT
+
+
+35 
+	~"misc.h
+"
+
+36 
+	~"äagm’t.h
+"
+
+37 
+	~"š‹g”.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 
+	#FRAG_ERR
+(
+s
+è{ 
+”rmsg
+ = s; 
+”rÜ
+; }
+
+	)
+
+43 
+	$äagm’t_li¡_buf_š™
+ (
+äagm’t_li¡
+ *
+li¡
+, cÚ¡ 
+äame
+ *frame)
+
+45 
+i
+;
+
+46 
+i
+ = 0; i < 
+N_FRAG_BUF
+; ++i)
+
+47 
+li¡
+->
+äagm’ts
+[
+i
+].
+buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+48 
+	}
+}
+
+51 
+	$äagm’t_li¡_buf_ä“
+ (
+äagm’t_li¡
+ *
+li¡
+)
+
+53 
+i
+;
+
+54 
+i
+ = 0; i < 
+N_FRAG_BUF
+; ++i)
+
+55 
+	`ä“_buf
+ (&
+li¡
+->
+äagm’ts
+[
+i
+].
+buf
+);
+
+56 
+	}
+}
+
+62 
+äagm’t
+ *
+
+63 
+	$äagm’t_li¡_g‘_buf
+ (
+äagm’t_li¡
+ *
+li¡
+, 
+£q_id
+)
+
+65 
+diff
+;
+
+66 ià(
+	`abs
+ (
+diff
+ = 
+	`modulo_subŒaù
+ (
+£q_id
+, 
+li¡
+->£q_id, 
+N_SEQ_ID
+)è>ð
+N_FRAG_BUF
+)
+
+68 
+i
+;
+
+69 
+i
+ = 0; i < 
+N_FRAG_BUF
+; ++i)
+
+70 
+li¡
+->
+äagm’ts
+[
+i
+].
+defšed
+ = 
+çl£
+;
+
+71 
+li¡
+->
+šdex
+ = 0;
+
+72 
+li¡
+->
+£q_id
+ = seq_id;
+
+73 
+diff
+ = 0;
+
+75 
+diff
+ > 0)
+
+77 
+li¡
+->
+äagm’ts
+[li¡->
+šdex
+ = 
+	`modulo_add
+ (li¡->šdex, 1, 
+N_FRAG_BUF
+)].
+defšed
+ = 
+çl£
+;
+
+78 
+li¡
+->
+£q_id
+ = 
+	`modulo_add
+ (li¡->£q_id, 1, 
+N_SEQ_ID
+);
+
+79 --
+diff
+;
+
+81  &
+li¡
+->
+äagm’ts
+[
+	`modulo_add
+ (li¡->
+šdex
+, 
+diff
+, 
+N_FRAG_BUF
+)];
+
+82 
+	}
+}
+
+84 
+äagm’t_ma¡”
+ *
+
+85 
+	$äagm’t_š™
+ (
+äame
+ *frame)
+
+87 
+äagm’t_ma¡”
+ *
+»t
+;
+
+91 
+	`ALLOC_OBJ_CLEAR
+ (
+»t
+, 
+äagm’t_ma¡”
+);
+
+94 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, (
+äagm’t_h—d”_ty³
+));
+
+104 
+»t
+->
+outgošg_£q_id
+ = ()
+	`g‘_¿ndom
+(è& (
+N_SEQ_ID
+ - 1);
+
+106 
+	`ev’t_timeout_š™
+ (&
+»t
+->
+wakeup
+, 
+FRAG_WAKEUP_INTERVAL
+, 
+now
+);
+
+108  
+»t
+;
+
+109 
+	}
+}
+
+112 
+	$äagm’t_ä“
+ (
+äagm’t_ma¡”
+ *
+f
+)
+
+114 
+	`äagm’t_li¡_buf_ä“
+ (&
+f
+->
+šcomšg
+);
+
+115 
+	`ä“_buf
+ (&
+f
+->
+outgošg
+);
+
+116 
+	`ä“_buf
+ (&
+f
+->
+outgošg_»tuº
+);
+
+117 
+	`ä“
+ (
+f
+);
+
+118 
+	}
+}
+
+121 
+	$äagm’t_äame_š™
+ (
+äagm’t_ma¡”
+ *
+f
+, cÚ¡ 
+äame
+ *frame)
+
+123 
+	`äagm’t_li¡_buf_š™
+ (&
+f
+->
+šcomšg
+, 
+äame
+);
+
+124 
+f
+->
+outgošg
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+125 
+f
+->
+outgošg_»tuº
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+126 
+	}
+}
+
+135 
+	$äagm’t_šcomšg
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+136 cÚ¡ 
+äame
+* frame)
+
+138 cÚ¡ *
+”rmsg
+ = 
+NULL
+;
+
+139 
+äagm’t_h—d”_ty³
+ 
+æags
+ = 0;
+
+140 
+äag_ty³
+ = 0;
+
+142 ià(
+buf
+->
+Ën
+ > 0)
+
+145 ià(!
+	`buf_»ad
+ (
+buf
+, &
+æags
+,  (flags)))
+
+146 
+	`FRAG_ERR
+ ("flags‚ot found in…acket");
+
+147 
+æags
+ = 
+	`Áoh_äagm’t_h—d”_ty³
+ (flags);
+
+150 
+äag_ty³
+ = ((
+æags
+ >> 
+FRAG_TYPE_SHIFT
+è& 
+FRAG_TYPE_MASK
+);
+
+157 ià(
+äag_ty³
+ =ð
+FRAG_WHOLE
+ || f¿g_ty³ =ð
+FRAG_YES_NOTLAST
+)
+
+163 ià(
+äag_ty³
+ =ð
+FRAG_WHOLE
+)
+
+165 
+	`dmsg
+ (
+D_FRAG_DEBUG
+,
+
+167 
+äagm’t_h—d”_fÜm©
+,
+
+168 
+buf
+->
+Ën
+,
+
+169 
+æags
+);
+
+171 ià(
+æags
+ & (
+FRAG_SEQ_ID_MASK
+ | 
+FRAG_ID_MASK
+))
+
+172 
+	`FRAG_ERR
+ ("spurrious FRAG_WHOLE flags");
+
+174 ià(
+äag_ty³
+ =ð
+FRAG_YES_NOTLAST
+ || f¿g_ty³ =ð
+FRAG_YES_LAST
+)
+
+176 cÚ¡ 
+£q_id
+ = ((
+æags
+ >> 
+FRAG_SEQ_ID_SHIFT
+è& 
+FRAG_SEQ_ID_MASK
+);
+
+177 cÚ¡ 
+n
+ = ((
+æags
+ >> 
+FRAG_ID_SHIFT
+è& 
+FRAG_ID_MASK
+);
+
+178 cÚ¡ 
+size
+ = ((
+äag_ty³
+ =ð
+FRAG_YES_LAST
+)
+
+179 ? ()(((
+æags
+ >> 
+FRAG_SIZE_SHIFT
+è& 
+FRAG_SIZE_MASK
+è<< 
+FRAG_SIZE_ROUND_SHIFT
+)
+
+180 : 
+buf
+->
+Ën
+);
+
+183 
+äagm’t
+ *
+äag
+ = 
+	`äagm’t_li¡_g‘_buf
+ (&
+f
+->
+šcomšg
+, 
+£q_id
+);
+
+185 
+	`dmsg
+ (
+D_FRAG_DEBUG
+,
+
+187 
+äagm’t_h—d”_fÜm©
+,
+
+188 
+buf
+->
+Ën
+,
+
+189 
+äag_ty³
+,
+
+190 
+£q_id
+,
+
+191 
+n
+,
+
+192 
+size
+,
+
+193 
+æags
+);
+
+196 ià(
+size
+ & 
+FRAG_SIZE_ROUND_MASK
+)
+
+197 
+	`FRAG_ERR
+ ("bad fragment size");
+
+200 ià(!
+äag
+->
+defšed
+ || (äag->defšed && f¿g->
+max_äag_size
+ !ð
+size
+))
+
+202 
+äag
+->
+defšed
+ = 
+Œue
+;
+
+203 
+äag
+->
+max_äag_size
+ = 
+size
+;
+
+204 
+äag
+->
+m­
+ = 0;
+
+205 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+äag
+->
+buf
+, 
+	`FRAME_HEADROOM_ADJ
+ (
+äame
+, 
+FRAME_HEADROOM_MARKER_FRAGMENT
+)));
+
+209 ià(!
+	`buf_cÝy_¿nge
+ (&
+äag
+->
+buf
+, 
+n
+ * 
+size
+, buf, 0, buf->
+Ën
+))
+
+210 
+	`FRAG_ERR
+ ("fragment buffer overflow");
+
+213 
+äag
+->
+m­
+ |ð(((
+äag_ty³
+ =ð
+FRAG_YES_LAST
+è? 
+FRAG_MAP_MASK
+ : 1è<< 
+n
+);
+
+216 
+äag
+->
+time¡amp
+ = 
+now
+;
+
+219 ià((
+äag
+->
+m­
+ & 
+FRAG_MAP_MASK
+) == FRAG_MAP_MASK)
+
+221 
+äag
+->
+defšed
+ = 
+çl£
+;
+
+222 *
+buf
+ = 
+äag
+->buf;
+
+226 
+buf
+->
+Ën
+ = 0;
+
+229 ià(
+äag_ty³
+ =ð
+FRAG_TEST
+)
+
+231 
+	`FRAG_ERR
+ ("FRAG_TEST‚ot implemented");
+
+235 
+	`FRAG_ERR
+ ("unknown fragment�ype");
+
+241 
+”rÜ
+:
+
+242 ià(
+”rmsg
+)
+
+243 
+	`msg
+ (
+D_FRAG_ERRORS
+, "FRAG_INƒ¼Ü fÏgs=" 
+äagm’t_h—d”_fÜm©
+ ": %s", 
+æags
+, 
+”rmsg
+);
+
+244 
+buf
+->
+Ën
+ = 0;
+
+246 
+	}
+}
+
+250 
+	$äagm’t_´•’d_æags
+ (
+bufãr
+ *
+buf
+,
+
+251 
+ty³
+,
+
+252 
+£q_id
+,
+
+253 
+äag_id
+,
+
+254 
+äag_size
+)
+
+256 
+äagm’t_h—d”_ty³
+ 
+æags
+ = ((
+ty³
+ & 
+FRAG_TYPE_MASK
+è<< 
+FRAG_TYPE_SHIFT
+)
+
+257 | ((
+£q_id
+ & 
+FRAG_SEQ_ID_MASK
+è<< 
+FRAG_SEQ_ID_SHIFT
+)
+
+258 | ((
+äag_id
+ & 
+FRAG_ID_MASK
+è<< 
+FRAG_ID_SHIFT
+);
+
+260 ià(
+ty³
+ =ð
+FRAG_WHOLE
+ ||�y³ =ð
+FRAG_YES_NOTLAST
+)
+
+266 
+	`dmsg
+ (
+D_FRAG_DEBUG
+,
+
+268 
+äagm’t_h—d”_fÜm©
+,
+
+269 
+buf
+->
+Ën
+, 
+ty³
+, 
+£q_id
+, 
+äag_id
+, 
+äag_size
+, 
+æags
+);
+
+273 
+æags
+ |ð(((
+äag_size
+ >> 
+FRAG_SIZE_ROUND_SHIFT
+è& 
+FRAG_SIZE_MASK
+è<< 
+FRAG_SIZE_SHIFT
+);
+
+275 
+	`dmsg
+ (
+D_FRAG_DEBUG
+,
+
+277 
+äagm’t_h—d”_fÜm©
+,
+
+278 
+buf
+->
+Ën
+, 
+ty³
+, 
+£q_id
+, 
+äag_id
+, 
+äag_size
+, 
+æags
+);
+
+281 
+æags
+ = 
+	`htÚ_äagm’t_h—d”_ty³
+ (flags);
+
+282 
+	`ASSERT
+ (
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+æags
+,  (flags)));
+
+283 
+	}
+}
+
+290 
+šlše
+ 
+
+291 
+	$Ýtim®_äagm’t_size
+ (
+Ën
+, 
+max_äag_size
+)
+
+293 cÚ¡ 
+mfs_®igÃd
+ = (
+max_äag_size
+ & ~
+FRAG_SIZE_ROUND_MASK
+);
+
+294 cÚ¡ 
+div
+ = 
+Ën
+ / 
+mfs_®igÃd
+;
+
+295 cÚ¡ 
+mod
+ = 
+Ën
+ % 
+mfs_®igÃd
+;
+
+297 ià(
+div
+ > 0 && 
+mod
+ > 0 && mod < 
+mfs_®igÃd
+ * 3 / 4)
+
+298  
+	`mš_št
+ (
+mfs_®igÃd
+, (
+max_äag_size
+ - ((max_äag_siz�- 
+mod
+è/ (
+div
+ + 1))
+
+299 + 
+FRAG_SIZE_ROUND_MASK
+) & ~FRAG_SIZE_ROUND_MASK);
+
+301  
+mfs_®igÃd
+;
+
+302 
+	}
+}
+
+306 
+	$äagm’t_outgošg
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+307 cÚ¡ 
+äame
+* frame)
+
+309 cÚ¡ *
+”rmsg
+ = 
+NULL
+;
+
+310 ià(
+buf
+->
+Ën
+ > 0)
+
+313 ià(
+f
+->
+outgošg
+.
+Ën
+)
+
+314 
+	`msg
+ (
+D_FRAG_ERRORS
+, "FRAG: outgoing buffer is‚otƒmpty,†en=[%d,%d]",
+
+315 
+buf
+->
+Ën
+, 
+f
+->
+outgošg
+.len);
+
+316 ià(
+buf
+->
+Ën
+ > 
+	`PAYLOAD_SIZE_DYNAMIC
+(
+äame
+))
+
+321 
+f
+->
+outgošg_äag_size
+ = 
+	`Ýtim®_äagm’t_size
+ (
+buf
+->
+Ën
+, 
+	`PAYLOAD_SIZE_DYNAMIC
+(
+äame
+));
+
+322 ià(
+buf
+->
+Ën
+ > 
+f
+->
+outgošg_äag_size
+ * 
+MAX_FRAGS
+)
+
+323 
+	`FRAG_ERR
+ ("too many fragments would be„equired�o send datagram");
+
+324 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+f
+->
+outgošg
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+325 
+	`ASSERT
+ (
+	`buf_cÝy
+ (&
+f
+->
+outgošg
+, 
+buf
+));
+
+326 
+f
+->
+outgošg_£q_id
+ = 
+	`modulo_add
+ (f->outgošg_£q_id, 1, 
+N_SEQ_ID
+);
+
+327 
+f
+->
+outgošg_äag_id
+ = 0;
+
+328 
+buf
+->
+Ën
+ = 0;
+
+329 
+	`ASSERT
+ (
+	`äagm’t_»ady_to_£nd
+ (
+f
+, 
+buf
+, 
+äame
+));
+
+336 
+	`äagm’t_´•’d_æags
+ (
+buf
+,
+
+337 
+FRAG_WHOLE
+,
+
+345 
+”rÜ
+:
+
+346 ià(
+”rmsg
+)
+
+347 
+	`msg
+ (
+D_FRAG_ERRORS
+, "FRAG_OUTƒrror,†en=%d frag_size=%d MAX_FRAGS=%d: %s",
+
+348 
+buf
+->
+Ën
+, 
+f
+->
+outgošg_äag_size
+, 
+MAX_FRAGS
+, 
+”rmsg
+);
+
+349 
+buf
+->
+Ën
+ = 0;
+
+351 
+	}
+}
+
+354 
+boÞ
+
+
+355 
+	$äagm’t_»ady_to_£nd
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+356 cÚ¡ 
+äame
+* frame)
+
+358 ià(
+	`äagm’t_outgošg_defšed
+ (
+f
+))
+
+361 
+size
+ = 
+f
+->
+outgošg_äag_size
+;
+
+362 
+Ï¡
+ = 
+çl£
+;
+
+363 ià(
+f
+->
+outgošg
+.
+Ën
+ <ð
+size
+)
+
+365 
+size
+ = 
+f
+->
+outgošg
+.
+Ën
+;
+
+366 
+Ï¡
+ = 
+Œue
+;
+
+370 *
+buf
+ = 
+f
+->
+outgošg_»tuº
+;
+
+371 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+372 
+	`ASSERT
+ (
+	`buf_cÝy_n
+ (
+buf
+, &
+f
+->
+outgošg
+, 
+size
+));
+
+375 
+	`äagm’t_´•’d_æags
+ (
+buf
+,
+
+376 
+Ï¡
+ ? 
+FRAG_YES_LAST
+ : 
+FRAG_YES_NOTLAST
+,
+
+377 
+f
+->
+outgošg_£q_id
+,
+
+378 
+f
+->
+outgošg_äag_id
+++,
+
+379 
+f
+->
+outgošg_äag_size
+);
+
+381 
+	`ASSERT
+ (!
+Ï¡
+ || !
+f
+->
+outgošg
+.
+Ën
+);
+
+383  
+Œue
+;
+
+386  
+çl£
+;
+
+387 
+	}
+}
+
+390 
+	$äagm’t_‰l_»­
+ (
+äagm’t_ma¡”
+ *
+f
+)
+
+392 
+i
+;
+
+393 
+i
+ = 0; i < 
+N_FRAG_BUF
+; ++i)
+
+395 
+äagm’t
+ *
+äag
+ = &
+f
+->
+šcomšg
+.
+äagm’ts
+[
+i
+];
+
+396 ià(
+äag
+->
+defšed
+ && f¿g->
+time¡amp
+ + 
+FRAG_TTL_SEC
+ <ð
+now
+)
+
+398 
+	`msg
+ (
+D_FRAG_ERRORS
+, "FRAG TTLƒxpœed i=%d", 
+i
+);
+
+399 
+äag
+->
+defšed
+ = 
+çl£
+;
+
+402 
+	}
+}
+
+406 
+	$äagm’t_wakeup
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+äame
+ *frame)
+
+409 
+	`äagm’t_‰l_»­
+ (
+f
+);
+
+410 
+	}
+}
+
+413 
+	$dummy
+(è{
+	}
+}
+
+	@fragment.h
+
+25 #iâdeà
+FRAGMENT_H
+
+
+26 
+	#FRAGMENT_H
+
+
+	)
+
+34 #ifdeà
+ENABLE_FRAGMENT
+
+
+42 
+	~"commÚ.h
+"
+
+43 
+	~"bufãr.h
+"
+
+44 
+	~"š‹rv®.h
+"
+
+45 
+	~"mtu.h
+"
+
+46 
+	~"sh­”.h
+"
+
+47 
+	~"”rÜ.h
+"
+
+50 
+	#N_FRAG_BUF
+ 25
+
+	)
+
+55 
+	#FRAG_TTL_SEC
+ 10
+
+	)
+
+58 
+	#FRAG_WAKEUP_INTERVAL
+ 5
+
+	)
+
+66 
+	säagm’t
+ {
+
+67 
+boÞ
+ 
+	mdefšed
+;
+
+70 
+	mmax_äag_size
+;
+
+72 
+	#FRAG_MAP_MASK
+ 0xFFFFFFFF
+
+	)
+
+74 
+	#MAX_FRAGS
+ 32
+
+	)
+
+75 
+	mm­
+;
+
+85 
+time_t
+ 
+	mtime¡amp
+;
+
+87 
+bufãr
+ 
+	mbuf
+;
+
+96 
+	säagm’t_li¡
+ {
+
+97 
+	m£q_id
+;
+
+100 
+	mšdex
+;
+
+115 
+äagm’t
+ 
+	mäagm’ts
+[
+N_FRAG_BUF
+];
+
+137 
+	säagm’t_ma¡”
+ {
+
+138 
+ev’t_timeout
+ 
+	mwakeup
+;
+
+141 
+boÞ
+ 
+	m»ûived_os_mtu_hšt
+;
+
+143 
+	#N_SEQ_ID
+ 256
+
+	)
+
+147 
+	moutgošg_£q_id
+;
+
+155 
+	#MAX_FRAG_PKT_SIZE
+ 65536
+
+	)
+
+158 
+	moutgošg_äag_size
+;
+
+170 
+	moutgošg_äag_id
+;
+
+173 
+bufãr
+ 
+	moutgošg
+;
+
+175 
+bufãr
+ 
+	moutgošg_»tuº
+;
+
+180 
+äagm’t_li¡
+ 
+	mšcomšg
+;
+
+191 
+ušt32_t
+ 
+	täagm’t_h—d”_ty³
+;
+
+195 
+	#htÚ_äagm’t_h—d”_ty³
+(
+x
+è
+	`htÚl
+(x)
+
+	)
+
+199 
+	#Áoh_äagm’t_h—d”_ty³
+(
+x
+è
+	`Áohl
+(x)
+
+	)
+
+203 
+	#FRAG_TYPE_MASK
+ 0x00000003
+
+	)
+
+205 
+	#FRAG_TYPE_SHIFT
+ 0
+
+	)
+
+207 
+	#FRAG_WHOLE
+ 0
+
+	)
+
+209 
+	#FRAG_YES_NOTLAST
+ 1
+
+	)
+
+212 
+	#FRAG_YES_LAST
+ 2
+
+	)
+
+215 
+	#FRAG_TEST
+ 3
+
+	)
+
+220 
+	#FRAG_SEQ_ID_MASK
+ 0x000000ff
+
+	)
+
+222 
+	#FRAG_SEQ_ID_SHIFT
+ 2
+
+	)
+
+224 
+	#FRAG_ID_MASK
+ 0x0000001f
+
+	)
+
+226 
+	#FRAG_ID_SHIFT
+ 10
+
+	)
+
+238 
+	#FRAG_SIZE_MASK
+ 0x00003fff
+
+	)
+
+240 
+	#FRAG_SIZE_SHIFT
+ 15
+
+	)
+
+242 
+	#FRAG_SIZE_ROUND_SHIFT
+ 2
+
+	)
+
+243 
+	#FRAG_SIZE_ROUND_MASK
+ ((1 << 
+FRAG_SIZE_ROUND_SHIFT
+è- 1)
+
+	)
+
+251 
+	#FRAG_EXTRA_MASK
+ 0x0000ffff
+
+	)
+
+253 
+	#FRAG_EXTRA_SHIFT
+ 15
+
+	)
+
+274 
+äagm’t_ma¡”
+ *
+äagm’t_š™
+ (
+äame
+ *frame);
+
+286 
+äagm’t_äame_š™
+ (
+äagm’t_ma¡”
+ *
+f
+, cÚ¡ 
+äame
+ *frame);
+
+294 
+äagm’t_ä“
+ (
+äagm’t_ma¡”
+ *
+f
+);
+
+343 
+äagm’t_šcomšg
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+344 cÚ¡ 
+äame
+* frame);
+
+394 
+äagm’t_outgošg
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+395 cÚ¡ 
+äame
+* frame);
+
+424 
+boÞ
+ 
+äagm’t_»ady_to_£nd
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+bufãr
+ *
+buf
+,
+
+425 cÚ¡ 
+äame
+* frame);
+
+438 
+šlše
+ 
+boÞ
+
+
+439 
+	$äagm’t_outgošg_defšed
+ (
+äagm’t_ma¡”
+ *
+f
+)
+
+441  
+f
+->
+outgošg
+.
+Ën
+ > 0;
+
+442 
+	}
+}
+
+447 
+äagm’t_wakeup
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+äame
+ *frame);
+
+465 
+šlše
+ 
+
+466 
+	$äagm’t_hou£k“pšg
+ (
+äagm’t_ma¡”
+ *
+f
+, 
+äame
+ *äame, 
+timev®
+ *
+tv
+)
+
+468 ià(
+	`ev’t_timeout_Œigg”
+ (&
+f
+->
+wakeup
+, 
+tv
+, 
+ETT_DEFAULT
+))
+
+469 
+	`äagm’t_wakeup
+ (
+f
+, 
+äame
+);
+
+470 
+	}
+}
+
+	@gremlin.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ifdeà
+ENABLE_DEBUG
+
+
+40 
+	~"”rÜ.h
+"
+
+41 
+	~"commÚ.h
+"
+
+42 
+	~"misc.h
+"
+
+43 
+	~"Ùime.h
+"
+
+44 
+	~"g»mlš.h
+"
+
+46 
+	~"memdbg.h
+"
+
+59 cÚ¡ 
+	gdrÝ_äeq
+[] = { 500, 100, 50 };
+
+64 cÚ¡ 
+	gcÜru±_äeq
+[] = { 500, 100, 50 };
+
+70 cÚ¡ 
+	gup_low
+[] = { 60, 10, 5 };
+
+71 cÚ¡ 
+	gup_high
+[] = { 600, 60, 10 };
+
+77 cÚ¡ 
+	gdown_low
+[] = { 5, 10, 10 };
+
+78 cÚ¡ 
+	gdown_high
+[] = { 10, 60, 120 };
+
+84 cÚ¡ 
+·ck‘_æood_·rms
+ 
+	g·ck‘_æood_d©a
+[] =
+
+87 
+·ck‘_æood_·rms
+
+
+88 
+	$g‘_·ck‘_æood_·rms
+ (
+Ëv–
+)
+
+90 
+	`ASSERT
+ (
+Ëv–
+ > 0 &&†evel < 4);
+
+91  
+·ck‘_æood_d©a
+ [
+Ëv–
+ - 1];
+
+92 
+	}
+}
+
+97 
+boÞ
+ 
+	$æ�
+(
+n
+) {
+
+98  (
+	`g‘_¿ndom
+(è% 
+n
+) == 0;
+
+99 
+	}
+}
+
+105 
+	$rÞl
+(
+low
+, 
+high
+) {
+
+106 
+»t
+;
+
+107 
+	`ASSERT
+ (
+low
+ <ð
+high
+);
+
+108 
+»t
+ = 
+low
+ + (
+	`g‘_¿ndom
+(è% (
+high
+ -†ow + 1));
+
+109 
+	`ASSERT
+ (
+»t
+ >ð
+low
+ &&„‘ <ð
+high
+);
+
+110  
+»t
+;
+
+111 
+	}
+}
+
+113 
+boÞ
+ 
+	gš™Ÿlized
+;
+
+114 
+boÞ
+ 
+	gup
+;
+
+115 
+time_t
+ 
+	gÃxt
+;
+
+120 
+boÞ
+
+
+121 
+	$ask_g»mlš
+ (
+æags
+)
+
+123 cÚ¡ 
+up_down_Ëv–
+ = 
+	`GREMLIN_UP_DOWN_LEVEL
+ (
+æags
+);
+
+124 cÚ¡ 
+drÝ_Ëv–
+ = 
+	`GREMLIN_DROP_LEVEL
+ (
+æags
+);
+
+126 ià(!
+š™Ÿlized
+)
+
+128 
+š™Ÿlized
+ = 
+Œue
+;
+
+130 ià(
+up_down_Ëv–
+)
+
+131 
+up
+ = 
+çl£
+;
+
+133 
+up
+ = 
+Œue
+;
+
+135 
+Ãxt
+ = 
+now
+;
+
+138 ià(
+up_down_Ëv–
+)
+
+140 ià(
+now
+ >ð
+Ãxt
+)
+
+142 
+d–�
+;
+
+143 ià(
+up
+)
+
+145 
+d–�
+ = 
+	`rÞl
+ (
+down_low
+[
+up_down_Ëv–
+-1], 
+down_high
+[up_down_level-1]);
+
+146 
+up
+ = 
+çl£
+;
+
+150 
+d–�
+ = 
+	`rÞl
+ (
+up_low
+[
+up_down_Ëv–
+-1], 
+up_high
+[up_down_level-1]);
+
+151 
+up
+ = 
+Œue
+;
+
+154 
+	`msg
+ (
+D_GREMLIN
+,
+
+156 (
+up
+ ? "UP" : "DOWN"),
+
+157 
+d–�
+);
+
+158 
+Ãxt
+ = 
+now
+ + 
+d–�
+;
+
+162 ià(
+drÝ_Ëv–
+)
+
+164 ià(
+up
+ && 
+	`æ�
+ (
+drÝ_äeq
+[
+drÝ_Ëv–
+-1]))
+
+166 
+	`dmsg
+ (
+D_GREMLIN_VERBOSE
+, "GREMLIN: Random…acket drop");
+
+167  
+çl£
+;
+
+171  
+up
+;
+
+172 
+	}
+}
+
+177 
+	$cÜru±_g»mlš
+ (
+bufãr
+ *
+buf
+, 
+æags
+) {
+
+178 cÚ¡ 
+cÜru±_Ëv–
+ = 
+	`GREMLIN_CORRUPT_LEVEL
+ (
+æags
+);
+
+179 ià(
+cÜru±_Ëv–
+)
+
+181 ià(
+	`æ�
+ (
+cÜru±_äeq
+[
+cÜru±_Ëv–
+-1]))
+
+185 ià(
+buf
+->
+Ën
+ > 0)
+
+187 
+ušt8_t
+ 
+r
+ = 
+	`rÞl
+ (0, 255);
+
+188 
+m‘hod
+ = 
+	`rÞl
+ (0, 5);
+
+190 
+m‘hod
+) {
+
+192 *
+	`BPTR
+ (
+buf
+èð
+r
+;
+
+195 *(
+	`BPTR
+ (
+buf
+è+ buf->
+Ën
+ - 1èð
+r
+;
+
+198 *(
+	`BPTR
+(
+buf
+è+ 
+	`rÞl
+ (0, buf->
+Ën
+ - 1)èð
+r
+;
+
+201 
+	`buf_wr™e
+ (
+buf
+, &
+r
+, 1);
+
+204 --
+buf
+->
+Ën
+;
+
+207 
+buf
+->
+Ën
+ -ð
+	`rÞl
+ (0, buf->len - 1);
+
+210 
+	`dmsg
+ (
+D_GREMLIN_VERBOSE
+, "GREMLIN: Pack‘ CÜru±iÚ, m‘hod=%d", 
+m‘hod
+);
+
+214 } 
+	`æ�
+ (2));
+
+217 
+	}
+}
+
+220 
+	$dummy
+(è{
+	}
+}
+
+	@gremlin.h
+
+25 #iâdeà
+GREMLIN_H
+
+
+26 
+	#GREMLIN_H
+
+
+	)
+
+28 #ifdeà
+ENABLE_DEBUG
+
+
+34 
+	#GREMLIN_CONNECTION_FLOOD_SHIFT
+ (0)
+
+	)
+
+35 
+	#GREMLIN_CONNECTION_FLOOD_MASK
+ (0x07)
+
+	)
+
+37 
+	#GREMLIN_PACKET_FLOOD_SHIFT
+ (3)
+
+	)
+
+38 
+	#GREMLIN_PACKET_FLOOD_MASK
+ (0x03)
+
+	)
+
+40 
+	#GREMLIN_CORRUPT_SHIFT
+ (5)
+
+	)
+
+41 
+	#GREMLIN_CORRUPT_MASK
+ (0x03)
+
+	)
+
+43 
+	#GREMLIN_UP_DOWN_SHIFT
+ (7)
+
+	)
+
+44 
+	#GREMLIN_UP_DOWN_MASK
+ (0x03)
+
+	)
+
+48 
+	#GREMLIN_DROP_SHIFT
+ (9)
+
+	)
+
+49 
+	#GREMLIN_DROP_MASK
+ (0x03)
+
+	)
+
+53 
+	#GREMLIN_CONNECTION_FLOOD_LEVEL
+(
+x
+è(((x)>>
+GREMLIN_CONNECTION_FLOOD_SHIFT
+è& 
+GREMLIN_CONNECTION_FLOOD_MASK
+)
+
+	)
+
+54 
+	#GREMLIN_PACKET_FLOOD_LEVEL
+(
+x
+è(((x)>>
+GREMLIN_PACKET_FLOOD_SHIFT
+è& 
+GREMLIN_PACKET_FLOOD_MASK
+)
+
+	)
+
+55 
+	#GREMLIN_CORRUPT_LEVEL
+(
+x
+è(((x)>>
+GREMLIN_CORRUPT_SHIFT
+è& 
+GREMLIN_CORRUPT_MASK
+)
+
+	)
+
+56 
+	#GREMLIN_UP_DOWN_LEVEL
+(
+x
+è(((x)>>
+GREMLIN_UP_DOWN_SHIFT
+è& 
+GREMLIN_UP_DOWN_MASK
+)
+
+	)
+
+57 
+	#GREMLIN_DROP_LEVEL
+(
+x
+è(((x)>>
+GREMLIN_DROP_SHIFT
+è& 
+GREMLIN_DROP_MASK
+)
+
+	)
+
+59 
+	~"bufãr.h
+"
+
+61 
+	s·ck‘_æood_·rms
+
+
+63 
+	mn_·ck‘s
+;
+
+64 
+	m·ck‘_size
+;
+
+67 
+boÞ
+ 
+ask_g»mlš
+ (
+æags
+);
+
+68 
+cÜru±_g»mlš
+ (
+bufãr
+* 
+buf
+, 
+æags
+);
+
+69 
+·ck‘_æood_·rms
+ 
+g‘_·ck‘_æood_·rms
+ (
+Ëv–
+);
+
+	@helper.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"fÜw¬d.h
+"
+
+34 
+	~"h–³r.h
+"
+
+35 
+	~"poÞ.h
+"
+
+36 
+	~"push.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 #ià
+P2MP_SERVER
+
+
+43 
+	$´št_Ãtmask
+ (
+Ãtb™s
+, 
+gc_¬’a
+ *
+gc
+)
+
+45 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+46 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+ = 
+	`Ãtb™s_to_Ãtmask
+ (
+Ãtb™s
+);
+
+48 
+	`buf_´štf
+ (&
+out
+, "% (/%d)", 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, 
+gc
+), 
+Ãtb™s
+);
+
+50  
+	`BSTR
+ (&
+out
+);
+
+51 
+	}
+}
+
+54 
+	$´št_Ýt_rou‹_g©eway
+ (cÚ¡ 
+š_addr_t
+ 
+rou‹_g©eway
+, 
+gc_¬’a
+ *
+gc
+)
+
+56 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+57 
+	`ASSERT
+ (
+rou‹_g©eway
+);
+
+58 
+	`buf_´štf
+ (&
+out
+, "rou‹-g©eway %s", 
+	`´št_š_addr_t
+ (
+rou‹_g©eway
+, 0, 
+gc
+));
+
+59  
+	`BSTR
+ (&
+out
+);
+
+60 
+	}
+}
+
+63 
+	$´št_Ýt_rou‹_g©eway_dhý
+ (
+gc_¬’a
+ *
+gc
+)
+
+65 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (32, 
+gc
+);
+
+66 
+	`buf_´štf
+ (&
+out
+, "route-gateway dhcp");
+
+67  
+	`BSTR
+ (&
+out
+);
+
+68 
+	}
+}
+
+71 
+	$´št_Ýt_rou‹
+ (cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+, cÚ¡ in_addr_ˆ
+Ãtmask
+, 
+gc_¬’a
+ *
+gc
+)
+
+73 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+74 
+	`ASSERT
+ (
+ÃtwÜk
+);
+
+76 ià(
+Ãtmask
+)
+
+77 
+	`buf_´štf
+ (&
+out
+, "route %s %s",
+
+78 
+	`´št_š_addr_t
+ (
+ÃtwÜk
+, 0, 
+gc
+),
+
+79 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, 
+gc
+));
+
+81 
+	`buf_´štf
+ (&
+out
+, "route %s",
+
+82 
+	`´št_š_addr_t
+ (
+ÃtwÜk
+, 0, 
+gc
+));
+
+84  
+	`BSTR
+ (&
+out
+);
+
+85 
+	}
+}
+
+88 
+	$´št_Ýt_tÝÞogy
+ (cÚ¡ 
+tÝÞogy
+, 
+gc_¬’a
+ *
+gc
+)
+
+90 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+92 
+	`buf_´štf
+ (&
+out
+, "tÝÞogy %s", 
+	`´št_tÝÞogy
+ (
+tÝÞogy
+));
+
+94  
+	`BSTR
+ (&
+out
+);
+
+95 
+	}
+}
+
+98 
+	$´št_¡r_št
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+i
+, 
+gc_¬’a
+ *
+gc
+)
+
+100 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+101 
+	`buf_´štf
+ (&
+out
+, "% %d", 
+¡r
+, 
+i
+);
+
+102  
+	`BSTR
+ (&
+out
+);
+
+103 
+	}
+}
+
+106 
+	$´št_¡r
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+108 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+109 
+	`buf_´štf
+ (&
+out
+, "%s", 
+¡r
+);
+
+110  
+	`BSTR
+ (&
+out
+);
+
+111 
+	}
+}
+
+114 
+	$h–³r_add_rou‹
+ (cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+, cÚ¡ in_addr_ˆ
+Ãtmask
+, 
+ÝtiÚs
+ *
+o
+)
+
+116 
+	`rÞ_check_®loc
+ (
+o
+);
+
+117 
+	`add_rou‹_to_ÝtiÚ_li¡
+ (
+o
+->
+rou‹s
+,
+
+118 
+	`´št_š_addr_t
+ (
+ÃtwÜk
+, 0, &
+o
+->
+gc
+),
+
+119 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, &
+o
+->
+gc
+),
+
+120 
+NULL
+,
+
+121 
+NULL
+);
+
+122 
+	}
+}
+
+125 
+	$v”ify_commÚ_subÃt
+ (cÚ¡ *
+Ýt
+, cÚ¡ 
+š_addr_t
+ 
+a
+, cÚ¡ in_addr_ˆ
+b
+, cÚ¡ in_addr_ˆ
+subÃt
+)
+
+127 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+128 ià((
+a
+ & 
+subÃt
+è!ð(
+b
+ & subnet))
+
+129 
+	`msg
+ (
+M_USAGE
+, "%s IP‡ddresses %s‡nd %s‡re‚ot in�he same %s subnet",
+
+130 
+Ýt
+,
+
+131 
+	`´št_š_addr_t
+ (
+a
+, 0, &
+gc
+),
+
+132 
+	`´št_š_addr_t
+ (
+b
+, 0, &
+gc
+),
+
+133 
+	`´št_š_addr_t
+ (
+subÃt
+, 0, &
+gc
+));
+
+134 
+	`gc_ä“
+ (&
+gc
+);
+
+135 
+	}
+}
+
+145 
+	$h–³r_þ›Á_£rv”
+ (
+ÝtiÚs
+ *
+o
+)
+
+147 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+149 #ià
+P2MP
+
+
+150 #ià
+P2MP_SERVER
+
+
+155 cÚ¡ 
+dev
+ = 
+	`dev_ty³_’um
+ (
+o
+->dev, o->
+dev_ty³
+);
+
+156 cÚ¡ 
+tÝÞogy
+ = 
+o
+->topology;
+
+173 iàÐ
+o
+->
+£rv”_�v6_defšed
+ )
+
+175 iàÐ! 
+o
+->
+£rv”_defšed
+ )
+
+177 
+	`msg
+ (
+M_USAGE
+, "--server-ipv6 must be used�ogether with --server");
+
+179 iàÐ
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+ )
+
+181 
+	`msg
+Ð
+M_USAGE
+, "--server-ipv6 is incompatible with 'nopool' option" );
+
+183 iàÐ
+o
+->
+ifcÚfig_�v6_poÞ_defšed
+ )
+
+185 
+	`msg
+Ð
+M_USAGE
+, "--server-ipv6‡lready defines‡n ifconfig-ipv6-pool, so you can't‡lso specify --ifconfig-poolƒxplicitly");
+
+189 
+o
+->
+ifcÚfig_�v6_loÿl
+ =
+
+190 
+	`´št_š6_addr
+Ð
+	`add_š6_addr
+Ð
+o
+->
+£rv”_ÃtwÜk_�v6
+, 1), 0, &o->
+gc
+ );
+
+191 
+o
+->
+ifcÚfig_�v6_»mÙe
+ =
+
+192 
+	`´št_š6_addr
+Ð
+	`add_š6_addr
+Ð
+o
+->
+£rv”_ÃtwÜk_�v6
+, 2), 0, &o->
+gc
+ );
+
+193 
+o
+->
+ifcÚfig_�v6_Ãtb™s
+ = o->
+£rv”_Ãtb™s_�v6
+;
+
+196 
+	`ASSERT
+Ð
+o
+->
+£rv”_Ãtb™s_�v6
+ <= 112 );
+
+198 
+o
+->
+ifcÚfig_�v6_poÞ_defšed
+ = 
+Œue
+;
+
+199 
+o
+->
+ifcÚfig_�v6_poÞ_ba£
+ =
+
+200 
+	`add_š6_addr
+Ð
+o
+->
+£rv”_ÃtwÜk_�v6
+, 0x1000 );
+
+201 
+o
+->
+ifcÚfig_�v6_poÞ_Ãtb™s
+ = o->
+£rv”_Ãtb™s_�v6
+;
+
+203 
+o
+->
+tun_�v6
+ = 
+Œue
+;
+
+205 
+	`push_ÝtiÚ
+Ð
+o
+, "tun-�v6", 
+M_USAGE
+ );
+
+239 ià(
+o
+->
+£rv”_defšed
+)
+
+241 
+Ãtb™s
+ = -2;
+
+242 
+boÞ
+ 
+¡©us
+ = 
+çl£
+;
+
+244 ià(
+o
+->
+þ›Á
+)
+
+245 
+	`msg
+ (
+M_USAGE
+, "--server‡nd --client cannot be used�ogether");
+
+247 ià(
+o
+->
+£rv”_bridge_defšed
+ || o->
+£rv”_bridge_´oxy_dhý
+)
+
+248 
+	`msg
+ (
+M_USAGE
+, "--server‡nd --server-bridge cannot be used�ogether");
+
+250 ià(
+o
+->
+sh¬ed_£ü‘_fže
+)
+
+251 
+	`msg
+ (
+M_USAGE
+, "--server‡nd --secret cannot be used�ogether (you must use SSL/TLS keys)");
+
+253 ià(!(
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+è&& o->
+ifcÚfig_poÞ_defšed
+)
+
+254 
+	`msg
+ (
+M_USAGE
+, "--server‡lready defines‡n ifconfig-pool, so you can't‡lso specify --ifconfig-poolƒxplicitly");
+
+256 ià(!(
+dev
+ =ð
+DEV_TYPE_TAP
+ || dev =ð
+DEV_TYPE_TUN
+))
+
+257 
+	`msg
+ (
+M_USAGE
+, "--server directive only makes sense with --dev�un or --dev�ap");
+
+259 
+¡©us
+ = 
+	`Ãtmask_to_Ãtb™s
+ (
+o
+->
+£rv”_ÃtwÜk
+, o->
+£rv”_Ãtmask
+, &
+Ãtb™s
+);
+
+260 ià(!
+¡©us
+)
+
+261 
+	`msg
+ (
+M_USAGE
+, "--server directive‚etwork/netmask combination is invalid");
+
+263 ià(
+Ãtb™s
+ < 0)
+
+264 
+	`msg
+ (
+M_USAGE
+, "--server directive‚etmask is invalid");
+
+266 ià(
+Ãtb™s
+ < 
+IFCONFIG_POOL_MIN_NETBITS
+)
+
+267 
+	`msg
+ (
+M_USAGE
+, "--server directive‚etmask‡llows for�oo many host‡ddresses (subnet must be %s or higher)",
+
+268 
+	`´št_Ãtmask
+ (
+IFCONFIG_POOL_MIN_NETBITS
+, &
+gc
+));
+
+270 ià(
+dev
+ =ð
+DEV_TYPE_TUN
+)
+
+272 
+poÞ_’d_»£rve
+ = 4;
+
+274 ià(
+Ãtb™s
+ > 29)
+
+275 
+	`msg
+ (
+M_USAGE
+, "--server directive when used with --dev�un must define‡ subnet of %s or†ower",
+
+276 
+	`´št_Ãtmask
+ (29, &
+gc
+));
+
+278 ià(
+Ãtb™s
+ == 29)
+
+279 
+poÞ_’d_»£rve
+ = 0;
+
+281 
+o
+->
+mode
+ = 
+MODE_SERVER
+;
+
+282 
+o
+->
+Žs_£rv”
+ = 
+Œue
+;
+
+284 ià(
+tÝÞogy
+ =ð
+TOP_NET30
+ ||�ÝÞogy =ð
+TOP_P2P
+)
+
+286 
+o
+->
+ifcÚfig_loÿl
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_ÃtwÜk
+ + 1, 0, &o->
+gc
+);
+
+287 
+o
+->
+ifcÚfig_»mÙe_Ãtmask
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_ÃtwÜk
+ + 2, 0, &o->
+gc
+);
+
+289 ià(!(
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+))
+
+291 
+o
+->
+ifcÚfig_poÞ_defšed
+ = 
+Œue
+;
+
+292 
+o
+->
+ifcÚfig_poÞ_¡¬t
+ = o->
+£rv”_ÃtwÜk
+ + 4;
+
+293 
+o
+->
+ifcÚfig_poÞ_’d
+ = (o->
+£rv”_ÃtwÜk
+ | ~o->
+£rv”_Ãtmask
+è- 
+poÞ_’d_»£rve
+;
+
+294 
+	`ifcÚfig_poÞ_v”ify_¿nge
+ (
+M_USAGE
+, 
+o
+->
+ifcÚfig_poÞ_¡¬t
+, o->
+ifcÚfig_poÞ_’d
+);
+
+297 
+	`h–³r_add_rou‹
+ (
+o
+->
+£rv”_ÃtwÜk
+, o->
+£rv”_Ãtmask
+, o);
+
+298 ià(
+o
+->
+’abË_c2c
+)
+
+299 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹
+ (o->
+£rv”_ÃtwÜk
+, o->
+£rv”_Ãtmask
+, &o->
+gc
+), 
+M_USAGE
+);
+
+300 ià(
+tÝÞogy
+ =ð
+TOP_NET30
+)
+
+301 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹
+ (o->
+£rv”_ÃtwÜk
+ + 1, 0, &o->
+gc
+), 
+M_USAGE
+);
+
+303 ià(
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+305 
+o
+->
+ifcÚfig_loÿl
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_ÃtwÜk
+ + 1, 0, &o->
+gc
+);
+
+306 
+o
+->
+ifcÚfig_»mÙe_Ãtmask
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_Ãtmask
+, 0, &o->
+gc
+);
+
+308 ià(!(
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+))
+
+310 
+o
+->
+ifcÚfig_poÞ_defšed
+ = 
+Œue
+;
+
+311 
+o
+->
+ifcÚfig_poÞ_¡¬t
+ = o->
+£rv”_ÃtwÜk
+ + 2;
+
+312 
+o
+->
+ifcÚfig_poÞ_’d
+ = (o->
+£rv”_ÃtwÜk
+ | ~o->
+£rv”_Ãtmask
+) - 2;
+
+313 
+	`ifcÚfig_poÞ_v”ify_¿nge
+ (
+M_USAGE
+, 
+o
+->
+ifcÚfig_poÞ_¡¬t
+, o->
+ifcÚfig_poÞ_’d
+);
+
+315 
+o
+->
+ifcÚfig_poÞ_Ãtmask
+ = o->
+£rv”_Ãtmask
+;
+
+317 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹_g©eway
+ (o->
+£rv”_ÃtwÜk
+ + 1, &o->
+gc
+), 
+M_USAGE
+);
+
+318 ià(!
+o
+->
+rou‹_deçuÉ_g©eway
+)
+
+319 
+o
+->
+rou‹_deçuÉ_g©eway
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_ÃtwÜk
+ + 2, 0, &o->
+gc
+);
+
+322 
+	`ASSERT
+ (0);
+
+324 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_tÝÞogy
+ (
+tÝÞogy
+, &o->
+gc
+), 
+M_USAGE
+);
+
+326 ià(
+dev
+ =ð
+DEV_TYPE_TAP
+)
+
+328 ià(
+Ãtb™s
+ > 30)
+
+329 
+	`msg
+ (
+M_USAGE
+, "--server directive when used with --dev�ap must define‡ subnet of %s or†ower",
+
+330 
+	`´št_Ãtmask
+ (30, &
+gc
+));
+
+332 
+o
+->
+mode
+ = 
+MODE_SERVER
+;
+
+333 
+o
+->
+Žs_£rv”
+ = 
+Œue
+;
+
+334 
+o
+->
+ifcÚfig_loÿl
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_ÃtwÜk
+ + 1, 0, &o->
+gc
+);
+
+335 
+o
+->
+ifcÚfig_»mÙe_Ãtmask
+ = 
+	`´št_š_addr_t
+ (o->
+£rv”_Ãtmask
+, 0, &o->
+gc
+);
+
+337 ià(!(
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+))
+
+339 
+o
+->
+ifcÚfig_poÞ_defšed
+ = 
+Œue
+;
+
+340 
+o
+->
+ifcÚfig_poÞ_¡¬t
+ = o->
+£rv”_ÃtwÜk
+ + 2;
+
+341 
+o
+->
+ifcÚfig_poÞ_’d
+ = (o->
+£rv”_ÃtwÜk
+ | ~o->
+£rv”_Ãtmask
+) - 1;
+
+342 
+	`ifcÚfig_poÞ_v”ify_¿nge
+ (
+M_USAGE
+, 
+o
+->
+ifcÚfig_poÞ_¡¬t
+, o->
+ifcÚfig_poÞ_’d
+);
+
+344 
+o
+->
+ifcÚfig_poÞ_Ãtmask
+ = o->
+£rv”_Ãtmask
+;
+
+346 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹_g©eway
+ (o->
+£rv”_ÃtwÜk
+ + 1, &o->
+gc
+), 
+M_USAGE
+);
+
+350 
+	`ASSERT
+ (0);
+
+354 ià((
+dev
+ =ð
+DEV_TYPE_TAP
+ || 
+tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+356 
+o
+->
+push_ifcÚfig_cÚ¡¿št_defšed
+ = 
+Œue
+;
+
+357 
+o
+->
+push_ifcÚfig_cÚ¡¿št_ÃtwÜk
+ = o->
+£rv”_ÃtwÜk
+;
+
+358 
+o
+->
+push_ifcÚfig_cÚ¡¿št_Ãtmask
+ = o->
+£rv”_Ãtmask
+;
+
+387 ià(
+o
+->
+£rv”_bridge_defšed
+ | o->
+£rv”_bridge_´oxy_dhý
+)
+
+389 ià(
+o
+->
+þ›Á
+)
+
+390 
+	`msg
+ (
+M_USAGE
+, "--server-bridge‡nd --client cannot be used�ogether");
+
+392 ià(!(
+o
+->
+£rv”_æags
+ & 
+SF_NOPOOL
+è&& o->
+ifcÚfig_poÞ_defšed
+)
+
+393 
+	`msg
+ (
+M_USAGE
+, "--server-bridge‡lready defines‡n ifconfig-pool, so you can't‡lso specify --ifconfig-poolƒxplicitly");
+
+395 ià(
+o
+->
+sh¬ed_£ü‘_fže
+)
+
+396 
+	`msg
+ (
+M_USAGE
+, "--server-bridge‡nd --secret cannot be used�ogether (you must use SSL/TLS keys)");
+
+398 ià(
+dev
+ !ð
+DEV_TYPE_TAP
+)
+
+399 
+	`msg
+ (
+M_USAGE
+, "--server-bridge directive only makes sense with --dev�ap");
+
+401 ià(
+o
+->
+£rv”_bridge_defšed
+)
+
+403 
+	`v”ify_commÚ_subÃt
+ ("--£rv”-bridge", 
+o
+->
+£rv”_bridge_�
+, o->
+£rv”_bridge_poÞ_¡¬t
+, o->
+£rv”_bridge_Ãtmask
+);
+
+404 
+	`v”ify_commÚ_subÃt
+ ("--£rv”-bridge", 
+o
+->
+£rv”_bridge_poÞ_¡¬t
+, o->
+£rv”_bridge_poÞ_’d
+, o->
+£rv”_bridge_Ãtmask
+);
+
+405 
+	`v”ify_commÚ_subÃt
+ ("--£rv”-bridge", 
+o
+->
+£rv”_bridge_�
+, o->
+£rv”_bridge_poÞ_’d
+, o->
+£rv”_bridge_Ãtmask
+);
+
+408 
+o
+->
+mode
+ = 
+MODE_SERVER
+;
+
+409 
+o
+->
+Žs_£rv”
+ = 
+Œue
+;
+
+411 ià(
+o
+->
+£rv”_bridge_defšed
+)
+
+413 
+o
+->
+ifcÚfig_poÞ_defšed
+ = 
+Œue
+;
+
+414 
+o
+->
+ifcÚfig_poÞ_¡¬t
+ = o->
+£rv”_bridge_poÞ_¡¬t
+;
+
+415 
+o
+->
+ifcÚfig_poÞ_’d
+ = o->
+£rv”_bridge_poÞ_’d
+;
+
+416 
+	`ifcÚfig_poÞ_v”ify_¿nge
+ (
+M_USAGE
+, 
+o
+->
+ifcÚfig_poÞ_¡¬t
+, o->
+ifcÚfig_poÞ_’d
+);
+
+417 
+o
+->
+ifcÚfig_poÞ_Ãtmask
+ = o->
+£rv”_bridge_Ãtmask
+;
+
+418 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹_g©eway
+ (o->
+£rv”_bridge_�
+, &o->
+gc
+), 
+M_USAGE
+);
+
+420 ià(
+o
+->
+£rv”_bridge_´oxy_dhý
+ && !(o->
+£rv”_æags
+ & 
+SF_NO_PUSH_ROUTE_GATEWAY
+))
+
+422 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_Ýt_rou‹_g©eway_dhý
+ (&o->
+gc
+), 
+M_USAGE
+);
+
+438 ià(
+o
+->
+þ›Á
+)
+
+440 ià(
+o
+->
+key_m‘hod
+ != 2)
+
+441 
+	`msg
+ (
+M_USAGE
+, "--client„equires --key-method 2");
+
+443 
+o
+->
+puÎ
+ = 
+Œue
+;
+
+444 
+o
+->
+Žs_þ›Á
+ = 
+Œue
+;
+
+449 
+	`gc_ä“
+ (&
+gc
+);
+
+450 
+	}
+}
+
+470 
+	$h–³r_k“·live
+ (
+ÝtiÚs
+ *
+o
+)
+
+472 ià(
+o
+->
+k“·live_pšg
+ || o->
+k“·live_timeout
+)
+
+477 ià(
+o
+->
+k“·live_pšg
+ <ð0 || o->
+k“·live_timeout
+ <= 0)
+
+478 
+	`msg
+ (
+M_USAGE
+, "--keepalive…arameters must be > 0");
+
+479 ià(
+o
+->
+k“·live_pšg
+ * 2 > o->
+k“·live_timeout
+)
+
+480 
+	`msg
+ (
+M_USAGE
+, "the second…arameter�o --keepalive (restart�imeout=%d) must be‡t†east�wice�he value of�he first…arameter (ping interval=%d). A„atio of 1:5 or 1:6 would beƒven better. Recommended setting is --keepalive 10 60.",
+
+481 
+o
+->
+k“·live_timeout
+,
+
+482 
+o
+->
+k“·live_pšg
+);
+
+483 ià(
+o
+->
+pšg_£nd_timeout
+ || o->
+pšg_»c_timeout
+)
+
+484 
+	`msg
+ (
+M_USAGE
+, "--keepalive conflicts with --ping, --ping-exit, or --ping-restart. If you use --keepalive, you don't‚eed‡ny of�he other --ping directives.");
+
+489 ià(
+o
+->
+mode
+ =ð
+MODE_POINT_TO_POINT
+)
+
+491 
+o
+->
+pšg_»c_timeout_aùiÚ
+ = 
+PING_RESTART
+;
+
+492 
+o
+->
+pšg_£nd_timeout
+ = o->
+k“·live_pšg
+;
+
+493 
+o
+->
+pšg_»c_timeout
+ = o->
+k“·live_timeout
+;
+
+495 #ià
+P2MP_SERVER
+
+
+496 ià(
+o
+->
+mode
+ =ð
+MODE_SERVER
+)
+
+498 
+o
+->
+pšg_»c_timeout_aùiÚ
+ = 
+PING_RESTART
+;
+
+499 
+o
+->
+pšg_£nd_timeout
+ = o->
+k“·live_pšg
+;
+
+500 
+o
+->
+pšg_»c_timeout
+ = o->
+k“·live_timeout
+ * 2;
+
+501 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_¡r_št
+ ("pšg", o->
+k“·live_pšg
+, &o->
+gc
+), 
+M_USAGE
+);
+
+502 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_¡r_št
+ ("pšg-»¡¬t", o->
+k“·live_timeout
+, &o->
+gc
+), 
+M_USAGE
+);
+
+507 
+	`ASSERT
+ (0);
+
+510 
+	}
+}
+
+525 
+	$h–³r_tý_nod–ay
+ (
+ÝtiÚs
+ *
+o
+)
+
+527 #ià
+P2MP_SERVER
+
+
+528 ià(
+o
+->
+£rv”_æags
+ & 
+SF_TCP_NODELAY_HELPER
+)
+
+530 ià(
+o
+->
+mode
+ =ð
+MODE_SERVER
+)
+
+532 
+o
+->
+sockæags
+ |ð
+SF_TCP_NODELAY
+;
+
+533 
+	`push_ÝtiÚ
+ (
+o
+, 
+	`´št_¡r
+ ("sock‘-æag TCP_NODELAY", &o->
+gc
+), 
+M_USAGE
+);
+
+537 
+o
+->
+sockæags
+ |ð
+SF_TCP_NODELAY
+;
+
+541 
+	}
+}
+
+	@helper.h
+
+29 #iâdeà
+HELPER_H
+
+
+30 
+	#HELPER_H
+
+
+	)
+
+32 
+	~"ÝtiÚs.h
+"
+
+34 
+h–³r_k“·live
+ (
+ÝtiÚs
+ *
+o
+);
+
+35 
+h–³r_þ›Á_£rv”
+ (
+ÝtiÚs
+ *
+o
+);
+
+36 
+h–³r_tý_nod–ay
+ (
+ÝtiÚs
+ *
+o
+);
+
+	@httpdigest.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+PROXY_DIGEST_AUTH
+
+
+35 
+	~"üy±o.h
+"
+
+36 
+	~"h‰pdige¡.h
+"
+
+39 
+	$CvtHex
+(
+
+40 
+IN
+ 
+HASH
+ 
+Bš
+,
+
+41 
+OUT
+ 
+HASHHEX
+ 
+Hex
+
+
+44 
+i
+;
+
+45 
+j
+;
+
+47 
+i
+ = 0; i < 
+HASHLEN
+; i++) {
+
+48 
+j
+ = (
+Bš
+[
+i
+] >> 4) & 0xf;
+
+49 ià(
+j
+ <= 9)
+
+50 
+Hex
+[
+i
+*2] = (
+j
+ + '0');
+
+52 
+Hex
+[
+i
+*2] = (
+j
+ + 'a' - 10);
+
+53 
+j
+ = 
+Bš
+[
+i
+] & 0xf;
+
+54 ià(
+j
+ <= 9)
+
+55 
+Hex
+[
+i
+*2+1] = (
+j
+ + '0');
+
+57 
+Hex
+[
+i
+*2+1] = (
+j
+ + 'a' - 10);
+
+59 
+Hex
+[
+HASHHEXLEN
+] = '\0';
+
+60 
+	}
+};
+
+64 
+	$Dige¡C®cHA1
+(
+
+65 
+IN
+ * 
+pszAlg
+,
+
+66 
+IN
+ * 
+pszU£rName
+,
+
+67 
+IN
+ * 
+pszR—lm
+,
+
+68 
+IN
+ * 
+pszPasswÜd
+,
+
+69 
+IN
+ * 
+pszNÚû
+,
+
+70 
+IN
+ * 
+pszCNÚû
+,
+
+71 
+OUT
+ 
+HASHHEX
+ 
+SessiÚKey
+
+
+74 
+HASH
+ 
+HA1
+;
+
+75 
+md_ùx_t
+ 
+md5_ùx
+;
+
+76 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+78 
+	`md_ùx_š™
+(&
+md5_ùx
+, 
+md5_kt
+);
+
+79 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszU£rName
+, 
+	`¡¾’
+(pszUserName));
+
+80 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+81 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszR—lm
+, 
+	`¡¾’
+(pszRealm));
+
+82 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+83 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszPasswÜd
+, 
+	`¡¾’
+(pszPassword));
+
+84 
+	`md_ùx_fš®
+(&
+md5_ùx
+, 
+HA1
+);
+
+85 ià(
+pszAlg
+ && 
+	`¡rÿ£cmp
+(pszAlg, "md5-sess") == 0)
+
+87 
+	`md_ùx_š™
+(&
+md5_ùx
+, 
+md5_kt
+);
+
+88 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+HA1
+, 
+HASHLEN
+);
+
+89 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+90 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszNÚû
+, 
+	`¡¾’
+(pszNonce));
+
+91 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+92 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszCNÚû
+, 
+	`¡¾’
+(pszCNonce));
+
+93 
+	`md_ùx_fš®
+(&
+md5_ùx
+, 
+HA1
+);
+
+95 
+	`md_ùx_þ—nup
+(&
+md5_ùx
+);
+
+96 
+	`CvtHex
+(
+HA1
+, 
+SessiÚKey
+);
+
+97 
+	}
+}
+
+101 
+	$Dige¡C®cRe¥Ú£
+(
+
+102 
+IN
+ 
+HASHHEX
+ 
+HA1
+,
+
+103 
+IN
+ * 
+pszNÚû
+,
+
+104 
+IN
+ * 
+pszNÚûCouÁ
+,
+
+105 
+IN
+ * 
+pszCNÚû
+,
+
+106 
+IN
+ * 
+pszQÝ
+,
+
+107 
+IN
+ * 
+pszM‘hod
+,
+
+108 
+IN
+ * 
+pszDige¡Uri
+,
+
+109 
+IN
+ 
+HASHHEX
+ 
+HEÁ™y
+,
+
+110 
+OUT
+ 
+HASHHEX
+ 
+Re¥Ú£
+
+
+113 
+HASH
+ 
+HA2
+;
+
+114 
+HASH
+ 
+Re¥Hash
+;
+
+115 
+HASHHEX
+ 
+HA2Hex
+;
+
+117 
+md_ùx_t
+ 
+md5_ùx
+;
+
+118 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+121 
+	`md_ùx_š™
+(&
+md5_ùx
+, 
+md5_kt
+);
+
+122 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszM‘hod
+, 
+	`¡¾’
+(pszMethod));
+
+123 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+124 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszDige¡Uri
+, 
+	`¡¾’
+(pszDigestUri));
+
+125 ià(
+	`¡rÿ£cmp
+(
+pszQÝ
+, "auth-int") == 0)
+
+127 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+128 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+HEÁ™y
+, 
+HASHHEXLEN
+);
+
+130 
+	`md_ùx_fš®
+(&
+md5_ùx
+, 
+HA2
+);
+
+131 
+	`CvtHex
+(
+HA2
+, 
+HA2Hex
+);
+
+134 
+	`md_ùx_š™
+(&
+md5_ùx
+, 
+md5_kt
+);
+
+135 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+HA1
+, 
+HASHHEXLEN
+);
+
+136 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+137 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszNÚû
+, 
+	`¡¾’
+(pszNonce));
+
+138 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+139 ià(*
+pszQÝ
+)
+
+141 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszNÚûCouÁ
+, 
+	`¡¾’
+(pszNonceCount));
+
+142 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+143 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszCNÚû
+, 
+	`¡¾’
+(pszCNonce));
+
+144 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+145 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+pszQÝ
+, 
+	`¡¾’
+(pszQop));
+
+146 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, ":", 1);
+
+148 
+	`md_ùx_upd©e
+(&
+md5_ùx
+, 
+HA2Hex
+, 
+HASHHEXLEN
+);
+
+149 
+	`md_ùx_fš®
+(&
+md5_ùx
+, 
+Re¥Hash
+);
+
+150 
+	`md_ùx_þ—nup
+(&
+md5_ùx
+);
+
+151 
+	`CvtHex
+(
+Re¥Hash
+, 
+Re¥Ú£
+);
+
+152 
+	}
+}
+
+	@httpdigest.h
+
+25 #ià
+PROXY_DIGEST_AUTH
+
+
+27 
+	#HASHLEN
+ 16
+
+	)
+
+28 
+	tHASH
+[
+HASHLEN
+];
+
+29 
+	#HASHHEXLEN
+ 32
+
+	)
+
+30 
+	tHASHHEX
+[
+HASHHEXLEN
++1];
+
+31 #undeà
+IN
+
+
+32 #undeà
+OUT
+
+
+33 
+	#IN
+ cÚ¡
+
+	)
+
+34 
+	#OUT
+
+
+	)
+
+37 
+Dige¡C®cHA1
+(
+
+38 
+IN
+ * 
+pszAlg
+,
+
+39 
+IN
+ * 
+pszU£rName
+,
+
+40 
+IN
+ * 
+pszR—lm
+,
+
+41 
+IN
+ * 
+pszPasswÜd
+,
+
+42 
+IN
+ * 
+pszNÚû
+,
+
+43 
+IN
+ * 
+pszCNÚû
+,
+
+44 
+OUT
+ 
+HASHHEX
+ 
+SessiÚKey
+
+
+48 
+Dige¡C®cRe¥Ú£
+(
+
+49 
+IN
+ 
+HASHHEX
+ 
+HA1
+,
+
+50 
+IN
+ * 
+pszNÚû
+,
+
+51 
+IN
+ * 
+pszNÚûCouÁ
+,
+
+52 
+IN
+ * 
+pszCNÚû
+,
+
+53 
+IN
+ * 
+pszQÝ
+,
+
+54 
+IN
+ * 
+pszM‘hod
+,
+
+55 
+IN
+ * 
+pszDige¡Uri
+,
+
+56 
+IN
+ 
+HASHHEX
+ 
+HEÁ™y
+,
+
+57 
+OUT
+ 
+HASHHEX
+ 
+Re¥Ú£
+
+
+	@init.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"wš32.h
+"
+
+34 
+	~"š™.h
+"
+
+35 
+	~"sig.h
+"
+
+36 
+	~"occ.h
+"
+
+37 
+	~"li¡.h
+"
+
+38 
+	~"Ùime.h
+"
+
+39 
+	~"poÞ.h
+"
+
+40 
+	~"g»mlš.h
+"
+
+41 
+	~"pkcs11.h
+"
+
+42 
+	~"ps.h
+"
+
+43 
+	~"Îaddr.h
+"
+
+44 
+	~"pšg.h
+"
+
+45 
+	~"m¡©s.h
+"
+
+47 
+	~"memdbg.h
+"
+
+49 
+	~"occ-šlše.h
+"
+
+51 
+cÚ‹xt
+ *
+	g¡©ic_cÚ‹xt
+;
+
+56 
+	#CF_LOAD_PERSISTED_PACKET_ID
+ (1<<0)
+
+	)
+
+57 
+	#CF_INIT_TLS_MULTI
+ (1<<1)
+
+	)
+
+58 
+	#CF_INIT_TLS_AUTH_STANDALONE
+ (1<<2)
+
+	)
+
+60 
+do_š™_fœ¡_time
+ (
+cÚ‹xt
+ *
+c
+);
+
+63 
+	$cÚ‹xt_þ—r
+ (
+cÚ‹xt
+ *
+c
+)
+
+65 
+	`CLEAR
+ (*
+c
+);
+
+66 
+	}
+}
+
+69 
+	$cÚ‹xt_þ—r_1
+ (
+cÚ‹xt
+ *
+c
+)
+
+71 
+	`CLEAR
+ (
+c
+->
+c1
+);
+
+72 
+	}
+}
+
+75 
+	$cÚ‹xt_þ—r_2
+ (
+cÚ‹xt
+ *
+c
+)
+
+77 
+	`CLEAR
+ (
+c
+->
+c2
+);
+
+78 
+	}
+}
+
+81 
+	$cÚ‹xt_þ—r_®l_exû±_fœ¡_time
+ (
+cÚ‹xt
+ *
+c
+)
+
+83 cÚ¡ 
+boÞ
+ 
+fœ¡_time_§ve
+ = 
+c
+->
+fœ¡_time
+;
+
+84 cÚ¡ 
+cÚ‹xt_³rsi¡
+ 
+ý§ve
+ = 
+c
+->
+³rsi¡
+;
+
+85 
+	`cÚ‹xt_þ—r
+ (
+c
+);
+
+86 
+c
+->
+fœ¡_time
+ = 
+fœ¡_time_§ve
+;
+
+87 
+c
+->
+³rsi¡
+ = 
+ý§ve
+;
+
+88 
+	}
+}
+
+95 
+	$upd©e_ÝtiÚs_û_po¡
+ (
+ÝtiÚs
+ *options)
+
+97 #ià
+P2MP
+
+
+104 ià(
+ÝtiÚs
+->
+puÎ
+
+
+105 && 
+ÝtiÚs
+->
+pšg_»c_timeout_aùiÚ
+ =ð
+PING_UNDEF
+
+
+106 && 
+	`´Ùo_is_dg¿m
+(
+ÝtiÚs
+->
+û
+.
+´Ùo
+))
+
+108 
+ÝtiÚs
+->
+pšg_»c_timeout
+ = 
+PRE_PULL_INITIAL_PING_RESTART
+;
+
+109 
+ÝtiÚs
+->
+pšg_»c_timeout_aùiÚ
+ = 
+PING_RESTART
+;
+
+112 
+	}
+}
+
+114 #ifdeà
+ENABLE_MANAGEMENT
+
+
+115 
+boÞ
+
+
+116 
+	$mªagem’t_ÿÎback_´oxy_cmd
+ (*
+¬g
+, cÚ¡ **
+p
+)
+
+118 
+cÚ‹xt
+ *
+c
+ = 
+¬g
+;
+
+119 
+cÚÃùiÚ_’Œy
+ *
+û
+ = &
+c
+->
+ÝtiÚs
+.ce;
+
+120 
+gc_¬’a
+ *
+gc
+ = &
+c
+->
+c2
+.gc;
+
+121 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+123 
+	`upd©e_time
+();
+
+124 ià(
+	`¡»q
+ (
+p
+[1], "NONE"))
+
+125 
+»t
+ = 
+Œue
+;
+
+126 ià(
+p
+[2] &&…[3])
+
+128 cÚ¡ 
+pÜt
+ = 
+	`©oi
+(
+p
+[3]);
+
+129 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+131 
+	`msg
+ (
+M_WARN
+, "Bad…roxy…Üˆnumb”: %s", 
+p
+[3]);
+
+132  
+çl£
+;
+
+135 ià(
+	`¡»q
+ (
+p
+[1], "HTTP"))
+
+137 #iâdeà
+ENABLE_HTTP_PROXY
+
+
+138 
+	`msg
+ (
+M_WARN
+, "HTTP…roxy support is‚ot‡vailable");
+
+140 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+141 ià(
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv4
+ && ce->´ÙØ!ð
+PROTO_TCPv4_CLIENT
+ &&
+
+142 
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv6
+ && ce->´ÙØ!ð
+PROTO_TCPv6_CLIENT
+)
+
+144 
+	`msg
+ (
+M_WARN
+, "HTTP…roxy support only works for TCP based connections");
+
+145  
+çl£
+;
+
+147 
+ho
+ = 
+	`š™_h‰p_´oxy_ÝtiÚs_Úû
+ (&
+û
+->
+h‰p_´oxy_ÝtiÚs
+, 
+gc
+);
+
+148 
+ho
+->
+£rv”
+ = 
+	`¡ršg_®loc
+ (
+p
+[2], 
+gc
+);
+
+149 
+ho
+->
+pÜt
+ =…ort;
+
+150 
+ho
+->
+»Œy
+ = 
+Œue
+;
+
+151 
+ho
+->
+auth_»Œy
+ = (
+p
+[4] && 
+	`¡»q
+ (p[4], "nù"è? 
+PAR_NCT
+ : 
+PAR_ALL
+);
+
+152 
+»t
+ = 
+Œue
+;
+
+155 ià(
+	`¡»q
+ (
+p
+[1], "SOCKS"))
+
+157 #iâdeà
+ENABLE_SOCKS
+
+
+158 
+	`msg
+ (
+M_WARN
+, "SOCKS…roxy support is‚ot‡vailable");
+
+160 
+û
+->
+socks_´oxy_£rv”
+ = 
+	`¡ršg_®loc
+ (
+p
+[2], 
+gc
+);
+
+161 
+û
+->
+socks_´oxy_pÜt
+ = 
+pÜt
+;
+
+162 
+»t
+ = 
+Œue
+;
+
+167 
+	`msg
+ (
+M_WARN
+, "Bad…roxy command");
+
+169 
+û
+->
+æags
+ &ð~
+CE_MAN_QUERY_PROXY
+;
+
+171  
+»t
+;
+
+172 
+	}
+}
+
+174 
+boÞ
+
+
+175 
+	$û_mªagem’t_qu”y_´oxy
+ (
+cÚ‹xt
+ *
+c
+)
+
+177 cÚ¡ 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+c
+->
+ÝtiÚs
+.connection_list;
+
+178 
+cÚÃùiÚ_’Œy
+ *
+û
+ = &
+c
+->
+ÝtiÚs
+.ce;
+
+179 
+gc_¬’a
+ 
+gc
+;
+
+180 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+182 
+	`upd©e_time
+();
+
+183 ià(
+mªagem’t
+)
+
+185 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+187 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+188 
+	`buf_´štf
+ (&
+out
+, ">PROXY:%u,%s,%s", (
+l
+ ?†->
+cu¼’t
+ : 0) + 1,
+
+189 (
+	`´Ùo_is_udp
+ (
+û
+->
+´Ùo
+è? "UDP" : "TCP"), 
+	`Å
+ (û->
+»mÙe
+));
+
+190 
+	`mªagem’t_nÙify_g’”ic
+ (
+mªagem’t
+, 
+	`BSTR
+ (&
+out
+));
+
+192 
+û
+->
+æags
+ |ð
+CE_MAN_QUERY_PROXY
+;
+
+193 
+û
+->
+æags
+ & 
+CE_MAN_QUERY_PROXY
+)
+
+195 
+	`mªagem’t_ev’t_loÝ_n_£cÚds
+ (
+mªagem’t
+, 1);
+
+196 ià(
+	`IS_SIG
+ (
+c
+))
+
+198 
+»t
+ = 
+çl£
+;
+
+202 
+	`gc_ä“
+ (&
+gc
+);
+
+205  
+»t
+;
+
+206 
+	}
+}
+
+209 
+boÞ
+
+
+210 
+	$mªagem’t_ÿÎback_»mÙe_cmd
+ (*
+¬g
+, cÚ¡ **
+p
+)
+
+212 
+cÚ‹xt
+ *
+c
+ = (cÚ‹xˆ*è
+¬g
+;
+
+213 
+cÚÃùiÚ_’Œy
+ *
+û
+ = &
+c
+->
+ÝtiÚs
+.ce;
+
+214 
+»t
+ = 
+çl£
+;
+
+215 ià(
+p
+[1] && ((
+û
+->
+æags
+>>
+CE_MAN_QUERY_REMOTE_SHIFT
+)&
+CE_MAN_QUERY_REMOTE_MASK
+è=ð
+CE_MAN_QUERY_REMOTE_QUERY
+)
+
+217 
+æags
+ = 0;
+
+218 ià(!
+	`¡rcmp
+(
+p
+[1], "ACCEPT"))
+
+220 
+æags
+ = 
+CE_MAN_QUERY_REMOTE_ACCEPT
+;
+
+221 
+»t
+ = 
+Œue
+;
+
+223 ià(!
+	`¡rcmp
+(
+p
+[1], "SKIP"))
+
+225 
+æags
+ = 
+CE_MAN_QUERY_REMOTE_SKIP
+;
+
+226 
+»t
+ = 
+Œue
+;
+
+228 ià(!
+	`¡rcmp
+(
+p
+[1], "MOD") &&…[2] &&…[3])
+
+230 cÚ¡ 
+pÜt
+ = 
+	`©oi
+(
+p
+[3]);
+
+231 ià(
+	`¡¾’
+(
+p
+[2]è< 
+RH_HOST_LEN
+ && 
+	`Ëg®_�v4_pÜt
+(
+pÜt
+))
+
+233 
+»mÙe_ho¡_¡Üe
+ *
+rhs
+ = 
+c
+->
+ÝtiÚs
+.
+rh_¡Üe
+;
+
+234 ià(!
+rhs
+)
+
+236 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+rhs
+, 
+»mÙe_ho¡_¡Üe
+, &
+c
+->
+ÝtiÚs
+.
+gc
+);
+
+237 
+c
+->
+ÝtiÚs
+.
+rh_¡Üe
+ = 
+rhs
+;
+
+239 
+	`¡ºýyÁ
+(
+rhs
+->
+ho¡
+, 
+p
+[2], 
+RH_HOST_LEN
+);
+
+240 
+û
+->
+»mÙe
+ = 
+rhs
+->
+ho¡
+;
+
+241 
+û
+->
+»mÙe_pÜt
+ = 
+pÜt
+;
+
+242 
+æags
+ = 
+CE_MAN_QUERY_REMOTE_MOD
+;
+
+243 
+»t
+ = 
+Œue
+;
+
+246 ià(
+»t
+)
+
+248 
+û
+->
+æags
+ &ð~(
+CE_MAN_QUERY_REMOTE_MASK
+<<
+CE_MAN_QUERY_REMOTE_SHIFT
+);
+
+249 
+û
+->
+æags
+ |ð((æags&
+CE_MAN_QUERY_REMOTE_MASK
+)<<
+CE_MAN_QUERY_REMOTE_SHIFT
+);
+
+252  
+»t
+;
+
+253 
+	}
+}
+
+255 
+boÞ
+
+
+256 
+	$û_mªagem’t_qu”y_»mÙe
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+»mÙe_�_hšt
+)
+
+258 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+259 vÞ©ž�
+cÚÃùiÚ_’Œy
+ *
+û
+ = &
+c
+->
+ÝtiÚs
+.ce;
+
+260 
+»t
+ = 
+Œue
+;
+
+261 
+	`upd©e_time
+();
+
+262 ià(
+mªagem’t
+)
+
+264 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+265 
+	`buf_´štf
+ (&
+out
+, ">REMOTE:%s,%d,%s", 
+	`Å
+(
+û
+->
+»mÙe
+), ce->
+»mÙe_pÜt
+, 
+	`´Ùo2ascii
+(û->
+´Ùo
+, 
+çl£
+));
+
+266 
+	`mªagem’t_nÙify_g’”ic
+(
+mªagem’t
+, 
+	`BSTR
+ (&
+out
+));
+
+267 
+û
+->
+æags
+ &ð~(
+CE_MAN_QUERY_REMOTE_MASK
+<<
+CE_MAN_QUERY_REMOTE_SHIFT
+);
+
+268 
+û
+->
+æags
+ |ð(
+CE_MAN_QUERY_REMOTE_QUERY
+<<
+CE_MAN_QUERY_REMOTE_SHIFT
+);
+
+269 ((
+û
+->
+æags
+>>
+CE_MAN_QUERY_REMOTE_SHIFT
+è& 
+CE_MAN_QUERY_REMOTE_MASK
+è=ð
+CE_MAN_QUERY_REMOTE_QUERY
+)
+
+271 
+	`mªagem’t_ev’t_loÝ_n_£cÚds
+ (
+mªagem’t
+, 1);
+
+272 ià(
+	`IS_SIG
+ (
+c
+))
+
+274 
+»t
+ = 
+çl£
+;
+
+280 cÚ¡ 
+æags
+ = ((
+û
+->æags>>
+CE_MAN_QUERY_REMOTE_SHIFT
+è& 
+CE_MAN_QUERY_REMOTE_MASK
+);
+
+281 ià(
+æags
+ =ð
+CE_MAN_QUERY_REMOTE_ACCEPT
+ && 
+»mÙe_�_hšt
+)
+
+282 
+û
+->
+»mÙe
+ = 
+»mÙe_�_hšt
+;
+
+283 
+»t
+ = (
+æags
+ !ð
+CE_MAN_QUERY_REMOTE_SKIP
+);
+
+285 
+	`gc_ä“
+ (&
+gc
+);
+
+286  
+»t
+;
+
+287 
+	}
+}
+
+294 
+	$š™_cÚÃùiÚ_li¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+296 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+c
+->
+ÝtiÚs
+.connection_list;
+
+297 ià(
+l
+)
+
+299 
+l
+->
+cu¼’t
+ = -1;
+
+300 ià(
+c
+->
+ÝtiÚs
+.
+»mÙe_¿ndom
+)
+
+302 
+i
+;
+
+303 
+i
+ = 0; i < 
+l
+->
+Ën
+; ++i)
+
+305 cÚ¡ 
+j
+ = 
+	`g‘_¿ndom
+ (è% 
+l
+->
+Ën
+;
+
+306 ià(
+i
+ !ð
+j
+)
+
+308 
+cÚÃùiÚ_’Œy
+ *
+tmp
+;
+
+309 
+tmp
+ = 
+l
+->
+¬¿y
+[
+i
+];
+
+310 
+l
+->
+¬¿y
+[
+i
+] =†->¬¿y[
+j
+];
+
+311 
+l
+->
+¬¿y
+[
+j
+] = 
+tmp
+;
+
+316 
+	}
+}
+
+322 
+	$Ãxt_cÚÃùiÚ_’Œy
+ (
+cÚ‹xt
+ *
+c
+)
+
+324 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+c
+->
+ÝtiÚs
+.connection_list;
+
+325 ià(
+l
+)
+
+327 
+boÞ
+ 
+û_defšed
+;
+
+328 
+cÚÃùiÚ_’Œy
+ *
+û
+;
+
+329 
+n_cyþes
+ = 0;
+
+332 cÚ¡ *
+»mÙe_�_hšt
+ = 
+NULL
+;
+
+333 
+boÞ
+ 
+Ãwcyþe
+ = 
+çl£
+;
+
+335 
+û_defšed
+ = 
+Œue
+;
+
+336 ià(
+l
+->
+no_advªû
+ &&†->
+cu¼’t
+ >= 0)
+
+338 
+l
+->
+no_advªû
+ = 
+çl£
+;
+
+342 ià(++
+l
+->
+cu¼’t
+ >ðl->
+Ën
+)
+
+344 
+l
+->
+cu¼’t
+ = 0;
+
+345 ++
+l
+->
+n_cyþes
+;
+
+346 ià(++
+n_cyþes
+ >= 2)
+
+347 
+	`msg
+ (
+M_FATAL
+, "No usable connection…rofiles‡re…resent");
+
+350 ià(
+l
+->
+cu¼’t
+ == 0)
+
+351 
+Ãwcyþe
+ = 
+Œue
+;
+
+354 
+û
+ = 
+l
+->
+¬¿y
+[l->
+cu¼’t
+];
+
+356 ià(
+c
+->
+ÝtiÚs
+.
+»mÙe_�_hšt
+ && !
+l
+->
+n_cyþes
+)
+
+357 
+»mÙe_�_hšt
+ = 
+c
+->
+ÝtiÚs
+.remote_ip_hint;
+
+359 ià(
+û
+->
+æags
+ & 
+CE_DISABLED
+)
+
+360 
+û_defšed
+ = 
+çl£
+;
+
+362 
+c
+->
+ÝtiÚs
+.
+û
+ = *ce;
+
+363 #ifdeà
+ENABLE_MANAGEMENT
+
+
+364 ià(
+û_defšed
+ && 
+mªagem’t
+ && 
+	`mªagem’t_qu”y_»mÙe_’abËd
+(management))
+
+367 
+û_defšed
+ = 
+	`û_mªagem’t_qu”y_»mÙe
+(
+c
+, 
+»mÙe_�_hšt
+);
+
+368 ià(
+	`IS_SIG
+ (
+c
+))
+
+373 ià(
+»mÙe_�_hšt
+)
+
+374 
+c
+->
+ÝtiÚs
+.
+û
+.
+»mÙe
+ = 
+»mÙe_�_hšt
+;
+
+376 #ifdeà
+ENABLE_MANAGEMENT
+
+
+377 ià(
+û_defšed
+ && 
+mªagem’t
+ && 
+	`mªagem’t_qu”y_´oxy_’abËd
+ (management))
+
+379 
+û_defšed
+ = 
+	`û_mªagem’t_qu”y_´oxy
+ (
+c
+);
+
+380 ià(
+	`IS_SIG
+ (
+c
+))
+
+384 } !
+û_defšed
+);
+
+386 
+	`upd©e_ÝtiÚs_û_po¡
+ (&
+c
+->
+ÝtiÚs
+);
+
+387 
+	}
+}
+
+393 
+	$š™_qu”y_·sswÜds
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+395 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+397 ià(
+c
+->
+ÝtiÚs
+.
+key_·ss_fže
+)
+
+398 
+	`³m_·sswÜd_£tup
+ (
+c
+->
+ÝtiÚs
+.
+key_·ss_fže
+);
+
+401 #ià
+P2MP
+
+
+403 ià(
+c
+->
+ÝtiÚs
+.
+auth_u£r_·ss_fže
+)
+
+405 #ifdeà
+ENABLE_CLIENT_CR
+
+
+406 
+	`auth_u£r_·ss_£tup
+ (
+c
+->
+ÝtiÚs
+.
+auth_u£r_·ss_fže
+, &c->ÝtiÚs.
+sc_šfo
+);
+
+408 
+	`auth_u£r_·ss_£tup
+ (
+c
+->
+ÝtiÚs
+.
+auth_u£r_·ss_fže
+, 
+NULL
+);
+
+412 
+	}
+}
+
+418 #ifdeà
+GENERAL_PROXY_SUPPORT
+
+
+421 
+	$´oxy_scÝe
+ (
+cÚ‹xt
+ *
+c
+)
+
+423  
+	`cÚÃùiÚ_li¡_defšed
+ (&
+c
+->
+ÝtiÚs
+) ? 2 : 1;
+
+424 
+	}
+}
+
+427 
+	$unš™_´oxy_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+429 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+430 ià(
+c
+->
+c1
+.
+h‰p_´oxy_owÃd
+ && c->c1.
+h‰p_´oxy
+)
+
+432 
+	`h‰p_´oxy_þo£
+ (
+c
+->
+c1
+.
+h‰p_´oxy
+);
+
+433 
+c
+->
+c1
+.
+h‰p_´oxy
+ = 
+NULL
+;
+
+434 
+c
+->
+c1
+.
+h‰p_´oxy_owÃd
+ = 
+çl£
+;
+
+437 #ifdeà
+ENABLE_SOCKS
+
+
+438 ià(
+c
+->
+c1
+.
+socks_´oxy_owÃd
+ && c->c1.
+socks_´oxy
+)
+
+440 
+	`socks_´oxy_þo£
+ (
+c
+->
+c1
+.
+socks_´oxy
+);
+
+441 
+c
+->
+c1
+.
+socks_´oxy
+ = 
+NULL
+;
+
+442 
+c
+->
+c1
+.
+socks_´oxy_owÃd
+ = 
+çl£
+;
+
+445 
+	}
+}
+
+448 
+	$š™_´oxy_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+450 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+451 
+boÞ
+ 
+did_h‰p
+ = 
+çl£
+;
+
+453 cÚ¡ 
+boÞ
+ 
+did_h‰p
+ = 
+çl£
+;
+
+456 
+	`unš™_´oxy_dowÜk
+ (
+c
+);
+
+458 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+459 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+h‰p_´oxy_ÝtiÚs
+)
+
+462 
+c
+->
+c1
+.
+h‰p_´oxy
+ = 
+	`h‰p_´oxy_Ãw
+ (c->
+ÝtiÚs
+.
+û
+.
+h‰p_´oxy_ÝtiÚs
+);
+
+463 ià(
+c
+->
+c1
+.
+h‰p_´oxy
+)
+
+465 
+did_h‰p
+ = 
+Œue
+;
+
+466 
+c
+->
+c1
+.
+h‰p_´oxy_owÃd
+ = 
+Œue
+;
+
+471 #ifdeà
+ENABLE_SOCKS
+
+
+472 ià(!
+did_h‰p
+ && 
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_£rv”
+)
+
+474 
+c
+->
+c1
+.
+socks_´oxy
+ = 
+	`socks_´oxy_Ãw
+ (c->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_£rv”
+,
+
+475 
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_pÜt
+,
+
+476 
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_authfže
+,
+
+477 
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_»Œy
+);
+
+478 ià(
+c
+->
+c1
+.
+socks_´oxy
+)
+
+480 
+c
+->
+c1
+.
+socks_´oxy_owÃd
+ = 
+Œue
+;
+
+484 
+	}
+}
+
+487 
+	$š™_´oxy
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+scÝe
+)
+
+489 ià(
+scÝe
+ =ð
+	`´oxy_scÝe
+ (
+c
+))
+
+490 
+	`š™_´oxy_dowÜk
+ (
+c
+);
+
+491 
+	}
+}
+
+494 
+	$unš™_´oxy
+ (
+cÚ‹xt
+ *
+c
+)
+
+496 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ !ð
+SIGUSR1
+ || 
+	`´oxy_scÝe
+ (c) == 2)
+
+497 
+	`unš™_´oxy_dowÜk
+ (
+c
+);
+
+498 
+	}
+}
+
+502 
+šlše
+ 
+
+503 
+	$š™_´oxy
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+scÝe
+)
+
+505 
+	}
+}
+
+507 
+šlše
+ 
+
+508 
+	$unš™_´oxy
+ (
+cÚ‹xt
+ *
+c
+)
+
+510 
+	}
+}
+
+515 
+	$cÚ‹xt_š™_1
+ (
+cÚ‹xt
+ *
+c
+)
+
+517 
+	`cÚ‹xt_þ—r_1
+ (
+c
+);
+
+519 
+	`·ck‘_id_³rsi¡_š™
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+);
+
+521 
+	`š™_cÚÃùiÚ_li¡
+ (
+c
+);
+
+523 #ià
+	`defšed
+(
+ENABLE_PKCS11
+)
+
+524 ià(
+c
+->
+fœ¡_time
+) {
+
+525 
+i
+;
+
+526 
+	`pkcs11_š™Ÿlize
+ (
+Œue
+, 
+c
+->
+ÝtiÚs
+.
+pkcs11_pš_ÿche_³riod
+);
+
+527 
+i
+=0;i<
+MAX_PARMS
+ && 
+c
+->
+ÝtiÚs
+.
+pkcs11_´ovid”s
+[i] !ð
+NULL
+;i++)
+
+528 
+	`pkcs11_addProvid”
+ (
+c
+->
+ÝtiÚs
+.
+pkcs11_´ovid”s
+[
+i
+], c->ÝtiÚs.
+pkcs11_´Ùeùed_auth’tiÿtiÚ
+[i],
+
+529 
+c
+->
+ÝtiÚs
+.
+pkcs11_´iv©e_mode
+[
+i
+], c->ÝtiÚs.
+pkcs11_û¹_´iv©e
+[i]);
+
+538 
+u£r_·ss
+ 
+up
+;
+
+539 
+	`CLEAR
+ (
+up
+);
+
+540 
+	`¡rýy
+ (
+up
+.
+u£ºame
+, "Please insert your cryptographic�oken");
+
+541 
+	`g‘_u£r_·ss
+ (&
+up
+, 
+NULL
+, "tok’-š£¹iÚ-»que¡", 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_NEED_OK
+);
+
+542 
+	`msg
+ (
+M_INFO
+, "RET:%s", 
+up
+.
+·sswÜd
+);
+
+548 
+	`š™_´oxy
+ (
+c
+, 1);
+
+549 
+	}
+}
+
+552 
+	$cÚ‹xt_gc_ä“
+ (
+cÚ‹xt
+ *
+c
+)
+
+554 
+	`gc_ä“
+ (&
+c
+->
+c2
+.
+gc
+);
+
+555 
+	`gc_ä“
+ (&
+c
+->
+ÝtiÚs
+.
+gc
+);
+
+556 
+	`gc_ä“
+ (&
+c
+->
+gc
+);
+
+557 
+	}
+}
+
+559 #ià
+PORT_SHARE
+
+
+562 
+	$þo£_pÜt_sh¬e
+ ()
+
+564 ià(
+pÜt_sh¬e
+)
+
+566 
+	`pÜt_sh¬e_þo£
+ (
+pÜt_sh¬e
+);
+
+567 
+pÜt_sh¬e
+ = 
+NULL
+;
+
+569 
+	}
+}
+
+572 
+	$š™_pÜt_sh¬e
+ (
+cÚ‹xt
+ *
+c
+)
+
+574 ià(!
+pÜt_sh¬e
+ && (
+c
+->
+ÝtiÚs
+.
+pÜt_sh¬e_ho¡
+ && c->ÝtiÚs.
+pÜt_sh¬e_pÜt
+))
+
+576 
+pÜt_sh¬e
+ = 
+	`pÜt_sh¬e_Ý’
+ (
+c
+->
+ÝtiÚs
+.
+pÜt_sh¬e_ho¡
+,
+
+577 
+c
+->
+ÝtiÚs
+.
+pÜt_sh¬e_pÜt
+,
+
+578 
+	`MAX_RW_SIZE_LINK
+ (&
+c
+->
+c2
+.
+äame
+),
+
+579 
+c
+->
+ÝtiÚs
+.
+pÜt_sh¬e_jouº®_dœ
+);
+
+580 ià(
+pÜt_sh¬e
+ =ð
+NULL
+)
+
+581 
+	`msg
+ (
+M_FATAL
+, "Fatalƒrror: Port sharing failed");
+
+583 
+	}
+}
+
+587 
+boÞ
+
+
+588 
+	$š™_¡©ic
+ ()
+
+592 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+DMALLOC
+)
+
+593 
+	`üy±o_š™_dm®loc
+();
+
+596 
+	`š™_¿ndom_£ed
+ ();
+
+598 
+	`”rÜ_»£t
+ ();
+
+599 
+	`»£t_check_¡©us
+ ();
+
+601 #ifdeà
+WIN32
+
+
+602 
+	`š™_wš32
+ ();
+
+605 #ifdeà
+OPENVPN_DEBUG_COMMAND_LINE
+
+
+607 
+i
+;
+
+608 
+i
+ = 0; i < 
+¬gc
+; ++i)
+
+609 
+	`msg
+ (
+M_INFO
+, "¬gv[%d] = '%s'", 
+i
+, 
+¬gv
+[i]);
+
+613 
+	`upd©e_time
+ ();
+
+615 #ifdeà
+ENABLE_CRYPTO
+
+
+616 
+	`š™_s¦_lib
+ ();
+
+621 
+	`´ng_š™
+ (
+NULL
+, 0);
+
+624 #ifdeà
+PID_TEST
+
+
+625 
+	`·ck‘_id_š‹¿ùive_‹¡
+ ();
+
+626  
+çl£
+;
+
+629 #ifdeà
+SCHEDULE_TEST
+
+
+630 
+	`scheduË_‹¡
+ ();
+
+631  
+çl£
+;
+
+634 #ifdeà
+LIST_TEST
+
+
+635 
+	`li¡_‹¡
+ ();
+
+636  
+çl£
+;
+
+639 #ifdeà
+IFCONFIG_POOL_TEST
+
+
+640 
+	`ifcÚfig_poÞ_‹¡
+ (0x0A010004, 0x0A0100FF);
+
+641  
+çl£
+;
+
+644 #ifdeà
+CHARACTER_CLASS_DEBUG
+
+
+645 
+	`ch¬aù”_þass_debug
+ ();
+
+646  
+çl£
+;
+
+649 #ifdeà
+EXTRACT_X509_FIELD_TEST
+
+
+650 
+	`exŒaù_x509_f›ld_‹¡
+ ();
+
+651  
+çl£
+;
+
+654 #ifdeà
+TIME_TEST
+
+
+655 
+	`time_‹¡
+ ();
+
+656  
+çl£
+;
+
+659 #ifdeà
+TEST_GET_DEFAULT_GATEWAY
+
+
+661 
+rou‹_g©eway_šfo
+ 
+rgi
+;
+
+662 
+	`g‘_deçuÉ_g©eway
+(&
+rgi
+);
+
+663 
+	`´št_deçuÉ_g©eway
+(
+M_INFO
+, &
+rgi
+);
+
+664  
+çl£
+;
+
+668 #ifdeà
+GEN_PATH_TEST
+
+
+670 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+671 cÚ¡ *
+â
+ = 
+	`g’_·th
+ ("foo",
+
+673 &
+gc
+);
+
+674 
+	`´štf
+ ("%s\n", 
+â
+);
+
+675 
+	`gc_ä“
+ (&
+gc
+);
+
+677  
+çl£
+;
+
+680 #ifdeà
+STATUS_PRINTF_TEST
+
+
+682 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+683 cÚ¡ *
+tmp_fže
+ = 
+	`ü—‹_‹mp_fže
+ ("/tmp", "foo", &
+gc
+);
+
+684 
+¡©us_ou�ut
+ *
+so
+ = 
+	`¡©us_Ý’
+ (
+tmp_fže
+, 0, -1, 
+NULL
+, 
+STATUS_OUTPUT_WRITE
+);
+
+685 
+	`¡©us_´štf
+ (
+so
+, "%s", "foo");
+
+686 
+	`¡©us_´štf
+ (
+so
+, "%s", "bar");
+
+687 ià(!
+	`¡©us_þo£
+ (
+so
+))
+
+688 
+	`msg
+ (
+M_WARN
+, "STATUS_PRINTF_TEST: %s: wr™�”rÜ", 
+tmp_fže
+);
+
+689 
+	`gc_ä“
+ (&
+gc
+);
+
+691  
+çl£
+;
+
+694 #ifdeà
+ARGV_TEST
+
+
+696 
+	`¬gv_‹¡
+ ();
+
+697 
+	`¬gv_‹¡
+ ();
+
+698  
+çl£
+;
+
+702 #ifdeà
+PRNG_TEST
+
+
+704 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+705 
+ušt8_t
+ 
+ºdbuf
+[8];
+
+706 
+i
+;
+
+707 
+	`´ng_š™
+ ("sha1", 16);
+
+709 cÚ¡ 
+çùÜ
+ = 1;
+
+710 
+i
+ = 0; i < 
+çùÜ
+ * 8; ++i)
+
+713 
+	`´ng_by‹s
+ (
+ºdbuf
+,  (rndbuf));
+
+715 
+	`ASSERT
+(
+	`¿nd_by‹s
+ (
+ºdbuf
+,  (rndbuf)));
+
+717 
+	`´štf
+ ("[%d] %s\n", 
+i
+, 
+	`fÜm©_hex
+ (
+ºdbuf
+,  (ºdbuf), 0, &
+gc
+));
+
+719 
+	`gc_ä“
+ (&
+gc
+);
+
+720 
+	`´ng_unš™
+ ();
+
+721  
+çl£
+;
+
+725 #ifdeà
+BUFFER_LIST_AGGREGATE_TEST
+
+
+728 cÚ¡ *
+‹xt
+[] = {
+
+741 
+™”
+, 
+li¡ÿp
+;
+
+742 
+li¡ÿp
+ = 0;†istcap < 12; ++listcap)
+
+744 
+™”
+ = 0; iter < 512; ++iter)
+
+746 
+bufãr_li¡
+ *
+bl
+ = 
+	`bufãr_li¡_Ãw
+(
+li¡ÿp
+);
+
+748 
+i
+;
+
+749 
+i
+ = 0; i < 
+	`SIZE
+(
+‹xt
+); ++i)
+
+750 
+	`bufãr_li¡_push
+(
+bl
+, (*)
+‹xt
+[
+i
+]);
+
+752 
+	`´štf
+("[ÿp=%d i=%d] *************************\n", 
+li¡ÿp
+, 
+™”
+);
+
+753 ià(!(
+™”
+ & 8))
+
+754 
+	`bufãr_li¡_agg»g©e
+(
+bl
+, 
+™”
+/2);
+
+755 ià(!(
+™”
+ & 16))
+
+756 
+	`bufãr_li¡_push
+(
+bl
+, (*)"Even more�ext...");
+
+757 
+	`bufãr_li¡_agg»g©e
+(
+bl
+, 
+™”
+);
+
+758 ià(!(
+™”
+ & 1))
+
+759 
+	`bufãr_li¡_push
+(
+bl
+, (*)"More�ext...");
+
+761 
+bufãr
+ *
+buf
+;
+
+762 (
+buf
+ = 
+	`bufãr_li¡_³ek
+(
+bl
+)))
+
+764 
+c
+;
+
+765 
+	`´štf
+ ("'");
+
+766 (
+c
+ = 
+	`buf_»ad_u8
+(
+buf
+)) >= 0)
+
+767 
+	`putch¬
+(
+c
+);
+
+768 
+	`´štf
+ ("'\n");
+
+769 
+	`bufãr_li¡_advªû
+(
+bl
+, 0);
+
+772 
+	`bufãr_li¡_ä“
+(
+bl
+);
+
+775  
+çl£
+;
+
+779 #ifdeà
+MSTATS_TEST
+
+
+781 
+i
+;
+
+782 
+	`m¡©s_Ý’
+("/dev/shm/mstats.dat");
+
+783 
+i
+ = 0; i < 30; ++i)
+
+785 
+mm­_¡©s
+->
+n_þ›Ás
+ += 1;
+
+786 
+mm­_¡©s
+->
+lšk_wr™e_by‹s
+ += 8;
+
+787 
+mm­_¡©s
+->
+lšk_»ad_by‹s
+ += 16;
+
+788 
+	`¦“p
+(1);
+
+790 
+	`m¡©s_þo£
+();
+
+791  
+çl£
+;
+
+795  
+Œue
+;
+
+796 
+	}
+}
+
+799 
+	$unš™_¡©ic
+ ()
+
+801 #ifdeà
+ENABLE_CRYPTO
+
+
+802 
+	`ä“_s¦_lib
+ ();
+
+805 #ifdeà
+ENABLE_PKCS11
+
+
+806 
+	`pkcs11_‹rmš©e
+ ();
+
+809 #ià
+PORT_SHARE
+
+
+810 
+	`þo£_pÜt_sh¬e
+ ();
+
+813 #ià
+	`defšed
+(
+MEASURE_TLS_HANDSHAKE_STATS
+è&& defšed(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+814 
+	`show_Žs_³rfÜmªû_¡©s
+ ();
+
+816 
+	}
+}
+
+819 
+	$š™_v”b_mu‹
+ (
+cÚ‹xt
+ *
+c
+, 
+æags
+)
+
+821 ià(
+æags
+ & 
+IVM_LEVEL_1
+)
+
+824 
+	`£t_check_¡©us
+ (
+D_LINK_ERRORS
+, 
+D_READ_WRITE
+);
+
+825 
+	`£t_debug_Ëv–
+ (
+c
+->
+ÝtiÚs
+.
+v”bos™y
+, 
+SDL_CONSTRAIN
+);
+
+826 
+	`£t_mu‹_cutoff
+ (
+c
+->
+ÝtiÚs
+.
+mu‹
+);
+
+830 ià(
+æags
+ & 
+IVM_LEVEL_2
+)
+
+831 
+c
+->
+c2
+.
+log_rw
+ = (
+	`check_debug_Ëv–
+ (
+D_LOG_RW
+) && !check_debug_level (D_LOG_RW + 1));
+
+832 
+	}
+}
+
+840 
+	$š™_ÝtiÚs_dev
+ (
+ÝtiÚs
+ *options)
+
+842 ià(!
+ÝtiÚs
+->
+dev
+ && o±iÚs->
+dev_node
+) {
+
+843 *
+dev_node
+ = 
+	`¡rdup
+(
+ÝtiÚs
+->dev_node);
+
+844 
+ÝtiÚs
+->
+dev
+ = 
+	`ba£Çme
+ (
+dev_node
+);
+
+846 
+	}
+}
+
+848 
+boÞ
+
+
+849 
+	$´št_Ý’s¦_šfo
+ (cÚ¡ 
+ÝtiÚs
+ *options)
+
+854 #ifdeà
+ENABLE_CRYPTO
+
+
+855 ià(
+ÝtiÚs
+->
+show_c�h”s
+ || o±iÚs->
+show_dige¡s
+ || o±iÚs->
+show_’gšes
+
+
+856 #ifdeà
+ENABLE_SSL
+
+
+857 || 
+ÝtiÚs
+->
+show_Žs_c�h”s
+
+
+861 ià(
+ÝtiÚs
+->
+show_c�h”s
+)
+
+862 
+	`show_avažabË_c�h”s
+ ();
+
+863 ià(
+ÝtiÚs
+->
+show_dige¡s
+)
+
+864 
+	`show_avažabË_dige¡s
+ ();
+
+865 ià(
+ÝtiÚs
+->
+show_’gšes
+)
+
+866 
+	`show_avažabË_’gšes
+ ();
+
+867 #ifdeà
+ENABLE_SSL
+
+
+868 ià(
+ÝtiÚs
+->
+show_Žs_c�h”s
+)
+
+869 
+	`show_avažabË_Žs_c�h”s
+ (
+ÝtiÚs
+->
+c�h”_li¡
+);
+
+871  
+Œue
+;
+
+874  
+çl£
+;
+
+875 
+	}
+}
+
+880 
+boÞ
+
+
+881 
+	$do_g’key
+ (cÚ¡ 
+ÝtiÚs
+ * options)
+
+883 #ifdeà
+ENABLE_CRYPTO
+
+
+884 ià(
+ÝtiÚs
+->
+g’key
+)
+
+886 
+nb™s_wr™‹n
+;
+
+888 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+,
+
+891 ià(
+ÝtiÚs
+->
+mlock
+)
+
+892 
+	`¶©fÜm_mlock®l
+ (
+Œue
+);
+
+894 
+nb™s_wr™‹n
+ = 
+	`wr™e_key_fže
+ (2, 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+);
+
+896 
+	`msg
+ (
+D_GENKEY
+ | 
+M_NOPREFIX
+,
+
+897 "Rªdomly g’”©ed %d b™ key wr™‹ÀtØ%s", 
+nb™s_wr™‹n
+,
+
+898 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+);
+
+899  
+Œue
+;
+
+902  
+çl£
+;
+
+903 
+	}
+}
+
+908 
+boÞ
+
+
+909 
+	$do_³rsi¡_tuÁ­
+ (cÚ¡ 
+ÝtiÚs
+ *options)
+
+911 ià(
+ÝtiÚs
+->
+³rsi¡_cÚfig
+)
+
+914 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+dev
+, "TUN/TAP device (--dev)");
+
+915 ià(
+ÝtiÚs
+->
+û
+.
+»mÙe
+ || o±iÚs->
+ifcÚfig_loÿl
+
+
+916 || 
+ÝtiÚs
+->
+ifcÚfig_»mÙe_Ãtmask
+
+
+917 #ifdeà
+ENABLE_CRYPTO
+
+
+918 || 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+
+
+919 #ifdeà
+ENABLE_SSL
+
+
+920 || 
+ÝtiÚs
+->
+Žs_£rv”
+ || o±iÚs->
+Žs_þ›Á
+
+
+924 
+	`msg
+ (
+M_FATAL
+|
+M_OPTERR
+,
+
+926 #ifdeà
+ENABLE_FEATURE_TUN_PERSIST
+
+
+927 
+	`tuncfg
+ (
+ÝtiÚs
+->
+dev
+, o±iÚs->
+dev_ty³
+, o±iÚs->
+dev_node
+,
+
+928 
+ÝtiÚs
+->
+³rsi¡_mode
+,
+
+929 
+ÝtiÚs
+->
+u£ºame
+, o±iÚs->
+grou²ame
+, &ÝtiÚs->
+tuÁ­_ÝtiÚs
+);
+
+930 ià(
+ÝtiÚs
+->
+³rsi¡_mode
+ && o±iÚs->
+Îaddr
+)
+
+931 
+	`£t_Îaddr
+(
+ÝtiÚs
+->
+dev
+, o±iÚs->
+Îaddr
+, 
+NULL
+);
+
+932  
+Œue
+;
+
+934 
+	`msg
+Ð
+M_FATAL
+|
+M_OPTERR
+,
+
+938 "³rsi¡ªˆtuÂ– iÁ”çûs.", 
+ÝtiÚs
+->
+dev
+ );
+
+941  
+çl£
+;
+
+942 
+	}
+}
+
+948 
+boÞ
+
+
+949 
+	$possibly_become_d«mÚ
+ (cÚ¡ 
+ÝtiÚs
+ *options)
+
+951 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+952 ià(
+ÝtiÚs
+->
+d«mÚ
+)
+
+954 
+	`ASSERT
+ (!
+ÝtiÚs
+->
+š‘d
+);
+
+956 ià(
+	`d«mÚ
+ (1, 
+ÝtiÚs
+->
+log
+) < 0)
+
+957 
+	`msg
+ (
+M_ERR
+, "daemon() failed or unsupported");
+
+958 
+	`»¡Üe_sigÇl_¡©e
+ ();
+
+959 ià(
+ÝtiÚs
+->
+log
+)
+
+960 
+	`£t_¡d_fžes_to_nuÎ
+ (
+Œue
+);
+
+962 
+»t
+ = 
+Œue
+;
+
+964  
+»t
+;
+
+965 
+	}
+}
+
+971 
+	$do_uid_gid_chroÙ
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+no_d–ay
+)
+
+973 cÚ¡ 
+why_nÙ
+[] = "will be delayed because of --client, --pull, or --up-delay";
+
+974 
+cÚ‹xt_0
+ *
+c0
+ = 
+c
+->c0;
+
+976 ià(
+c
+->
+fœ¡_time
+ && 
+c0
+ && !c0->
+uid_gid_£t
+)
+
+979 ià(
+c
+->
+ÝtiÚs
+.
+chroÙ_dœ
+)
+
+981 ià(
+no_d–ay
+)
+
+982 
+	`¶©fÜm_chroÙ
+ (
+c
+->
+ÝtiÚs
+.
+chroÙ_dœ
+);
+
+984 
+	`msg
+ (
+M_INFO
+, "NOTE: chroÙ %s", 
+why_nÙ
+);
+
+988 ià(
+no_d–ay
+)
+
+990 
+	`¶©fÜm_group_£t
+ (&
+c0
+->
+¶©fÜm_¡©e_group
+);
+
+991 
+	`¶©fÜm_u£r_£t
+ (&
+c0
+->
+¶©fÜm_¡©e_u£r
+);
+
+992 
+c0
+->
+uid_gid_£t
+ = 
+Œue
+;
+
+994 ià(
+c0
+->
+uid_gid_¥ecif›d
+)
+
+996 
+	`msg
+ (
+M_INFO
+, "NOTE: UID/GID downg¿d�%s", 
+why_nÙ
+);
+
+999 #ifdeà
+ENABLE_MEMSTATS
+
+
+1000 ià(
+c
+->
+ÝtiÚs
+.
+mem¡©s_â
+)
+
+1001 
+	`m¡©s_Ý’
+(
+c
+->
+ÝtiÚs
+.
+mem¡©s_â
+);
+
+1004 #ifdeà
+ENABLE_SELINUX
+
+
+1011 ià(
+c
+->
+ÝtiÚs
+.
+£lšux_cÚ‹xt
+)
+
+1013 ià(
+no_d–ay
+) {
+
+1014 ià(-1 =ð
+	`£tcÚ
+ (
+c
+->
+ÝtiÚs
+.
+£lšux_cÚ‹xt
+))
+
+1015 
+	`msg
+ (
+M_ERR
+, "£tcÚ�Ø'%s' fažed; i /´oøacûssibË?", 
+c
+->
+ÝtiÚs
+.
+£lšux_cÚ‹xt
+);
+
+1017 
+	`msg
+ (
+M_INFO
+, "£tcÚ�Ø'%s' sucûeded", 
+c
+->
+ÝtiÚs
+.
+£lšux_cÚ‹xt
+);
+
+1020 
+	`msg
+ (
+M_INFO
+, "NOTE: s‘cÚ %s", 
+why_nÙ
+);
+
+1024 
+	}
+}
+
+1031 
+	$fÜm©_commÚ_Çme
+ (
+cÚ‹xt
+ *
+c
+, 
+gc_¬’a
+ *
+gc
+)
+
+1033 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+1034 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+1035 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+1037 
+	`buf_´štf
+ (&
+out
+, "[%s] ", 
+	`Žs_commÚ_Çme
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, 
+çl£
+));
+
+1040  
+	`BSTR
+ (&
+out
+);
+
+1041 
+	}
+}
+
+1044 
+	$´e_£tup
+ (cÚ¡ 
+ÝtiÚs
+ *options)
+
+1046 #ifdeà
+WIN32
+
+
+1047 ià(
+ÝtiÚs
+->
+ex™_ev’t_Çme
+)
+
+1049 
+	`wš32_sigÇl_Ý’
+ (&
+wš32_sigÇl
+,
+
+1050 
+WSO_FORCE_SERVICE
+,
+
+1051 
+ÝtiÚs
+->
+ex™_ev’t_Çme
+,
+
+1052 
+ÝtiÚs
+->
+ex™_ev’t_š™Ÿl_¡©e
+);
+
+1056 
+	`wš32_sigÇl_Ý’
+ (&
+wš32_sigÇl
+,
+
+1057 
+WSO_FORCE_CONSOLE
+,
+
+1058 
+NULL
+,
+
+1059 
+çl£
+);
+
+1062 ià(
+wš32_sigÇl
+.
+mode
+ =ð
+WSO_MODE_CONSOLE
+)
+
+1064 
+	`wšdow_t™Ë_§ve
+ (&
+wšdow_t™Ë
+);
+
+1065 
+	`wšdow_t™Ë_g’”©e
+ (
+ÝtiÚs
+->
+cÚfig
+);
+
+1069 
+	}
+}
+
+1072 
+	$»£t_cßr£_tim”s
+ (
+cÚ‹xt
+ *
+c
+)
+
+1074 
+c
+->
+c2
+.
+cßr£_tim”_wakeup
+ = 0;
+
+1075 
+	}
+}
+
+1081 
+	$do_š™_tim”s
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+deã¼ed
+)
+
+1083 
+	`upd©e_time
+ ();
+
+1084 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+1087 ià(
+c
+->
+ÝtiÚs
+.
+šaùiv™y_timeout
+)
+
+1088 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+šaùiv™y_š‹rv®
+, c->
+ÝtiÚs
+.
+šaùiv™y_timeout
+, 
+now
+);
+
+1092 ià(
+c
+->
+ÝtiÚs
+.
+pšg_£nd_timeout
+)
+
+1093 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+pšg_£nd_š‹rv®
+, c->
+ÝtiÚs
+.
+pšg_£nd_timeout
+, 0);
+
+1095 ià(
+c
+->
+ÝtiÚs
+.
+pšg_»c_timeout
+)
+
+1096 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+pšg_»c_š‹rv®
+, c->
+ÝtiÚs
+.
+pšg_»c_timeout
+, 
+now
+);
+
+1098 #ià
+P2MP
+
+
+1099 ià(
+c
+->
+ÝtiÚs
+.
+£rv”_pÞl_timeout
+)
+
+1100 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+£rv”_pÞl_š‹rv®
+, c->
+ÝtiÚs
+.
+£rv”_pÞl_timeout
+, 
+now
+);
+
+1103 ià(!
+deã¼ed
+)
+
+1106 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+wa™_fÜ_cÚÃù
+, 1, 
+now
+);
+
+1108 #ifdeà
+ENABLE_OCC
+
+
+1111 ià(
+c
+->
+ÝtiÚs
+.
+occ
+
+
+1112 && !
+	`TLS_MODE
+ (
+c
+)
+
+1113 && 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+ && c->c2.
+ÝtiÚs_¡ršg_»mÙe
+)
+
+1114 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+, 
+OCC_INTERVAL_SECONDS
+, 
+now
+);
+
+1116 ià(
+c
+->
+ÝtiÚs
+.
+mtu_‹¡
+)
+
+1117 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+occ_mtu_lßd_‹¡_š‹rv®
+, 
+OCC_MTU_LOAD_INTERVAL_SECONDS
+, 
+now
+);
+
+1121 #ifdeà
+ENABLE_CRYPTO
+
+
+1122 ià(
+c
+->
+ÝtiÚs
+.
+·ck‘_id_fže
+)
+
+1123 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+·ck‘_id_³rsi¡_š‹rv®
+, 60, 
+now
+);
+
+1126 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+1129 
+	`š‹rv®_š™
+ (&
+c
+->
+c2
+.
+tmp_št
+, 
+TLS_MULTI_HORIZON
+, 
+TLS_MULTI_REFRESH
+);
+
+1132 
+	}
+}
+
+1138 
+	$do_š™_Œaffic_sh­”
+ (
+cÚ‹xt
+ *
+c
+)
+
+1140 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+1142 ià(
+c
+->
+ÝtiÚs
+.
+sh­”
+)
+
+1144 
+	`sh­”_š™
+ (&
+c
+->
+c2
+.
+sh­”
+, c->
+ÝtiÚs
+.shaper);
+
+1145 
+	`sh­”_msg
+ (&
+c
+->
+c2
+.
+sh­”
+);
+
+1148 
+	}
+}
+
+1156 
+	$do_®loc_rou‹_li¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+1158 ià(!
+c
+->
+c1
+.
+rou‹_li¡
+)
+
+1159 
+c
+->
+c1
+.
+rou‹_li¡
+ = 
+	`Ãw_rou‹_li¡
+ (c->
+ÝtiÚs
+.
+max_rou‹s
+, &c->
+gc
+);
+
+1160 ià(
+c
+->
+ÝtiÚs
+.
+rou‹s_�v6
+ && !c->
+c1
+.
+rou‹_�v6_li¡
+)
+
+1161 
+c
+->
+c1
+.
+rou‹_�v6_li¡
+ = 
+	`Ãw_rou‹_�v6_li¡
+ (c->
+ÝtiÚs
+.
+max_rou‹s
+, &c->
+gc
+);
+
+1162 
+	}
+}
+
+1170 
+	$do_š™_rou‹_li¡
+ (cÚ¡ 
+ÝtiÚs
+ *options,
+
+1171 
+rou‹_li¡
+ *route_list,
+
+1172 cÚ¡ 
+lšk_sock‘_šfo
+ *link_socket_info,
+
+1173 
+boÞ
+ 
+ç�l
+,
+
+1174 
+’v_£t
+ *
+es
+)
+
+1176 cÚ¡ *
+gw
+ = 
+NULL
+;
+
+1177 
+dev
+ = 
+	`dev_ty³_’um
+ (
+ÝtiÚs
+->dev, o±iÚs->
+dev_ty³
+);
+
+1178 
+m‘ric
+ = 0;
+
+1180 ià(
+dev
+ =ð
+DEV_TYPE_TUN
+ && (
+ÝtiÚs
+->
+tÝÞogy
+ =ð
+TOP_NET30
+ || o±iÚs->tÝÞogy =ð
+TOP_P2P
+))
+
+1181 
+gw
+ = 
+ÝtiÚs
+->
+ifcÚfig_»mÙe_Ãtmask
+;
+
+1182 ià(
+ÝtiÚs
+->
+rou‹_deçuÉ_g©eway
+)
+
+1183 
+gw
+ = 
+ÝtiÚs
+->
+rou‹_deçuÉ_g©eway
+;
+
+1184 ià(
+ÝtiÚs
+->
+rou‹_deçuÉ_m‘ric
+)
+
+1185 
+m‘ric
+ = 
+ÝtiÚs
+->
+rou‹_deçuÉ_m‘ric
+;
+
+1187 ià(!
+	`š™_rou‹_li¡
+ (
+rou‹_li¡
+,
+
+1188 
+ÝtiÚs
+->
+rou‹s
+,
+
+1189 
+gw
+,
+
+1190 
+m‘ric
+,
+
+1191 
+	`lšk_sock‘_cu¼’t_»mÙe
+ (
+lšk_sock‘_šfo
+),
+
+1192 
+es
+))
+
+1194 ià(
+ç�l
+)
+
+1195 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_ERROR
+);
+
+1200 
+	`£‹nv_rou‹s
+ (
+es
+, 
+rou‹_li¡
+);
+
+1202 
+	}
+}
+
+1205 
+	$do_š™_rou‹_�v6_li¡
+ (cÚ¡ 
+ÝtiÚs
+ *options,
+
+1206 
+rou‹_�v6_li¡
+ *route_ipv6_list,
+
+1207 
+boÞ
+ 
+ç�l
+,
+
+1208 
+’v_£t
+ *
+es
+)
+
+1210 cÚ¡ *
+gw
+ = 
+NULL
+;
+
+1211 
+dev
+ = 
+	`dev_ty³_’um
+ (
+ÝtiÚs
+->dev, o±iÚs->
+dev_ty³
+);
+
+1212 
+m‘ric
+ = -1;
+
+1214 
+gw
+ = 
+ÝtiÚs
+->
+ifcÚfig_�v6_»mÙe
+;
+
+1216 iàÐ
+ÝtiÚs
+->
+rou‹_�v6_deçuÉ_g©eway
+ )
+
+1217 
+gw
+ = 
+ÝtiÚs
+->
+rou‹_�v6_deçuÉ_g©eway
+;
+
+1220 ià(
+ÝtiÚs
+->
+rou‹_deçuÉ_m‘ric
+)
+
+1221 
+m‘ric
+ = 
+ÝtiÚs
+->
+rou‹_deçuÉ_m‘ric
+;
+
+1223 ià(!
+	`š™_rou‹_�v6_li¡
+ (
+rou‹_�v6_li¡
+,
+
+1224 
+ÝtiÚs
+->
+rou‹s_�v6
+,
+
+1225 
+gw
+,
+
+1226 
+m‘ric
+,
+
+1227 
+es
+))
+
+1229 ià(
+ç�l
+)
+
+1230 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_ERROR
+);
+
+1235 
+	`£‹nv_rou‹s_�v6
+ (
+es
+, 
+rou‹_�v6_li¡
+);
+
+1237 
+	}
+}
+
+1244 
+	$š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+1246 cÚ¡ 
+mes§ge
+[] = "Initialization Sequence Completed";
+
+1249 
+	`do_uid_gid_chroÙ
+ (
+c
+, 
+Œue
+);
+
+1252 ià(
+æags
+ & 
+ISC_ERRORS
+)
+
+1254 #ifdeà
+WIN32
+
+
+1255 
+	`show_rou‹s
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+1256 
+	`show_ad­‹rs
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+1257 
+	`msg
+ (
+M_INFO
+, "% W™h E¼Ü Ð£�h‰p://Ý’v².Ãt/çq.html#dhýþ›Á£rv )", 
+mes§ge
+);
+
+1259 
+	`msg
+ (
+M_INFO
+, "% W™h E¼Üs", 
+mes§ge
+);
+
+1263 
+	`msg
+ (
+M_INFO
+, "%s", 
+mes§ge
+);
+
+1266 ià((
+æags
+ & (
+ISC_ERRORS
+|
+ISC_SERVER
+)è=ð0 && 
+	`cÚÃùiÚ_li¡_defšed
+ (&
+c
+->
+ÝtiÚs
+))
+
+1267 
+	`cÚÃùiÚ_li¡_£t_no_advªû
+ (&
+c
+->
+ÝtiÚs
+);
+
+1269 #ifdeà
+WIN32
+
+
+1270 
+	`fÜk_»gi¡”_dns_aùiÚ
+ (
+c
+->
+c1
+.
+tuÁ­
+);
+
+1273 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1275 ià(
+mªagem’t
+)
+
+1277 
+š_addr_t
+ 
+tun_loÿl
+ = 0;
+
+1278 
+š_addr_t
+ 
+tun_»mÙe
+ = 0;
+
+1279 cÚ¡ *
+d‘až
+ = "SUCCESS";
+
+1280 ià(
+c
+->
+c1
+.
+tuÁ­
+)
+
+1281 
+tun_loÿl
+ = 
+c
+->
+c1
+.
+tuÁ­
+->
+loÿl
+;
+
+1287 
+tun_»mÙe
+ = 
+	`htÚl
+ (
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+aùu®
+.
+de¡
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+);
+
+1288 ià(
+æags
+ & 
+ISC_ERRORS
+)
+
+1289 
+d‘až
+ = "ERROR";
+
+1290 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+1291 
+OPENVPN_STATE_CONNECTED
+,
+
+1292 
+d‘až
+,
+
+1293 
+tun_loÿl
+,
+
+1294 
+tun_»mÙe
+);
+
+1295 ià(
+tun_loÿl
+)
+
+1296 
+	`mªagem’t_po¡_tuÂ–_Ý’
+ (
+mªagem’t
+, 
+tun_loÿl
+);
+
+1299 
+	}
+}
+
+1306 
+	$do_rou‹
+ (cÚ¡ 
+ÝtiÚs
+ *options,
+
+1307 
+rou‹_li¡
+ *route_list,
+
+1308 
+rou‹_�v6_li¡
+ *route_ipv6_list,
+
+1309 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+1310 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+1311 
+’v_£t
+ *
+es
+)
+
+1313 ià(!
+ÝtiÚs
+->
+rou‹_nÛxec
+ && ( 
+rou‹_li¡
+ || 
+rou‹_�v6_li¡
+ ) )
+
+1315 
+	`add_rou‹s
+ (
+rou‹_li¡
+, 
+rou‹_�v6_li¡
+, 
+‰
+, 
+	`ROUTE_OPTION_FLAGS
+ (
+ÝtiÚs
+), 
+es
+);
+
+1316 
+	`£‹nv_št
+ (
+es
+, "»dœeù_g©eway", 
+	`rou‹_did_»dœeù_deçuÉ_g©eway
+(
+rou‹_li¡
+));
+
+1318 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1319 ià(
+mªagem’t
+)
+
+1320 
+	`mªagem’t_up_down
+ (
+mªagem’t
+, "UP", 
+es
+);
+
+1323 ià(
+	`¶ugš_defšed
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_ROUTE_UP
+))
+
+1325 ià(
+	`¶ugš_ÿÎ
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_ROUTE_UP
+, 
+NULL
+, NULL, 
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+1326 
+	`msg
+ (
+M_WARN
+, "WARNING:„oute-up…lugin call failed");
+
+1329 ià(
+ÝtiÚs
+->
+rou‹_sü�t
+)
+
+1331 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+1332 
+	`£‹nv_¡r
+ (
+es
+, "script_type", "route-up");
+
+1333 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sc", 
+ÝtiÚs
+->
+rou‹_sü�t
+);
+
+1334 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+es
+, 0, "--route-up");
+
+1335 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1338 #ifdeà
+WIN32
+
+
+1339 ià(
+ÝtiÚs
+->
+show_Ãt_up
+)
+
+1341 
+	`show_rou‹s
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+1342 
+	`show_ad­‹rs
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+1344 ià(
+	`check_debug_Ëv–
+ (
+D_SHOW_NET
+))
+
+1346 
+	`show_rou‹s
+ (
+D_SHOW_NET
+|
+M_NOPREFIX
+);
+
+1347 
+	`show_ad­‹rs
+ (
+D_SHOW_NET
+|
+M_NOPREFIX
+);
+
+1350 
+	}
+}
+
+1356 #ià
+P2MP
+
+
+1358 
+	$§ve_puÎed_ÝtiÚs_dige¡
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+md5_dige¡
+ *
+Ãwdige¡
+)
+
+1360 ià(
+Ãwdige¡
+)
+
+1361 
+c
+->
+c1
+.
+puÎed_ÝtiÚs_dige¡_§ve
+ = *
+Ãwdige¡
+;
+
+1363 
+	`md5_dige¡_þ—r
+ (&
+c
+->
+c1
+.
+puÎed_ÝtiÚs_dige¡_§ve
+);
+
+1364 
+	}
+}
+
+1371 
+	$do_š™_tun
+ (
+cÚ‹xt
+ *
+c
+)
+
+1373 
+c
+->
+c1
+.
+tuÁ­
+ = 
+	`š™_tun
+ (c->
+ÝtiÚs
+.
+dev
+,
+
+1374 
+c
+->
+ÝtiÚs
+.
+dev_ty³
+,
+
+1375 
+c
+->
+ÝtiÚs
+.
+tÝÞogy
+,
+
+1376 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_loÿl
+,
+
+1377 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1378 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_loÿl
+,
+
+1379 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_Ãtb™s
+,
+
+1380 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_»mÙe
+,
+
+1381 
+	`addr_ho¡
+ (&
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+loÿl
+),
+
+1382 
+	`addr_ho¡
+ (&
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+»mÙe
+),
+
+1383 !
+c
+->
+ÝtiÚs
+.
+ifcÚfig_now¬n
+,
+
+1384 
+c
+->
+c2
+.
+es
+);
+
+1387 
+c
+->
+c1
+.
+tuÁ­
+->
+�v6
+ = c->
+ÝtiÚs
+.
+tun_�v6
+;
+
+1389 
+	`š™_tun_po¡
+ (
+c
+->
+c1
+.
+tuÁ­
+,
+
+1390 &
+c
+->
+c2
+.
+äame
+,
+
+1391 &
+c
+->
+ÝtiÚs
+.
+tuÁ­_ÝtiÚs
+);
+
+1393 
+c
+->
+c1
+.
+tuÁ­_owÃd
+ = 
+Œue
+;
+
+1394 
+	}
+}
+
+1400 
+boÞ
+
+
+1401 
+	$do_Ý’_tun
+ (
+cÚ‹xt
+ *
+c
+)
+
+1403 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1404 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+1406 
+c
+->
+c2
+.
+�v4_tun
+ = (!c->
+ÝtiÚs
+.
+tun_�v6
+
+
+1407 && 
+	`is_dev_ty³
+ (
+c
+->
+ÝtiÚs
+.
+dev
+, c->ÝtiÚs.
+dev_ty³
+, "tun"));
+
+1409 ià(!
+c
+->
+c1
+.
+tuÁ­
+)
+
+1412 
+	`do_š™_tun
+ (
+c
+);
+
+1415 
+	`do_®loc_rou‹_li¡
+ (
+c
+);
+
+1418 ià(
+c
+->
+ÝtiÚs
+.
+rou‹s
+ && c->
+c1
+.
+rou‹_li¡
+ && c->
+c2
+.
+lšk_sock‘
+)
+
+1419 
+	`do_š™_rou‹_li¡
+ (&
+c
+->
+ÝtiÚs
+, c->
+c1
+.
+rou‹_li¡
+, &c->
+c2
+.
+lšk_sock‘
+->
+šfo
+, 
+çl£
+, c->c2.
+es
+);
+
+1420 ià(
+c
+->
+ÝtiÚs
+.
+rou‹s_�v6
+ && c->
+c1
+.
+rou‹_�v6_li¡
+ )
+
+1421 
+	`do_š™_rou‹_�v6_li¡
+ (&
+c
+->
+ÝtiÚs
+, c->
+c1
+.
+rou‹_�v6_li¡
+, 
+çl£
+, c->
+c2
+.
+es
+);
+
+1424 ià(!
+c
+->
+ÝtiÚs
+.
+ifcÚfig_nÛxec
+
+
+1425 && 
+	`ifcÚfig_Üd”
+ (è=ð
+IFCONFIG_BEFORE_TUN_OPEN
+)
+
+1429 cÚ¡ *
+guess
+ = 
+	`guess_tuÁ­_dev
+ (
+c
+->
+ÝtiÚs
+.
+dev
+,
+
+1430 
+c
+->
+ÝtiÚs
+.
+dev_ty³
+,
+
+1431 
+c
+->
+ÝtiÚs
+.
+dev_node
+,
+
+1432 &
+gc
+);
+
+1433 
+	`do_ifcÚfig
+ (
+c
+->
+c1
+.
+tuÁ­
+, 
+guess
+, 
+	`TUN_MTU_SIZE
+ (&c->
+c2
+.
+äame
+), c->c2.
+es
+);
+
+1437 
+	`Ý’_tun
+ (
+c
+->
+ÝtiÚs
+.
+dev
+, c->ÝtiÚs.
+dev_ty³
+, c->ÝtiÚs.
+dev_node
+,
+
+1438 
+c
+->
+c1
+.
+tuÁ­
+);
+
+1441 ià(
+c
+->
+ÝtiÚs
+.
+Îaddr
+)
+
+1442 
+	`£t_Îaddr
+(
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+, c->
+ÝtiÚs
+.
+Îaddr
+, c->
+c2
+.
+es
+);
+
+1445 ià(!
+c
+->
+ÝtiÚs
+.
+ifcÚfig_nÛxec
+
+
+1446 && 
+	`ifcÚfig_Üd”
+ (è=ð
+IFCONFIG_AFTER_TUN_OPEN
+)
+
+1448 
+	`do_ifcÚfig
+ (
+c
+->
+c1
+.
+tuÁ­
+, c->c1.tuÁ­->
+aùu®_Çme
+, 
+	`TUN_MTU_SIZE
+ (&c->
+c2
+.
+äame
+), c->c2.
+es
+);
+
+1452 
+	`run_up_down
+ (
+c
+->
+ÝtiÚs
+.
+up_sü�t
+,
+
+1453 
+c
+->
+¶ugšs
+,
+
+1454 
+OPENVPN_PLUGIN_UP
+,
+
+1455 
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+,
+
+1456 
+	`dev_ty³_¡ršg
+ (
+c
+->
+ÝtiÚs
+.
+dev
+, c->ÝtiÚs.
+dev_ty³
+),
+
+1457 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1458 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1459 
+	`´št_š_addr_t
+ (
+c
+->
+c1
+.
+tuÁ­
+->
+loÿl
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1460 
+	`´št_š_addr_t
+ (
+c
+->
+c1
+.
+tuÁ­
+->
+»mÙe_Ãtmask
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1462 
+NULL
+,
+
+1464 
+c
+->
+c2
+.
+es
+);
+
+1467 ià(!
+c
+->
+ÝtiÚs
+.
+rou‹_d–ay_defšed
+)
+
+1468 
+	`do_rou‹
+ (&
+c
+->
+ÝtiÚs
+, c->
+c1
+.
+rou‹_li¡
+, c->c1.
+rou‹_�v6_li¡
+,
+
+1469 
+c
+->
+c1
+.
+tuÁ­
+, c->
+¶ugšs
+, c->
+c2
+.
+es
+);
+
+1474 ià(
+c
+->
+c1
+.
+tuÁ­
+->
+po¡_Ý’_mtu
+)
+
+1475 
+	`äame_£t_mtu_dyÇmic
+ (&
+c
+->
+c2
+.
+äame
+,
+
+1476 
+c
+->
+c1
+.
+tuÁ­
+->
+po¡_Ý’_mtu
+,
+
+1477 
+SET_MTU_TUN
+ | 
+SET_MTU_UPPER_BOUND
+);
+
+1479 
+»t
+ = 
+Œue
+;
+
+1480 
+¡©ic_cÚ‹xt
+ = 
+c
+;
+
+1484 
+	`msg
+ (
+M_INFO
+, "Preserving…revious TUN/TAP instance: %s",
+
+1485 
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+);
+
+1488 
+	`do_ifcÚfig_£‹nv
+(
+c
+->
+c1
+.
+tuÁ­
+, c->
+c2
+.
+es
+);
+
+1491 ià(
+c
+->
+ÝtiÚs
+.
+up_»¡¬t
+)
+
+1492 
+	`run_up_down
+ (
+c
+->
+ÝtiÚs
+.
+up_sü�t
+,
+
+1493 
+c
+->
+¶ugšs
+,
+
+1494 
+OPENVPN_PLUGIN_UP
+,
+
+1495 
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+,
+
+1496 
+	`dev_ty³_¡ršg
+ (
+c
+->
+ÝtiÚs
+.
+dev
+, c->ÝtiÚs.
+dev_ty³
+),
+
+1497 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1498 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1499 
+	`´št_š_addr_t
+ (
+c
+->
+c1
+.
+tuÁ­
+->
+loÿl
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1500 
+	`´št_š_addr_t
+ (
+c
+->
+c1
+.
+tuÁ­
+->
+»mÙe_Ãtmask
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1502 
+NULL
+,
+
+1504 
+c
+->
+c2
+.
+es
+);
+
+1506 
+	`gc_ä“
+ (&
+gc
+);
+
+1507  
+»t
+;
+
+1508 
+	}
+}
+
+1515 
+	$do_þo£_tun_sim¶e
+ (
+cÚ‹xt
+ *
+c
+)
+
+1517 
+	`msg
+ (
+D_CLOSE
+, "Closing TUN/TAP interface");
+
+1518 
+	`þo£_tun
+ (
+c
+->
+c1
+.
+tuÁ­
+);
+
+1519 
+c
+->
+c1
+.
+tuÁ­
+ = 
+NULL
+;
+
+1520 
+c
+->
+c1
+.
+tuÁ­_owÃd
+ = 
+çl£
+;
+
+1521 #ià
+P2MP
+
+
+1522 
+	`§ve_puÎed_ÝtiÚs_dige¡
+ (
+c
+, 
+NULL
+);
+
+1524 
+	}
+}
+
+1527 
+	$do_þo£_tun
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+fÜû
+)
+
+1529 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1530 ià(
+c
+->
+c1
+.
+tuÁ­
+ && c->c1.
+tuÁ­_owÃd
+)
+
+1532 cÚ¡ *
+tuÁ­_aùu®
+ = 
+	`¡ršg_®loc
+ (
+c
+->
+c1
+.
+tuÁ­
+->
+aùu®_Çme
+, &
+gc
+);
+
+1533 cÚ¡ 
+š_addr_t
+ 
+loÿl
+ = 
+c
+->
+c1
+.
+tuÁ­
+->local;
+
+1534 cÚ¡ 
+š_addr_t
+ 
+»mÙe_Ãtmask
+ = 
+c
+->
+c1
+.
+tuÁ­
+->remote_netmask;
+
+1536 ià(
+fÜû
+ || !(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+ && c->
+ÝtiÚs
+.
+³rsi¡_tun
+))
+
+1538 
+¡©ic_cÚ‹xt
+ = 
+NULL
+;
+
+1540 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1542 ià(
+mªagem’t
+)
+
+1544 
+	`mªagem’t_´e_tuÂ–_þo£
+ (
+mªagem’t
+);
+
+1545 
+	`mªagem’t_up_down
+ (
+mªagem’t
+, "DOWN", 
+c
+->
+c2
+.
+es
+);
+
+1550 ià(
+c
+->
+c1
+.
+rou‹_li¡
+ || c->c1.
+rou‹_�v6_li¡
+ )
+
+1552 
+	`run_up_down
+ (
+c
+->
+ÝtiÚs
+.
+rou‹_´edown_sü�t
+,
+
+1553 
+c
+->
+¶ugšs
+,
+
+1554 
+OPENVPN_PLUGIN_ROUTE_PREDOWN
+,
+
+1555 
+tuÁ­_aùu®
+,
+
+1556 
+NULL
+,
+
+1557 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1558 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1559 
+	`´št_š_addr_t
+ (
+loÿl
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1560 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1562 
+	`sigÇl_desü�tiÚ
+ (
+c
+->
+sig
+->
+sigÇl_»ûived
+,
+
+1563 
+c
+->
+sig
+->
+sigÇl_‹xt
+),
+
+1565 
+c
+->
+c2
+.
+es
+);
+
+1567 
+	`d–‘e_rou‹s
+ (
+c
+->
+c1
+.
+rou‹_li¡
+, c->c1.
+rou‹_�v6_li¡
+,
+
+1568 
+c
+->
+c1
+.
+tuÁ­
+, 
+	`ROUTE_OPTION_FLAGS
+ (&c->
+ÝtiÚs
+), c->
+c2
+.
+es
+);
+
+1572 ià(!
+c
+->
+ÝtiÚs
+.
+down_´e
+)
+
+1573 
+	`do_þo£_tun_sim¶e
+ (
+c
+);
+
+1577 
+	`run_up_down
+ (
+c
+->
+ÝtiÚs
+.
+down_sü�t
+,
+
+1578 
+c
+->
+¶ugšs
+,
+
+1579 
+OPENVPN_PLUGIN_DOWN
+,
+
+1580 
+tuÁ­_aùu®
+,
+
+1581 
+NULL
+,
+
+1582 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1583 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1584 
+	`´št_š_addr_t
+ (
+loÿl
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1585 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1587 
+	`sigÇl_desü�tiÚ
+ (
+c
+->
+sig
+->
+sigÇl_»ûived
+,
+
+1588 
+c
+->
+sig
+->
+sigÇl_‹xt
+),
+
+1590 
+c
+->
+c2
+.
+es
+);
+
+1593 ià(
+c
+->
+ÝtiÚs
+.
+down_´e
+)
+
+1594 
+	`do_þo£_tun_sim¶e
+ (
+c
+);
+
+1599 ià(
+c
+->
+ÝtiÚs
+.
+up_»¡¬t
+)
+
+1600 
+	`run_up_down
+ (
+c
+->
+ÝtiÚs
+.
+down_sü�t
+,
+
+1601 
+c
+->
+¶ugšs
+,
+
+1602 
+OPENVPN_PLUGIN_DOWN
+,
+
+1603 
+tuÁ­_aùu®
+,
+
+1604 
+NULL
+,
+
+1605 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1606 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+),
+
+1607 
+	`´št_š_addr_t
+ (
+loÿl
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1608 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+1610 
+	`sigÇl_desü�tiÚ
+ (
+c
+->
+sig
+->
+sigÇl_»ûived
+,
+
+1611 
+c
+->
+sig
+->
+sigÇl_‹xt
+),
+
+1613 
+c
+->
+c2
+.
+es
+);
+
+1616 
+	`gc_ä“
+ (&
+gc
+);
+
+1617 
+	}
+}
+
+1620 
+	$tun_abÜt
+()
+
+1622 
+cÚ‹xt
+ *
+c
+ = 
+¡©ic_cÚ‹xt
+;
+
+1623 ià(
+c
+)
+
+1625 
+¡©ic_cÚ‹xt
+ = 
+NULL
+;
+
+1626 
+	`do_þo£_tun
+ (
+c
+, 
+Œue
+);
+
+1628 
+	}
+}
+
+1635 
+	$do_up
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+puÎed_ÝtiÚs
+, 
+ÝtiÚ_ty³s_found
+)
+
+1637 ià(!
+c
+->
+c2
+.
+do_up_¿n
+)
+
+1639 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+1641 ià(
+puÎed_ÝtiÚs
+ && 
+ÝtiÚ_ty³s_found
+)
+
+1642 
+	`do_deã¼ed_ÝtiÚs
+ (
+c
+, 
+ÝtiÚ_ty³s_found
+);
+
+1645 ià(
+c
+->
+ÝtiÚs
+.
+up_d–ay
+ || 
+	`PULL_DEFINED
+ (&c->options))
+
+1647 
+c
+->
+c2
+.
+did_Ý’_tun
+ = 
+	`do_Ý’_tun
+ (c);
+
+1648 
+	`upd©e_time
+ ();
+
+1650 #ià
+P2MP
+
+
+1655 ià(!
+c
+->
+c2
+.
+did_Ý’_tun
+
+
+1656 && 
+	`PULL_DEFINED
+ (&
+c
+->
+ÝtiÚs
+)
+
+1657 && 
+c
+->
+c1
+.
+tuÁ­
+
+
+1658 && (!
+	`md5_dige¡_defšed
+ (&
+c
+->
+c1
+.
+puÎed_ÝtiÚs_dige¡_§ve
+è|| !md5_dige¡_defšed (&c->
+c2
+.
+puÎed_ÝtiÚs_dige¡
+)
+
+1659 || !
+	`md5_dige¡_equ®
+ (&
+c
+->
+c1
+.
+puÎed_ÝtiÚs_dige¡_§ve
+, &c->
+c2
+.
+puÎed_ÝtiÚs_dige¡
+)))
+
+1662 
+	`msg
+ (
+M_INFO
+, "NOTE: Pulled options changed on„estart, will‚eed�o close‡nd„eopen TUN/TAP device.");
+
+1663 
+	`do_þo£_tun
+ (
+c
+, 
+Œue
+);
+
+1664 
+	`Ý’v²_¦“p
+ (1);
+
+1665 
+c
+->
+c2
+.
+did_Ý’_tun
+ = 
+	`do_Ý’_tun
+ (c);
+
+1666 
+	`upd©e_time
+ ();
+
+1671 ià(
+c
+->
+c2
+.
+did_Ý’_tun
+)
+
+1673 #ià
+P2MP
+
+
+1674 
+	`§ve_puÎed_ÝtiÚs_dige¡
+ (
+c
+, &c->
+c2
+.
+puÎed_ÝtiÚs_dige¡
+);
+
+1678 ià(
+c
+->
+ÝtiÚs
+.
+rou‹_d–ay_defšed
+)
+
+1680 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+rou‹_wakeup
+, c->
+ÝtiÚs
+.
+rou‹_d–ay
+, 
+now
+);
+
+1681 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+rou‹_wakeup_expœe
+, c->
+ÝtiÚs
+.
+rou‹_d–ay
+ + c->ÝtiÚs.
+rou‹_d–ay_wšdow
+, 
+now
+);
+
+1682 ià(
+c
+->
+c1
+.
+tuÁ­
+)
+
+1683 
+	`tun_¡ªdby_š™
+ (
+c
+->
+c1
+.
+tuÁ­
+);
+
+1687 
+	`š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+c
+, 0);
+
+1690 ià(
+c
+->
+ÝtiÚs
+.
+mode
+ =ð
+MODE_POINT_TO_POINT
+)
+
+1692 
+	`š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+c
+, 0);
+
+1695 
+c
+->
+c2
+.
+do_up_¿n
+ = 
+Œue
+;
+
+1697 
+	}
+}
+
+1703 
+	$puÎ_³rmissiÚ_mask
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+1705 
+æags
+ =
+
+1706 
+OPT_P_UP
+
+
+1707 | 
+OPT_P_ROUTE_EXTRAS
+
+
+1708 | 
+OPT_P_SOCKBUF
+
+
+1709 | 
+OPT_P_SOCKFLAGS
+
+
+1710 | 
+OPT_P_SETENV
+
+
+1711 | 
+OPT_P_SHAPER
+
+
+1712 | 
+OPT_P_TIMER
+
+
+1713 | 
+OPT_P_COMP
+
+
+1714 | 
+OPT_P_PERSIST
+
+
+1715 | 
+OPT_P_MESSAGES
+
+
+1716 | 
+OPT_P_EXPLICIT_NOTIFY
+
+
+1717 | 
+OPT_P_ECHO
+
+
+1718 | 
+OPT_P_PULL_MODE
+
+
+1719 | 
+OPT_P_PEER_ID
+;
+
+1721 ià(!
+c
+->
+ÝtiÚs
+.
+rou‹_nÝuÎ
+)
+
+1722 
+æags
+ |ð(
+OPT_P_ROUTE
+ | 
+OPT_P_IPWIN32
+);
+
+1724  
+æags
+;
+
+1725 
+	}
+}
+
+1731 
+	$do_deã¼ed_ÝtiÚs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+found
+)
+
+1733 ià(
+found
+ & 
+OPT_P_MESSAGES
+)
+
+1735 
+	`š™_v”b_mu‹
+ (
+c
+, 
+IVM_LEVEL_1
+|
+IVM_LEVEL_2
+);
+
+1736 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --verb‡nd/or --mute†evel changed");
+
+1738 ià(
+found
+ & 
+OPT_P_TIMER
+)
+
+1740 
+	`do_š™_tim”s
+ (
+c
+, 
+Œue
+);
+
+1741 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:�imers‡nd/or�imeouts modified");
+
+1744 #ifdeà
+ENABLE_OCC
+
+
+1745 ià(
+found
+ & 
+OPT_P_EXPLICIT_NOTIFY
+)
+
+1747 ià(!
+	`´Ùo_is_udp
+(
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+è&& c->ÝtiÚs.û.
+ex¶ic™_ex™_nÙifiÿtiÚ
+)
+
+1749 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --explicit-exit-notify can only be used with --proto udp");
+
+1750 
+c
+->
+ÝtiÚs
+.
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+ = 0;
+
+1753 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:ƒxplicit‚otify…arm(s) modified");
+
+1757 #ifdeà
+ENABLE_LZO
+
+
+1758 ià(
+found
+ & 
+OPT_P_COMP
+)
+
+1760 ià(
+	`lzo_defšed
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+))
+
+1762 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: LZO…arms modified");
+
+1763 
+	`lzo_modify_æags
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+, c->
+ÝtiÚs
+.
+lzo
+);
+
+1768 ià(
+found
+ & 
+OPT_P_SHAPER
+)
+
+1770 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:�raffic shaperƒnabled");
+
+1771 
+	`do_š™_Œaffic_sh­”
+ (
+c
+);
+
+1774 ià(
+found
+ & 
+OPT_P_SOCKBUF
+)
+
+1776 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --sndbuf/--rcvbuf options modified");
+
+1777 
+	`lšk_sock‘_upd©e_bufãr_sizes
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, c->
+ÝtiÚs
+.
+rcvbuf
+, c->ÝtiÚs.
+¢dbuf
+);
+
+1780 ià(
+found
+ & 
+OPT_P_SOCKFLAGS
+)
+
+1782 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --socket-flags option modified");
+
+1783 
+	`lšk_sock‘_upd©e_æags
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, c->
+ÝtiÚs
+.
+sockæags
+);
+
+1786 ià(
+found
+ & 
+OPT_P_PERSIST
+)
+
+1787 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --persist options modified");
+
+1788 ià(
+found
+ & 
+OPT_P_UP
+)
+
+1789 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --ifconfig/up options modified");
+
+1790 ià(
+found
+ & 
+OPT_P_ROUTE
+)
+
+1791 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:„oute options modified");
+
+1792 ià(
+found
+ & 
+OPT_P_ROUTE_EXTRAS
+)
+
+1793 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:„oute-related options modified");
+
+1794 ià(
+found
+ & 
+OPT_P_IPWIN32
+)
+
+1795 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT: --ip-win32‡nd/or --dhcp-option options modified");
+
+1796 ià(
+found
+ & 
+OPT_P_SETENV
+)
+
+1797 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:ƒnvironment modified");
+
+1799 #ifdeà
+ENABLE_SSL
+
+
+1800 ià(
+found
+ & 
+OPT_P_PEER_ID
+)
+
+1802 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:…eer-id set");
+
+1803 
+c
+->
+c2
+.
+Žs_muÉi
+->
+u£_³”_id
+ = 
+Œue
+;
+
+1804 
+c
+->
+c2
+.
+Žs_muÉi
+->
+³”_id
+ = c->
+ÝtiÚs
+.peer_id;
+
+1805 
+	`äame_add_to_exŒa_äame
+(&
+c
+->
+c2
+.
+äame
+, +3);
+
+1806 iàÐ!
+c
+->
+ÝtiÚs
+.
+û
+.
+lšk_mtu_defšed
+ )
+
+1808 
+	`äame_add_to_lšk_mtu
+(&
+c
+->
+c2
+.
+äame
+, +3);
+
+1809 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:‡djusting†ink_mtu�o %d",
+
+1810 
+	`EXPANDED_SIZE
+(&
+c
+->
+c2
+.
+äame
+));
+
+1814 
+	`msg
+ (
+M_WARN
+, "OPTIONS IMPORT: WARNING:…eer-id set, but†ink-mtu"
+
+1816 " MTU…robËms", 
+	`TUN_MTU_SIZE
+(&
+c
+->
+c2
+.
+äame
+) );
+
+1820 
+	}
+}
+
+1825 
+boÞ
+
+
+1826 
+	$do_hÞd
+ ()
+
+1828 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1829 ià(
+mªagem’t
+)
+
+1832 ià(
+	`mªagem’t_hÞd
+ (
+mªagem’t
+))
+
+1833  
+Œue
+;
+
+1836  
+çl£
+;
+
+1837 
+	}
+}
+
+1843 
+	$sock‘_»¡¬t_·u£
+ (
+cÚ‹xt
+ *
+c
+)
+
+1845 
+boÞ
+ 
+´oxy
+ = 
+çl£
+;
+
+1846 
+£c
+ = 2;
+
+1848 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1849 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+h‰p_´oxy_ÝtiÚs
+)
+
+1850 
+´oxy
+ = 
+Œue
+;
+
+1852 #ifdeà
+ENABLE_SOCKS
+
+
+1853 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_£rv”
+)
+
+1854 
+´oxy
+ = 
+Œue
+;
+
+1857 
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+)
+
+1859 
+PROTO_UDPv4
+:
+
+1860 
+PROTO_UDPv6
+:
+
+1861 ià(
+´oxy
+)
+
+1862 
+£c
+ = 
+c
+->
+ÝtiÚs
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+;
+
+1864 
+PROTO_TCPv4_SERVER
+:
+
+1865 
+PROTO_TCPv6_SERVER
+:
+
+1866 
+£c
+ = 1;
+
+1868 
+PROTO_TCPv4_CLIENT
+:
+
+1869 
+PROTO_TCPv6_CLIENT
+:
+
+1870 
+£c
+ = 
+c
+->
+ÝtiÚs
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+;
+
+1874 #ifdeà
+ENABLE_DEBUG
+
+
+1875 ià(
+	`GREMLIN_CONNECTION_FLOOD_LEVEL
+ (
+c
+->
+ÝtiÚs
+.
+g»mlš
+))
+
+1876 
+£c
+ = 0;
+
+1879 #ià
+P2MP
+
+
+1880 ià(
+	`auth_»Œy_g‘
+ (è=ð
+AR_NOINTERACT
+)
+
+1881 
+£c
+ = 10;
+
+1884 ià(
+c
+->
+ÝtiÚs
+.
+£rv”_pÞl_timeout
+ && 
+£c
+ > 1)
+
+1885 
+£c
+ = 1;
+
+1889 ià(
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+ > 0 && c->³rsi¡.»¡¬t_¦“p_£cÚd > 
+£c
+)
+
+1890 
+£c
+ = 
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+;
+
+1891 ià(
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+ == -1)
+
+1892 
+£c
+ = 0;
+
+1893 
+c
+->
+³rsi¡
+.
+»¡¬t_¦“p_£cÚds
+ = 0;
+
+1896 ià(
+	`do_hÞd
+ ())
+
+1897 
+£c
+ = 0;
+
+1899 ià(
+£c
+)
+
+1901 
+	`msg
+ (
+D_RESTART
+, "Re¡¬ˆ·u£, %d secÚd(s)", 
+£c
+);
+
+1902 
+	`Ý’v²_¦“p
+ (
+£c
+);
+
+1904 
+	}
+}
+
+1910 
+	$do_¡¬tup_·u£
+ (
+cÚ‹xt
+ *
+c
+)
+
+1912 ià(!
+c
+->
+fœ¡_time
+)
+
+1913 
+	`sock‘_»¡¬t_·u£
+ (
+c
+);
+
+1915 
+	`do_hÞd
+ ();
+
+1916 
+	}
+}
+
+1922 
+	$äame_fš®ize_ÝtiÚs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+1924 ià(!
+o
+)
+
+1925 
+o
+ = &
+c
+->
+ÝtiÚs
+;
+
+1931 ià(!
+	`CIPHER_ENABLED
+ (
+c
+))
+
+1933 
+	`äame_®ign_to_exŒa_äame
+ (&
+c
+->
+c2
+.
+äame
+);
+
+1934 
+	`äame_Ü_®ign_æags
+ (&
+c
+->
+c2
+.
+äame
+,
+
+1935 
+FRAME_HEADROOM_MARKER_FRAGMENT
+
+
+1936 |
+FRAME_HEADROOM_MARKER_READ_LINK
+
+
+1937 |
+FRAME_HEADROOM_MARKER_READ_STREAM
+);
+
+1940 
+	`äame_fš®ize
+ (&
+c
+->
+c2
+.
+äame
+,
+
+1941 
+o
+->
+û
+.
+lšk_mtu_defšed
+,
+
+1942 
+o
+->
+û
+.
+lšk_mtu
+,
+
+1943 
+o
+->
+û
+.
+tun_mtu_defšed
+,
+
+1944 
+o
+->
+û
+.
+tun_mtu
+);
+
+1945 
+	}
+}
+
+1951 
+	$key_scheduË_ä“
+ (
+key_scheduË
+ *
+ks
+, 
+boÞ
+ 
+ä“_s¦_ùx
+)
+
+1953 #ifdeà
+ENABLE_CRYPTO
+
+
+1954 
+	`ä“_key_ùx_bi
+ (&
+ks
+->
+¡©ic_key
+);
+
+1955 #ifdeà
+ENABLE_SSL
+
+
+1956 ià(
+	`Žs_ùx_š™Ÿli£d
+(&
+ks
+->
+s¦_ùx
+è&& 
+ä“_s¦_ùx
+)
+
+1958 
+	`Žs_ùx_ä“
+ (&
+ks
+->
+s¦_ùx
+);
+
+1959 
+	`ä“_key_ùx_bi
+ (&
+ks
+->
+Žs_auth_key
+);
+
+1963 
+	`CLEAR
+ (*
+ks
+);
+
+1964 
+	}
+}
+
+1966 #ifdeà
+ENABLE_CRYPTO
+
+
+1969 
+	$š™_üy±o_´e
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+1971 ià(
+c
+->
+ÝtiÚs
+.
+’gše
+)
+
+1972 
+	`üy±o_š™_lib_’gše
+ (
+c
+->
+ÝtiÚs
+.
+’gše
+);
+
+1974 ià(
+æags
+ & 
+CF_LOAD_PERSISTED_PACKET_ID
+)
+
+1977 ià(
+c
+->
+ÝtiÚs
+.
+·ck‘_id_fže
+)
+
+1978 
+	`·ck‘_id_³rsi¡_lßd
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+, c->
+ÝtiÚs
+.
+·ck‘_id_fže
+);
+
+1983 ià(
+c
+->
+ÝtiÚs
+.
+u£_iv
+)
+
+1984 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+æags
+ |ð
+CO_USE_IV
+;
+
+1986 ià(
+c
+->
+ÝtiÚs
+.
+mu‹_»¶ay_w¬nšgs
+)
+
+1987 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+æags
+ |ð
+CO_MUTE_REPLAY_WARNINGS
+;
+
+1989 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+1990 ià(
+c
+->
+ÝtiÚs
+.
+u£_´ediùiÚ_»si¡ªû
+)
+
+1991 
+	`¿nd_ùx_’abË_´ediùiÚ_»si¡ªû
+();
+
+1994 
+	}
+}
+
+2000 
+	$do_š™_üy±o_¡©ic
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+2002 cÚ¡ 
+ÝtiÚs
+ *ÝtiÚ ð&
+c
+->options;
+
+2003 
+	`ASSERT
+ (
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+);
+
+2005 
+	`š™_üy±o_´e
+ (
+c
+, 
+æags
+);
+
+2008 ià(
+ÝtiÚs
+->
+»¶ay
+)
+
+2010 
+	`·ck‘_id_š™
+ (&
+c
+->
+c2
+.
+·ck‘_id
+,
+
+2011 
+	`lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+ÝtiÚs
+->
+û
+.
+´Ùo
+),
+
+2012 
+ÝtiÚs
+->
+»¶ay_wšdow
+,
+
+2013 
+ÝtiÚs
+->
+»¶ay_time
+,
+
+2015 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+·ck‘_id
+ = &c->c2.packet_id;
+
+2016 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+pid_³rsi¡
+ = &c->
+c1
+.pid_persist;
+
+2017 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+æags
+ |ð
+CO_PACKET_ID_LONG_FORM
+;
+
+2018 
+	`·ck‘_id_³rsi¡_lßd_obj
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+,
+
+2019 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+·ck‘_id
+);
+
+2022 ià(!
+	`key_ùx_bi_defšed
+ (&
+c
+->
+c1
+.
+ks
+.
+¡©ic_key
+))
+
+2024 
+key2
+ key2;
+
+2025 
+key_dœeùiÚ_¡©e
+ 
+kds
+;
+
+2028 
+	`š™_key_ty³
+ (&
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+ÝtiÚs
+->
+c�h”Çme
+,
+
+2029 
+ÝtiÚs
+->
+c�h”Çme_defšed
+, o±iÚs->
+authÇme
+,
+
+2030 
+ÝtiÚs
+->
+authÇme_defšed
+, o±iÚs->
+keysize
+,
+
+2031 
+ÝtiÚs
+->
+‹¡_üy±o
+, 
+Œue
+);
+
+2035 
+rkf_æags
+ = 
+RKF_MUST_SUCCEED
+;
+
+2036 cÚ¡ *
+rkf_fže
+ = 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+;
+
+2038 ià(
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže_šlše
+)
+
+2040 
+rkf_fže
+ = 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže_šlše
+;
+
+2041 
+rkf_æags
+ |ð
+RKF_INLINE
+;
+
+2043 
+	`»ad_key_fže
+ (&
+key2
+, 
+rkf_fže
+, 
+rkf_æags
+);
+
+2047 
+	`v”ify_fix_key2
+ (&
+key2
+, &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+,
+
+2048 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+);
+
+2051 
+	`key_dœeùiÚ_¡©e_š™
+ (&
+kds
+, 
+ÝtiÚs
+->
+key_dœeùiÚ
+);
+
+2052 
+	`mu¡_have_n_keys
+ (
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+, "£ü‘", &
+key2
+,
+
+2053 
+kds
+.
+Ãed_keys
+);
+
+2054 
+	`š™_key_ùx
+ (&
+c
+->
+c1
+.
+ks
+.
+¡©ic_key
+.
+’üy±
+, &
+key2
+.
+keys
+[
+kds
+.
+out_key
+],
+
+2055 &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+OPENVPN_OP_ENCRYPT
+, "Static Encrypt");
+
+2056 
+	`š™_key_ùx
+ (&
+c
+->
+c1
+.
+ks
+.
+¡©ic_key
+.
+deüy±
+, &
+key2
+.
+keys
+[
+kds
+.
+š_key
+],
+
+2057 &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+OPENVPN_OP_DECRYPT
+, "Static Decrypt");
+
+2060 
+	`CLEAR
+ (
+key2
+);
+
+2064 
+	`msg
+ (
+M_INFO
+, "Re-using…re-shared static key");
+
+2068 
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+.
+key_ùx_bi
+ = &c->
+c1
+.
+ks
+.
+¡©ic_key
+;
+
+2071 
+	`üy±o_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+,
+
+2072 &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+,
+
+2073 
+ÝtiÚs
+->
+c�h”Çme_defšed
+,
+
+2074 
+ÝtiÚs
+->
+u£_iv
+, o±iÚs->
+»¶ay
+, 
+Œue
+);
+
+2077 
+	`check_»¶ay_iv_cÚsi¡’cy
+ (&
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+ÝtiÚs
+->
+»¶ay
+,
+
+2078 
+ÝtiÚs
+->
+u£_iv
+);
+
+2079 
+	}
+}
+
+2081 #ifdeà
+ENABLE_SSL
+
+
+2088 
+	$do_š™_üy±o_Žs_c1
+ (
+cÚ‹xt
+ *
+c
+)
+
+2090 cÚ¡ 
+ÝtiÚs
+ *ÝtiÚ ð&
+c
+->options;
+
+2092 ià(!
+	`Žs_ùx_š™Ÿli£d
+(&
+c
+->
+c1
+.
+ks
+.
+s¦_ùx
+))
+
+2098 
+	`š™_s¦
+ (
+ÝtiÚs
+, &(
+c
+->
+c1
+.
+ks
+.
+s¦_ùx
+));
+
+2099 ià(!
+	`Žs_ùx_š™Ÿli£d
+(&
+c
+->
+c1
+.
+ks
+.
+s¦_ùx
+))
+
+2101 #ià
+P2MP
+
+
+2102 
+	`auth_»Œy_g‘
+ ())
+
+2104 
+AR_NONE
+:
+
+2105 
+	`msg
+ (
+M_FATAL
+, "Error:…rivate key…assword verification failed");
+
+2107 
+AR_INTERACT
+:
+
+2108 
+	`s¦_purge_auth
+ (
+çl£
+);
+
+2109 
+AR_NOINTERACT
+:
+
+2110 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+2113 
+	`ASSERT
+ (0);
+
+2115 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "private-key-password-failure";
+
+2118 
+	`msg
+ (
+M_FATAL
+, "Error:…rivate key…assword verification failed");
+
+2123 
+	`š™_key_ty³
+ (&
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+ÝtiÚs
+->
+c�h”Çme
+,
+
+2124 
+ÝtiÚs
+->
+c�h”Çme_defšed
+, o±iÚs->
+authÇme
+,
+
+2125 
+ÝtiÚs
+->
+authÇme_defšed
+, o±iÚs->
+keysize
+, 
+Œue
+,�rue);
+
+2128 
+	`´ng_š™
+ (
+ÝtiÚs
+->
+´ng_hash
+, o±iÚs->
+´ng_nÚû_£ü‘_Ën
+);
+
+2131 ià(
+ÝtiÚs
+->
+Žs_auth_fže
+)
+
+2133 
+æags
+ = 0;
+
+2134 cÚ¡ *
+fže
+ = 
+ÝtiÚs
+->
+Žs_auth_fže
+;
+
+2136 ià(
+ÝtiÚs
+->
+Žs_auth_fže_šlše
+)
+
+2138 
+æags
+ |ð
+GHK_INLINE
+;
+
+2139 
+fže
+ = 
+ÝtiÚs
+->
+Žs_auth_fže_šlše
+;
+
+2141 
+	`g‘_Žs_hªdshake_key
+ (&
+c
+->
+c1
+.
+ks
+.
+key_ty³
+,
+
+2142 &
+c
+->
+c1
+.
+ks
+.
+Žs_auth_key
+,
+
+2143 
+fže
+,
+
+2144 
+ÝtiÚs
+->
+key_dœeùiÚ
+,
+
+2145 
+æags
+);
+
+2149 ià(
+ÝtiÚs
+->
+´iv_key_fže_šlše
+)
+
+2151 
+	`¡ršg_þ—r
+ (
+c
+->
+ÝtiÚs
+.
+´iv_key_fže_šlše
+);
+
+2152 
+c
+->
+ÝtiÚs
+.
+´iv_key_fže_šlše
+ = 
+NULL
+;
+
+2158 
+	`msg
+ (
+D_INIT_MEDIUM
+, "Re-using SSL/TLS context");
+
+2160 
+	}
+}
+
+2163 
+	$do_š™_üy±o_Žs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+2165 cÚ¡ 
+ÝtiÚs
+ *ÝtiÚ ð&
+c
+->options;
+
+2166 
+Žs_ÝtiÚs
+ 
+to
+;
+
+2167 
+boÞ
+ 
+·ck‘_id_lÚg_fÜm
+;
+
+2169 
+	`ASSERT
+ (
+ÝtiÚs
+->
+Žs_£rv”
+ || o±iÚs->
+Žs_þ›Á
+);
+
+2170 
+	`ASSERT
+ (!
+ÝtiÚs
+->
+‹¡_üy±o
+);
+
+2172 
+	`š™_üy±o_´e
+ (
+c
+, 
+æags
+);
+
+2175 
+	`ASSERT
+ (
+ÝtiÚs
+->
+Žs_£rv”
+ =ð!ÝtiÚs->
+Žs_þ›Á
+);
+
+2178 
+	`do_š™_üy±o_Žs_c1
+ (
+c
+);
+
+2179 ià(
+	`IS_SIG
+ (
+c
+))
+
+2183 
+	`check_»¶ay_iv_cÚsi¡’cy
+ (&
+c
+->
+c1
+.
+ks
+.
+key_ty³
+, 
+ÝtiÚs
+->
+»¶ay
+,
+
+2184 
+ÝtiÚs
+->
+u£_iv
+);
+
+2187 
+·ck‘_id_lÚg_fÜm
+ = 
+	`c�h”_kt_mode_ofb_cfb
+ (
+c
+->
+c1
+.
+ks
+.
+key_ty³
+.
+c�h”
+);
+
+2190 
+	`üy±o_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+,
+
+2191 &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+,
+
+2192 
+ÝtiÚs
+->
+c�h”Çme_defšed
+,
+
+2193 
+ÝtiÚs
+->
+u£_iv
+,
+
+2194 
+ÝtiÚs
+->
+»¶ay
+, 
+·ck‘_id_lÚg_fÜm
+);
+
+2195 
+	`Žs_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+);
+
+2198 
+	`CLEAR
+ (
+to
+);
+
+2200 
+to
+.
+üy±o_æags_ªd
+ = ~(
+CO_PACKET_ID_LONG_FORM
+);
+
+2201 ià(
+·ck‘_id_lÚg_fÜm
+)
+
+2202 
+to
+.
+üy±o_æags_Ü
+ = 
+CO_PACKET_ID_LONG_FORM
+;
+
+2204 
+to
+.
+s¦_ùx
+ = 
+c
+->
+c1
+.
+ks
+.ssl_ctx;
+
+2205 
+to
+.
+key_ty³
+ = 
+c
+->
+c1
+.
+ks
+.key_type;
+
+2206 
+to
+.
+£rv”
+ = 
+ÝtiÚs
+->
+Žs_£rv”
+;
+
+2207 
+to
+.
+key_m‘hod
+ = 
+ÝtiÚs
+->key_method;
+
+2208 
+to
+.
+»¶ay
+ = 
+ÝtiÚs
+->replay;
+
+2209 
+to
+.
+»¶ay_wšdow
+ = 
+ÝtiÚs
+->replay_window;
+
+2210 
+to
+.
+»¶ay_time
+ = 
+ÝtiÚs
+->replay_time;
+
+2211 
+to
+.
+tý_mode
+ = 
+	`lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+ÝtiÚs
+->
+û
+.
+´Ùo
+);
+
+2212 
+to
+.
+Œªs™iÚ_wšdow
+ = 
+ÝtiÚs
+->transition_window;
+
+2213 
+to
+.
+hªdshake_wšdow
+ = 
+ÝtiÚs
+->handshake_window;
+
+2214 
+to
+.
+·ck‘_timeout
+ = 
+ÝtiÚs
+->
+Žs_timeout
+;
+
+2215 
+to
+.
+»ÃgÙŸ‹_by‹s
+ = 
+ÝtiÚs
+->renegotiate_bytes;
+
+2216 
+to
+.
+»ÃgÙŸ‹_·ck‘s
+ = 
+ÝtiÚs
+->renegotiate_packets;
+
+2217 
+to
+.
+»ÃgÙŸ‹_£cÚds
+ = 
+ÝtiÚs
+->renegotiate_seconds;
+
+2218 
+to
+.
+sšgË_£ssiÚ
+ = 
+ÝtiÚs
+->single_session;
+
+2219 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+2220 ià(
+ÝtiÚs
+->
+push_³”_šfo
+)
+
+2221 
+to
+.
+push_³”_šfo_d‘až
+ = 2;
+
+2222 ià(
+ÝtiÚs
+->
+puÎ
+)
+
+2223 
+to
+.
+push_³”_šfo_d‘až
+ = 1;
+
+2225 
+to
+.
+push_³”_šfo_d‘až
+ = 0;
+
+2230 ià(
+to
+.
+£rv”
+ && 
+ÝtiÚs
+->
+û
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+)
+
+2231 
+to
+.
+xm™_hÞd
+ = 
+Œue
+;
+
+2233 #ifdeà
+ENABLE_OCC
+
+
+2234 
+to
+.
+di§bË_occ
+ = !
+ÝtiÚs
+->
+occ
+;
+
+2237 
+to
+.
+v”ify_commªd
+ = 
+ÝtiÚs
+->
+Žs_v”ify
+;
+
+2238 
+to
+.
+v”ify_expÜt_û¹
+ = 
+ÝtiÚs
+->
+Žs_expÜt_û¹
+;
+
+2239 
+to
+.
+v”ify_x509_ty³
+ = (
+ÝtiÚs
+->verify_x509_type & 0xff);
+
+2240 
+to
+.
+v”ify_x509_Çme
+ = 
+ÝtiÚs
+->verify_x509_name;
+
+2241 
+to
+.
+ül_fže
+ = 
+ÝtiÚs
+->crl_file;
+
+2242 
+to
+.
+s¦_æags
+ = 
+ÝtiÚs
+->ssl_flags;
+
+2243 
+to
+.
+ns_û¹_ty³
+ = 
+ÝtiÚs
+->ns_cert_type;
+
+2244 
+	`memmove
+ (
+to
+.
+»mÙe_û¹_ku
+, 
+ÝtiÚs
+->remote_cert_ku,  (to.remote_cert_ku));
+
+2245 
+to
+.
+»mÙe_û¹_eku
+ = 
+ÝtiÚs
+->remote_cert_eku;
+
+2246 
+to
+.
+v”ify_hash
+ = 
+ÝtiÚs
+->verify_hash;
+
+2247 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+2248 
+to
+.
+x509_u£ºame_f›ld
+ = (*è
+ÝtiÚs
+->x509_username_field;
+
+2250 
+to
+.
+x509_u£ºame_f›ld
+ = 
+X509_USERNAME_FIELD_DEFAULT
+;
+
+2252 
+to
+.
+es
+ = 
+c
+->
+c2
+.es;
+
+2254 #ifdeà
+ENABLE_DEBUG
+
+
+2255 
+to
+.
+g»mlš
+ = 
+c
+->
+ÝtiÚs
+.gremlin;
+
+2258 
+to
+.
+¶ugšs
+ = 
+c
+->plugins;
+
+2260 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+2261 
+to
+.
+mda_cÚ‹xt
+ = &
+c
+->
+c2
+.mda_context;
+
+2264 #ià
+P2MP_SERVER
+
+
+2265 
+to
+.
+auth_u£r_·ss_v”ify_sü�t
+ = 
+ÝtiÚs
+->auth_user_pass_verify_script;
+
+2266 
+to
+.
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+ = 
+ÝtiÚs
+->auth_user_pass_verify_script_via_file;
+
+2267 
+to
+.
+tmp_dœ
+ = 
+ÝtiÚs
+->tmp_dir;
+
+2268 ià(
+ÝtiÚs
+->
+ccd_exþusive
+)
+
+2269 
+to
+.
+þ›Á_cÚfig_dœ_exþusive
+ = 
+ÝtiÚs
+->
+þ›Á_cÚfig_dœ
+;
+
+2270 
+to
+.
+auth_u£r_·ss_fže
+ = 
+ÝtiÚs
+->auth_user_pass_file;
+
+2273 #ifdeà
+ENABLE_X509_TRACK
+
+
+2274 
+to
+.
+x509_Œack
+ = 
+ÝtiÚs
+->x509_track;
+
+2277 #ià
+P2MP
+
+
+2278 #ifdeà
+ENABLE_CLIENT_CR
+
+
+2279 
+to
+.
+sci
+ = &
+ÝtiÚs
+->
+sc_šfo
+;
+
+2284 ià(
+ÝtiÚs
+->
+Žs_auth_fže
+)
+
+2286 
+to
+.
+Žs_auth_key
+ = 
+c
+->
+c1
+.
+ks
+.tls_auth_key;
+
+2287 
+to
+.
+Žs_auth
+.
+pid_³rsi¡
+ = &
+c
+->
+c1
+.pid_persist;
+
+2288 
+to
+.
+Žs_auth
+.
+æags
+ |ð
+CO_PACKET_ID_LONG_FORM
+;
+
+2289 
+	`üy±o_adju¡_äame_·¿m‘”s
+ (&
+to
+.
+äame
+,
+
+2290 &
+c
+->
+c1
+.
+ks
+.
+key_ty³
+,
+
+2291 
+çl£
+, f®£, 
+Œue
+,�rue);
+
+2296 
+	`sock‘_adju¡_äame_·¿m‘”s
+ (&
+to
+.
+äame
+, 
+ÝtiÚs
+->
+û
+.
+´Ùo
+);
+
+2301 ià(
+æags
+ & 
+CF_INIT_TLS_MULTI
+)
+
+2302 
+c
+->
+c2
+.
+Žs_muÉi
+ = 
+	`Žs_muÉi_š™
+ (&
+to
+);
+
+2304 ià(
+æags
+ & 
+CF_INIT_TLS_AUTH_STANDALONE
+)
+
+2305 
+c
+->
+c2
+.
+Žs_auth_¡ªd®Úe
+ = 
+	`Žs_auth_¡ªd®Úe_š™
+ (&
+to
+, &c->c2.
+gc
+);
+
+2306 
+	}
+}
+
+2309 
+	$do_š™_fš®ize_Žs_äame
+ (
+cÚ‹xt
+ *
+c
+)
+
+2311 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+2313 
+	`Žs_muÉi_š™_fš®ize
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, &c->c2.
+äame
+);
+
+2314 
+	`ASSERT
+ (
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+Žs_muÉi
+->
+Ýt
+.
+äame
+) <=
+
+2315 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+));
+
+2316 
+	`äame_´št
+ (&
+c
+->
+c2
+.
+Žs_muÉi
+->
+Ýt
+.
+äame
+, 
+D_MTU_INFO
+,
+
+2319 ià(
+c
+->
+c2
+.
+Žs_auth_¡ªd®Úe
+)
+
+2321 
+	`Žs_auth_¡ªd®Úe_fš®ize
+ (
+c
+->
+c2
+.
+Žs_auth_¡ªd®Úe
+, &c->c2.
+äame
+);
+
+2322 
+	`äame_´št
+ (&
+c
+->
+c2
+.
+Žs_auth_¡ªd®Úe
+->
+äame
+, 
+D_MTU_INFO
+,
+
+2325 
+	}
+}
+
+2330 #ifdeà
+ENABLE_CRYPTO
+
+
+2335 
+	$do_š™_üy±o_nÚe
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+2337 
+	`ASSERT
+ (!
+c
+->
+ÝtiÚs
+.
+‹¡_üy±o
+);
+
+2338 
+	`msg
+ (
+M_WARN
+,
+
+2340 
+	}
+}
+
+2344 
+	$do_š™_üy±o
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+)
+
+2346 #ifdeà
+ENABLE_CRYPTO
+
+
+2347 ià(
+c
+->
+ÝtiÚs
+.
+sh¬ed_£ü‘_fže
+)
+
+2348 
+	`do_š™_üy±o_¡©ic
+ (
+c
+, 
+æags
+);
+
+2349 #ifdeà
+ENABLE_SSL
+
+
+2350 ià(
+c
+->
+ÝtiÚs
+.
+Žs_£rv”
+ || c->ÝtiÚs.
+Žs_þ›Á
+)
+
+2351 
+	`do_š™_üy±o_Žs
+ (
+c
+, 
+æags
+);
+
+2354 
+	`do_š™_üy±o_nÚe
+ (
+c
+);
+
+2356 
+	`msg
+ (
+M_WARN
+,
+
+2357 "******* WARNING *******: " 
+PACKAGE_NAME
+
+
+2360 
+	}
+}
+
+2363 
+	$do_š™_äame
+ (
+cÚ‹xt
+ *
+c
+)
+
+2365 #ifdeà
+ENABLE_LZO
+
+
+2369 ià(
+c
+->
+ÝtiÚs
+.
+lzo
+ & 
+LZO_SELECTED
+)
+
+2371 
+	`lzo_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+);
+
+2376 ià(
+	`CIPHER_ENABLED
+ (
+c
+))
+
+2378 
+	`äame_add_to_®ign_adju¡
+ (&
+c
+->
+c2
+.
+äame
+, 
+LZO_PREFIX_LEN
+);
+
+2379 
+	`äame_Ü_®ign_æags
+ (&
+c
+->
+c2
+.
+äame
+,
+
+2380 
+FRAME_HEADROOM_MARKER_FRAGMENT
+
+
+2381 |
+FRAME_HEADROOM_MARKER_DECRYPT
+);
+
+2384 #ifdeà
+ENABLE_FRAGMENT
+
+
+2385 
+	`lzo_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame_äagm’t_om™
+);
+
+2390 #ifdeà
+ENABLE_SOCKS
+
+
+2394 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+socks_´oxy_£rv”
+)
+
+2395 
+	`socks_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+, c->
+ÝtiÚs
+.
+û
+.
+´Ùo
+);
+
+2401 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+tun_mtu_exŒa_defšed
+)
+
+2402 
+	`tun_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+, c->
+ÝtiÚs
+.
+û
+.
+tun_mtu_exŒa
+);
+
+2409 
+	`sock‘_adju¡_äame_·¿m‘”s
+ (&
+c
+->
+c2
+.
+äame
+, c->
+ÝtiÚs
+.
+û
+.
+´Ùo
+);
+
+2415 
+	`äame_fš®ize_ÝtiÚs
+ (
+c
+, 
+NULL
+);
+
+2425 
+	`äame_add_to_exŒa_lšk
+(&
+c
+->
+c2
+.
+äame
+, 3);
+
+2426 
+	`äame_add_to_exŒa_bufãr
+(&
+c
+->
+c2
+.
+äame
+, 8);
+
+2428 #ifdeà
+ENABLE_FRAGMENT
+
+
+2434 
+c
+->
+c2
+.
+äame_äagm’t
+ = c->c2.
+äame
+;
+
+2435 
+	`äame_subŒaù_exŒa
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+, &c->c2.
+äame_äagm’t_om™
+);
+
+2438 #ià
+	`defšed
+(
+ENABLE_FRAGMENT
+è&& defšed(
+ENABLE_OCC
+)
+
+2442 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+äagm’t
+ && c->ÝtiÚs.
+mtu_‹¡
+)
+
+2443 
+	`msg
+ (
+M_WARN
+,
+
+2447 #ifdeà
+ENABLE_FRAGMENT
+
+
+2448 ià((
+c
+->
+ÝtiÚs
+.
+û
+.
+mssfix
+ || c->ÝtiÚs.û.
+äagm’t
+)
+
+2449 && 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+è!ð
+ETHERNET_MTU
+)
+
+2450 
+	`msg
+ (
+M_WARN
+,
+
+2452 
+ETHERNET_MTU
+, 
+	`TUN_MTU_SIZE
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+));
+
+2454 
+	}
+}
+
+2457 
+	$do_ÝtiÚ_w¬nšgs
+ (
+cÚ‹xt
+ *
+c
+)
+
+2459 cÚ¡ 
+ÝtiÚs
+ *
+o
+ = &
+c
+->options;
+
+2461 ià(
+o
+->
+pšg_£nd_timeout
+ && !o->
+pšg_»c_timeout
+)
+
+2462 
+	`msg
+ (
+M_WARN
+, "WARNING: --ping should‚ormally be used with --ping-restart or --ping-exit");
+
+2464 ià(
+o
+->
+u£ºame
+ || o->
+grou²ame
+ || o->
+chroÙ_dœ
+
+
+2465 #ifdeà
+ENABLE_SELINUX
+
+
+2466 || 
+o
+->
+£lšux_cÚ‹xt
+
+
+2470 ià(!
+o
+->
+³rsi¡_tun
+)
+
+2471 
+	`msg
+ (
+M_WARN
+, "WARNING: you‡re using user/group/chroot/setcon without…ersist-tun --�his may cause„estarts�o fail");
+
+2472 ià(!
+o
+->
+³rsi¡_key
+
+
+2473 #ifdeà
+ENABLE_PKCS11
+
+
+2474 && !
+o
+->
+pkcs11_id
+
+
+2477 
+	`msg
+ (
+M_WARN
+, "WARNING: you‡re using user/group/chroot/setcon without…ersist-key --�his may cause„estarts�o fail");
+
+2480 ià(
+o
+->
+chroÙ_dœ
+ && !(o->
+u£ºame
+ && o->
+grou²ame
+))
+
+2481 
+	`msg
+ (
+M_WARN
+, "WARNING: you‡re using chroot without specifying user‡nd group --�his may cause�he chroot jail�o be insecure");
+
+2483 #ià
+P2MP
+
+
+2484 ià(
+o
+->
+puÎ
+ && o->
+ifcÚfig_loÿl
+ && 
+c
+->
+fœ¡_time
+)
+
+2485 
+	`msg
+ (
+M_WARN
+, "WARNING: using --pull/--client‡nd --ifconfig�ogether is…robably‚ot what you want");
+
+2487 #ià
+P2MP_SERVER
+
+
+2488 ià(
+o
+->
+£rv”_bridge_defšed
+ | o->
+£rv”_bridge_´oxy_dhý
+)
+
+2489 
+	`msg
+ (
+M_WARN
+, "NOTE: when bridging your LAN‡dapter with�he TAP‡dapter,‚ote�hat�he‚ew bridge‡dapter will often�ake on its own IP‡ddress�hat is different from what�he LAN‡dapter was…reviously set�o");
+
+2491 ià(
+o
+->
+mode
+ =ð
+MODE_SERVER
+)
+
+2493 ià(
+o
+->
+du¶iÿ‹_ú
+ && o->
+þ›Á_cÚfig_dœ
+)
+
+2494 
+	`msg
+ (
+M_WARN
+, "WARNING: using --duplicate-cn‡nd --client-config-dir�ogether is…robably‚ot what you want");
+
+2495 ià(
+o
+->
+du¶iÿ‹_ú
+ && o->
+ifcÚfig_poÞ_³rsi¡_fž’ame
+)
+
+2496 
+	`msg
+ (
+M_WARN
+, "WARNING: --ifconfig-pool-persist will‚ot work with --duplicate-cn");
+
+2497 ià(!
+o
+->
+k“·live_pšg
+ || !o->
+k“·live_timeout
+)
+
+2498 
+	`msg
+ (
+M_WARN
+, "WARNING: --keepalive option is missing from server config");
+
+2503 #ifdeà
+ENABLE_CRYPTO
+
+
+2504 ià(!
+o
+->
+»¶ay
+)
+
+2505 
+	`msg
+ (
+M_WARN
+, "WARNING: You hav�di§bËd R•Ïy PrÙeùiÚ (--no-»¶ayèwhich may mak�" 
+PACKAGE_NAME
+ "†ess secure");
+
+2506 ià(!
+o
+->
+u£_iv
+)
+
+2507 
+	`msg
+ (
+M_WARN
+, "WARNING: You hav�di§bËd Cry±ØIV (--no-ivèwhich may mak�" 
+PACKAGE_NAME
+ "†ess secure");
+
+2509 #ifdeà
+ENABLE_SSL
+
+
+2510 ià(
+o
+->
+Žs_£rv”
+)
+
+2511 
+	`w¬n_Ú_u£_of_commÚ_subÃts
+ ();
+
+2512 ià(
+o
+->
+Žs_þ›Á
+
+
+2513 && !
+o
+->
+Žs_v”ify
+
+
+2514 && 
+o
+->
+v”ify_x509_ty³
+ =ð
+VERIFY_X509_NONE
+
+
+2515 && !(
+o
+->
+ns_û¹_ty³
+ & 
+NS_CERT_CHECK_SERVER
+)
+
+2516 && !
+o
+->
+»mÙe_û¹_eku
+)
+
+2517 
+	`msg
+ (
+M_WARN
+, "WARNING: No server certificate verification method has beenƒnabled. See http://openvpn.net/howto.html#mitm for more info.");
+
+2521 #iâdeà
+CONNECT_NONBLOCK
+
+
+2522 ià(
+o
+->
+û
+.
+cÚÃù_timeout_defšed
+)
+
+2523 
+	`msg
+ (
+M_WARN
+, "NOTE: --connect-timeout option is‚ot supported on�his OS");
+
+2527 ià(
+o
+->
+u£r_sü�t_u£d
+)
+
+2529 ià(
+sü�t_£cur™y
+ >ð
+SSEC_SCRIPTS
+)
+
+2530 
+	`msg
+ (
+M_WARN
+, "NOTE:�he current --script-security setting may‡llow�his configuration�o call user-defined scripts");
+
+2531 ià(
+sü�t_£cur™y
+ >ð
+SSEC_PW_ENV
+)
+
+2532 
+	`msg
+ (
+M_WARN
+, "WARNING:�he current --script-security setting may‡llow…asswords�o be…assed�o scripts viaƒnvironmental variables");
+
+2534 
+	`msg
+ (
+M_WARN
+, "NOTE: s�¹šg w™h " 
+PACKAGE_NAME
+ " 2.1, '--script-security 2' or higher is„equired�o call user-defined scripts orƒxecutables");
+
+2536 
+	}
+}
+
+2539 
+	$do_š™_äame_Žs
+ (
+cÚ‹xt
+ *
+c
+)
+
+2541 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+2542 
+	`do_š™_fš®ize_Žs_äame
+ (
+c
+);
+
+2544 
+	}
+}
+
+2546 
+cÚ‹xt_bufãrs
+ *
+
+2547 
+	$š™_cÚ‹xt_bufãrs
+ (cÚ¡ 
+äame
+ *frame)
+
+2549 
+cÚ‹xt_bufãrs
+ *
+b
+;
+
+2551 
+	`ALLOC_OBJ_CLEAR
+ (
+b
+, 
+cÚ‹xt_bufãrs
+);
+
+2553 
+b
+->
+»ad_lšk_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2554 
+b
+->
+»ad_tun_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2556 
+b
+->
+aux_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2558 #ifdeà
+ENABLE_CRYPTO
+
+
+2559 
+b
+->
+’üy±_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2560 
+b
+->
+deüy±_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2563 #ifdeà
+ENABLE_LZO
+
+
+2564 
+b
+->
+lzo_com´ess_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2565 
+b
+->
+lzo_decom´ess_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+2568  
+b
+;
+
+2569 
+	}
+}
+
+2572 
+	$ä“_cÚ‹xt_bufãrs
+ (
+cÚ‹xt_bufãrs
+ *
+b
+)
+
+2574 ià(
+b
+)
+
+2576 
+	`ä“_buf
+ (&
+b
+->
+»ad_lšk_buf
+);
+
+2577 
+	`ä“_buf
+ (&
+b
+->
+»ad_tun_buf
+);
+
+2578 
+	`ä“_buf
+ (&
+b
+->
+aux_buf
+);
+
+2580 #ifdeà
+ENABLE_LZO
+
+
+2581 
+	`ä“_buf
+ (&
+b
+->
+lzo_com´ess_buf
+);
+
+2582 
+	`ä“_buf
+ (&
+b
+->
+lzo_decom´ess_buf
+);
+
+2585 #ifdeà
+ENABLE_CRYPTO
+
+
+2586 
+	`ä“_buf
+ (&
+b
+->
+’üy±_buf
+);
+
+2587 
+	`ä“_buf
+ (&
+b
+->
+deüy±_buf
+);
+
+2590 
+	`ä“
+ (
+b
+);
+
+2592 
+	}
+}
+
+2599 
+	$do_š™_bufãrs
+ (
+cÚ‹xt
+ *
+c
+)
+
+2601 
+c
+->
+c2
+.
+bufãrs
+ = 
+	`š™_cÚ‹xt_bufãrs
+ (&c->c2.
+äame
+);
+
+2602 
+c
+->
+c2
+.
+bufãrs_owÃd
+ = 
+Œue
+;
+
+2603 
+	}
+}
+
+2605 #ifdeà
+ENABLE_FRAGMENT
+
+
+2611 
+	$do_š™_äagm’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+2613 
+	`ASSERT
+ (
+c
+->
+ÝtiÚs
+.
+û
+.
+äagm’t
+);
+
+2614 
+	`äame_£t_mtu_dyÇmic
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+,
+
+2615 
+c
+->
+ÝtiÚs
+.
+û
+.
+äagm’t
+, 
+SET_MTU_UPPER_BOUND
+);
+
+2616 
+	`äagm’t_äame_š™
+ (
+c
+->
+c2
+.
+äagm’t
+, &c->c2.
+äame_äagm’t
+);
+
+2617 
+	}
+}
+
+2624 
+	$do_š™_mssfix
+ (
+cÚ‹xt
+ *
+c
+)
+
+2626 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+mssfix
+)
+
+2628 
+	`äame_£t_mtu_dyÇmic
+ (&
+c
+->
+c2
+.
+äame
+,
+
+2629 
+c
+->
+ÝtiÚs
+.
+û
+.
+mssfix
+, 
+SET_MTU_UPPER_BOUND
+);
+
+2631 
+	}
+}
+
+2637 
+	$do_lšk_sock‘_Ãw
+ (
+cÚ‹xt
+ *
+c
+)
+
+2639 
+	`ASSERT
+ (!
+c
+->
+c2
+.
+lšk_sock‘
+);
+
+2640 
+c
+->
+c2
+.
+lšk_sock‘
+ = 
+	`lšk_sock‘_Ãw
+ ();
+
+2641 
+c
+->
+c2
+.
+lšk_sock‘_owÃd
+ = 
+Œue
+;
+
+2642 
+	}
+}
+
+2648 
+	$do_š™_sock‘_1
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+mode
+)
+
+2650 
+sockæags
+ = 
+c
+->
+ÝtiÚs
+.sockflags;
+
+2652 #ià
+PORT_SHARE
+
+
+2653 ià(
+c
+->
+ÝtiÚs
+.
+pÜt_sh¬e_ho¡
+ && c->ÝtiÚs.
+pÜt_sh¬e_pÜt
+)
+
+2654 
+sockæags
+ |ð
+SF_PORT_SHARE
+;
+
+2657 
+	`lšk_sock‘_š™_pha£1
+ (
+c
+->
+c2
+.
+lšk_sock‘
+,
+
+2658 
+	`cÚÃùiÚ_li¡_defšed
+ (&
+c
+->
+ÝtiÚs
+),
+
+2659 
+c
+->
+ÝtiÚs
+.
+û
+.
+loÿl
+,
+
+2660 
+c
+->
+ÝtiÚs
+.
+û
+.
+loÿl_pÜt
+,
+
+2661 
+c
+->
+ÝtiÚs
+.
+û
+.
+»mÙe
+,
+
+2662 
+c
+->
+ÝtiÚs
+.
+û
+.
+»mÙe_pÜt
+,
+
+2663 
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+,
+
+2664 
+mode
+,
+
+2665 
+c
+->
+c2
+.
+acû±_äom
+,
+
+2666 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+2667 
+c
+->
+c1
+.
+h‰p_´oxy
+,
+
+2669 #ifdeà
+ENABLE_SOCKS
+
+
+2670 
+c
+->
+c1
+.
+socks_´oxy
+,
+
+2672 #ifdeà
+ENABLE_DEBUG
+
+
+2673 
+c
+->
+ÝtiÚs
+.
+g»mlš
+,
+
+2675 
+c
+->
+ÝtiÚs
+.
+û
+.
+bšd_loÿl
+,
+
+2676 
+c
+->
+ÝtiÚs
+.
+û
+.
+»mÙe_æßt
+,
+
+2677 
+c
+->
+ÝtiÚs
+.
+š‘d
+,
+
+2678 &
+c
+->
+c1
+.
+lšk_sock‘_addr
+,
+
+2679 
+c
+->
+ÝtiÚs
+.
+�chªge
+,
+
+2680 
+c
+->
+¶ugšs
+,
+
+2681 
+c
+->
+ÝtiÚs
+.
+»sÞve_»Œy_£cÚds
+,
+
+2682 
+c
+->
+ÝtiÚs
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+,
+
+2683 
+c
+->
+ÝtiÚs
+.
+û
+.
+cÚÃù_timeout
+,
+
+2684 
+c
+->
+ÝtiÚs
+.
+û
+.
+cÚÃù_»Œy_max
+,
+
+2685 
+c
+->
+ÝtiÚs
+.
+û
+.
+mtu_discov”_ty³
+,
+
+2686 
+c
+->
+ÝtiÚs
+.
+rcvbuf
+,
+
+2687 
+c
+->
+ÝtiÚs
+.
+¢dbuf
+,
+
+2688 
+c
+->
+ÝtiÚs
+.
+m¬k
+,
+
+2689 
+sockæags
+);
+
+2690 
+	}
+}
+
+2696 
+	$do_š™_sock‘_2
+ (
+cÚ‹xt
+ *
+c
+)
+
+2698 
+	`lšk_sock‘_š™_pha£2
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, &c->c2.
+äame
+,
+
+2699 &
+c
+->
+sig
+->
+sigÇl_»ûived
+);
+
+2700 
+	}
+}
+
+2706 
+	$do_´št_d©a_chªÃl_mtu_·rms
+ (
+cÚ‹xt
+ *
+c
+)
+
+2708 
+	`äame_´št
+ (&
+c
+->
+c2
+.
+äame
+, 
+D_MTU_INFO
+, "Data Channel MTU…arms");
+
+2709 #ifdeà
+ENABLE_FRAGMENT
+
+
+2710 ià(
+c
+->
+c2
+.
+äagm’t
+)
+
+2711 
+	`äame_´št
+ (&
+c
+->
+c2
+.
+äame_äagm’t
+, 
+D_MTU_INFO
+,
+
+2714 
+	}
+}
+
+2716 #ifdeà
+ENABLE_OCC
+
+
+2721 
+	$do_compu‹_occ_¡ršgs
+ (
+cÚ‹xt
+ *
+c
+)
+
+2723 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2725 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+ =
+
+2726 
+	`ÝtiÚs_¡ršg
+ (&
+c
+->
+ÝtiÚs
+, &c->
+c2
+.
+äame
+, c->
+c1
+.
+tuÁ­
+, 
+çl£
+, &
+gc
+);
+
+2727 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+ =
+
+2728 
+	`ÝtiÚs_¡ršg
+ (&
+c
+->
+ÝtiÚs
+, &c->
+c2
+.
+äame
+, c->
+c1
+.
+tuÁ­
+, 
+Œue
+, &
+gc
+);
+
+2730 
+	`msg
+ (
+D_SHOW_OCC
+, "LoÿÈO±iÚ SŒšg: '%s'", 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+);
+
+2731 
+	`msg
+ (
+D_SHOW_OCC
+, "Expected Remote Options String: '%s'",
+
+2732 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+);
+
+2734 #ifdeà
+ENABLE_CRYPTO
+
+
+2735 
+	`msg
+ (
+D_SHOW_OCC_HASH
+, "Local Options hash (VER=%s): '%s'",
+
+2736 
+	`ÝtiÚs_¡ršg_v”siÚ
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+, &
+gc
+),
+
+2737 
+	`md5sum
+ ((
+ušt8_t
+*)
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+,
+
+2738 
+	`¡¾’
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+), 9, &
+gc
+));
+
+2739 
+	`msg
+ (
+D_SHOW_OCC_HASH
+, "Expected Remote Options hash (VER=%s): '%s'",
+
+2740 
+	`ÝtiÚs_¡ršg_v”siÚ
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+, &
+gc
+),
+
+2741 
+	`md5sum
+ ((
+ušt8_t
+*)
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+,
+
+2742 
+	`¡¾’
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+), 9, &
+gc
+));
+
+2745 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+2746 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+2747 
+	`Žs_muÉi_š™_£t_ÝtiÚs
+ (
+c
+->
+c2
+.
+Žs_muÉi
+,
+
+2748 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+,
+
+2749 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+);
+
+2752 
+	`gc_ä“
+ (&
+gc
+);
+
+2753 
+	}
+}
+
+2762 
+	$do_š™_fœ¡_time
+ (
+cÚ‹xt
+ *
+c
+)
+
+2764 ià(
+c
+->
+fœ¡_time
+ && !c->
+c0
+)
+
+2766 
+cÚ‹xt_0
+ *
+c0
+;
+
+2768 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+c
+->
+c0
+, 
+cÚ‹xt_0
+, &c->
+gc
+);
+
+2769 
+c0
+ = 
+c
+->c0;
+
+2772 
+c0
+->
+uid_gid_¥ecif›d
+ =
+
+2773 
+	`¶©fÜm_group_g‘
+ (
+c
+->
+ÝtiÚs
+.
+grou²ame
+, &
+c0
+->
+¶©fÜm_¡©e_group
+) |
+
+2774 
+	`¶©fÜm_u£r_g‘
+ (
+c
+->
+ÝtiÚs
+.
+u£ºame
+, &
+c0
+->
+¶©fÜm_¡©e_u£r
+);
+
+2777 ià(
+c
+->
+did_we_d«mÚize
+ && c->
+ÝtiÚs
+.
+cd_dœ
+ =ð
+NULL
+)
+
+2778 
+	`¶©fÜm_chdœ
+("/");
+
+2781 
+	`¶©fÜm_niû
+ (
+c
+->
+ÝtiÚs
+.
+niû
+);
+
+2783 
+	}
+}
+
+2789 
+	$do_þo£_check_if_»¡¬t_³rm™‹d
+ (
+cÚ‹xt
+ *
+c
+)
+
+2791 ià(
+c
+->
+ÝtiÚs
+.
+š‘d
+
+
+2792 && (
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGHUP
+
+
+2793 || 
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+))
+
+2795 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+2796 
+	`msg
+ (
+M_INFO
+,
+
+2797 
+PACKAGE_NAME
+
+
+2800 
+	}
+}
+
+2806 
+	$do_þo£_ä“_buf
+ (
+cÚ‹xt
+ *
+c
+)
+
+2808 ià(
+c
+->
+c2
+.
+bufãrs_owÃd
+)
+
+2810 
+	`ä“_cÚ‹xt_bufãrs
+ (
+c
+->
+c2
+.
+bufãrs
+);
+
+2811 
+c
+->
+c2
+.
+bufãrs
+ = 
+NULL
+;
+
+2812 
+c
+->
+c2
+.
+bufãrs_owÃd
+ = 
+çl£
+;
+
+2814 
+	}
+}
+
+2820 
+	$do_þo£_Žs
+ (
+cÚ‹xt
+ *
+c
+)
+
+2822 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+2823 ià(
+c
+->
+c2
+.
+Žs_muÉi
+)
+
+2825 
+	`Žs_muÉi_ä“
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, 
+Œue
+);
+
+2826 
+c
+->
+c2
+.
+Žs_muÉi
+ = 
+NULL
+;
+
+2829 #ifdeà
+ENABLE_OCC
+
+
+2831 ià(
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+)
+
+2832 
+	`ä“
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+);
+
+2833 ià(
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+)
+
+2834 
+	`ä“
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+);
+
+2835 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+ = c->c2.
+ÝtiÚs_¡ršg_»mÙe
+ = 
+NULL
+;
+
+2838 
+	}
+}
+
+2844 
+	$do_þo£_ä“_key_scheduË
+ (
+cÚ‹xt
+ *
+c
+, 
+boÞ
+ 
+ä“_s¦_ùx
+)
+
+2846 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+ && c->
+ÝtiÚs
+.
+³rsi¡_key
+))
+
+2847 
+	`key_scheduË_ä“
+ (&
+c
+->
+c1
+.
+ks
+, 
+ä“_s¦_ùx
+);
+
+2848 
+	}
+}
+
+2854 
+	$do_þo£_lšk_sock‘
+ (
+cÚ‹xt
+ *
+c
+)
+
+2856 ià(
+c
+->
+c2
+.
+lšk_sock‘
+ && c->c2.
+lšk_sock‘_owÃd
+)
+
+2858 
+	`lšk_sock‘_þo£
+ (
+c
+->
+c2
+.
+lšk_sock‘
+);
+
+2859 
+c
+->
+c2
+.
+lšk_sock‘
+ = 
+NULL
+;
+
+2862 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+ && c->
+ÝtiÚs
+.
+³rsi¡_»mÙe_�
+))
+
+2864 
+	`CLEAR
+ (
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+»mÙe
+);
+
+2865 
+	`CLEAR
+ (
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+aùu®
+);
+
+2868 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+ && c->
+ÝtiÚs
+.
+³rsi¡_loÿl_�
+))
+
+2869 
+	`CLEAR
+ (
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+loÿl
+);
+
+2870 
+	}
+}
+
+2876 
+	$do_þo£_·ck‘_id
+ (
+cÚ‹xt
+ *
+c
+)
+
+2878 #ifdeà
+ENABLE_CRYPTO
+
+
+2879 
+	`·ck‘_id_ä“
+ (&
+c
+->
+c2
+.
+·ck‘_id
+);
+
+2880 
+	`·ck‘_id_³rsi¡_§ve
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+);
+
+2881 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+))
+
+2882 
+	`·ck‘_id_³rsi¡_þo£
+ (&
+c
+->
+c1
+.
+pid_³rsi¡
+);
+
+2884 
+	}
+}
+
+2886 #ifdeà
+ENABLE_FRAGMENT
+
+
+2891 
+	$do_þo£_äagm’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+2893 ià(
+c
+->
+c2
+.
+äagm’t
+)
+
+2895 
+	`äagm’t_ä“
+ (
+c
+->
+c2
+.
+äagm’t
+);
+
+2896 
+c
+->
+c2
+.
+äagm’t
+ = 
+NULL
+;
+
+2898 
+	}
+}
+
+2906 
+	$do_ev’t_£t_š™
+ (
+cÚ‹xt
+ *
+c
+,
+
+2907 
+boÞ
+ 
+Ãed_us_timeout
+)
+
+2909 
+æags
+ = 0;
+
+2911 
+c
+->
+c2
+.
+ev’t_£t_max
+ = 
+BASE_N_EVENTS
+;
+
+2913 
+æags
+ |ð
+EVENT_METHOD_FAST
+;
+
+2915 ià(
+Ãed_us_timeout
+)
+
+2916 
+æags
+ |ð
+EVENT_METHOD_US_TIMEOUT
+;
+
+2918 
+c
+->
+c2
+.
+ev’t_£t
+ = 
+	`ev’t_£t_š™
+ (&c->c2.
+ev’t_£t_max
+, 
+æags
+);
+
+2919 
+c
+->
+c2
+.
+ev’t_£t_owÃd
+ = 
+Œue
+;
+
+2920 
+	}
+}
+
+2923 
+	$do_þo£_ev’t_£t
+ (
+cÚ‹xt
+ *
+c
+)
+
+2925 ià(
+c
+->
+c2
+.
+ev’t_£t
+ && c->c2.
+ev’t_£t_owÃd
+)
+
+2927 
+	`ev’t_ä“
+ (
+c
+->
+c2
+.
+ev’t_£t
+);
+
+2928 
+c
+->
+c2
+.
+ev’t_£t
+ = 
+NULL
+;
+
+2929 
+c
+->
+c2
+.
+ev’t_£t_owÃd
+ = 
+çl£
+;
+
+2931 
+	}
+}
+
+2938 
+	$do_Ý’_¡©us_ou�ut
+ (
+cÚ‹xt
+ *
+c
+)
+
+2940 ià(!
+c
+->
+c1
+.
+¡©us_ou�ut
+)
+
+2942 
+c
+->
+c1
+.
+¡©us_ou�ut
+ = 
+	`¡©us_Ý’
+ (c->
+ÝtiÚs
+.
+¡©us_fže
+,
+
+2943 
+c
+->
+ÝtiÚs
+.
+¡©us_fže_upd©e_äeq
+,
+
+2945 
+NULL
+,
+
+2946 
+STATUS_OUTPUT_WRITE
+);
+
+2947 
+c
+->
+c1
+.
+¡©us_ou�ut_owÃd
+ = 
+Œue
+;
+
+2949 
+	}
+}
+
+2952 
+	$do_þo£_¡©us_ou�ut
+ (
+cÚ‹xt
+ *
+c
+)
+
+2954 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+))
+
+2956 ià(
+c
+->
+c1
+.
+¡©us_ou�ut_owÃd
+ && c->c1.
+¡©us_ou�ut
+)
+
+2958 
+	`¡©us_þo£
+ (
+c
+->
+c1
+.
+¡©us_ou�ut
+);
+
+2959 
+c
+->
+c1
+.
+¡©us_ou�ut
+ = 
+NULL
+;
+
+2960 
+c
+->
+c1
+.
+¡©us_ou�ut_owÃd
+ = 
+çl£
+;
+
+2963 
+	}
+}
+
+2969 
+	$do_Ý’_ifcÚfig_poÞ_³rsi¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+2971 #ià
+P2MP_SERVER
+
+
+2972 ià(!
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+ && c->
+ÝtiÚs
+.
+ifcÚfig_poÞ_³rsi¡_fž’ame
+)
+
+2974 
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+ = 
+	`ifcÚfig_poÞ_³rsi¡_š™
+ (c->
+ÝtiÚs
+.
+ifcÚfig_poÞ_³rsi¡_fž’ame
+,
+
+2975 
+c
+->
+ÝtiÚs
+.
+ifcÚfig_poÞ_³rsi¡_»äesh_äeq
+);
+
+2976 
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡_owÃd
+ = 
+Œue
+;
+
+2979 
+	}
+}
+
+2982 
+	$do_þo£_ifcÚfig_poÞ_³rsi¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+2984 #ià
+P2MP_SERVER
+
+
+2985 ià(!(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+))
+
+2987 ià(
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+ && c->c1.
+ifcÚfig_poÞ_³rsi¡_owÃd
+)
+
+2989 
+	`ifcÚfig_poÞ_³rsi¡_þo£
+ (
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+);
+
+2990 
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+ = 
+NULL
+;
+
+2991 
+c
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡_owÃd
+ = 
+çl£
+;
+
+2995 
+	}
+}
+
+3002 
+	$do_šh”™_’v
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+’v_£t
+ *
+¤c
+)
+
+3004 
+c
+->
+c2
+.
+es
+ = 
+	`’v_£t_ü—‹
+ (
+NULL
+);
+
+3005 
+c
+->
+c2
+.
+es_owÃd
+ = 
+Œue
+;
+
+3006 
+	`’v_£t_šh”™
+ (
+c
+->
+c2
+.
+es
+, 
+¤c
+);
+
+3007 
+	}
+}
+
+3010 
+	$do_’v_£t_de¡roy
+ (
+cÚ‹xt
+ *
+c
+)
+
+3012 ià(
+c
+->
+c2
+.
+es
+ && c->c2.
+es_owÃd
+)
+
+3014 
+	`’v_£t_de¡roy
+ (
+c
+->
+c2
+.
+es
+);
+
+3015 
+c
+->
+c2
+.
+es
+ = 
+NULL
+;
+
+3016 
+c
+->
+c2
+.
+es_owÃd
+ = 
+çl£
+;
+
+3018 
+	}
+}
+
+3029 
+	$do_£tup_ç¡_io
+ (
+cÚ‹xt
+ *
+c
+)
+
+3031 ià(
+c
+->
+ÝtiÚs
+.
+ç¡_io
+)
+
+3033 #ifdeà
+WIN32
+
+
+3034 
+	`msg
+ (
+M_INFO
+, "NOTE: --fast-io is disabled since we‡re„unning on Windows");
+
+3036 ià(!
+	`´Ùo_is_udp
+(
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+))
+
+3037 
+	`msg
+ (
+M_INFO
+, "NOTE: --fast-io is disabled since we‡re‚ot using UDP");
+
+3040 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+3041 ià(
+c
+->
+ÝtiÚs
+.
+sh­”
+)
+
+3042 
+	`msg
+ (
+M_INFO
+, "NOTE: --fast-io is disabled since we‡re using --shaper");
+
+3046 
+c
+->
+c2
+.
+ç¡_io
+ = 
+Œue
+;
+
+3051 
+	}
+}
+
+3054 
+	$do_sigÇl_Ú_Žs_”rÜs
+ (
+cÚ‹xt
+ *
+c
+)
+
+3056 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+3057 ià(
+c
+->
+ÝtiÚs
+.
+Žs_ex™
+)
+
+3058 
+c
+->
+c2
+.
+Žs_ex™_sigÇl
+ = 
+SIGTERM
+;
+
+3060 
+c
+->
+c2
+.
+Žs_ex™_sigÇl
+ = 
+SIGUSR1
+;
+
+3062 
+	}
+}
+
+3064 #ifdeà
+ENABLE_PLUGIN
+
+
+3067 
+	$š™_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+)
+
+3069 ià(
+c
+->
+ÝtiÚs
+.
+¶ugš_li¡
+ && !c->
+¶ugšs
+)
+
+3071 
+c
+->
+¶ugšs
+ = 
+	`¶ugš_li¡_š™
+ (c->
+ÝtiÚs
+.
+¶ugš_li¡
+);
+
+3072 
+c
+->
+¶ugšs_owÃd
+ = 
+Œue
+;
+
+3074 
+	}
+}
+
+3077 
+	$Ý’_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+boÞ
+ 
+impÜt_ÝtiÚs
+, 
+š™_pošt
+)
+
+3079 ià(
+c
+->
+¶ugšs
+ && c->
+¶ugšs_owÃd
+)
+
+3081 ià(
+impÜt_ÝtiÚs
+)
+
+3083 
+¶ugš_»tuº
+ 
+´
+, 
+cÚfig
+;
+
+3084 
+	`¶ugš_»tuº_š™
+ (&
+´
+);
+
+3085 
+	`¶ugš_li¡_Ý’
+ (
+c
+->
+¶ugšs
+, c->
+ÝtiÚs
+.
+¶ugš_li¡
+, &
+´
+, c->
+c2
+.
+es
+, 
+š™_pošt
+);
+
+3086 
+	`¶ugš_»tuº_g‘_cÞumn
+ (&
+´
+, &
+cÚfig
+, "config");
+
+3087 ià(
+	`¶ugš_»tuº_defšed
+ (&
+cÚfig
+))
+
+3089 
+i
+;
+
+3090 
+i
+ = 0; i < 
+cÚfig
+.
+n
+; ++i)
+
+3092 
+ÝtiÚ_ty³s_found
+ = 0;
+
+3093 ià(
+cÚfig
+.
+li¡
+[
+i
+] && cÚfig.li¡[i]->
+v®ue
+)
+
+3094 
+	`ÝtiÚs_¡ršg_impÜt
+ (&
+c
+->
+ÝtiÚs
+,
+
+3095 
+cÚfig
+.
+li¡
+[
+i
+]->
+v®ue
+,
+
+3096 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+3097 
+OPT_P_DEFAULT
+ & ~
+OPT_P_PLUGIN
+,
+
+3098 &
+ÝtiÚ_ty³s_found
+,
+
+3099 
+c
+->
+es
+);
+
+3102 
+	`¶ugš_»tuº_ä“
+ (&
+´
+);
+
+3106 
+	`¶ugš_li¡_Ý’
+ (
+c
+->
+¶ugšs
+, c->
+ÝtiÚs
+.
+¶ugš_li¡
+, 
+NULL
+, c->
+c2
+.
+es
+, 
+š™_pošt
+);
+
+3109 
+	}
+}
+
+3112 
+	$do_þo£_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+)
+
+3114 ià(
+c
+->
+¶ugšs
+ && c->
+¶ugšs_owÃd
+ && !(c->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+))
+
+3116 
+	`¶ugš_li¡_þo£
+ (
+c
+->
+¶ugšs
+);
+
+3117 
+c
+->
+¶ugšs
+ = 
+NULL
+;
+
+3118 
+c
+->
+¶ugšs_owÃd
+ = 
+çl£
+;
+
+3120 
+	}
+}
+
+3123 
+	$do_šh”™_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ cÚ‹xˆ*
+¤c
+)
+
+3125 ià(!
+c
+->
+¶ugšs
+ && 
+¤c
+->plugins)
+
+3127 
+c
+->
+¶ugšs
+ = 
+	`¶ugš_li¡_šh”™
+ (
+¤c
+->plugins);
+
+3128 
+c
+->
+¶ugšs_owÃd
+ = 
+Œue
+;
+
+3130 
+	}
+}
+
+3134 #ifdeà
+ENABLE_MANAGEMENT
+
+
+3137 
+	$mªagem’t_ÿÎback_¡©us_p2p
+ (*
+¬g
+, cÚ¡ 
+v”siÚ
+, 
+¡©us_ou�ut
+ *
+so
+)
+
+3139 
+cÚ‹xt
+ *
+c
+ = (cÚ‹xˆ*è
+¬g
+;
+
+3140 
+	`´št_¡©us
+ (
+c
+, 
+so
+);
+
+3141 
+	}
+}
+
+3144 
+	$mªagem’t_show_Ãt_ÿÎback
+ (*
+¬g
+, cÚ¡ 
+msgËv–
+)
+
+3146 #ifdeà
+WIN32
+
+
+3147 
+	`show_rou‹s
+ (
+msgËv–
+);
+
+3148 
+	`show_ad­‹rs
+ (
+msgËv–
+);
+
+3149 
+	`msg
+ (
+msgËv–
+, "END");
+
+3151 
+	`msg
+ (
+msgËv–
+, "ERROR: Sorry,�his command is currently only implemented on Windows");
+
+3153 
+	}
+}
+
+3158 
+	$š™_mªagem’t_ÿÎback_p2p
+ (
+cÚ‹xt
+ *
+c
+)
+
+3160 #ifdeà
+ENABLE_MANAGEMENT
+
+
+3161 ià(
+mªagem’t
+)
+
+3163 
+mªagem’t_ÿÎback
+ 
+cb
+;
+
+3164 
+	`CLEAR
+ (
+cb
+);
+
+3165 
+cb
+.
+¬g
+ = 
+c
+;
+
+3166 
+cb
+.
+¡©us
+ = 
+mªagem’t_ÿÎback_¡©us_p2p
+;
+
+3167 
+cb
+.
+show_Ãt
+ = 
+mªagem’t_show_Ãt_ÿÎback
+;
+
+3168 
+cb
+.
+´oxy_cmd
+ = 
+mªagem’t_ÿÎback_´oxy_cmd
+;
+
+3169 
+cb
+.
+»mÙe_cmd
+ = 
+mªagem’t_ÿÎback_»mÙe_cmd
+;
+
+3170 
+	`mªagem’t_£t_ÿÎback
+ (
+mªagem’t
+, &
+cb
+);
+
+3173 
+	}
+}
+
+3175 #ifdeà
+ENABLE_MANAGEMENT
+
+
+3178 
+	$š™_mªagem’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+3180 ià(!
+mªagem’t
+)
+
+3181 
+mªagem’t
+ = 
+	`mªagem’t_š™
+ ();
+
+3182 
+	}
+}
+
+3184 
+boÞ
+
+
+3185 
+	$Ý’_mªagem’t
+ (
+cÚ‹xt
+ *
+c
+)
+
+3188 ià(
+mªagem’t
+)
+
+3190 ià(
+c
+->
+ÝtiÚs
+.
+mªagem’t_addr
+)
+
+3192 
+æags
+ = 
+c
+->
+ÝtiÚs
+.
+mªagem’t_æags
+;
+
+3193 ià(
+c
+->
+ÝtiÚs
+.
+mode
+ =ð
+MODE_SERVER
+)
+
+3194 
+æags
+ |ð
+MF_SERVER
+;
+
+3195 ià(
+	`mªagem’t_Ý’
+ (
+mªagem’t
+,
+
+3196 
+c
+->
+ÝtiÚs
+.
+mªagem’t_addr
+,
+
+3197 
+c
+->
+ÝtiÚs
+.
+mªagem’t_pÜt
+,
+
+3198 
+c
+->
+ÝtiÚs
+.
+mªagem’t_u£r_·ss
+,
+
+3199 
+c
+->
+ÝtiÚs
+.
+mªagem’t_þ›Á_u£r
+,
+
+3200 
+c
+->
+ÝtiÚs
+.
+mªagem’t_þ›Á_group
+,
+
+3201 
+c
+->
+ÝtiÚs
+.
+mªagem’t_log_hi¡Üy_ÿche
+,
+
+3202 
+c
+->
+ÝtiÚs
+.
+mªagem’t_echo_bufãr_size
+,
+
+3203 
+c
+->
+ÝtiÚs
+.
+mªagem’t_¡©e_bufãr_size
+,
+
+3204 
+c
+->
+ÝtiÚs
+.
+mªagem’t_wr™e_³”_šfo_fže
+,
+
+3205 
+c
+->
+ÝtiÚs
+.
+»m­_sigu¤1
+,
+
+3206 
+æags
+))
+
+3208 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+3209 
+OPENVPN_STATE_CONNECTING
+,
+
+3210 
+NULL
+,
+
+3211 (
+š_addr_t
+)0,
+
+3212 (
+š_addr_t
+)0);
+
+3216 
+	`do_hÞd
+ ();
+
+3217 ià(
+	`IS_SIG
+ (
+c
+))
+
+3219 
+	`msg
+ (
+M_WARN
+, "Signal„eceived from management interface,ƒxiting");
+
+3220  
+çl£
+;
+
+3224 
+	`þo£_mªagem’t
+ ();
+
+3226  
+Œue
+;
+
+3227 
+	}
+}
+
+3230 
+	$þo£_mªagem’t
+ ()
+
+3232 ià(
+mªagem’t
+)
+
+3234 
+	`mªagem’t_þo£
+ (
+mªagem’t
+);
+
+3235 
+mªagem’t
+ = 
+NULL
+;
+
+3237 
+	}
+}
+
+3243 
+	$unš™_mªagem’t_ÿÎback
+ ()
+
+3245 #ifdeà
+ENABLE_MANAGEMENT
+
+
+3246 ià(
+mªagem’t
+)
+
+3248 
+	`mªagem’t_þ—r_ÿÎback
+ (
+mªagem’t
+);
+
+3251 
+	}
+}
+
+3258 
+	$š™_š¡ªû_hªdË_sigÇls
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+’v_£t
+ *
+’v
+, cÚ¡ 
+æags
+)
+
+3260 
+	`´e_š™_sigÇl_ÿtch
+ ();
+
+3261 
+	`š™_š¡ªû
+ (
+c
+, 
+’v
+, 
+æags
+);
+
+3262 
+	`po¡_š™_sigÇl_ÿtch
+ ();
+
+3269 ià(
+	`IS_SIG
+ (
+c
+))
+
+3271 
+	`»m­_sigÇl
+ (
+c
+);
+
+3272 
+	`unš™_mªagem’t_ÿÎback
+ ();
+
+3274 
+	}
+}
+
+3280 
+	$š™_š¡ªû
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+’v_£t
+ *
+’v
+, cÚ¡ 
+æags
+)
+
+3282 cÚ¡ 
+ÝtiÚs
+ *ÝtiÚ ð&
+c
+->options;
+
+3283 cÚ¡ 
+boÞ
+ 
+chžd
+ = (
+c
+->
+mode
+ =ð
+CM_CHILD_TCP
+ || c->mod�=ð
+CM_CHILD_UDP
+);
+
+3284 
+lšk_sock‘_mode
+ = 
+LS_MODE_DEFAULT
+;
+
+3287 
+	`gc_š™
+ (&
+c
+->
+c2
+.
+gc
+);
+
+3290 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 0;
+
+3291 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = 
+NULL
+;
+
+3292 
+c
+->
+sig
+->
+h¬d
+ = 
+çl£
+;
+
+3294 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+)
+
+3295 
+	`š™_mªagem’t_ÿÎback_p2p
+ (
+c
+);
+
+3298 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3300 
+	`do_¡¬tup_·u£
+ (
+c
+);
+
+3301 ià(
+	`IS_SIG
+ (
+c
+))
+
+3302 
+sig
+;
+
+3306 
+	`Ãxt_cÚÃùiÚ_’Œy
+ (
+c
+);
+
+3311 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+
+
+3312 || 
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+)
+
+3314 ià(
+c
+->
+mode
+ =ð
+CM_TOP
+)
+
+3315 
+lšk_sock‘_mode
+ = 
+LS_MODE_TCP_LISTEN
+;
+
+3316 ià(
+c
+->
+mode
+ =ð
+CM_CHILD_TCP
+)
+
+3317 
+lšk_sock‘_mode
+ = 
+LS_MODE_TCP_ACCEPT_FROM
+;
+
+3321 ià(
+c
+->
+fœ¡_time
+ && 
+ÝtiÚs
+->
+mlock
+)
+
+3322 
+	`¶©fÜm_mlock®l
+ (
+Œue
+);
+
+3324 #ià
+P2MP
+
+
+3326 ià(
+	`auth_»Œy_g‘
+ (è=ð
+AR_INTERACT
+)
+
+3327 
+	`š™_qu”y_·sswÜds
+ (
+c
+);
+
+3331 
+	`š™_v”b_mu‹
+ (
+c
+, 
+IVM_LEVEL_2
+);
+
+3334 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+)
+
+3335 
+	`£t_check_¡©us_”rÜ_d–ay
+ (
+P2P_ERROR_DELAY_MS
+);
+
+3338 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3339 
+	`do_ÝtiÚ_w¬nšgs
+ (
+c
+);
+
+3342 ià(
+’v
+)
+
+3343 
+	`do_šh”™_’v
+ (
+c
+, 
+’v
+);
+
+3345 #ifdeà
+ENABLE_PLUGIN
+
+
+3347 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3348 
+	`Ý’_¶ugšs
+ (
+c
+, 
+çl£
+, 
+OPENVPN_PLUGIN_INIT_PRE_DAEMON
+);
+
+3352 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3353 
+	`do_£tup_ç¡_io
+ (
+c
+);
+
+3356 
+	`do_sigÇl_Ú_Žs_”rÜs
+ (
+c
+);
+
+3359 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3360 
+	`do_Ý’_¡©us_ou�ut
+ (
+c
+);
+
+3363 ià(
+c
+->
+mode
+ =ð
+CM_TOP
+)
+
+3364 
+	`do_Ý’_ifcÚfig_poÞ_³rsi¡
+ (
+c
+);
+
+3366 #ifdeà
+ENABLE_OCC
+
+
+3368 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+)
+
+3369 
+c
+->
+c2
+.
+occ_Ý
+ = 
+	`occ_»£t_Ý
+ ();
+
+3373 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+)
+
+3374 
+	`do_ev’t_£t_š™
+ (
+c
+, 
+	`SHAPER_DEFINED
+ (&c->
+ÝtiÚs
+));
+
+3375 ià(
+c
+->
+mode
+ =ð
+CM_CHILD_TCP
+)
+
+3376 
+	`do_ev’t_£t_š™
+ (
+c
+, 
+çl£
+);
+
+3379 
+	`š™_´oxy
+ (
+c
+, 2);
+
+3382 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+ || c->mod�=ð
+CM_CHILD_TCP
+)
+
+3383 
+	`do_lšk_sock‘_Ãw
+ (
+c
+);
+
+3385 #ifdeà
+ENABLE_FRAGMENT
+
+
+3387 ià(
+ÝtiÚs
+->
+û
+.
+äagm’t
+ && (
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+))
+
+3388 
+c
+->
+c2
+.
+äagm’t
+ = 
+	`äagm’t_š™
+ (&c->c2.
+äame
+);
+
+3393 
+üy±o_æags
+ = 0;
+
+3394 ià(
+c
+->
+mode
+ =ð
+CM_TOP
+)
+
+3395 
+üy±o_æags
+ = 
+CF_INIT_TLS_AUTH_STANDALONE
+;
+
+3396 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+)
+
+3397 
+üy±o_æags
+ = 
+CF_LOAD_PERSISTED_PACKET_ID
+ | 
+CF_INIT_TLS_MULTI
+;
+
+3398 ià(
+chžd
+)
+
+3399 
+üy±o_æags
+ = 
+CF_INIT_TLS_MULTI
+;
+
+3400 
+	`do_š™_üy±o
+ (
+c
+, 
+üy±o_æags
+);
+
+3401 ià(
+	`IS_SIG
+ (
+c
+è&& !
+chžd
+)
+
+3402 
+sig
+;
+
+3405 #ifdeà
+ENABLE_LZO
+
+
+3407 ià((
+ÝtiÚs
+->
+lzo
+ & 
+LZO_SELECTED
+è&& (
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+))
+
+3408 
+	`lzo_com´ess_š™
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+, 
+ÝtiÚs
+->
+lzo
+);
+
+3412 
+	`do_š™_äame
+ (
+c
+);
+
+3415 
+	`do_š™_äame_Žs
+ (
+c
+);
+
+3418 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_CHILD_TCP
+)
+
+3419 
+	`do_š™_bufãrs
+ (
+c
+);
+
+3421 #ifdeà
+ENABLE_FRAGMENT
+
+
+3423 ià(
+ÝtiÚs
+->
+û
+.
+äagm’t
+ && (
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+))
+
+3424 
+	`do_š™_äagm’t
+ (
+c
+);
+
+3428 
+	`do_š™_mssfix
+ (
+c
+);
+
+3431 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+ || c->mod�=ð
+CM_CHILD_TCP
+)
+
+3432 
+	`do_š™_sock‘_1
+ (
+c
+, 
+lšk_sock‘_mode
+);
+
+3436 ià(!(
+ÝtiÚs
+->
+up_d–ay
+ || 
+	`PULL_DEFINED
+ (ÝtiÚs)è&& (
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+))
+
+3437 
+c
+->
+c2
+.
+did_Ý’_tun
+ = 
+	`do_Ý’_tun
+ (c);
+
+3440 
+	`do_´št_d©a_chªÃl_mtu_·rms
+ (
+c
+);
+
+3442 #ifdeà
+ENABLE_OCC
+
+
+3444 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+)
+
+3445 
+	`do_compu‹_occ_¡ršgs
+ (
+c
+);
+
+3449 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+)
+
+3450 
+	`do_š™_Œaffic_sh­”
+ (
+c
+);
+
+3453 
+	`do_š™_fœ¡_time
+ (
+c
+);
+
+3455 #ifdeà
+ENABLE_PLUGIN
+
+
+3457 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3458 
+	`Ý’_¶ugšs
+ (
+c
+, 
+çl£
+, 
+OPENVPN_PLUGIN_INIT_POST_DAEMON
+);
+
+3465 
+	`do_uid_gid_chroÙ
+ (
+c
+, c->
+c2
+.
+did_Ý’_tun
+);
+
+3468 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+ || c->mod�=ð
+CM_CHILD_TCP
+)
+
+3469 
+	`do_š™_sock‘_2
+ (
+c
+);
+
+3472 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || 
+chžd
+)
+
+3473 
+	`do_š™_tim”s
+ (
+c
+, 
+çl£
+);
+
+3475 #ifdeà
+ENABLE_PLUGIN
+
+
+3477 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+)
+
+3478 
+	`Ý’_¶ugšs
+ (
+c
+, 
+çl£
+, 
+OPENVPN_PLUGIN_INIT_POST_UID_CHANGE
+);
+
+3481 #ià
+PORT_SHARE
+
+
+3483 ià(
+c
+->
+fœ¡_time
+ && (c->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+))
+
+3484 
+	`š™_pÜt_sh¬e
+ (
+c
+);
+
+3487 #ifdeà
+ENABLE_PF
+
+
+3488 ià(
+chžd
+)
+
+3489 
+	`pf_š™_cÚ‹xt
+ (
+c
+);
+
+3493 ià(
+	`IS_SIG
+ (
+c
+))
+
+3494 
+sig
+;
+
+3498 
+sig
+:
+
+3499 ià(!
+c
+->
+sig
+->
+sigÇl_‹xt
+)
+
+3500 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "init_instance";
+
+3501 
+	`þo£_cÚ‹xt
+ (
+c
+, -1, 
+æags
+);
+
+3503 
+	}
+}
+
+3509 
+	$þo£_š¡ªû
+ (
+cÚ‹xt
+ *
+c
+)
+
+3512 
+	`do_þo£_ev’t_£t
+ (
+c
+);
+
+3514 ià(
+c
+->
+mode
+ =ð
+CM_P2P
+
+
+3515 || 
+c
+->
+mode
+ =ð
+CM_CHILD_TCP
+
+
+3516 || 
+c
+->
+mode
+ =ð
+CM_CHILD_UDP
+
+
+3517 || 
+c
+->
+mode
+ =ð
+CM_TOP
+)
+
+3520 
+	`do_þo£_check_if_»¡¬t_³rm™‹d
+ (
+c
+);
+
+3522 #ifdeà
+ENABLE_LZO
+
+
+3523 ià(
+	`lzo_defšed
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+))
+
+3524 
+	`lzo_com´ess_unš™
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+);
+
+3528 
+	`do_þo£_ä“_buf
+ (
+c
+);
+
+3531 
+	`do_þo£_Žs
+ (
+c
+);
+
+3534 
+	`do_þo£_ä“_key_scheduË
+ (
+c
+, (c->
+mode
+ =ð
+CM_P2P
+ || c->mod�=ð
+CM_TOP
+));
+
+3537 
+	`do_þo£_lšk_sock‘
+ (
+c
+);
+
+3540 
+	`do_þo£_tun
+ (
+c
+, 
+çl£
+);
+
+3542 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+3543 ià(
+mªagem’t
+)
+
+3544 
+	`mªagem’t_nÙify_þ›Á_þo£
+ (
+mªagem’t
+, &
+c
+->
+c2
+.
+mda_cÚ‹xt
+, 
+NULL
+);
+
+3547 #ifdeà
+ENABLE_PF
+
+
+3548 
+	`pf_de¡roy_cÚ‹xt
+ (&
+c
+->
+c2
+.
+pf
+);
+
+3551 #ifdeà
+ENABLE_PLUGIN
+
+
+3553 
+	`do_þo£_¶ugšs
+ (
+c
+);
+
+3557 
+	`do_þo£_·ck‘_id
+ (
+c
+);
+
+3560 
+	`do_þo£_¡©us_ou�ut
+ (
+c
+);
+
+3562 #ifdeà
+ENABLE_FRAGMENT
+
+
+3564 
+	`do_þo£_äagm’t
+ (
+c
+);
+
+3568 
+	`do_þo£_ifcÚfig_poÞ_³rsi¡
+ (
+c
+);
+
+3571 
+	`do_’v_£t_de¡roy
+ (
+c
+);
+
+3574 
+	`unš™_´oxy
+ (
+c
+);
+
+3577 
+	`gc_ä“
+ (&
+c
+->
+c2
+.
+gc
+);
+
+3579 
+	}
+}
+
+3582 
+	$šh”™_cÚ‹xt_chžd
+ (
+cÚ‹xt
+ *
+de¡
+,
+
+3583 cÚ¡ 
+cÚ‹xt
+ *
+¤c
+)
+
+3585 
+	`CLEAR
+ (*
+de¡
+);
+
+3588 
+de¡
+->
+mode
+ = 
+	`´Ùo_is_dg¿m
+(
+¤c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+)? 
+CM_CHILD_UDP
+ : 
+CM_CHILD_TCP
+;
+
+3590 
+de¡
+->
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3592 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+de¡
+->
+sig
+, 
+sigÇl_šfo
+, &de¡->
+gc
+);
+
+3595 
+	`·ck‘_id_³rsi¡_š™
+ (&
+de¡
+->
+c1
+.
+pid_³rsi¡
+);
+
+3597 #ifdeà
+ENABLE_CRYPTO
+
+
+3598 
+de¡
+->
+c1
+.
+ks
+.
+key_ty³
+ = 
+¤c
+->c1.ks.key_type;
+
+3599 #ifdeà
+ENABLE_SSL
+
+
+3601 
+de¡
+->
+c1
+.
+ks
+.
+s¦_ùx
+ = 
+¤c
+->c1.ks.ssl_ctx;
+
+3602 
+de¡
+->
+c1
+.
+ks
+.
+Žs_auth_key
+ = 
+¤c
+->c1.ks.tls_auth_key;
+
+3607 
+de¡
+->
+ÝtiÚs
+ = 
+¤c
+->options;
+
+3608 
+	`ÝtiÚs_d‘ach
+ (&
+de¡
+->
+ÝtiÚs
+);
+
+3610 ià(
+de¡
+->
+mode
+ =ð
+CM_CHILD_TCP
+)
+
+3616 
+de¡
+->
+c2
+.
+acû±_äom
+ = 
+¤c
+->c2.
+lšk_sock‘
+;
+
+3619 #ifdeà
+ENABLE_PLUGIN
+
+
+3621 
+	`do_šh”™_¶ugšs
+ (
+de¡
+, 
+¤c
+);
+
+3625 
+	`š™_š¡ªû
+ (
+de¡
+, 
+¤c
+->
+c2
+.
+es
+, 
+CC_NO_CLOSE
+ | 
+CC_USR1_TO_HUP
+);
+
+3626 ià(
+	`IS_SIG
+ (
+de¡
+))
+
+3630 
+de¡
+->
+c1
+.
+tuÁ­
+ = 
+¤c
+->c1.tuntap;
+
+3633 ià(
+de¡
+->
+mode
+ =ð
+CM_CHILD_UDP
+)
+
+3636 
+de¡
+->
+c2
+.
+bufãrs
+ = 
+¤c
+->c2.buffers;
+
+3639 
+de¡
+->
+c2
+.
+lšk_sock‘
+ = 
+¤c
+->c2.link_socket;
+
+3641 
+	`ALLOC_OBJ_GC
+ (
+de¡
+->
+c2
+.
+lšk_sock‘_šfo
+, lšk_sock‘_šfo, &de¡->
+gc
+);
+
+3642 *
+de¡
+->
+c2
+.
+lšk_sock‘_šfo
+ = 
+¤c
+->c2.
+lšk_sock‘
+->
+šfo
+;
+
+3645 
+de¡
+->
+c2
+.
+lšk_sock‘_šfo
+->
+l§
+ = &de¡->
+c1
+.
+lšk_sock‘_addr
+;
+
+3646 
+de¡
+->
+c2
+.
+lšk_sock‘_šfo
+->
+cÚÃùiÚ_e¡ablished
+ = 
+çl£
+;
+
+3648 
+	}
+}
+
+3651 
+	$šh”™_cÚ‹xt_tÝ
+ (
+cÚ‹xt
+ *
+de¡
+,
+
+3652 cÚ¡ 
+cÚ‹xt
+ *
+¤c
+)
+
+3655 *
+de¡
+ = *
+¤c
+;
+
+3664 
+de¡
+->
+mode
+ = 
+CM_TOP_CLONE
+;
+
+3666 
+de¡
+->
+fœ¡_time
+ = 
+çl£
+;
+
+3667 
+de¡
+->
+c0
+ = 
+NULL
+;
+
+3669 
+	`ÝtiÚs_d‘ach
+ (&
+de¡
+->
+ÝtiÚs
+);
+
+3670 
+	`gc_d‘ach
+ (&
+de¡
+->
+gc
+);
+
+3671 
+	`gc_d‘ach
+ (&
+de¡
+->
+c2
+.
+gc
+);
+
+3674 
+de¡
+->
+¶ugšs_owÃd
+ = 
+çl£
+;
+
+3676 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+3677 
+de¡
+->
+c2
+.
+Žs_muÉi
+ = 
+NULL
+;
+
+3681 
+de¡
+->
+c1
+.
+tuÁ­_owÃd
+ = 
+çl£
+;
+
+3682 
+de¡
+->
+c1
+.
+¡©us_ou�ut_owÃd
+ = 
+çl£
+;
+
+3683 #ià
+P2MP_SERVER
+
+
+3684 
+de¡
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡_owÃd
+ = 
+çl£
+;
+
+3688 
+de¡
+->
+c2
+.
+ev’t_£t_owÃd
+ = 
+çl£
+;
+
+3689 
+de¡
+->
+c2
+.
+lšk_sock‘_owÃd
+ = 
+çl£
+;
+
+3690 
+de¡
+->
+c2
+.
+bufãrs_owÃd
+ = 
+çl£
+;
+
+3691 
+de¡
+->
+c2
+.
+es_owÃd
+ = 
+çl£
+;
+
+3693 
+de¡
+->
+c2
+.
+ev’t_£t
+ = 
+NULL
+;
+
+3694 ià(
+	`´Ùo_is_dg¿m
+(
+¤c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+))
+
+3695 
+	`do_ev’t_£t_š™
+ (
+de¡
+, 
+çl£
+);
+
+3696 
+	}
+}
+
+3699 
+	$þo£_cÚ‹xt
+ (
+cÚ‹xt
+ *
+c
+, 
+sig
+, 
+æags
+)
+
+3701 
+	`ASSERT
+ (
+c
+);
+
+3702 
+	`ASSERT
+ (
+c
+->
+sig
+);
+
+3704 ià(
+sig
+ >= 0)
+
+3705 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = sig;
+
+3707 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+)
+
+3709 ià((
+æags
+ & 
+CC_USR1_TO_HUP
+)
+
+3710 || (
+c
+->
+sig
+->
+h¬d
+ && (
+æags
+ & 
+CC_HARD_USR1_TO_HUP
+)))
+
+3711 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGHUP
+;
+
+3714 ià(!(
+æags
+ & 
+CC_NO_CLOSE
+))
+
+3715 
+	`þo£_š¡ªû
+ (
+c
+);
+
+3717 ià(
+æags
+ & 
+CC_GC_FREE
+)
+
+3718 
+	`cÚ‹xt_gc_ä“
+ (
+c
+);
+
+3719 
+	}
+}
+
+3721 #ifdeà
+ENABLE_CRYPTO
+
+
+3728 
+	$‹¡_üy±o_th»ad
+ (*
+¬g
+)
+
+3730 
+cÚ‹xt
+ *
+c
+ = (cÚ‹xˆ*è
+¬g
+;
+
+3731 cÚ¡ 
+ÝtiÚs
+ *ÝtiÚ ð&
+c
+->options;
+
+3733 
+	`ASSERT
+ (
+ÝtiÚs
+->
+‹¡_üy±o
+);
+
+3734 
+	`š™_v”b_mu‹
+ (
+c
+, 
+IVM_LEVEL_1
+);
+
+3735 
+	`cÚ‹xt_š™_1
+ (
+c
+);
+
+3736 
+	`do_š™_üy±o_¡©ic
+ (
+c
+, 0);
+
+3738 
+	`äame_fš®ize_ÝtiÚs
+ (
+c
+, 
+ÝtiÚs
+);
+
+3740 
+	`‹¡_üy±o
+ (&
+c
+->
+c2
+.
+üy±o_ÝtiÚs
+, &c->c2.
+äame
+);
+
+3742 
+	`key_scheduË_ä“
+ (&
+c
+->
+c1
+.
+ks
+, 
+Œue
+);
+
+3743 
+	`·ck‘_id_ä“
+ (&
+c
+->
+c2
+.
+·ck‘_id
+);
+
+3745 
+	`cÚ‹xt_gc_ä“
+ (
+c
+);
+
+3746  
+NULL
+;
+
+3747 
+	}
+}
+
+3751 
+boÞ
+
+
+3752 
+	$do_‹¡_üy±o
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+3754 #ifdeà
+ENABLE_CRYPTO
+
+
+3755 ià(
+o
+->
+‹¡_üy±o
+)
+
+3757 
+cÚ‹xt
+ 
+c
+;
+
+3760 
+	`msg
+ (
+M_INFO
+, "%s", 
+t™Ë_¡ršg
+);
+
+3762 
+	`cÚ‹xt_þ—r
+ (&
+c
+);
+
+3763 
+c
+.
+ÝtiÚs
+ = *
+o
+;
+
+3764 
+	`ÝtiÚs_d‘ach
+ (&
+c
+.
+ÝtiÚs
+);
+
+3765 
+c
+.
+fœ¡_time
+ = 
+Œue
+;
+
+3766 
+	`‹¡_üy±o_th»ad
+ ((*è&
+c
+);
+
+3767  
+Œue
+;
+
+3770  
+çl£
+;
+
+3771 
+	}
+}
+
+	@init.h
+
+25 #iâdeà
+INIT_H
+
+
+26 
+	#INIT_H
+
+
+	)
+
+28 
+	~"Ý’v².h
+"
+
+34 
+	#BASE_N_EVENTS
+ 4
+
+	)
+
+36 
+cÚ‹xt_þ—r
+ (
+cÚ‹xt
+ *
+c
+);
+
+37 
+cÚ‹xt_þ—r_1
+ (
+cÚ‹xt
+ *
+c
+);
+
+38 
+cÚ‹xt_þ—r_2
+ (
+cÚ‹xt
+ *
+c
+);
+
+39 
+cÚ‹xt_š™_1
+ (
+cÚ‹xt
+ *
+c
+);
+
+40 
+cÚ‹xt_þ—r_®l_exû±_fœ¡_time
+ (
+cÚ‹xt
+ *
+c
+);
+
+42 
+boÞ
+ 
+š™_¡©ic
+ ();
+
+44 
+unš™_¡©ic
+ ();
+
+46 
+	#IVM_LEVEL_1
+ (1<<0)
+
+	)
+
+47 
+	#IVM_LEVEL_2
+ (1<<1)
+
+	)
+
+48 
+š™_v”b_mu‹
+ (
+cÚ‹xt
+ *
+c
+, 
+æags
+);
+
+50 
+š™_ÝtiÚs_dev
+ (
+ÝtiÚs
+ *options);
+
+52 
+boÞ
+ 
+´št_Ý’s¦_šfo
+ (cÚ¡ 
+ÝtiÚs
+ *options);
+
+54 
+boÞ
+ 
+do_g’key
+ (cÚ¡ 
+ÝtiÚs
+ *options);
+
+56 
+boÞ
+ 
+do_³rsi¡_tuÁ­
+ (cÚ¡ 
+ÝtiÚs
+ *options);
+
+58 
+boÞ
+ 
+possibly_become_d«mÚ
+ (cÚ¡ 
+ÝtiÚs
+ *options);
+
+60 
+´e_£tup
+ (cÚ¡ 
+ÝtiÚs
+ *options);
+
+62 
+š™_š¡ªû_hªdË_sigÇls
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+’v_£t
+ *
+’v
+, cÚ¡ 
+æags
+);
+
+64 
+š™_š¡ªû
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+’v_£t
+ *
+’v
+, cÚ¡ 
+æags
+);
+
+69 
+š™_qu”y_·sswÜds
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+);
+
+71 
+do_rou‹
+ (cÚ¡ 
+ÝtiÚs
+ *options,
+
+72 
+rou‹_li¡
+ *route_list,
+
+73 
+rou‹_�v6_li¡
+ *route_ipv6_list,
+
+74 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+75 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+76 
+’v_£t
+ *
+es
+);
+
+78 
+þo£_š¡ªû
+ (
+cÚ‹xt
+ *
+c
+);
+
+80 
+boÞ
+ 
+do_‹¡_üy±o
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+);
+
+82 
+cÚ‹xt_gc_ä“
+ (
+cÚ‹xt
+ *
+c
+);
+
+84 
+do_up
+ (
+cÚ‹xt
+ *
+c
+,
+
+85 
+boÞ
+ 
+puÎed_ÝtiÚs
+,
+
+86 
+ÝtiÚ_ty³s_found
+);
+
+88 
+puÎ_³rmissiÚ_mask
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+);
+
+90 cÚ¡ *
+fÜm©_commÚ_Çme
+ (
+cÚ‹xt
+ *
+c
+, 
+gc_¬’a
+ *
+gc
+);
+
+92 
+»£t_cßr£_tim”s
+ (
+cÚ‹xt
+ *
+c
+);
+
+94 
+do_deã¼ed_ÝtiÚs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+found
+);
+
+96 
+šh”™_cÚ‹xt_chžd
+ (
+cÚ‹xt
+ *
+de¡
+,
+
+97 cÚ¡ 
+cÚ‹xt
+ *
+¤c
+);
+
+99 
+šh”™_cÚ‹xt_tÝ
+ (
+cÚ‹xt
+ *
+de¡
+,
+
+100 cÚ¡ 
+cÚ‹xt
+ *
+¤c
+);
+
+102 
+	#CC_GC_FREE
+ (1<<0)
+
+	)
+
+103 
+	#CC_USR1_TO_HUP
+ (1<<1)
+
+	)
+
+104 
+	#CC_HARD_USR1_TO_HUP
+ (1<<2)
+
+	)
+
+105 
+	#CC_NO_CLOSE
+ (1<<3)
+
+	)
+
+107 
+þo£_cÚ‹xt
+ (
+cÚ‹xt
+ *
+c
+, 
+sig
+, 
+æags
+);
+
+109 
+cÚ‹xt_bufãrs
+ *
+š™_cÚ‹xt_bufãrs
+ (cÚ¡ 
+äame
+ *frame);
+
+111 
+ä“_cÚ‹xt_bufãrs
+ (
+cÚ‹xt_bufãrs
+ *
+b
+);
+
+113 
+	#ISC_ERRORS
+ (1<<0)
+
+	)
+
+114 
+	#ISC_SERVER
+ (1<<1)
+
+	)
+
+115 
+š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+æags
+);
+
+117 #ifdeà
+ENABLE_MANAGEMENT
+
+
+119 
+š™_mªagem’t
+ (
+cÚ‹xt
+ *
+c
+);
+
+120 
+boÞ
+ 
+Ý’_mªagem’t
+ (
+cÚ‹xt
+ *
+c
+);
+
+121 
+þo£_mªagem’t
+ ();
+
+123 
+mªagem’t_show_Ãt_ÿÎback
+ (*
+¬g
+, cÚ¡ 
+msgËv–
+);
+
+127 
+š™_mªagem’t_ÿÎback_p2p
+ (
+cÚ‹xt
+ *
+c
+);
+
+128 
+unš™_mªagem’t_ÿÎback
+ ();
+
+130 #ifdeà
+ENABLE_PLUGIN
+
+
+131 
+š™_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+);
+
+132 
+Ý’_¶ugšs
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+boÞ
+ 
+impÜt_ÝtiÚs
+, 
+š™_pošt
+);
+
+	@integer.h
+
+25 #iâdeà
+INTEGER_H
+
+
+26 
+	#INTEGER_H
+
+
+	)
+
+28 
+	~"”rÜ.h
+"
+
+34 
+šlše
+ 
+
+35 
+	$max_št
+ (
+x
+, 
+y
+)
+
+37 ià(
+x
+ > 
+y
+)
+
+38  
+x
+;
+
+40  
+y
+;
+
+41 
+	}
+}
+
+43 
+šlše
+ 
+
+44 
+	$mš_št
+ (
+x
+, 
+y
+)
+
+46 ià(
+x
+ < 
+y
+)
+
+47  
+x
+;
+
+49  
+y
+;
+
+50 
+	}
+}
+
+52 
+šlše
+ 
+
+53 
+	$cÚ¡¿š_št
+ (
+x
+, 
+mš
+, 
+max
+)
+
+55 ià(
+mš
+ > 
+max
+)
+
+56  
+mš
+;
+
+57 ià(
+x
+ < 
+mš
+)
+
+58  
+mš
+;
+
+59 ià(
+x
+ > 
+max
+)
+
+60  
+max
+;
+
+62  
+x
+;
+
+63 
+	}
+}
+
+75 
+šlše
+ 
+
+76 
+	$modulo_subŒaù
+(
+x
+, 
+y
+, 
+mod
+)
+
+78 cÚ¡ 
+d1
+ = 
+x
+ - 
+y
+;
+
+79 cÚ¡ 
+d2
+ = (
+x
+ > 
+y
+ ? -
+mod
+ : modè+ 
+d1
+;
+
+80 
+	`ASSERT
+ (0 <ð
+x
+ && x < 
+mod
+ && 0 <ð
+y
+ && y < mod);
+
+81  
+	`abs
+(
+d1
+è>‡bs(
+d2
+) ? d2 : d1;
+
+82 
+	}
+}
+
+90 
+šlše
+ 
+
+91 
+	$modulo_add
+(
+x
+, 
+y
+, 
+mod
+)
+
+93 
+sum
+ = 
+x
+ + 
+y
+;
+
+94 
+	`ASSERT
+ (0 <ð
+x
+ && x < 
+mod
+ && -mod <ð
+y
+ && y <= mod);
+
+95 ià(
+sum
+ >ð
+mod
+)
+
+96 
+sum
+ -ð
+mod
+;
+
+97 ià(
+sum
+ < 0)
+
+98 
+sum
+ +ð
+mod
+;
+
+99  
+sum
+;
+
+100 
+	}
+}
+
+102 
+šlše
+ 
+
+103 
+	$šdex_v”ify
+ (
+šdex
+, 
+size
+, cÚ¡ *
+fže
+, 
+lše
+)
+
+105 ià(
+šdex
+ < 0 || index >ð
+size
+)
+
+106 
+	`msg
+ (
+M_FATAL
+, "Assertion Failed: Array index=%d out of bounds for‡rray size=%d in %s:%d",
+
+107 
+šdex
+,
+
+108 
+size
+,
+
+109 
+fže
+,
+
+110 
+lše
+);
+
+111  
+šdex
+;
+
+112 
+	}
+}
+
+	@interval.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"š‹rv®.h
+"
+
+35 
+	~"memdbg.h
+"
+
+38 
+	$š‹rv®_š™
+ (
+š‹rv®
+ *
+tÝ
+, 
+hÜizÚ
+, 
+»äesh
+)
+
+40 
+	`CLEAR
+ (*
+tÝ
+);
+
+41 
+tÝ
+->
+»äesh
+ =„efresh;
+
+42 
+tÝ
+->
+hÜizÚ
+ = horizon;
+
+43 
+	}
+}
+
+45 
+boÞ
+
+
+46 
+	$ev’t_timeout_Œigg”
+ (
+ev’t_timeout
+ *
+‘
+,
+
+47 
+timev®
+ *
+tv
+,
+
+48 cÚ¡ 
+‘_cÚ¡_»Œy
+)
+
+50 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+51 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+53 ià(
+‘
+->
+defšed
+)
+
+55 
+wakeup
+ = (è
+‘
+->
+Ï¡
+ +ƒt->
+n
+ - 
+loÿl_now
+;
+
+56 ià(
+wakeup
+ <= 0)
+
+58 #ià
+INTERVAL_DEBUG
+
+
+59 
+	`dmsg
+ (
+D_INTERVAL
+, "EVENTƒv’t_timeout_Œigg” (%dè‘ü=%d", 
+‘
+->
+n
+, 
+‘_cÚ¡_»Œy
+);
+
+61 ià(
+‘_cÚ¡_»Œy
+ < 0)
+
+63 
+‘
+->
+Ï¡
+ = 
+loÿl_now
+;
+
+64 
+wakeup
+ = 
+‘
+->
+n
+;
+
+65 
+»t
+ = 
+Œue
+;
+
+69 
+wakeup
+ = 
+‘_cÚ¡_»Œy
+;
+
+73 ià(
+tv
+ && 
+wakeup
+ <�v->
+tv_£c
+)
+
+75 #ià
+INTERVAL_DEBUG
+
+
+76 
+	`dmsg
+ (
+D_INTERVAL
+, "EVENTƒv’t_timeout_wakeu°(%d/%dè‘ü=%d", 
+wakeup
+, 
+‘
+->
+n
+, 
+‘_cÚ¡_»Œy
+);
+
+78 
+tv
+->
+tv_£c
+ = 
+wakeup
+;
+
+79 
+tv
+->
+tv_u£c
+ = 0;
+
+82  
+»t
+;
+
+83 
+	}
+}
+
+	@interval.h
+
+31 #iâdeà
+INTERVAL_H
+
+
+32 
+	#INTERVAL_H
+
+
+	)
+
+34 
+	~"Ùime.h
+"
+
+36 
+	#INTERVAL_DEBUG
+ 0
+
+	)
+
+43 
+	sš‹rv®
+
+
+45 
+š‹rv®_t
+ 
+	m»äesh
+;
+
+46 
+š‹rv®_t
+ 
+	mhÜizÚ
+;
+
+47 
+time_t
+ 
+	mfutu»_Œigg”
+;
+
+48 
+time_t
+ 
+	mÏ¡_aùiÚ
+;
+
+49 
+time_t
+ 
+	mÏ¡_‹¡_Œue
+;
+
+52 
+š‹rv®_š™
+ (
+š‹rv®
+ *
+tÝ
+, 
+hÜizÚ
+, 
+»äesh
+);
+
+66 
+šlše
+ 
+boÞ
+
+
+67 
+	$š‹rv®_‹¡
+ (
+š‹rv®
+* 
+tÝ
+)
+
+69 
+boÞ
+ 
+Œigg”
+ = 
+çl£
+;
+
+70 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+72 ià(
+tÝ
+->
+futu»_Œigg”
+ && 
+loÿl_now
+ >=�op->future_trigger)
+
+74 
+Œigg”
+ = 
+Œue
+;
+
+75 
+tÝ
+->
+futu»_Œigg”
+ = 0;
+
+78 ià(
+tÝ
+->
+Ï¡_aùiÚ
+ +�Ý->
+hÜizÚ
+ > 
+loÿl_now
+ ||
+
+79 
+tÝ
+->
+Ï¡_‹¡_Œue
+ +�Ý->
+»äesh
+ <ð
+loÿl_now
+ ||
+
+80 
+Œigg”
+)
+
+82 
+tÝ
+->
+Ï¡_‹¡_Œue
+ = 
+loÿl_now
+;
+
+83 #ià
+INTERVAL_DEBUG
+
+
+84 
+	`dmsg
+ (
+D_INTERVAL
+, "INTERVAL interval_test�rue");
+
+86  
+Œue
+;
+
+90  
+çl£
+;
+
+92 
+	}
+}
+
+94 
+šlše
+ 
+
+95 
+	$š‹rv®_scheduË_wakeup
+ (
+š‹rv®
+* 
+tÝ
+, 
+š‹rv®_t
+ *
+wakeup
+)
+
+97 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+98 
+	`š‹rv®_—¾›¡_wakeup
+ (
+wakeup
+, 
+tÝ
+->
+Ï¡_‹¡_Œue
+ +�Ý->
+»äesh
+, 
+loÿl_now
+);
+
+99 
+	`š‹rv®_—¾›¡_wakeup
+ (
+wakeup
+, 
+tÝ
+->
+futu»_Œigg”
+, 
+loÿl_now
+);
+
+100 #ià
+INTERVAL_DEBUG
+
+
+101 
+	`dmsg
+ (
+D_INTERVAL
+, "INTERVAL iÁ”v®_scheduË wakeup=%d", ()*
+wakeup
+);
+
+103 
+	}
+}
+
+108 
+šlše
+ 
+
+109 
+	$š‹rv®_futu»_Œigg”
+ (
+š‹rv®
+* 
+tÝ
+, 
+š‹rv®_t
+ 
+wakeup
+) {
+
+110 ià(
+wakeup
+)
+
+112 #ià
+INTERVAL_DEBUG
+
+
+113 
+	`dmsg
+ (
+D_INTERVAL
+, "INTERVAL iÁ”v®_futu»_Œigg” %d", ()
+wakeup
+);
+
+115 
+tÝ
+->
+futu»_Œigg”
+ = 
+now
+ + 
+wakeup
+;
+
+117 
+	}
+}
+
+123 
+šlše
+ 
+
+124 
+	$š‹rv®_aùiÚ
+ (
+š‹rv®
+* 
+tÝ
+)
+
+126 #ià
+INTERVAL_DEBUG
+
+
+127 
+	`dmsg
+ (
+D_INTERVAL
+, "INTERVAL‡ction");
+
+129 
+tÝ
+->
+Ï¡_aùiÚ
+ = 
+now
+;
+
+130 
+	}
+}
+
+136 
+	sev’t_timeout
+
+
+138 
+boÞ
+ 
+	mdefšed
+;
+
+139 
+š‹rv®_t
+ 
+	mn
+;
+
+140 
+time_t
+ 
+	mÏ¡
+;
+
+143 
+šlše
+ 
+boÞ
+
+
+144 
+	$ev’t_timeout_defšed
+ (cÚ¡ 
+ev’t_timeout
+* 
+‘
+)
+
+146  
+‘
+->
+defšed
+;
+
+147 
+	}
+}
+
+149 
+šlše
+ 
+
+150 
+	$ev’t_timeout_þ—r
+ (
+ev’t_timeout
+* 
+‘
+)
+
+152 
+‘
+->
+defšed
+ = 
+çl£
+;
+
+153 
+‘
+->
+n
+ = 0;
+
+154 
+‘
+->
+Ï¡
+ = 0;
+
+155 
+	}
+}
+
+157 
+šlše
+ 
+ev’t_timeout
+
+
+158 
+	$ev’t_timeout_þ—r_»t
+ ()
+
+160 
+ev’t_timeout
+ 
+»t
+;
+
+161 
+	`ev’t_timeout_þ—r
+ (&
+»t
+);
+
+162  
+»t
+;
+
+163 
+	}
+}
+
+165 
+šlše
+ 
+
+166 
+	$ev’t_timeout_š™
+ (
+ev’t_timeout
+* 
+‘
+, 
+š‹rv®_t
+ 
+n
+, cÚ¡ 
+time_t
+ 
+loÿl_now
+)
+
+168 
+‘
+->
+defšed
+ = 
+Œue
+;
+
+169 
+‘
+->
+n
+ = (n >= 0) ?‚ : 0;
+
+170 
+‘
+->
+Ï¡
+ = 
+loÿl_now
+;
+
+171 
+	}
+}
+
+173 
+šlše
+ 
+
+174 
+	$ev’t_timeout_»£t
+ (
+ev’t_timeout
+* 
+‘
+)
+
+176 ià(
+‘
+->
+defšed
+)
+
+177 
+‘
+->
+Ï¡
+ = 
+now
+;
+
+178 
+	}
+}
+
+180 
+šlše
+ 
+
+181 
+	$ev’t_timeout_modify_wakeup
+ (
+ev’t_timeout
+* 
+‘
+, 
+š‹rv®_t
+ 
+n
+)
+
+184 ià(
+‘
+->
+defšed
+)
+
+185 
+‘
+->
+n
+ = (n >= 0) ?‚ : 0;
+
+186 
+	}
+}
+
+199 
+	#ETT_DEFAULT
+ (-1)
+
+	)
+
+201 
+boÞ
+ 
+ev’t_timeout_Œigg”
+ (
+ev’t_timeout
+ *
+‘
+,
+
+202 
+timev®
+ *
+tv
+,
+
+203 cÚ¡ 
+‘_cÚ¡_»Œy
+);
+
+209 
+	#USEC_TIMER_MAX
+ 60
+
+	)
+
+211 
+	#USEC_TIMER_MAX_USEC
+ (
+USEC_TIMER_MAX
+ * 1000000)
+
+	)
+
+213 
+	su£c_tim”
+ {
+
+214 
+timev®
+ 
+	m¡¬t
+;
+
+215 
+timev®
+ 
+	m’d
+;
+
+218 #ifdeà
+HAVE_GETTIMEOFDAY
+
+
+220 
+šlše
+ 
+
+221 
+	$u£c_tim”_¡¬t
+ (
+u£c_tim”
+ *
+obj
+)
+
+223 
+	`CLEAR
+ (*
+obj
+);
+
+224 
+	`Ý’v²_g‘timeofday
+ (&
+obj
+->
+¡¬t
+, 
+NULL
+);
+
+225 
+	}
+}
+
+227 
+šlše
+ 
+
+228 
+	$u£c_tim”_’d
+ (
+u£c_tim”
+ *
+obj
+)
+
+230 
+	`Ý’v²_g‘timeofday
+ (&
+obj
+->
+’d
+, 
+NULL
+);
+
+231 
+	}
+}
+
+235 
+šlše
+ 
+boÞ
+
+
+236 
+	$u£c_tim”_š‹rv®_defšed
+ (
+u£c_tim”
+ *
+obj
+)
+
+238  
+obj
+->
+¡¬t
+.
+tv_£c
+ && obj->
+’d
+.tv_sec;
+
+239 
+	}
+}
+
+241 
+šlše
+ 
+
+242 
+	$u£c_tim”_š‹rv®
+ (
+u£c_tim”
+ *
+obj
+)
+
+244  
+	`tv_subŒaù
+ (&
+obj
+->
+’d
+, &obj->
+¡¬t
+, 
+USEC_TIMER_MAX
+);
+
+245 
+	}
+}
+
+	@list.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"li¡.h
+"
+
+36 
+	~"misc.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 
+hash
+ *
+
+41 
+	$hash_š™
+ (cÚ¡ 
+n_buck‘s
+,
+
+42 cÚ¡ 
+ušt32_t
+ 
+iv
+,
+
+43 
+	$ušt32_t
+ (*
+hash_funùiÚ
+)(cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+),
+
+44 
+	$boÞ
+ (*
+com·»_funùiÚ
+)(cÚ¡ *
+key1
+, cÚ¡ *
+key2
+))
+
+46 
+hash
+ *
+h
+;
+
+47 
+i
+;
+
+49 
+	`ASSERT
+ (
+n_buck‘s
+ > 0);
+
+50 
+	`ALLOC_OBJ_CLEAR
+ (
+h
+, 
+hash
+);
+
+51 
+h
+->
+n_buck‘s
+ = (è
+	`adju¡_pow”_of_2
+ (n_buckets);
+
+52 
+h
+->
+mask
+ = h->
+n_buck‘s
+ - 1;
+
+53 
+h
+->
+hash_funùiÚ
+ = hash_function;
+
+54 
+h
+->
+com·»_funùiÚ
+ = compare_function;
+
+55 
+h
+->
+iv
+ = iv;
+
+56 
+	`ALLOC_ARRAY
+ (
+h
+->
+buck‘s
+, 
+hash_buck‘
+, h->
+n_buck‘s
+);
+
+57 
+i
+ = 0; i < 
+h
+->
+n_buck‘s
+; ++i)
+
+59 
+hash_buck‘
+ *
+b
+ = &
+h
+->
+buck‘s
+[
+i
+];
+
+60 
+b
+->
+li¡
+ = 
+NULL
+;
+
+62  
+h
+;
+
+63 
+	}
+}
+
+66 
+	$hash_ä“
+ (
+hash
+ *hash)
+
+68 
+i
+;
+
+69 
+i
+ = 0; i < 
+hash
+->
+n_buck‘s
+; ++i)
+
+71 
+hash_buck‘
+ *
+b
+ = &
+hash
+->
+buck‘s
+[
+i
+];
+
+72 
+hash_–em’t
+ *
+he
+ = 
+b
+->
+li¡
+;
+
+74 
+he
+)
+
+76 
+hash_–em’t
+ *
+Ãxt
+ = 
+he
+->next;
+
+77 
+	`ä“
+ (
+he
+);
+
+78 
+he
+ = 
+Ãxt
+;
+
+81 
+	`ä“
+ (
+hash
+->
+buck‘s
+);
+
+82 
+	`ä“
+ (
+hash
+);
+
+83 
+	}
+}
+
+85 
+hash_–em’t
+ *
+
+86 
+	$hash_lookup_ç¡
+ (
+hash
+ *hash,
+
+87 
+hash_buck‘
+ *
+buck‘
+,
+
+88 cÚ¡ *
+key
+,
+
+89 
+ušt32_t
+ 
+hv
+)
+
+91 
+hash_–em’t
+ *
+he
+;
+
+92 
+hash_–em’t
+ *
+´ev
+ = 
+NULL
+;
+
+94 
+he
+ = 
+buck‘
+->
+li¡
+;
+
+96 
+he
+)
+
+98 ià(
+hv
+ =ð
+he
+->
+hash_v®ue
+ && (*
+hash
+->
+com·»_funùiÚ
+)(
+key
+, he->key))
+
+101 ià(
+´ev
+)
+
+103 
+´ev
+->
+Ãxt
+ = 
+he
+->next;
+
+104 
+he
+->
+Ãxt
+ = 
+buck‘
+->
+li¡
+;
+
+105 
+buck‘
+->
+li¡
+ = 
+he
+;
+
+107  
+he
+;
+
+109 
+´ev
+ = 
+he
+;
+
+110 
+he
+ = he->
+Ãxt
+;
+
+113  
+NULL
+;
+
+114 
+	}
+}
+
+116 
+boÞ
+
+
+117 
+	$hash_»move_ç¡
+ (
+hash
+ *hash,
+
+118 
+hash_buck‘
+ *
+buck‘
+,
+
+119 cÚ¡ *
+key
+,
+
+120 
+ušt32_t
+ 
+hv
+)
+
+122 
+hash_–em’t
+ *
+he
+;
+
+123 
+hash_–em’t
+ *
+´ev
+ = 
+NULL
+;
+
+125 
+he
+ = 
+buck‘
+->
+li¡
+;
+
+127 
+he
+)
+
+129 ià(
+hv
+ =ð
+he
+->
+hash_v®ue
+ && (*
+hash
+->
+com·»_funùiÚ
+)(
+key
+, he->key))
+
+131 ià(
+´ev
+)
+
+132 
+´ev
+->
+Ãxt
+ = 
+he
+->next;
+
+134 
+buck‘
+->
+li¡
+ = 
+he
+->
+Ãxt
+;
+
+135 
+	`ä“
+ (
+he
+);
+
+136 --
+hash
+->
+n_–em’ts
+;
+
+137  
+Œue
+;
+
+139 
+´ev
+ = 
+he
+;
+
+140 
+he
+ = he->
+Ãxt
+;
+
+142  
+çl£
+;
+
+143 
+	}
+}
+
+145 
+boÞ
+
+
+146 
+	$hash_add
+ (
+hash
+ *hash, cÚ¡ *
+key
+, *
+v®ue
+, 
+boÞ
+ 
+»¶aû
+)
+
+148 
+ušt32_t
+ 
+hv
+;
+
+149 
+hash_buck‘
+ *
+buck‘
+;
+
+150 
+hash_–em’t
+ *
+he
+;
+
+151 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+153 
+hv
+ = 
+	`hash_v®ue
+ (
+hash
+, 
+key
+);
+
+154 
+buck‘
+ = &
+hash
+->
+buck‘s
+[
+hv
+ & hash->
+mask
+];
+
+156 ià((
+he
+ = 
+	`hash_lookup_ç¡
+ (
+hash
+, 
+buck‘
+, 
+key
+, 
+hv
+)))
+
+158 ià(
+»¶aû
+)
+
+160 
+he
+->
+v®ue
+ = value;
+
+161 
+»t
+ = 
+Œue
+;
+
+166 
+	`hash_add_ç¡
+ (
+hash
+, 
+buck‘
+, 
+key
+, 
+hv
+, 
+v®ue
+);
+
+167 
+»t
+ = 
+Œue
+;
+
+170  
+»t
+;
+
+171 
+	}
+}
+
+174 
+	$hash_»move_by_v®ue
+ (
+hash
+ *hash, *
+v®ue
+)
+
+176 
+hash_™”©Ü
+ 
+hi
+;
+
+177 
+hash_–em’t
+ *
+he
+;
+
+179 
+	`hash_™”©Ü_š™
+ (
+hash
+, &
+hi
+);
+
+180 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+182 ià(
+he
+->
+v®ue
+ == value)
+
+183 
+	`hash_™”©Ü_d–‘e_–em’t
+ (&
+hi
+);
+
+185 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+186 
+	}
+}
+
+189 
+	$hash_»move_m¬ked
+ (
+hash
+ *hash, 
+hash_buck‘
+ *
+buck‘
+)
+
+191 
+hash_–em’t
+ *
+´ev
+ = 
+NULL
+;
+
+192 
+hash_–em’t
+ *
+he
+ = 
+buck‘
+->
+li¡
+;
+
+194 
+he
+)
+
+196 ià(!
+he
+->
+key
+)
+
+198 
+hash_–em’t
+ *
+Ãwhe
+;
+
+199 ià(
+´ev
+)
+
+200 
+Ãwhe
+ = 
+´ev
+->
+Ãxt
+ = 
+he
+->next;
+
+202 
+Ãwhe
+ = 
+buck‘
+->
+li¡
+ = 
+he
+->
+Ãxt
+;
+
+203 
+	`ä“
+ (
+he
+);
+
+204 --
+hash
+->
+n_–em’ts
+;
+
+205 
+he
+ = 
+Ãwhe
+;
+
+209 
+´ev
+ = 
+he
+;
+
+210 
+he
+ = he->
+Ãxt
+;
+
+213 
+	}
+}
+
+215 
+ušt32_t
+
+
+216 
+	$void_±r_hash_funùiÚ
+ (cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+)
+
+218  
+	`hash_func
+ ((cÚ¡ *)&
+key
+,  (key), 
+iv
+);
+
+219 
+	}
+}
+
+221 
+boÞ
+
+
+222 
+	$void_±r_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+)
+
+224  
+key1
+ =ð
+key2
+;
+
+225 
+	}
+}
+
+228 
+	$hash_™”©Ü_š™_¿nge
+ (
+hash
+ *hash,
+
+229 
+hash_™”©Ü
+ *
+hi
+,
+
+230 
+¡¬t_buck‘
+,
+
+231 
+’d_buck‘
+)
+
+233 ià(
+’d_buck‘
+ > 
+hash
+->
+n_buck‘s
+)
+
+234 
+’d_buck‘
+ = 
+hash
+->
+n_buck‘s
+;
+
+236 
+	`ASSERT
+ (
+¡¬t_buck‘
+ >ð0 && s�¹_buck‘ <ð
+’d_buck‘
+);
+
+238 
+hi
+->
+hash
+ = hash;
+
+239 
+hi
+->
+–em
+ = 
+NULL
+;
+
+240 
+hi
+->
+buck‘
+ = 
+NULL
+;
+
+241 
+hi
+->
+Ï¡
+ = 
+NULL
+;
+
+242 
+hi
+->
+buck‘_m¬ked
+ = 
+çl£
+;
+
+243 
+hi
+->
+buck‘_šdex_¡¬t
+ = 
+¡¬t_buck‘
+;
+
+244 
+hi
+->
+buck‘_šdex_’d
+ = 
+’d_buck‘
+;
+
+245 
+hi
+->
+buck‘_šdex
+ = hi->
+buck‘_šdex_¡¬t
+ - 1;
+
+246 
+	}
+}
+
+249 
+	$hash_™”©Ü_š™
+ (
+hash
+ *hash,
+
+250 
+hash_™”©Ü
+ *
+hi
+)
+
+252 
+	`hash_™”©Ü_š™_¿nge
+ (
+hash
+, 
+hi
+, 0, hash->
+n_buck‘s
+);
+
+253 
+	}
+}
+
+255 
+šlše
+ 
+
+256 
+	$hash_™”©Ü_lock
+ (
+hash_™”©Ü
+ *
+hi
+, 
+hash_buck‘
+ *
+b
+)
+
+258 
+hi
+->
+buck‘
+ = 
+b
+;
+
+259 
+hi
+->
+Ï¡
+ = 
+NULL
+;
+
+260 
+hi
+->
+buck‘_m¬ked
+ = 
+çl£
+;
+
+261 
+	}
+}
+
+263 
+šlše
+ 
+
+264 
+	$hash_™”©Ü_uÆock
+ (
+hash_™”©Ü
+ *
+hi
+)
+
+266 ià(
+hi
+->
+buck‘
+)
+
+268 ià(
+hi
+->
+buck‘_m¬ked
+)
+
+270 
+	`hash_»move_m¬ked
+ (
+hi
+->
+hash
+, hi->
+buck‘
+);
+
+271 
+hi
+->
+buck‘_m¬ked
+ = 
+çl£
+;
+
+273 
+hi
+->
+buck‘
+ = 
+NULL
+;
+
+274 
+hi
+->
+Ï¡
+ = 
+NULL
+;
+
+276 
+	}
+}
+
+278 
+šlše
+ 
+
+279 
+	$hash_™”©Ü_advªû
+ (
+hash_™”©Ü
+ *
+hi
+)
+
+281 
+hi
+->
+Ï¡
+ = hi->
+–em
+;
+
+282 
+hi
+->
+–em
+ = hi->–em->
+Ãxt
+;
+
+283 
+	}
+}
+
+286 
+	$hash_™”©Ü_ä“
+ (
+hash_™”©Ü
+ *
+hi
+)
+
+288 
+	`hash_™”©Ü_uÆock
+ (
+hi
+);
+
+289 
+	}
+}
+
+291 
+hash_–em’t
+ *
+
+292 
+	$hash_™”©Ü_Ãxt
+ (
+hash_™”©Ü
+ *
+hi
+)
+
+294 
+hash_–em’t
+ *
+»t
+ = 
+NULL
+;
+
+295 ià(
+hi
+->
+–em
+)
+
+297 
+»t
+ = 
+hi
+->
+–em
+;
+
+298 
+	`hash_™”©Ü_advªû
+ (
+hi
+);
+
+302 ++
+hi
+->
+buck‘_šdex
+ < hi->
+buck‘_šdex_’d
+)
+
+304 
+hash_buck‘
+ *
+b
+;
+
+305 
+	`hash_™”©Ü_uÆock
+ (
+hi
+);
+
+306 
+b
+ = &
+hi
+->
+hash
+->
+buck‘s
+[hi->
+buck‘_šdex
+];
+
+307 ià(
+b
+->
+li¡
+)
+
+309 
+	`hash_™”©Ü_lock
+ (
+hi
+, 
+b
+);
+
+310 
+hi
+->
+–em
+ = 
+b
+->
+li¡
+;
+
+311 ià(
+hi
+->
+–em
+)
+
+313 
+»t
+ = 
+hi
+->
+–em
+;
+
+314 
+	`hash_™”©Ü_advªû
+ (
+hi
+);
+
+320  
+»t
+;
+
+321 
+	}
+}
+
+324 
+	$hash_™”©Ü_d–‘e_–em’t
+ (
+hash_™”©Ü
+ *
+hi
+)
+
+326 
+	`ASSERT
+ (
+hi
+->
+Ï¡
+);
+
+327 
+hi
+->
+Ï¡
+->
+key
+ = 
+NULL
+;
+
+328 
+hi
+->
+buck‘_m¬ked
+ = 
+Œue
+;
+
+329 
+	}
+}
+
+332 #ifdeà
+LIST_TEST
+
+
+339 
+	swÜd
+
+
+341 cÚ¡ *
+	mwÜd
+;
+
+342 
+	mn
+;
+
+345 
+ušt32_t
+
+
+346 
+	$wÜd_hash_funùiÚ
+ (cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+)
+
+348 cÚ¡ *
+¡r
+ = (cÚ¡ *è
+key
+;
+
+349 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+¡r
+);
+
+350  
+	`hash_func
+ ((cÚ¡ 
+ušt8_t
+ *)
+¡r
+, 
+Ën
+, 
+iv
+);
+
+351 
+	}
+}
+
+353 
+boÞ
+
+
+354 
+	$wÜd_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+)
+
+356  
+	`¡rcmp
+ ((cÚ¡ *)
+key1
+, (cÚ¡ *)
+key2
+) == 0;
+
+357 
+	}
+}
+
+360 
+	$´št_nhash
+ (
+hash
+ *hash)
+
+362 
+hash_™”©Ü
+ 
+hi
+;
+
+363 
+hash_–em’t
+ *
+he
+;
+
+364 
+couÁ
+ = 0;
+
+366 
+	`hash_™”©Ü_š™
+ (
+hash
+, &
+hi
+, 
+Œue
+);
+
+368 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+370 
+	`´štf
+ ("%d ", (è
+he
+->
+v®ue
+);
+
+371 ++
+couÁ
+;
+
+373 
+	`´štf
+ ("\n");
+
+375 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+376 
+	`ASSERT
+ (
+couÁ
+ =ð
+	`hash_n_–em’ts
+ (
+hash
+));
+
+377 
+	}
+}
+
+380 
+	$rmhash
+ (
+hash
+ *hash, cÚ¡ *
+wÜd
+)
+
+382 
+	`hash_»move
+ (
+hash
+, 
+wÜd
+);
+
+383 
+	}
+}
+
+386 
+	$li¡_‹¡
+ ()
+
+388 
+	`Ý’v²_th»ad_š™
+ ();
+
+391 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+392 
+hash
+ *hash = 
+	`hash_š™
+ (10000, 
+	`g‘_¿ndom
+ (), 
+wÜd_hash_funùiÚ
+, 
+wÜd_com·»_funùiÚ
+);
+
+393 
+hash
+ *
+nhash
+ = 
+	`hash_š™
+ (256, 
+	`g‘_¿ndom
+ (), 
+wÜd_hash_funùiÚ
+, 
+wÜd_com·»_funùiÚ
+);
+
+395 
+	`´štf
+ ("hash_š™‚_buck‘s=%d mask=0x%08x\n", 
+hash
+->
+n_buck‘s
+, hash->
+mask
+);
+
+398 
+Œue
+)
+
+400 
+buf
+[256];
+
+401 
+wÜdbuf
+[256];
+
+402 
+wbi
+;
+
+403 
+bi
+;
+
+404 
+c
+;
+
+406 ià(!
+	`fg‘s
+(
+buf
+, (buf), 
+¡dš
+))
+
+409 
+bi
+ = 
+wbi
+ = 0;
+
+412 
+c
+ = 
+buf
+[
+bi
+++];
+
+413 ià(
+	`i§Êum
+ (
+c
+) || c == '_')
+
+415 
+	`ASSERT
+ (
+wbi
+ < (è (
+wÜdbuf
+));
+
+416 
+wÜdbuf
+[
+wbi
+++] = 
+c
+;
+
+420 ià(
+wbi
+)
+
+422 
+wÜd
+ *
+w
+;
+
+423 
+	`ASSERT
+ (
+wbi
+ < (è (
+wÜdbuf
+));
+
+424 
+wÜdbuf
+[
+wbi
+++] = '\0';
+
+429 
+w
+ = (
+wÜd
+ *è
+	`hash_lookup
+ (
+hash
+, 
+wÜdbuf
+);
+
+431 ià(
+w
+)
+
+434 ++
+w
+->
+n
+;
+
+439 
+	`ALLOC_OBJ_GC
+ (
+w
+, 
+wÜd
+, &
+gc
+);
+
+440 
+w
+->
+wÜd
+ = 
+	`¡ršg_®loc
+ (
+wÜdbuf
+, &
+gc
+);
+
+441 
+w
+->
+n
+ = 1;
+
+442 
+	`ASSERT
+ (
+	`hash_add
+ (
+hash
+, 
+w
+->
+wÜd
+, w, 
+çl£
+));
+
+443 
+	`ASSERT
+ (
+	`hash_add
+ (
+nhash
+, 
+w
+->
+wÜd
+, (*è((
+	`¿ndom
+(è& 0x0Fè+ 1), 
+çl£
+));
+
+446 
+wbi
+ = 0;
+
+448 } 
+c
+);
+
+454 
+	`rmhash
+ (
+hash
+, "true");
+
+455 
+	`rmhash
+ (
+hash
+, "false");
+
+461 
+ba£
+;
+
+462 
+šc
+ = 0;
+
+463 
+couÁ
+ = 0;
+
+465 
+ba£
+ = 0; ba£ < 
+	`hash_n_buck‘s
+ (
+hash
+); ba£ +ð
+šc
+) {
+
+466 
+hash_™”©Ü
+ 
+hi
+;
+
+467 
+hash_–em’t
+ *
+he
+;
+
+468 
+šc
+ = (
+	`g‘_¿ndom
+ () % 3) + 1;
+
+469 
+	`hash_™”©Ü_š™_¿nge
+ (
+hash
+, &
+hi
+, 
+Œue
+, 
+ba£
+, ba£ + 
+šc
+);
+
+471 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+473 
+wÜd
+ *
+w
+ = (wÜd *è
+he
+->
+v®ue
+;
+
+474 
+	`´štf
+ ("%6d '%s'\n", 
+w
+->
+n
+, w->
+wÜd
+);
+
+475 ++
+couÁ
+;
+
+478 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+480 
+	`ASSERT
+ (
+couÁ
+ =ð
+	`hash_n_–em’ts
+ (
+hash
+));
+
+486 
+i
+;
+
+487 
+i
+ = 1; i <= 16; ++i)
+
+489 
+	`´štf
+ ("[%d] ***********************************\n", 
+i
+);
+
+490 
+	`´št_nhash
+ (
+nhash
+);
+
+491 
+	`hash_»move_by_v®ue
+ (
+nhash
+, (*è
+i
+, 
+Œue
+);
+
+493 
+	`´štf
+ ("FINAL **************************\n");
+
+494 
+	`´št_nhash
+ (
+nhash
+);
+
+498 
+	`hash_ä“
+ (
+hash
+);
+
+499 
+	`hash_ä“
+ (
+nhash
+);
+
+500 
+	`gc_ä“
+ (&
+gc
+);
+
+503 
+	`Ý’v²_th»ad_þ—nup
+ ();
+
+504 
+	}
+}
+
+573 
+	#mix
+(
+a
+,
+b
+,
+c
+) \
+
+575 
+a
+ -ð
+b
+;‡ -ð
+c
+;‡ ^= (c>>13); \
+
+576 
+b
+ -ð
+c
+; b -ð
+a
+; b ^= (a<<8); \
+
+577 
+c
+ -ð
+a
+; c -ð
+b
+; c ^= (b>>13); \
+
+578 
+a
+ -ð
+b
+;‡ -ð
+c
+;‡ ^= (c>>12); \
+
+579 
+b
+ -ð
+c
+; b -ð
+a
+; b ^= (a<<16); \
+
+580 
+c
+ -ð
+a
+; c -ð
+b
+; c ^= (b>>5); \
+
+581 
+a
+ -ð
+b
+;‡ -ð
+c
+;‡ ^= (c>>3); \
+
+582 
+b
+ -ð
+c
+; b -ð
+a
+; b ^= (a<<10); \
+
+583 
+c
+ -ð
+a
+; c -ð
+b
+; c ^= (b>>15); \
+
+584 }
+
+	)
+
+586 
+ušt32_t
+
+
+587 
+	$hash_func
+ (cÚ¡ 
+ušt8_t
+ *
+k
+, 
+ušt32_t
+ 
+Ëngth
+, ušt32_ˆ
+š™v®
+)
+
+589 
+ušt32_t
+ 
+a
+, 
+b
+, 
+c
+, 
+Ën
+;
+
+592 
+Ën
+ = 
+Ëngth
+;
+
+593 
+a
+ = 
+b
+ = 0x9e3779b9;
+
+594 
+c
+ = 
+š™v®
+;
+
+597 
+Ën
+ >= 12)
+
+599 
+a
+ +ð(
+k
+[0] + ((
+ušt32_t
+) k[1] << 8)
+
+600 + ((
+ušt32_t
+è
+k
+[2] << 16)
+
+601 + ((
+ušt32_t
+è
+k
+[3] << 24));
+
+602 
+b
+ +ð(
+k
+[4] + ((
+ušt32_t
+) k[5] << 8)
+
+603 + ((
+ušt32_t
+è
+k
+[6] << 16)
+
+604 + ((
+ušt32_t
+è
+k
+[7] << 24));
+
+605 
+c
+ +ð(
+k
+[8] + ((
+ušt32_t
+) k[9] << 8)
+
+606 + ((
+ušt32_t
+è
+k
+[10] << 16)
+
+607 + ((
+ušt32_t
+è
+k
+[11] << 24));
+
+608 
+	`mix
+ (
+a
+, 
+b
+, 
+c
+);
+
+609 
+k
+ += 12;
+
+610 
+Ën
+ -= 12;
+
+614 
+c
+ +ð
+Ëngth
+;
+
+615 
+Ën
+)
+
+618 
+c
+ +ð((
+ušt32_t
+è
+k
+[10] << 24);
+
+620 
+c
+ +ð((
+ušt32_t
+è
+k
+[9] << 16);
+
+622 
+c
+ +ð((
+ušt32_t
+è
+k
+[8] << 8);
+
+625 
+b
+ +ð((
+ušt32_t
+è
+k
+[7] << 24);
+
+627 
+b
+ +ð((
+ušt32_t
+è
+k
+[6] << 16);
+
+629 
+b
+ +ð((
+ušt32_t
+è
+k
+[5] << 8);
+
+631 
+b
+ +ð
+k
+[4];
+
+633 
+a
+ +ð((
+ušt32_t
+è
+k
+[3] << 24);
+
+635 
+a
+ +ð((
+ušt32_t
+è
+k
+[2] << 16);
+
+637 
+a
+ +ð((
+ušt32_t
+è
+k
+[1] << 8);
+
+639 
+a
+ +ð
+k
+[0];
+
+642 
+	`mix
+ (
+a
+, 
+b
+, 
+c
+);
+
+644  
+c
+;
+
+645 
+	}
+}
+
+648 
+	$dummy
+(è{
+	}
+}
+
+	@list.h
+
+25 #iâdeà
+LIST_H
+
+
+26 
+	#LIST_H
+
+
+	)
+
+37 #ià
+P2MP_SERVER
+
+
+42 
+	~"basic.h
+"
+
+43 
+	~"bufãr.h
+"
+
+45 
+	#hashsize
+(
+n
+è((
+ušt32_t
+)1<<Ò))
+
+	)
+
+46 
+	#hashmask
+(
+n
+è(
+	`hashsize
+Ò)-1)
+
+	)
+
+48 
+	shash_–em’t
+
+
+50 *
+	mv®ue
+;
+
+51 cÚ¡ *
+	mkey
+;
+
+52 
+	mhash_v®ue
+;
+
+53 
+hash_–em’t
+ *
+	mÃxt
+;
+
+56 
+	shash_buck‘
+
+
+58 
+hash_–em’t
+ *
+	mli¡
+;
+
+61 
+	shash
+
+
+63 
+	mn_buck‘s
+;
+
+64 
+	mn_–em’ts
+;
+
+65 
+	mmask
+;
+
+66 
+ušt32_t
+ 
+	miv
+;
+
+67 
+ušt32_t
+ (*
+hash_funùiÚ
+)(cÚ¡ *
+	mkey
+, ušt32_ˆ
+	miv
+);
+
+68 
+boÞ
+ (*
+com·»_funùiÚ
+)(cÚ¡ *
+	mkey1
+, cÚ¡ *
+	mkey2
+);
+
+69 
+hash_buck‘
+ *
+	mbuck‘s
+;
+
+72 
+hash
+ *
+hash_š™
+ (cÚ¡ 
+n_buck‘s
+,
+
+73 cÚ¡ 
+ušt32_t
+ 
+iv
+,
+
+74 
+	$ušt32_t
+ (*
+hash_funùiÚ
+)(cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+),
+
+75 
+	$boÞ
+ (*
+com·»_funùiÚ
+)(cÚ¡ *
+key1
+, cÚ¡ *
+key2
+));
+
+77 
+	`hash_ä“
+ (
+hash
+ *hash);
+
+79 
+boÞ
+ 
+	`hash_add
+ (
+hash
+ *hash, cÚ¡ *
+key
+, *
+v®ue
+, boÞ 
+»¶aû
+);
+
+81 
+hash_–em’t
+ *
+	`hash_lookup_ç¡
+ (
+hash
+ *hash,
+
+82 
+hash_buck‘
+ *
+buck‘
+,
+
+83 cÚ¡ *
+key
+,
+
+84 
+ušt32_t
+ 
+hv
+);
+
+86 
+boÞ
+ 
+	`hash_»move_ç¡
+ (
+hash
+ *hash,
+
+87 
+hash_buck‘
+ *
+buck‘
+,
+
+88 cÚ¡ *
+key
+,
+
+89 
+ušt32_t
+ 
+hv
+);
+
+91 
+	`hash_»move_by_v®ue
+ (
+hash
+ *hash, *
+v®ue
+);
+
+93 
+	shash_™”©Ü
+
+
+95 
+hash
+ *hash;
+
+96 
+buck‘_šdex
+;
+
+97 
+hash_buck‘
+ *
+buck‘
+;
+
+98 
+hash_–em’t
+ *
+–em
+;
+
+99 
+hash_–em’t
+ *
+Ï¡
+;
+
+100 
+boÞ
+ 
+buck‘_m¬ked
+;
+
+101 
+buck‘_šdex_¡¬t
+;
+
+102 
+buck‘_šdex_’d
+;
+
+105 
+	`hash_™”©Ü_š™_¿nge
+ (
+hash
+ *hash,
+
+106 
+hash_™”©Ü
+ *
+hi
+,
+
+107 
+¡¬t_buck‘
+,
+
+108 
+’d_buck‘
+);
+
+110 
+	`hash_™”©Ü_š™
+ (
+hash
+ *hash, 
+hash_™”©Ü
+ *
+™”
+);
+
+111 
+hash_–em’t
+ *
+	`hash_™”©Ü_Ãxt
+ (
+hash_™”©Ü
+ *
+hi
+);
+
+112 
+	`hash_™”©Ü_d–‘e_–em’t
+ (
+hash_™”©Ü
+ *
+hi
+);
+
+113 
+	`hash_™”©Ü_ä“
+ (
+hash_™”©Ü
+ *
+hi
+);
+
+115 
+ušt32_t
+ 
+	`hash_func
+ (cÚ¡ 
+ušt8_t
+ *
+k
+, ušt32_ˆ
+Ëngth
+, ušt32_ˆ
+š™v®
+);
+
+117 
+ušt32_t
+ 
+	`void_±r_hash_funùiÚ
+ (cÚ¡ *
+key
+, ušt32_ˆ
+iv
+);
+
+118 
+boÞ
+ 
+	`void_±r_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+);
+
+120 #ifdeà
+LIST_TEST
+
+
+121 
+	`li¡_‹¡
+ ();
+
+124 
+šlše
+ 
+ušt32_t
+
+
+125 
+	$hash_v®ue
+ (cÚ¡ 
+hash
+ *hash, cÚ¡ *
+key
+)
+
+127  (*
+hash
+->
+hash_funùiÚ
+)(
+key
+, hash->
+iv
+);
+
+128 
+	}
+}
+
+130 
+šlše
+ 
+
+131 
+	$hash_n_–em’ts
+ (cÚ¡ 
+hash
+ *hash)
+
+133  
+hash
+->
+n_–em’ts
+;
+
+134 
+	}
+}
+
+136 
+šlše
+ 
+
+137 
+	$hash_n_buck‘s
+ (cÚ¡ 
+hash
+ *hash)
+
+139  
+hash
+->
+n_buck‘s
+;
+
+140 
+	}
+}
+
+142 
+šlše
+ 
+hash_buck‘
+ *
+
+143 
+	$hash_buck‘
+ (
+hash
+ *hash, 
+ušt32_t
+ 
+hv
+)
+
+145  &
+hash
+->
+buck‘s
+[
+hv
+ & hash->
+mask
+];
+
+146 
+	}
+}
+
+148 
+šlše
+ *
+
+149 
+	$hash_lookup
+ (
+hash
+ *hash, cÚ¡ *
+key
+)
+
+151 *
+»t
+ = 
+NULL
+;
+
+152 
+hash_–em’t
+ *
+he
+;
+
+153 
+ušt32_t
+ 
+hv
+ = 
+	`hash_v®ue
+ (
+hash
+, 
+key
+);
+
+154 
+hash_buck‘
+ *
+buck‘
+ = &
+hash
+->
+buck‘s
+[
+hv
+ & hash->
+mask
+];
+
+156 
+he
+ = 
+	`hash_lookup_ç¡
+ (
+hash
+, 
+buck‘
+, 
+key
+, 
+hv
+);
+
+157 ià(
+he
+)
+
+158 
+»t
+ = 
+he
+->
+v®ue
+;
+
+160  
+»t
+;
+
+161 
+	}
+}
+
+164 
+šlše
+ 
+
+165 
+	$hash_add_ç¡
+ (
+hash
+ *hash,
+
+166 
+hash_buck‘
+ *
+buck‘
+,
+
+167 cÚ¡ *
+key
+,
+
+168 
+ušt32_t
+ 
+hv
+,
+
+169 *
+v®ue
+)
+
+171 
+hash_–em’t
+ *
+he
+;
+
+173 
+	`ALLOC_OBJ
+ (
+he
+, 
+hash_–em’t
+);
+
+174 
+he
+->
+v®ue
+ = value;
+
+175 
+he
+->
+key
+ = key;
+
+176 
+he
+->
+hash_v®ue
+ = 
+hv
+;
+
+177 
+he
+->
+Ãxt
+ = 
+buck‘
+->
+li¡
+;
+
+178 
+buck‘
+->
+li¡
+ = 
+he
+;
+
+179 ++
+hash
+->
+n_–em’ts
+;
+
+180 
+	}
+}
+
+182 
+šlše
+ 
+boÞ
+
+
+183 
+	$hash_»move
+ (
+hash
+ *hash, cÚ¡ *
+key
+)
+
+185 
+ušt32_t
+ 
+hv
+;
+
+186 
+hash_buck‘
+ *
+buck‘
+;
+
+187 
+boÞ
+ 
+»t
+;
+
+189 
+hv
+ = 
+	`hash_v®ue
+ (
+hash
+, 
+key
+);
+
+190 
+buck‘
+ = &
+hash
+->
+buck‘s
+[
+hv
+ & hash->
+mask
+];
+
+191 
+»t
+ = 
+	`hash_»move_ç¡
+ (
+hash
+, 
+buck‘
+, 
+key
+, 
+hv
+);
+
+192  
+»t
+;
+
+193 
+	}
+}
+
+	@lladdr.c
+
+5 #ifdeà
+HAVE_CONFIG_H
+
+
+6 
+	~"cÚfig.h
+"
+
+7 #–ià
+defšed
+(
+_MSC_VER
+)
+
+8 
+	~"cÚfig-msvc.h
+"
+
+11 
+	~"sysh—d.h
+"
+
+12 
+	~"”rÜ.h
+"
+
+13 
+	~"misc.h
+"
+
+15 
+	$£t_Îaddr
+(cÚ¡ *
+iâame
+, cÚ¡ *
+Îaddr
+,
+
+16 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+18 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+19 
+r
+;
+
+21 ià(!
+iâame
+ || !
+Îaddr
+)
+
+24 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+25 #ifdeà
+ENABLE_IPROUTE
+
+
+26 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+28 
+�rou‹_·th
+, 
+Îaddr
+, 
+iâame
+);
+
+30 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+32 
+IFCONFIG_PATH
+,
+
+33 
+iâame
+, 
+Îaddr
+);
+
+35 #–ià
+	`defšed
+(
+TARGET_SOLARIS
+)
+
+36 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+38 
+IFCONFIG_PATH
+,
+
+39 
+iâame
+, 
+Îaddr
+);
+
+40 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+41 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+43 
+IFCONFIG_PATH
+,
+
+44 
+iâame
+, 
+Îaddr
+);
+
+45 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+46 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+48 
+IFCONFIG_PATH
+,
+
+49 
+iâame
+, 
+Îaddr
+);
+
+50 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+)
+
+51 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+53 
+IFCONFIG_PATH
+,
+
+54 
+iâame
+, 
+Îaddr
+);
+
+56 
+	`msg
+ (
+M_WARN
+, "Sorry, but I don't know how�o configure†ink†ayer‡ddresses on�his operating system.");
+
+60 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+61 
+r
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+M_WARN
+, "ERROR: Unable�o set†ink†ayer‡ddress.");
+
+62 ià(
+r
+)
+
+63 
+	`msg
+ (
+M_INFO
+, "TUN/TAP†šk†ay”‡dd»s £ˆtØ%s", 
+Îaddr
+);
+
+65 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+66  
+r
+;
+
+67 
+	}
+}
+
+	@lladdr.h
+
+5 
+	~"misc.h
+"
+
+7 
+£t_Îaddr
+(cÚ¡ *
+iâame
+, cÚ¡ *
+Îaddr
+,
+
+8 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+	@lzo.c
+
+29 #ifdeà
+HAVE_CONFIG_H
+
+
+30 
+	~"cÚfig.h
+"
+
+31 #–ià
+defšed
+(
+_MSC_VER
+)
+
+32 
+	~"cÚfig-msvc.h
+"
+
+35 
+	~"sysh—d.h
+"
+
+37 #ifdeà
+ENABLE_LZO
+
+
+39 
+	~"lzo.h
+"
+
+40 
+	~"”rÜ.h
+"
+
+41 
+	~"Ùime.h
+"
+
+43 
+	~"memdbg.h
+"
+
+45 #iâdeà
+ENABLE_LZO_STUB
+
+
+53 
+boÞ
+
+
+54 
+	$lzo_ad­tive_com´ess_‹¡
+ (
+lzo_ad­tive_com´ess
+ *
+ac
+)
+
+56 cÚ¡ 
+boÞ
+ 
+§ve
+ = 
+ac
+->
+com´ess_¡©e
+;
+
+57 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+59 ià(!
+ac
+->
+com´ess_¡©e
+)
+
+61 ià(
+loÿl_now
+ >ð
+ac
+->
+Ãxt
+)
+
+63 ià(
+ac
+->
+n_tÙ®
+ > 
+AC_MIN_BYTES
+
+
+64 && (
+ac
+->
+n_tÙ®
+ -‡c->
+n_comp
+è< (ac->n_tÙ® / (100 / 
+AC_SAVE_PCT
+)))
+
+66 
+ac
+->
+com´ess_¡©e
+ = 
+Œue
+;
+
+67 
+ac
+->
+Ãxt
+ = 
+loÿl_now
+ + 
+AC_OFF_SEC
+;
+
+71 
+ac
+->
+Ãxt
+ = 
+loÿl_now
+ + 
+AC_SAMP_SEC
+;
+
+73 
+	`dmsg
+ (
+D_COMP
+, "lzo_ad­tive_com´ess_‹¡: comp=%d�Ù®=%d", 
+ac
+->
+n_comp
+,‡c->
+n_tÙ®
+);
+
+74 
+ac
+->
+n_tÙ®
+ =‡c->
+n_comp
+ = 0;
+
+79 ià(
+loÿl_now
+ >ð
+ac
+->
+Ãxt
+)
+
+81 
+ac
+->
+Ãxt
+ = 
+loÿl_now
+ + 
+AC_SAMP_SEC
+;
+
+82 
+ac
+->
+n_tÙ®
+ =‡c->
+n_comp
+ = 0;
+
+83 
+ac
+->
+com´ess_¡©e
+ = 
+çl£
+;
+
+87 ià(
+ac
+->
+com´ess_¡©e
+ !ð
+§ve
+)
+
+88 
+	`dmsg
+ (
+D_COMP_LOW
+, "Ad­tiv�com´essiÚ s�‹ %s", (
+ac
+->
+com´ess_¡©e
+ ? "OFF" : "ON"));
+
+90  !
+ac
+->
+com´ess_¡©e
+;
+
+91 
+	}
+}
+
+93 
+šlše
+ 
+
+94 
+	$lzo_ad­tive_com´ess_d©a
+ (
+lzo_ad­tive_com´ess
+ *
+ac
+, 
+n_tÙ®
+, 
+n_comp
+)
+
+96 
+ac
+->
+n_tÙ®
+ +=‚_total;
+
+97 
+ac
+->
+n_comp
+ +=‚_comp;
+
+98 
+	}
+}
+
+102 
+	$lzo_adju¡_äame_·¿m‘”s
+ (
+äame
+ *frame)
+
+105 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, 
+LZO_PREFIX_LEN
+);
+
+109 
+	`äame_add_to_exŒa_bufãr
+ (
+äame
+, 
+	`LZO_EXTRA_BUFFER
+ (
+	`EXPANDED_SIZE
+(frame)));
+
+110 
+	}
+}
+
+113 
+	$lzo_com´ess_š™
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+, 
+æags
+)
+
+115 
+	`CLEAR
+ (*
+lzowÜk
+);
+
+117 
+lzowÜk
+->
+æags
+ = flags;
+
+118 #iâdeà
+ENABLE_LZO_STUB
+
+
+119 
+lzowÜk
+->
+wmem_size
+ = 
+LZO_WORKSPACE
+;
+
+121 ià(
+	`lzo_š™
+ (è!ð
+LZO_E_OK
+)
+
+122 
+	`msg
+ (
+M_FATAL
+, "Cannot initialize LZO compression†ibrary");
+
+123 
+lzowÜk
+->
+wmem
+ = (
+lzo_voidp
+è
+	`lzo_m®loc
+ (lzowÜk->
+wmem_size
+);
+
+124 
+	`check_m®loc_»tuº
+ (
+lzowÜk
+->
+wmem
+);
+
+125 
+	`msg
+ (
+D_INIT_MEDIUM
+, "LZO compression initialized");
+
+127 
+	`msg
+ (
+D_INIT_MEDIUM
+, "LZO stub compression initialized");
+
+129 
+lzowÜk
+->
+defšed
+ = 
+Œue
+;
+
+130 
+	}
+}
+
+133 
+	$lzo_com´ess_unš™
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+)
+
+135 ià(
+lzowÜk
+)
+
+137 
+	`ASSERT
+ (
+lzowÜk
+->
+defšed
+);
+
+138 #iâdeà
+ENABLE_LZO_STUB
+
+
+139 
+	`lzo_ä“
+ (
+lzowÜk
+->
+wmem
+);
+
+140 
+lzowÜk
+->
+wmem
+ = 
+NULL
+;
+
+142 
+lzowÜk
+->
+defšed
+ = 
+çl£
+;
+
+144 
+	}
+}
+
+146 
+šlše
+ 
+boÞ
+
+
+147 
+	$lzo_com´essiÚ_’abËd
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+)
+
+149 #iâdeà
+ENABLE_LZO_STUB
+
+
+150 ià((
+lzowÜk
+->
+æags
+ & (
+LZO_SELECTED
+|
+LZO_ON
+)) == (LZO_SELECTED|LZO_ON))
+
+152 ià(
+lzowÜk
+->
+æags
+ & 
+LZO_ADAPTIVE
+)
+
+153  
+	`lzo_ad­tive_com´ess_‹¡
+ (&
+lzowÜk
+->
+ac
+);
+
+155  
+Œue
+;
+
+158  
+çl£
+;
+
+159 
+	}
+}
+
+162 
+	$lzo_com´ess
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+163 
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+,
+
+164 cÚ¡ 
+äame
+* frame)
+
+166 #iâdeà
+ENABLE_LZO_STUB
+
+
+167 
+lzo_ušt
+ 
+zËn
+ = 0;
+
+168 
+”r
+;
+
+169 
+boÞ
+ 
+com´es£d
+ = 
+çl£
+;
+
+172 
+	`ASSERT
+ (
+lzowÜk
+->
+defšed
+);
+
+174 ià(
+buf
+->
+Ën
+ <= 0)
+
+177 #iâdeà
+ENABLE_LZO_STUB
+
+
+182 ià(
+buf
+->
+Ën
+ >ð
+COMPRESS_THRESHOLD
+ && 
+	`lzo_com´essiÚ_’abËd
+ (
+lzowÜk
+))
+
+184 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+wÜk
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+185 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+wÜk
+, 
+	`LZO_EXTRA_BUFFER
+ (
+	`PAYLOAD_SIZE
+ (
+äame
+))));
+
+187 ià(!(
+buf
+->
+Ën
+ <ð
+	`PAYLOAD_SIZE
+ (
+äame
+)))
+
+189 
+	`dmsg
+ (
+D_COMP_ERRORS
+, "LZO compression buffer overflow");
+
+190 
+buf
+->
+Ën
+ = 0;
+
+194 
+”r
+ = 
+	`LZO_COMPRESS
+ (
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf), BPTR (&
+wÜk
+), &
+zËn
+, 
+lzowÜk
+->
+wmem
+);
+
+195 ià(
+”r
+ !ð
+LZO_E_OK
+)
+
+197 
+	`dmsg
+ (
+D_COMP_ERRORS
+, "LZO com´essiÚƒ¼Ü: %d", 
+”r
+);
+
+198 
+buf
+->
+Ën
+ = 0;
+
+202 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+wÜk
+, 
+zËn
+));
+
+203 
+wÜk
+.
+Ën
+ = 
+zËn
+;
+
+204 
+com´es£d
+ = 
+Œue
+;
+
+206 
+	`dmsg
+ (
+D_COMP
+, "com´es %d -> %d", 
+buf
+->
+Ën
+, 
+wÜk
+.len);
+
+207 
+lzowÜk
+->
+´e_com´ess
+ +ð
+buf
+->
+Ën
+;
+
+208 
+lzowÜk
+->
+po¡_com´ess
+ +ð
+wÜk
+.
+Ën
+;
+
+211 ià(
+lzowÜk
+->
+æags
+ & 
+LZO_ADAPTIVE
+)
+
+212 
+	`lzo_ad­tive_com´ess_d©a
+ (&
+lzowÜk
+->
+ac
+, 
+buf
+->
+Ën
+, 
+wÜk
+.len);
+
+216 ià(
+com´es£d
+ && 
+wÜk
+.
+Ën
+ < 
+buf
+->len)
+
+218 
+ušt8_t
+ *
+h—d”
+ = 
+	`buf_´•’d
+ (&
+wÜk
+, 1);
+
+219 *
+h—d”
+ = 
+YES_COMPRESS
+;
+
+220 *
+buf
+ = 
+wÜk
+;
+
+225 
+ušt8_t
+ *
+h—d”
+ = 
+	`buf_´•’d
+ (
+buf
+, 1);
+
+226 *
+h—d”
+ = 
+NO_COMPRESS
+;
+
+228 
+	}
+}
+
+231 
+	$lzo_decom´ess
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+232 
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+,
+
+233 cÚ¡ 
+äame
+* frame)
+
+235 #iâdeà
+ENABLE_LZO_STUB
+
+
+236 
+lzo_ušt
+ 
+zËn
+ = 
+	`EXPANDED_SIZE
+ (
+äame
+);
+
+237 
+”r
+;
+
+239 
+ušt8_t
+ 
+c
+;
+
+241 
+	`ASSERT
+ (
+lzowÜk
+->
+defšed
+);
+
+243 ià(
+buf
+->
+Ën
+ <= 0)
+
+246 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+wÜk
+, 
+	`FRAME_HEADROOM
+ (
+äame
+)));
+
+248 
+c
+ = *
+	`BPTR
+ (
+buf
+);
+
+249 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 1));
+
+251 ià(
+c
+ =ð
+YES_COMPRESS
+)
+
+253 #iâdeà
+ENABLE_LZO_STUB
+
+
+254 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+wÜk
+, 
+zËn
+));
+
+255 
+”r
+ = 
+	`LZO_DECOMPRESS
+ (
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf), BPTR (&
+wÜk
+), &
+zËn
+,
+
+256 
+lzowÜk
+->
+wmem
+);
+
+257 ià(
+”r
+ !ð
+LZO_E_OK
+)
+
+259 
+	`dmsg
+ (
+D_COMP_ERRORS
+, "LZO decom´essiÚƒ¼Ü: %d", 
+”r
+);
+
+260 
+buf
+->
+Ën
+ = 0;
+
+264 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+wÜk
+, 
+zËn
+));
+
+265 
+wÜk
+.
+Ën
+ = 
+zËn
+;
+
+267 
+	`dmsg
+ (
+D_COMP
+, "decom´es %d -> %d", 
+buf
+->
+Ën
+, 
+wÜk
+.len);
+
+268 
+lzowÜk
+->
+´e_decom´ess
+ +ð
+buf
+->
+Ën
+;
+
+269 
+lzowÜk
+->
+po¡_decom´ess
+ +ð
+wÜk
+.
+Ën
+;
+
+271 *
+buf
+ = 
+wÜk
+;
+
+273 
+	`dmsg
+ (
+D_COMP_ERRORS
+, "LZO decompressionƒrror: LZO capability‚ot compiled");
+
+274 
+buf
+->
+Ën
+ = 0;
+
+278 ià(
+c
+ =ð
+NO_COMPRESS
+)
+
+284 
+	`dmsg
+ (
+D_COMP_ERRORS
+, "Bad LZO decom´essiÚ h—d” by‹: %d", 
+c
+);
+
+285 
+buf
+->
+Ën
+ = 0;
+
+287 
+	}
+}
+
+290 
+	$lzo_modify_æags
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+, 
+æags
+)
+
+292 
+	`ASSERT
+ (
+lzowÜk
+->
+defšed
+);
+
+293 
+lzowÜk
+->
+æags
+ = flags;
+
+294 
+	}
+}
+
+296 
+	$lzo_´št_¡©s
+ (cÚ¡ 
+lzo_com´ess_wÜk¥aû
+ *
+lzo_compwÜk
+, 
+¡©us_ou�ut
+ *
+so
+)
+
+298 
+	`ASSERT
+ (
+lzo_compwÜk
+->
+defšed
+);
+
+300 #iâdeà
+ENABLE_LZO_STUB
+
+
+301 
+	`¡©us_´štf
+ (
+so
+, "´e-com´es by‹s," 
+couÁ”_fÜm©
+, 
+lzo_compwÜk
+->
+´e_com´ess
+);
+
+302 
+	`¡©us_´štf
+ (
+so
+, "po¡-com´es by‹s," 
+couÁ”_fÜm©
+, 
+lzo_compwÜk
+->
+po¡_com´ess
+);
+
+303 
+	`¡©us_´štf
+ (
+so
+, "´e-decom´es by‹s," 
+couÁ”_fÜm©
+, 
+lzo_compwÜk
+->
+´e_decom´ess
+);
+
+304 
+	`¡©us_´štf
+ (
+so
+, "po¡-decom´es by‹s," 
+couÁ”_fÜm©
+, 
+lzo_compwÜk
+->
+po¡_decom´ess
+);
+
+306 
+	}
+}
+
+309 
+	$dummy
+(è{
+	}
+}
+
+	@lzo.h
+
+25 #iâdeà
+OPENVPN_LZO_H
+
+
+26 
+	#OPENVPN_LZO_H
+
+
+	)
+
+35 #ifdeà
+ENABLE_LZO
+
+
+42 #iâdeà
+ENABLE_LZO_STUB
+
+
+43 #ià
+defšed
+(
+HAVE_LZO_LZOUTIL_H
+)
+
+44 
+	~"lzo/lzoutž.h
+"
+
+45 #–ià
+defšed
+(
+HAVE_LZOUTIL_H
+)
+
+46 
+	~"lzoutž.h
+"
+
+48 #ià
+defšed
+(
+HAVE_LZO_LZO1X_H
+)
+
+49 
+	~"lzo/lzo1x.h
+"
+
+50 #–ià
+defšed
+(
+HAVE_LZO1X_H
+)
+
+51 
+	~"lzo1x.h
+"
+
+55 
+	~"bufãr.h
+"
+
+56 
+	~"mtu.h
+"
+
+57 
+	~"commÚ.h
+"
+
+58 
+	~"¡©us.h
+"
+
+63 
+	#LZO_SELECTED
+ (1<<0è
+
+	)
+
+65 
+	#LZO_ON
+ (1<<1è
+
+	)
+
+67 
+	#LZO_ADAPTIVE
+ (1<<2è
+
+	)
+
+74 #iâdeà
+ENABLE_LZO_STUB
+
+
+75 
+	#LZO_COMPRESS
+ 
+lzo1x_1_15_com´ess
+
+
+	)
+
+82 
+	#LZO_WORKSPACE
+ 
+LZO1X_1_15_MEM_COMPRESS
+
+
+	)
+
+86 
+	#LZO_DECOMPRESS
+ 
+lzo1x_decom´ess_§ã
+
+
+	)
+
+102 
+	#LZO_EXTRA_BUFFER
+(
+Ën
+è(Ö’)/8 + 128 + 3)
+
+	)
+
+104 #iâdeà
+ENABLE_LZO_STUB
+
+
+105 
+	#COMPRESS_THRESHOLD
+ 100
+
+	)
+
+113 
+	#LZO_PREFIX_LEN
+ 1
+
+	)
+
+115 
+	#YES_COMPRESS
+ 0x66
+
+	)
+
+118 
+	#NO_COMPRESS
+ 0xFA
+
+	)
+
+125 #iâdeà
+ENABLE_LZO_STUB
+
+
+126 
+	#AC_SAMP_SEC
+ 2
+
+	)
+
+127 
+	#AC_MIN_BYTES
+ 1000
+
+	)
+
+130 
+	#AC_SAVE_PCT
+ 5
+
+	)
+
+133 
+	#AC_OFF_SEC
+ 60
+
+	)
+
+138 #iâdeà
+ENABLE_LZO_STUB
+
+
+143 
+	slzo_ad­tive_com´ess
+ {
+
+144 
+boÞ
+ 
+	mcom´ess_¡©e
+;
+
+145 
+time_t
+ 
+	mÃxt
+;
+
+146 
+	mn_tÙ®
+;
+
+147 
+	mn_comp
+;
+
+163 
+	slzo_com´ess_wÜk¥aû
+
+
+165 
+boÞ
+ 
+	mdefšed
+;
+
+166 
+	mæags
+;
+
+167 #iâdeà
+ENABLE_LZO_STUB
+
+
+168 
+lzo_voidp
+ 
+	mwmem
+;
+
+169 
+	mwmem_size
+;
+
+170 
+lzo_ad­tive_com´ess
+ 
+	mac
+;
+
+173 
+couÁ”_ty³
+ 
+	m´e_decom´ess
+;
+
+174 
+couÁ”_ty³
+ 
+	mpo¡_decom´ess
+;
+
+175 
+couÁ”_ty³
+ 
+	m´e_com´ess
+;
+
+176 
+couÁ”_ty³
+ 
+	mpo¡_com´ess
+;
+
+197 
+lzo_adju¡_äame_·¿m‘”s
+(
+äame
+ *frame);
+
+213 
+lzo_com´ess_š™
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+, 
+æags
+);
+
+223 
+lzo_com´ess_unš™
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+);
+
+233 
+lzo_modify_æags
+ (
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+, 
+æags
+);
+
+271 
+lzo_com´ess
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+272 
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+,
+
+273 cÚ¡ 
+äame
+* frame);
+
+307 
+lzo_decom´ess
+ (
+bufãr
+ *
+buf
+, bufã¸
+wÜk
+,
+
+308 
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+,
+
+309 cÚ¡ 
+äame
+* frame);
+
+325 
+lzo_´št_¡©s
+ (cÚ¡ 
+lzo_com´ess_wÜk¥aû
+ *
+lzo_compwÜk
+, 
+¡©us_ou�ut
+ *
+so
+);
+
+334 
+šlše
+ 
+boÞ
+
+
+335 
+	$lzo_defšed
+ (cÚ¡ 
+lzo_com´ess_wÜk¥aû
+ *
+lzowÜk
+)
+
+337  
+lzowÜk
+->
+defšed
+;
+
+338 
+	}
+}
+
+	@manage.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ifdeà
+ENABLE_MANAGEMENT
+
+
+35 
+	~"”rÜ.h
+"
+
+36 
+	~"fdmisc.h
+"
+
+37 
+	~"ÝtiÚs.h
+"
+
+38 
+	~"sig.h
+"
+
+39 
+	~"ev’t.h
+"
+
+40 
+	~"Ùime.h
+"
+
+41 
+	~"š‹g”.h
+"
+
+42 
+	~"misc.h
+"
+
+43 
+	~"s¦.h
+"
+
+44 
+	~"commÚ.h
+"
+
+45 
+	~"mªage.h
+"
+
+47 
+	~"memdbg.h
+"
+
+49 #ifdeà
+ENABLE_PKCS11
+
+
+50 
+	~"pkcs11.h
+"
+
+53 
+	#MANAGEMENT_ECHO_PULL_INFO
+ 0
+
+	)
+
+55 #ià
+MANAGEMENT_ECHO_PULL_INFO
+
+
+56 
+	#MANAGEMENT_ECHO_FLAGS
+ 
+LOG_PRINT_INTVAL
+
+
+	)
+
+58 
+	#MANAGEMENT_ECHO_FLAGS
+ 0
+
+	)
+
+62 cÚ¡ 
+	gbÏnk_up
+[] = "[[BLANK]]";
+
+64 
+mªagem’t
+ *
+	gmªagem’t
+;
+
+67 
+mª_ou�ut_¡ªd®Úe
+ (
+mªagem’t
+ *
+mª
+, vÞ©ž�*
+sigÇl_»ûived
+);
+
+68 
+mª_»£t_þ›Á_sock‘
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+boÞ
+ 
+ex™šg
+);
+
+71 
+	$mª_h–p
+ ()
+
+73 
+	`msg
+ (
+M_CLIENT
+, "Mªagem’ˆIÁ”çû fÜ %s", 
+t™Ë_¡ršg
+);
+
+74 
+	`msg
+ (
+M_CLIENT
+, "Commands:");
+
+75 
+	`msg
+ (
+M_CLIENT
+, "auth-retry� : Auth failure„etry mode (none,interact,nointeract).");
+
+76 
+	`msg
+ (
+M_CLIENT
+, "bytecount‚ : Show bytes in/out, updateƒvery‚ secs (0=off).");
+
+77 
+	`msg
+ (
+M_CLIENT
+, "echo [on|off] [N|all] : Like†og, but only show messages inƒcho buffer.");
+
+78 
+	`msg
+ (
+M_CLIENT
+, "exit|quit : Close management session.");
+
+79 
+	`msg
+ (
+M_CLIENT
+, "forget-passwords : Forget…asswordsƒntered so far.");
+
+80 
+	`msg
+ (
+M_CLIENT
+, "help : Print�his message.");
+
+81 
+	`msg
+ (
+M_CLIENT
+, "hold [on|off|release] : Set/show hold flag�o on/off state, or");
+
+82 
+	`msg
+ (
+M_CLIENT
+, "„elease current hold‡nd start�unnel.");
+
+83 
+	`msg
+ (
+M_CLIENT
+, "kill cn : Kill�he client instance(s) having common‚ame cn.");
+
+84 
+	`msg
+ (
+M_CLIENT
+, "kill IP:port : Kill�he client instance connecting from IP:port.");
+
+85 
+	`msg
+ (
+M_CLIENT
+, "load-stats : Show global server†oad stats.");
+
+86 
+	`msg
+ (
+M_CLIENT
+, "log [on|off] [N|all] : Turn on/off„ealtime†og display");
+
+87 
+	`msg
+ (
+M_CLIENT
+, " + show†ast N†ines or 'all' forƒntire history.");
+
+88 
+	`msg
+ (
+M_CLIENT
+, "mute [n] : Set†og mute†evel�o‚, or show†evel if‚ is‡bsent.");
+
+89 
+	`msg
+ (
+M_CLIENT
+, "needok�ype‡ction : Enter confirmation for NEED-OK„equest of 'type',");
+
+90 
+	`msg
+ (
+M_CLIENT
+, " where‡ction = 'ok' or 'cancel'.");
+
+91 
+	`msg
+ (
+M_CLIENT
+, "needstr�ype‡ction : Enter confirmation for NEED-STR„equest of 'type',");
+
+92 
+	`msg
+ (
+M_CLIENT
+, " where‡ction is„eply string.");
+
+93 
+	`msg
+ (
+M_CLIENT
+, "net : (Windows only) Show‚etwork info‡nd„outing�able.");
+
+94 
+	`msg
+ (
+M_CLIENT
+, "password�ype… : Enter…assword… for‡ queried OpenVPN…assword.");
+
+95 
+	`msg
+ (
+M_CLIENT
+, "remote�ype [host…ort] : Override„emote directive,�ype=ACCEPT|MOD|SKIP.");
+
+96 
+	`msg
+ (
+M_CLIENT
+, "proxy�ype [host…ort flags] : Enter dynamic…roxy server info.");
+
+97 
+	`msg
+ (
+M_CLIENT
+, "pid : Show…rocess ID of�he current OpenVPN…rocess.");
+
+98 #ifdeà
+ENABLE_PKCS11
+
+
+99 
+	`msg
+ (
+M_CLIENT
+, "pkcs11-id-count : Get‚umber of‡vailable PKCS#11 identities.");
+
+100 
+	`msg
+ (
+M_CLIENT
+, "pkcs11-id-get index : Get PKCS#11 identity‡t index.");
+
+102 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+103 
+	`msg
+ (
+M_CLIENT
+, "client-auth CID KID : Authenticate client-id/key-id CID/KID (MULTILINE)");
+
+104 
+	`msg
+ (
+M_CLIENT
+, "client-auth-nt CID KID : Authenticate client-id/key-id CID/KID");
+
+105 
+	`msg
+ (
+M_CLIENT
+, "client-deny CID KID R [CR] : Deny‡uth client-id/key-id CID/KID with†og„eason");
+
+106 
+	`msg
+ (
+M_CLIENT
+, "�ext R‡nd optional client„eason�ext CR");
+
+107 
+	`msg
+ (
+M_CLIENT
+, "client-kill CID [M] : Kill client instance CID with message M (def=RESTART)");
+
+108 
+	`msg
+ (
+M_CLIENT
+, "env-filter [level] : Setƒnv-var filter†evel");
+
+109 #ifdeà
+MANAGEMENT_PF
+
+
+110 
+	`msg
+ (
+M_CLIENT
+, "client-pf CID : Define…acket filter for client CID (MULTILINE)");
+
+113 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+114 
+	`msg
+ (
+M_CLIENT
+, "rsa-sig : Enter‡n RSA signature in„esponse�o >RSA_SIGN challenge");
+
+115 
+	`msg
+ (
+M_CLIENT
+, " Enter signature base64 on subsequent†ines followed by END");
+
+117 
+	`msg
+ (
+M_CLIENT
+, "signal s : Send signal s�o daemon,");
+
+118 
+	`msg
+ (
+M_CLIENT
+, " s = SIGHUP|SIGTERM|SIGUSR1|SIGUSR2.");
+
+119 
+	`msg
+ (
+M_CLIENT
+, "state [on|off] [N|all] : Like†og, but show state history.");
+
+120 
+	`msg
+ (
+M_CLIENT
+, "status [n] : Show current daemon status info using format #n.");
+
+121 
+	`msg
+ (
+M_CLIENT
+, "test‚ : Produce‚†ines of output for�esting/debugging.");
+
+122 
+	`msg
+ (
+M_CLIENT
+, "username�ype u : Enter username u for‡ queried OpenVPN username.");
+
+123 
+	`msg
+ (
+M_CLIENT
+, "verb [n] : Set†og verbosity†evel�o‚, or show if‚ is‡bsent.");
+
+124 
+	`msg
+ (
+M_CLIENT
+, "version : Show current version‚umber.");
+
+125 
+	`msg
+ (
+M_CLIENT
+, "END");
+
+126 
+	}
+}
+
+129 
+	$mª_¡©e_Çme
+ (cÚ¡ 
+¡©e
+)
+
+131 
+¡©e
+)
+
+133 
+OPENVPN_STATE_INITIAL
+:
+
+135 
+OPENVPN_STATE_CONNECTING
+:
+
+137 
+OPENVPN_STATE_WAIT
+:
+
+139 
+OPENVPN_STATE_AUTH
+:
+
+141 
+OPENVPN_STATE_GET_CONFIG
+:
+
+143 
+OPENVPN_STATE_ASSIGN_IP
+:
+
+145 
+OPENVPN_STATE_ADD_ROUTES
+:
+
+147 
+OPENVPN_STATE_CONNECTED
+:
+
+149 
+OPENVPN_STATE_RECONNECTING
+:
+
+151 
+OPENVPN_STATE_EXITING
+:
+
+153 
+OPENVPN_STATE_RESOLVE
+:
+
+155 
+OPENVPN_STATE_TCP_CONNECT
+:
+
+160 
+	}
+}
+
+163 
+	$mª_w–come
+ (
+mªagem’t
+ *
+mª
+)
+
+165 
+	`msg
+ (
+M_CLIENT
+, ">INFO:OpenVPN Management Interface Version %d --�ype 'help' for more info",
+
+166 
+MANAGEMENT_VERSION
+);
+
+167 ià(
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+)
+
+168 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+);
+
+169 
+	}
+}
+
+171 
+šlše
+ 
+boÞ
+
+
+172 
+	$mª_·sswÜd_Ãeded
+ (
+mªagem’t
+ *
+mª
+)
+
+174  
+mª
+->
+£‰šgs
+.
+up
+.
+defšed
+ && !mª->
+cÚÃùiÚ
+.
+·sswÜd_v”if›d
+;
+
+175 
+	}
+}
+
+178 
+	$mª_check_·sswÜd
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+lše
+)
+
+180 ià(
+	`mª_·sswÜd_Ãeded
+ (
+mª
+))
+
+182 ià(
+	`¡»q
+ (
+lše
+, 
+mª
+->
+£‰šgs
+.
+up
+.
+·sswÜd
+))
+
+184 
+mª
+->
+cÚÃùiÚ
+.
+·sswÜd_v”if›d
+ = 
+Œue
+;
+
+185 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:…assword is correct");
+
+186 
+	`mª_w–come
+ (
+mª
+);
+
+190 
+mª
+->
+cÚÃùiÚ
+.
+·sswÜd_v”if›d
+ = 
+çl£
+;
+
+191 
+	`msg
+ (
+M_CLIENT
+, "ERROR: bad…assword");
+
+192 ià(++
+mª
+->
+cÚÃùiÚ
+.
+·sswÜd_Œ›s
+ >ð
+MANAGEMENT_N_PASSWORD_RETRIES
+)
+
+194 
+	`msg
+ (
+M_WARN
+, "MAN: client connection„ejected‡fter %d failed…assword‡ttempts",
+
+195 
+MANAGEMENT_N_PASSWORD_RETRIES
+);
+
+196 
+mª
+->
+cÚÃùiÚ
+.
+h®t
+ = 
+Œue
+;
+
+200 
+	}
+}
+
+203 
+	$mª_upd©e_io_¡©e
+ (
+mªagem’t
+ *
+mª
+)
+
+205 ià(
+	`sock‘_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+207 ià(
+	`bufãr_li¡_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+))
+
+209 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_CC_WAIT_WRITE
+;
+
+213 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_CC_WAIT_READ
+;
+
+216 
+	}
+}
+
+219 
+	$mª_ou�ut_li¡_push_fš®ize
+ (
+mªagem’t
+ *
+mª
+)
+
+221 ià(
+	`mªagem’t_cÚÃùed
+ (
+mª
+))
+
+223 
+	`mª_upd©e_io_¡©e
+ (
+mª
+);
+
+224 ià(!
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+)
+
+226 vÞ©ž�
+sigÇl_»ûived
+ = 0;
+
+227 
+	`mª_ou�ut_¡ªd®Úe
+ (
+mª
+, &
+sigÇl_»ûived
+);
+
+230 
+	}
+}
+
+233 
+	$mª_ou�ut_li¡_push_¡r
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡r
+)
+
+235 ià(
+	`mªagem’t_cÚÃùed
+ (
+mª
+è&& 
+¡r
+)
+
+237 
+	`bufãr_li¡_push
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+, (cÚ¡ *è
+¡r
+);
+
+239 
+	}
+}
+
+242 
+	$mª_ou�ut_li¡_push
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡r
+)
+
+244 
+	`mª_ou�ut_li¡_push_¡r
+ (
+mª
+, 
+¡r
+);
+
+245 
+	`mª_ou�ut_li¡_push_fš®ize
+ (
+mª
+);
+
+246 
+	}
+}
+
+249 
+	$mª_´om±
+ (
+mªagem’t
+ *
+mª
+)
+
+251 ià(
+	`mª_·sswÜd_Ãeded
+ (
+mª
+))
+
+252 
+	`mª_ou�ut_li¡_push
+ (
+mª
+, "ENTER PASSWORD:");
+
+255 
+	`mª_ou�ut_li¡_push
+ (
+mª
+, ">");
+
+257 
+	}
+}
+
+260 
+	$mª_d–‘e_unix_sock‘
+ (
+mªagem’t
+ *
+mª
+)
+
+262 #ià
+UNIX_SOCK_SUPPORT
+
+
+263 ià((
+mª
+->
+£‰šgs
+.
+æags
+ & (
+MF_UNIX_SOCK
+|
+MF_CONNECT_AS_CLIENT
+)) == MF_UNIX_SOCK)
+
+264 
+	`sock‘_d–‘e_unix
+ (&
+mª
+->
+£‰šgs
+.
+loÿl_unix
+);
+
+266 
+	}
+}
+
+269 
+	$mª_þo£_sock‘
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+271 #iâdeà
+WIN32
+
+
+276 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+d–‘e_ev’t
+)
+
+277 (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+d–‘e_ev’t
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+sd
+);
+
+279 
+	`Ý’v²_þo£_sock‘
+ (
+sd
+);
+
+280 
+	}
+}
+
+283 
+	$vœtu®_ou�ut_ÿÎback_func
+ (*
+¬g
+, cÚ¡ 
+æags
+, cÚ¡ *
+¡r
+)
+
+285 
+mªagem’t
+ *
+mª
+ = (mªagem’ˆ*è
+¬g
+;
+
+286 
+»cursive_Ëv–
+ = 0;
+
+288 
+	#AF_DID_PUSH
+ (1<<0)
+
+	)
+
+289 
+	#AF_DID_RESET
+ (1<<1)
+
+	)
+
+291 ià(!
+»cursive_Ëv–
+)
+
+293 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+294 
+log_’Œy
+ 
+e
+;
+
+295 cÚ¡ *
+out
+ = 
+NULL
+;
+
+296 
+aùiÚ_æags
+ = 0;
+
+298 ++
+»cursive_Ëv–
+;
+
+300 
+	`CLEAR
+ (
+e
+);
+
+301 
+	`upd©e_time
+ ();
+
+302 
+e
+.
+time¡amp
+ = 
+now
+;
+
+303 
+e
+.
+u
+.
+msg_æags
+ = 
+æags
+;
+
+304 
+e
+.
+¡ršg
+ = 
+¡r
+;
+
+306 ià(
+æags
+ & 
+M_FATAL
+)
+
+307 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+309 ià(
+æags
+ !ð
+M_CLIENT
+)
+
+310 
+	`log_hi¡Üy_add
+ (
+mª
+->
+³rsi¡
+.
+log
+, &
+e
+);
+
+312 ià(!
+	`mª_·sswÜd_Ãeded
+ (
+mª
+))
+
+314 ià(
+æags
+ =ð
+M_CLIENT
+)
+
+315 
+out
+ = 
+	`log_’Œy_´št
+ (&
+e
+, 
+LOG_PRINT_CRLF
+, &
+gc
+);
+
+316 ià(
+mª
+->
+cÚÃùiÚ
+.
+log_»®time
+)
+
+317 
+out
+ = 
+	`log_’Œy_´št
+ (&
+e
+, 
+LOG_PRINT_INT_DATE
+
+
+318 | 
+LOG_PRINT_MSG_FLAGS
+
+
+319 | 
+LOG_PRINT_LOG_PREFIX
+
+
+320 | 
+LOG_PRINT_CRLF
+, &
+gc
+);
+
+321 ià(
+out
+)
+
+323 
+	`mª_ou�ut_li¡_push_¡r
+ (
+mª
+, 
+out
+);
+
+324 
+aùiÚ_æags
+ |ð
+AF_DID_PUSH
+;
+
+326 ià(
+æags
+ & 
+M_FATAL
+)
+
+328 
+out
+ = 
+	`log_’Œy_´št
+ (&
+e
+, 
+LOG_FATAL_NOTIFY
+|
+LOG_PRINT_CRLF
+, &
+gc
+);
+
+329 ià(
+out
+)
+
+331 
+	`mª_ou�ut_li¡_push_¡r
+ (
+mª
+, 
+out
+);
+
+332 
+aùiÚ_æags
+ |ð(
+AF_DID_PUSH
+|
+AF_DID_RESET
+);
+
+337 
+	`gc_ä“
+ (&
+gc
+);
+
+339 ià(
+aùiÚ_æags
+ & 
+AF_DID_PUSH
+)
+
+340 
+	`mª_ou�ut_li¡_push_fš®ize
+ (
+mª
+);
+
+341 ià(
+aùiÚ_æags
+ & 
+AF_DID_RESET
+)
+
+342 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+Œue
+);
+
+344 --
+»cursive_Ëv–
+;
+
+346 
+	}
+}
+
+353 
+	$mª_mod_sigÇl
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+, cÚ¡ 
+signum
+)
+
+355 cÚ¡ 
+æags
+ = 
+mª
+->
+£‰šgs
+.
+mªsig
+;
+
+356 
+s
+ = 
+signum
+;
+
+357 ià(
+s
+ =ð
+SIGUSR1
+)
+
+359 ià(
+æags
+ & 
+MANSIG_MAP_USR1_TO_HUP
+)
+
+360 
+s
+ = 
+SIGHUP
+;
+
+361 ià(
+æags
+ & 
+MANSIG_MAP_USR1_TO_TERM
+)
+
+362 
+s
+ = 
+SIGTERM
+;
+
+364 ià(
+æags
+ & 
+MANSIG_IGNORE_USR1_HUP
+)
+
+366 ià(
+s
+ =ð
+SIGHUP
+ || s =ð
+SIGUSR1
+)
+
+367 
+s
+ = -1;
+
+369  
+s
+;
+
+370 
+	}
+}
+
+373 
+	$mª_sigÇl
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+Çme
+)
+
+375 cÚ¡ 
+sig
+ = 
+	`·r£_sigÇl
+ (
+Çme
+);
+
+376 ià(
+sig
+ >= 0)
+
+378 cÚ¡ 
+sig_mod
+ = 
+	`mª_mod_sigÇl
+ (
+mª
+, 
+sig
+);
+
+379 ià(
+sig_mod
+ >= 0)
+
+381 
+	`throw_sigÇl
+ (
+sig_mod
+);
+
+382 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: sigÇÈ% thrown", 
+	`sigÇl_Çme
+ (
+sig_mod
+, 
+Œue
+));
+
+386 ià(
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+)
+
+387 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+);
+
+389 
+	`msg
+ (
+M_CLIENT
+, "ERROR: sigÇÈ'%s' i cu¼’Žy ignÜed", 
+Çme
+);
+
+394 
+	`msg
+ (
+M_CLIENT
+, "ERROR: sigÇÈ'%s' i nÙ‡ knowÀsigÇÈty³", 
+Çme
+);
+
+396 
+	}
+}
+
+399 
+	$mª_¡©us
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+v”siÚ
+, 
+¡©us_ou�ut
+ *
+so
+)
+
+401 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+¡©us
+)
+
+403 (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+¡©us
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+v”siÚ
+, 
+so
+);
+
+407 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The 'status' command is‚ot supported by�he current daemon mode");
+
+409 
+	}
+}
+
+412 
+	$mª_by‹couÁ
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+upd©e_£cÚds
+)
+
+414 ià(
+upd©e_£cÚds
+ >= 0)
+
+415 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+ = 
+upd©e_£cÚds
+;
+
+417 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+ = 0;
+
+418 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: bytecount interval changed");
+
+419 
+	}
+}
+
+422 
+	$mª_by‹couÁ_ou�ut_þ›Á
+ (
+mªagem’t
+ *
+mª
+)
+
+424 
+š
+[32];
+
+425 
+out
+[32];
+
+427 
+	`Ý’v²_¢´štf
+ (
+š
+,  (š), 
+couÁ”_fÜm©
+, 
+mª
+->
+³rsi¡
+.
+by‹s_š
+);
+
+428 
+	`Ý’v²_¢´štf
+ (
+out
+,  (out), 
+couÁ”_fÜm©
+, 
+mª
+->
+³rsi¡
+.
+by‹s_out
+);
+
+429 
+	`msg
+ (
+M_CLIENT
+, ">BYTECOUNT:%s,%s", 
+š
+, 
+out
+);
+
+430 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_Ï¡_upd©e
+ = 
+now
+;
+
+431 
+	}
+}
+
+433 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+436 
+	$mª_by‹couÁ_ou�ut_£rv”
+ (
+mªagem’t
+ *
+mª
+,
+
+437 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_š_tÙ®
+,
+
+438 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_out_tÙ®
+,
+
+439 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+)
+
+441 
+š
+[32];
+
+442 
+out
+[32];
+
+444 
+	`Ý’v²_¢´štf
+ (
+š
+,  (š), 
+couÁ”_fÜm©
+, *
+by‹s_š_tÙ®
+);
+
+445 
+	`Ý’v²_¢´štf
+ (
+out
+,  (out), 
+couÁ”_fÜm©
+, *
+by‹s_out_tÙ®
+);
+
+446 
+	`msg
+ (
+M_CLIENT
+, ">BYTECOUNT_CLI:%lu,%s,%s", 
+mdac
+->
+cid
+, 
+š
+, 
+out
+);
+
+447 
+mdac
+->
+by‹couÁ_Ï¡_upd©e
+ = 
+now
+;
+
+448 
+	}
+}
+
+453 
+	$mª_kžl
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+viùim
+)
+
+455 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+457 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+kžl_by_ú
+ && mª->³rsi¡.ÿÎback.
+kžl_by_addr
+)
+
+459 
+bufãr
+ 
+buf
+;
+
+460 
+p1
+[128];
+
+461 
+p2
+[128];
+
+462 
+n_kžËd
+;
+
+464 
+	`buf_£t_»ad
+ (&
+buf
+, (
+ušt8_t
+*è
+viùim
+, 
+	`¡¾’
+ (victim) + 1);
+
+465 
+	`buf_·r£
+ (&
+buf
+, ':', 
+p1
+,  (p1));
+
+466 
+	`buf_·r£
+ (&
+buf
+, ':', 
+p2
+,  (p2));
+
+468 ià(
+	`¡¾’
+ (
+p1
+è&& sŒËÀ(
+p2
+))
+
+471 
+boÞ
+ 
+¡©us
+;
+
+472 cÚ¡ 
+š_addr_t
+ 
+addr
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+|
+GETADDR_MSG_VIRT_OUT
+, 
+p1
+, 0, &
+¡©us
+, 
+NULL
+);
+
+473 ià(
+¡©us
+)
+
+475 cÚ¡ 
+pÜt
+ = 
+	`©oi
+ (
+p2
+);
+
+476 ià(
+pÜt
+ > 0 &&…ort < 65536)
+
+478 
+n_kžËd
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+kžl_by_addr
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+addr
+, 
+pÜt
+);
+
+479 ià(
+n_kžËd
+ > 0)
+
+481 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: %d client(s)‡t‡ddress %s:%d killed",
+
+482 
+n_kžËd
+,
+
+483 
+	`´št_š_addr_t
+ (
+addr
+, 0, &
+gc
+),
+
+484 
+pÜt
+);
+
+488 
+	`msg
+ (
+M_CLIENT
+, "ERROR: client‡t‡ddress %s:%d‚ot found",
+
+489 
+	`´št_š_addr_t
+ (
+addr
+, 0, &
+gc
+),
+
+490 
+pÜt
+);
+
+495 
+	`msg
+ (
+M_CLIENT
+, "ERROR:…Üˆnumb” i ouˆoà¿nge: %s", 
+p2
+);
+
+500 
+	`msg
+ (
+M_CLIENT
+, "ERROR:ƒ¼Ü…¬sšg IP‡dd»ss: %s", 
+p1
+);
+
+503 ià(
+	`¡¾’
+ (
+p1
+))
+
+506 
+n_kžËd
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+kžl_by_ú
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+p1
+);
+
+507 ià(
+n_kžËd
+ > 0)
+
+509 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: commÚ‚am�'%s' found, %d cl›Á(sèkžËd", 
+p1
+, 
+n_kžËd
+);
+
+513 
+	`msg
+ (
+M_CLIENT
+, "ERROR: commÚ‚am�'%s'‚Ù found", 
+p1
+);
+
+518 
+	`msg
+ (
+M_CLIENT
+, "ERROR: kill…arse");
+
+523 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The 'kill' command is‚ot supported by�he current daemon mode");
+
+526 
+	`gc_ä“
+ (&
+gc
+);
+
+527 
+	}
+}
+
+534 
+	$mª_hi¡Üy
+ (
+mªagem’t
+ *
+mª
+,
+
+535 cÚ¡ *
+·rm
+,
+
+536 cÚ¡ *
+ty³
+,
+
+537 
+log_hi¡Üy
+ *
+log
+,
+
+538 
+boÞ
+ *
+»®time
+,
+
+539 cÚ¡ 
+Ëp_æags
+)
+
+541 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+542 
+n
+ = 0;
+
+544 ià(
+	`¡»q
+ (
+·rm
+, "on"))
+
+546 *
+»®time
+ = 
+Œue
+;
+
+547 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:„—l-tim�% nÙifiÿtiÚ s‘�ØON", 
+ty³
+);
+
+549 ià(
+	`¡»q
+ (
+·rm
+, "off"))
+
+551 *
+»®time
+ = 
+çl£
+;
+
+552 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:„—l-tim�% nÙifiÿtiÚ s‘�ØOFF", 
+ty³
+);
+
+554 ià(
+	`¡»q
+ (
+·rm
+, "®l"è|| (
+n
+ = 
+	`©oi
+ (parm)) > 0)
+
+556 cÚ¡ 
+size
+ = 
+	`log_hi¡Üy_size
+ (
+log
+);
+
+557 cÚ¡ 
+¡¬t
+ = (
+n
+ ?‚ : 
+size
+) - 1;
+
+558 
+i
+;
+
+560 
+i
+ = 
+¡¬t
+; i >= 0; --i)
+
+562 cÚ¡ 
+log_’Œy
+ *
+e
+ = 
+	`log_hi¡Üy_»f
+ (
+log
+, 
+i
+);
+
+563 ià(
+e
+)
+
+565 cÚ¡ *
+out
+ = 
+	`log_’Œy_´št
+ (
+e
+, 
+Ëp_æags
+, &
+gc
+);
+
+566 
+	`vœtu®_ou�ut_ÿÎback_func
+ (
+mª
+, 
+M_CLIENT
+, 
+out
+);
+
+569 
+	`msg
+ (
+M_CLIENT
+, "END");
+
+573 
+	`msg
+ (
+M_CLIENT
+, "ERROR: % ·¿m‘” mu¡ b�'Ú' o¸'off' o¸som�numb”‚ o¸'®l'", 
+ty³
+);
+
+576 
+	`gc_ä“
+ (&
+gc
+);
+
+577 
+	}
+}
+
+580 
+	$mª_log
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+·rm
+)
+
+582 
+	`mª_hi¡Üy
+ (
+mª
+,
+
+583 
+·rm
+,
+
+585 
+mª
+->
+³rsi¡
+.
+log
+,
+
+586 &
+mª
+->
+cÚÃùiÚ
+.
+log_»®time
+,
+
+587 
+LOG_PRINT_INT_DATE
+|
+LOG_PRINT_MSG_FLAGS
+);
+
+588 
+	}
+}
+
+591 
+	$mª_echo
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+·rm
+)
+
+593 
+	`mª_hi¡Üy
+ (
+mª
+,
+
+594 
+·rm
+,
+
+596 
+mª
+->
+³rsi¡
+.
+echo
+,
+
+597 &
+mª
+->
+cÚÃùiÚ
+.
+echo_»®time
+,
+
+598 
+LOG_PRINT_INT_DATE
+|
+MANAGEMENT_ECHO_FLAGS
+);
+
+599 
+	}
+}
+
+602 
+	$mª_¡©e
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+·rm
+)
+
+604 
+	`mª_hi¡Üy
+ (
+mª
+,
+
+605 
+·rm
+,
+
+607 
+mª
+->
+³rsi¡
+.
+¡©e
+,
+
+608 &
+mª
+->
+cÚÃùiÚ
+.
+¡©e_»®time
+,
+
+609 
+LOG_PRINT_INT_DATE
+|
+LOG_PRINT_STATE
+|
+
+610 
+LOG_PRINT_LOCAL_IP
+|
+LOG_PRINT_REMOTE_IP
+);
+
+611 
+	}
+}
+
+614 
+	$mª_up_fš®ize
+ (
+mªagem’t
+ *
+mª
+)
+
+616 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+)
+
+618 
+UP_QUERY_USER_PASS
+:
+
+619 ià(!
+	`¡¾’
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+u£ºame
+))
+
+622 
+UP_QUERY_PASS
+:
+
+623 
+UP_QUERY_NEED_OK
+:
+
+624 
+UP_QUERY_NEED_STR
+:
+
+625 ià(
+	`¡¾’
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+))
+
+626 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+defšed
+ = 
+Œue
+;
+
+628 
+UP_QUERY_DISABLED
+:
+
+629 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+defšed
+ = 
+çl£
+;
+
+632 
+	`ASSERT
+ (0);
+
+634 
+	}
+}
+
+637 
+	$mª_qu”y_u£r_·ss
+ (
+mªagem’t
+ *
+mª
+,
+
+638 cÚ¡ *
+ty³
+,
+
+639 cÚ¡ *
+¡ršg
+,
+
+640 cÚ¡ 
+boÞ
+ 
+Ãeded
+,
+
+641 cÚ¡ *
+´om±
+,
+
+642 *
+de¡
+,
+
+643 
+Ën
+)
+
+645 ià(
+Ãeded
+)
+
+647 
+	`ASSERT
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+);
+
+648 ià(
+	`¡»q
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+, 
+ty³
+))
+
+650 
+	`¡ºýyÁ
+ (
+de¡
+, 
+¡ršg
+, 
+Ën
+);
+
+651 
+	`mª_up_fš®ize
+ (
+mª
+);
+
+652 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: '%s' %sƒntered, but‚ot yet verified",
+
+653 
+ty³
+,
+
+654 
+´om±
+);
+
+657 
+	`msg
+ (
+M_CLIENT
+, "ERROR: %s of�ype '%s'ƒntered, but we‚eed one of�ype '%s'",
+
+658 
+´om±
+,
+
+659 
+ty³
+,
+
+660 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+);
+
+664 
+	`msg
+ (
+M_CLIENT
+, "ERROR:‚Ø% i cu¼’Žy‚“ded‡ˆthi time", 
+´om±
+);
+
+666 
+	}
+}
+
+669 
+	$mª_qu”y_u£ºame
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+¡ršg
+)
+
+671 cÚ¡ 
+boÞ
+ 
+Ãeded
+ = ((
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ =ð
+UP_QUERY_USER_PASS
+
+
+672 è&& 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+);
+
+673 
+	`mª_qu”y_u£r_·ss
+ (
+mª
+, 
+ty³
+, 
+¡ršg
+, 
+Ãeded
+, "u£ºame", mª->
+cÚÃùiÚ
+.
+up_qu”y
+.
+u£ºame
+, 
+USER_PASS_LEN
+);
+
+674 
+	}
+}
+
+677 
+	$mª_qu”y_·sswÜd
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+¡ršg
+)
+
+679 cÚ¡ 
+boÞ
+ 
+Ãeded
+ = ((
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ =ð
+UP_QUERY_PASS
+
+
+680 || 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ =ð
+UP_QUERY_USER_PASS
+
+
+681 è&& 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+);
+
+682 ià(!
+¡ršg
+[0])
+
+683 
+¡ršg
+ = 
+bÏnk_up
+;
+
+684 
+	`mª_qu”y_u£r_·ss
+ (
+mª
+, 
+ty³
+, 
+¡ršg
+, 
+Ãeded
+, "·sswÜd", mª->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+685 
+	}
+}
+
+688 
+	$mª_qu”y_Ãed_ok
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+aùiÚ
+)
+
+690 cÚ¡ 
+boÞ
+ 
+Ãeded
+ = ((
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ =ð
+UP_QUERY_NEED_OK
+è&& mª->cÚÃùiÚ.
+up_qu”y_ty³
+);
+
+691 
+	`mª_qu”y_u£r_·ss
+ (
+mª
+, 
+ty³
+, 
+aùiÚ
+, 
+Ãeded
+, "Ãedok-cÚfœm©iÚ", mª->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+692 
+	}
+}
+
+695 
+	$mª_qu”y_Ãed_¡r
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+aùiÚ
+)
+
+697 cÚ¡ 
+boÞ
+ 
+Ãeded
+ = ((
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ =ð
+UP_QUERY_NEED_STR
+è&& mª->cÚÃùiÚ.
+up_qu”y_ty³
+);
+
+698 
+	`mª_qu”y_u£r_·ss
+ (
+mª
+, 
+ty³
+, 
+aùiÚ
+, 
+Ãeded
+, "Ãed¡r-¡ršg", mª->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+699 
+	}
+}
+
+702 
+	$mª_fÜg‘_·sswÜds
+ (
+mªagem’t
+ *
+mª
+)
+
+704 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+705 
+	`s¦_purge_auth
+ (
+çl£
+);
+
+706 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: Passwords were forgotten");
+
+708 
+	}
+}
+
+711 
+	$mª_Ãt
+ (
+mªagem’t
+ *
+mª
+)
+
+713 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+show_Ãt
+)
+
+715 (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+show_Ãt
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+M_CLIENT
+);
+
+719 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The 'net' command is‚ot supported by�he current daemon mode");
+
+721 
+	}
+}
+
+723 #ifdeà
+ENABLE_PKCS11
+
+
+726 
+	$mª_pkcs11_id_couÁ
+ (
+mªagem’t
+ *
+mª
+)
+
+728 
+	`msg
+ (
+M_CLIENT
+, ">PKCS11ID-COUNT:%d", 
+	`pkcs11_mªagem’t_id_couÁ
+ ());
+
+729 
+	}
+}
+
+732 
+	$mª_pkcs11_id_g‘
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+šdex
+)
+
+734 *
+id
+ = 
+NULL
+;
+
+735 *
+ba£64
+ = 
+NULL
+;
+
+737 ià(
+	`pkcs11_mªagem’t_id_g‘
+ (
+šdex
+, &
+id
+, &
+ba£64
+))
+
+738 
+	`msg
+ (
+M_CLIENT
+, ">PKCS11ID-ENTRY:'%d', ID:'%s', BLOB:'%s'", 
+šdex
+, 
+id
+, 
+ba£64
+);
+
+740 
+	`msg
+ (
+M_CLIENT
+, ">PKCS11ID-ENTRY:'%d'", 
+šdex
+);
+
+742 ià(
+id
+ !ð
+NULL
+)
+
+743 
+	`ä“
+ (
+id
+);
+
+744 ià(
+ba£64
+ !ð
+NULL
+)
+
+745 
+	`ä“
+ (
+ba£64
+);
+
+746 
+	}
+}
+
+751 
+	$mª_hÞd
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+cmd
+)
+
+753 ià(
+cmd
+)
+
+755 ià(
+	`¡»q
+ (
+cmd
+, "on"))
+
+757 
+mª
+->
+£‰šgs
+.
+æags
+ |ð
+MF_HOLD
+;
+
+758 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: hold flag set�o ON");
+
+760 ià(
+	`¡»q
+ (
+cmd
+, "off"))
+
+762 
+mª
+->
+£‰šgs
+.
+æags
+ &ð~
+MF_HOLD
+;
+
+763 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: hold flag set�o OFF");
+
+765 ià(
+	`¡»q
+ (
+cmd
+, "release"))
+
+767 
+mª
+->
+³rsi¡
+.
+hÞd_»Ëa£
+ = 
+Œue
+;
+
+768 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: hold„elease succeeded");
+
+772 
+	`msg
+ (
+M_CLIENT
+, "ERROR: bad hold command…arameter");
+
+776 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: hÞd=%d", 
+	`BOOL_CAST
+(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_HOLD
+));
+
+777 
+	}
+}
+
+779 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+781 
+	#IER_RESET
+ 0
+
+	)
+
+782 
+	#IER_NEW
+ 1
+
+	)
+
+785 
+	$š_exŒa_»£t
+ (
+mª_cÚÃùiÚ
+ *
+mc
+, cÚ¡ 
+mode
+)
+
+787 ià(
+mc
+)
+
+789 ià(
+mode
+ !ð
+IER_NEW
+)
+
+791 
+mc
+->
+š_exŒa_cmd
+ = 
+IEC_UNDEF
+;
+
+792 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+793 
+mc
+->
+š_exŒa_cid
+ = 0;
+
+794 
+mc
+->
+š_exŒa_kid
+ = 0;
+
+797 ià(
+mc
+->
+š_exŒa
+)
+
+799 
+	`bufãr_li¡_ä“
+ (
+mc
+->
+š_exŒa
+);
+
+800 
+mc
+->
+š_exŒa
+ = 
+NULL
+;
+
+802 ià(
+mode
+ =ð
+IER_NEW
+)
+
+803 
+mc
+->
+š_exŒa
+ = 
+	`bufãr_li¡_Ãw
+ (0);
+
+805 
+	}
+}
+
+808 
+	$š_exŒa_di¥©ch
+ (
+mªagem’t
+ *
+mª
+)
+
+810 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa_cmd
+)
+
+812 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+813 
+IEC_CLIENT_AUTH
+:
+
+814 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_auth
+)
+
+816 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_auth
+)
+
+817 (
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+¬g
+,
+
+818 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa_cid
+,
+
+819 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa_kid
+,
+
+820 
+Œue
+,
+
+821 
+NULL
+,
+
+822 
+NULL
+,
+
+823 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+);
+
+824 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+ = 
+NULL
+;
+
+825 ià(
+¡©us
+)
+
+827 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: client-auth command succeeded");
+
+831 
+	`msg
+ (
+M_CLIENT
+, "ERROR: client-auth command failed");
+
+836 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The client-auth command is‚ot supported by�he current daemon mode");
+
+840 #ifdeà
+MANAGEMENT_PF
+
+
+841 
+IEC_CLIENT_PF
+:
+
+842 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_pf
+)
+
+844 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_pf
+)
+
+845 (
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+¬g
+,
+
+846 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa_cid
+,
+
+847 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+);
+
+848 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+ = 
+NULL
+;
+
+849 ià(
+¡©us
+)
+
+851 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: client-pf command succeeded");
+
+855 
+	`msg
+ (
+M_CLIENT
+, "ERROR: client-pf command failed");
+
+860 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The client-pf command is‚ot supported by�he current daemon mode");
+
+864 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+865 
+IEC_RSA_SIGN
+:
+
+866 
+mª
+->
+cÚÃùiÚ
+.
+ext_key_¡©e
+ = 
+EKS_READY
+;
+
+867 
+	`bufãr_li¡_ä“
+ (
+mª
+->
+cÚÃùiÚ
+.
+ext_key_šput
+);
+
+868 
+mª
+->
+cÚÃùiÚ
+.
+ext_key_šput
+ = mª->cÚÃùiÚ.
+š_exŒa
+;
+
+869 
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+ = 
+NULL
+;
+
+873 
+	`š_exŒa_»£t
+ (&
+mª
+->
+cÚÃùiÚ
+, 
+IER_RESET
+);
+
+874 
+	}
+}
+
+878 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+880 
+boÞ
+
+
+881 
+	$·r£_cid
+ (cÚ¡ *
+¡r
+, *
+cid
+)
+
+883 ià(
+	`ssÿnf
+ (
+¡r
+, "%lu", 
+cid
+) == 1)
+
+884  
+Œue
+;
+
+887 
+	`msg
+ (
+M_CLIENT
+, "ERROR: cannot…arse CID");
+
+888  
+çl£
+;
+
+890 
+	}
+}
+
+892 
+boÞ
+
+
+893 
+	$·r£_kid
+ (cÚ¡ *
+¡r
+, *
+kid
+)
+
+895 ià(
+	`ssÿnf
+ (
+¡r
+, "%u", 
+kid
+) == 1)
+
+896  
+Œue
+;
+
+899 
+	`msg
+ (
+M_CLIENT
+, "ERROR: cannot…arse KID");
+
+900  
+çl£
+;
+
+902 
+	}
+}
+
+905 
+	$mª_þ›Á_auth
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+cid_¡r
+, cÚ¡ *
+kid_¡r
+, cÚ¡ 
+boÞ
+ 
+exŒa
+)
+
+907 
+mª_cÚÃùiÚ
+ *
+mc
+ = &
+mª
+->
+cÚÃùiÚ
+;
+
+908 
+mc
+->
+š_exŒa_cid
+ = 0;
+
+909 
+mc
+->
+š_exŒa_kid
+ = 0;
+
+910 ià(
+	`·r£_cid
+ (
+cid_¡r
+, &
+mc
+->
+š_exŒa_cid
+)
+
+911 && 
+	`·r£_kid
+ (
+kid_¡r
+, &
+mc
+->
+š_exŒa_kid
+))
+
+913 
+mc
+->
+š_exŒa_cmd
+ = 
+IEC_CLIENT_AUTH
+;
+
+914 
+	`š_exŒa_»£t
+ (
+mc
+, 
+IER_NEW
+);
+
+915 ià(!
+exŒa
+)
+
+916 
+	`š_exŒa_di¥©ch
+ (
+mª
+);
+
+918 
+	}
+}
+
+921 
+	$mª_þ›Á_d’y
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+cid_¡r
+, cÚ¡ *
+kid_¡r
+, cÚ¡ *
+»asÚ
+, cÚ¡ *
+þ›Á_»asÚ
+)
+
+923 
+cid
+ = 0;
+
+924 
+kid
+ = 0;
+
+925 ià(
+	`·r£_cid
+ (
+cid_¡r
+, &
+cid
+è&& 
+	`·r£_kid
+ (
+kid_¡r
+, &
+kid
+))
+
+927 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_auth
+)
+
+929 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+þ›Á_auth
+)
+
+930 (
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+¬g
+,
+
+931 
+cid
+,
+
+932 
+kid
+,
+
+933 
+çl£
+,
+
+934 
+»asÚ
+,
+
+935 
+þ›Á_»asÚ
+,
+
+936 
+NULL
+);
+
+937 ià(
+¡©us
+)
+
+939 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: client-deny command succeeded");
+
+943 
+	`msg
+ (
+M_CLIENT
+, "ERROR: client-deny command failed");
+
+948 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The client-deny command is‚ot supported by�he current daemon mode");
+
+951 
+	}
+}
+
+954 
+	$mª_þ›Á_kžl
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+cid_¡r
+, cÚ¡ *
+kžl_msg
+)
+
+956 
+cid
+ = 0;
+
+957 ià(
+	`·r£_cid
+ (
+cid_¡r
+, &
+cid
+))
+
+959 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+kžl_by_cid
+)
+
+961 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+kžl_by_cid
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+cid
+, 
+kžl_msg
+);
+
+962 ià(
+¡©us
+)
+
+964 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: client-kill command succeeded");
+
+968 
+	`msg
+ (
+M_CLIENT
+, "ERROR: client-kill command failed");
+
+973 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The client-kill command is‚ot supported by�he current daemon mode");
+
+976 
+	}
+}
+
+979 
+	$mª_þ›Á_n_þ›Ás
+ (
+mªagem’t
+ *
+mª
+)
+
+981 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+)
+
+983 cÚ¡ 
+nþ›Ás
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+è(mª->³rsi¡.ÿÎback.
+¬g
+);
+
+984 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:‚þ›Ás=%d", 
+nþ›Ás
+);
+
+988 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The‚clients command is‚ot supported by�he current daemon mode");
+
+990 
+	}
+}
+
+993 
+	$mª_’v_fž‹r
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+Ëv–
+)
+
+995 
+mª
+->
+cÚÃùiÚ
+.
+’v_fž‹r_Ëv–
+ = 
+Ëv–
+;
+
+996 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:ƒnv_fž‹r_Ëv–=%d", 
+Ëv–
+);
+
+997 
+	}
+}
+
+999 #ifdeà
+MANAGEMENT_PF
+
+
+1002 
+	$mª_þ›Á_pf
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+cid_¡r
+)
+
+1004 
+mª_cÚÃùiÚ
+ *
+mc
+ = &
+mª
+->
+cÚÃùiÚ
+;
+
+1005 
+mc
+->
+š_exŒa_cid
+ = 0;
+
+1006 
+mc
+->
+š_exŒa_kid
+ = 0;
+
+1007 ià(
+	`·r£_cid
+ (
+cid_¡r
+, &
+mc
+->
+š_exŒa_cid
+))
+
+1009 
+mc
+->
+š_exŒa_cmd
+ = 
+IEC_CLIENT_PF
+;
+
+1010 
+	`š_exŒa_»£t
+ (
+mc
+, 
+IER_NEW
+);
+
+1012 
+	}
+}
+
+1017 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+1020 
+	$mª_r§_sig
+ (
+mªagem’t
+ *
+mª
+)
+
+1022 
+mª_cÚÃùiÚ
+ *
+mc
+ = &
+mª
+->
+cÚÃùiÚ
+;
+
+1023 ià(
+mc
+->
+ext_key_¡©e
+ =ð
+EKS_SOLICIT
+)
+
+1025 
+mc
+->
+ext_key_¡©e
+ = 
+EKS_INPUT
+;
+
+1026 
+mc
+->
+š_exŒa_cmd
+ = 
+IEC_RSA_SIGN
+;
+
+1027 
+	`š_exŒa_»£t
+ (
+mc
+, 
+IER_NEW
+);
+
+1030 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The„sa-sig command is‚ot currently‡vailable");
+
+1031 
+	}
+}
+
+1036 
+	$mª_lßd_¡©s
+ (
+mªagem’t
+ *
+mª
+)
+
+1038 
+couÁ”_ty³
+ 
+lšk_»ad_by‹s_glob®
+;
+
+1039 
+couÁ”_ty³
+ 
+lšk_wr™e_by‹s_glob®
+;
+
+1040 
+nþ›Ás
+ = 0;
+
+1042 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+)
+
+1043 
+nþ›Ás
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+è(mª->³rsi¡.ÿÎback.
+¬g
+);
+
+1044 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:‚þ›Ás=%d,by‹sš=" 
+couÁ”_fÜm©
+ ",bytesout=" counter_format,
+
+1045 
+nþ›Ás
+,
+
+1046 
+lšk_»ad_by‹s_glob®
+,
+
+1047 
+lšk_wr™e_by‹s_glob®
+);
+
+1048 
+	}
+}
+
+1050 
+	#MN_AT_LEAST
+ (1<<0)
+
+	)
+
+1052 
+boÞ
+
+
+1053 
+	$mª_Ãed
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ **
+p
+, cÚ¡ 
+n
+, 
+æags
+)
+
+1055 
+i
+;
+
+1056 
+	`ASSERT
+ (
+p
+[0]);
+
+1057 
+i
+ = 1; i <ð
+n
+; ++i)
+
+1059 ià(!
+p
+[
+i
+])
+
+1061 
+	`msg
+ (
+M_CLIENT
+, "ERROR:�he '%s' command„equires %s%d…arameter%s",
+
+1062 
+p
+[0],
+
+1063 (
+æags
+ & 
+MN_AT_LEAST
+) ? "at†east " : "",
+
+1064 
+n
+,
+
+1065 
+n
+ > 1 ? "s" : "");
+
+1066  
+çl£
+;
+
+1069  
+Œue
+;
+
+1070 
+	}
+}
+
+1073 
+	$mª_´oxy
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ **
+p
+)
+
+1075 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+´oxy_cmd
+)
+
+1077 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+´oxy_cmd
+)(mª->³rsi¡.ÿÎback.
+¬g
+, 
+p
+);
+
+1078 ià(
+¡©us
+)
+
+1079 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:…roxy command succeeded");
+
+1081 
+	`msg
+ (
+M_CLIENT
+, "ERROR:…roxy command failed");
+
+1084 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The…roxy command is‚ot supported by�he current daemon mode");
+
+1085 
+	}
+}
+
+1088 
+	$mª_»mÙe
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ **
+p
+)
+
+1090 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+»mÙe_cmd
+)
+
+1092 cÚ¡ 
+boÞ
+ 
+¡©us
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+»mÙe_cmd
+)(mª->³rsi¡.ÿÎback.
+¬g
+, 
+p
+);
+
+1093 ià(
+¡©us
+)
+
+1095 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:„emote command succeeded");
+
+1099 
+	`msg
+ (
+M_CLIENT
+, "ERROR:„emote command failed");
+
+1104 
+	`msg
+ (
+M_CLIENT
+, "ERROR: The„emote command is‚ot supported by�he current daemon mode");
+
+1106 
+	}
+}
+
+1109 
+	$mª_di¥©ch_commªd
+ (
+mªagem’t
+ *
+mª
+, 
+¡©us_ou�ut
+ *
+so
+, cÚ¡ **
+p
+, cÚ¡ 
+Å¬ms
+)
+
+1111 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1113 
+	`ASSERT
+ (
+p
+[0]);
+
+1114 ià(
+	`¡»q
+ (
+p
+[0], "exit") || streq (p[0], "quit"))
+
+1116 
+mª
+->
+cÚÃùiÚ
+.
+h®t
+ = 
+Œue
+;
+
+1117 
+dÚe
+;
+
+1119 ià(
+	`¡»q
+ (
+p
+[0], "help"))
+
+1121 
+	`mª_h–p
+ ();
+
+1123 ià(
+	`¡»q
+ (
+p
+[0], "version"))
+
+1125 
+	`msg
+ (
+M_CLIENT
+, "O³nVPN V”siÚ: %s", 
+t™Ë_¡ršg
+);
+
+1126 
+	`msg
+ (
+M_CLIENT
+, "Mªagem’ˆV”siÚ: %d", 
+MANAGEMENT_VERSION
+);
+
+1127 
+	`msg
+ (
+M_CLIENT
+, "END");
+
+1129 ià(
+	`¡»q
+ (
+p
+[0], "pid"))
+
+1131 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:…id=%d", 
+	`¶©fÜm_g‘pid
+ ());
+
+1133 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1134 ià(
+	`¡»q
+ (
+p
+[0], "nclients"))
+
+1136 
+	`mª_þ›Á_n_þ›Ás
+ (
+mª
+);
+
+1138 ià(
+	`¡»q
+ (
+p
+[0], "env-filter"))
+
+1140 
+Ëv–
+ = 0;
+
+1141 ià(
+p
+[1])
+
+1142 
+Ëv–
+ = 
+	`©oi
+ (
+p
+[1]);
+
+1143 
+	`mª_’v_fž‹r
+ (
+mª
+, 
+Ëv–
+);
+
+1146 ià(
+	`¡»q
+ (
+p
+[0], "signal"))
+
+1148 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1149 
+	`mª_sigÇl
+ (
+mª
+, 
+p
+[1]);
+
+1151 ià(
+	`¡»q
+ (
+p
+[0], "load-stats"))
+
+1153 
+	`mª_lßd_¡©s
+ (
+mª
+);
+
+1155 ià(
+	`¡»q
+ (
+p
+[0], "status"))
+
+1157 
+v”siÚ
+ = 0;
+
+1158 ià(
+p
+[1])
+
+1159 
+v”siÚ
+ = 
+	`©oi
+ (
+p
+[1]);
+
+1160 
+	`mª_¡©us
+ (
+mª
+, 
+v”siÚ
+, 
+so
+);
+
+1162 ià(
+	`¡»q
+ (
+p
+[0], "kill"))
+
+1164 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1165 
+	`mª_kžl
+ (
+mª
+, 
+p
+[1]);
+
+1167 ià(
+	`¡»q
+ (
+p
+[0], "verb"))
+
+1169 ià(
+p
+[1])
+
+1171 cÚ¡ 
+Ëv–
+ = 
+	`©oi
+(
+p
+[1]);
+
+1172 ià(
+	`£t_debug_Ëv–
+ (
+Ëv–
+, 0))
+
+1173 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: verb†evel changed");
+
+1175 
+	`msg
+ (
+M_CLIENT
+, "ERROR: verb†evel is out of„ange");
+
+1178 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: v”b=%d", 
+	`g‘_debug_Ëv–
+ ());
+
+1180 ià(
+	`¡»q
+ (
+p
+[0], "mute"))
+
+1182 ià(
+p
+[1])
+
+1184 cÚ¡ 
+Ëv–
+ = 
+	`©oi
+(
+p
+[1]);
+
+1185 ià(
+	`£t_mu‹_cutoff
+ (
+Ëv–
+))
+
+1186 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: mute†evel changed");
+
+1188 
+	`msg
+ (
+M_CLIENT
+, "ERROR: mute†evel is out of„ange");
+
+1191 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS: mu‹=%d", 
+	`g‘_mu‹_cutoff
+ ());
+
+1193 ià(
+	`¡»q
+ (
+p
+[0], "auth-retry"))
+
+1195 #ià
+P2MP
+
+
+1196 ià(
+p
+[1])
+
+1198 ià(
+	`auth_»Œy_£t
+ (
+M_CLIENT
+, 
+p
+[1]))
+
+1199 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:‡uth-retry…arameter changed");
+
+1201 
+	`msg
+ (
+M_CLIENT
+, "ERROR: bad‡uth-retry…arameter");
+
+1204 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:‡uth-»Œy=%s", 
+	`auth_»Œy_´št
+ ());
+
+1206 
+	`msg
+ (
+M_CLIENT
+, "ERROR:‡uth-retry feature is unavailable");
+
+1209 ià(
+	`¡»q
+ (
+p
+[0], "state"))
+
+1211 ià(!
+p
+[1])
+
+1213 
+	`mª_¡©e
+ (
+mª
+, "1");
+
+1217 ià(
+p
+[1])
+
+1218 
+	`mª_¡©e
+ (
+mª
+, 
+p
+[1]);
+
+1219 ià(
+p
+[2])
+
+1220 
+	`mª_¡©e
+ (
+mª
+, 
+p
+[2]);
+
+1223 ià(
+	`¡»q
+ (
+p
+[0], "log"))
+
+1225 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 
+MN_AT_LEAST
+))
+
+1227 ià(
+p
+[1])
+
+1228 
+	`mª_log
+ (
+mª
+, 
+p
+[1]);
+
+1229 ià(
+p
+[2])
+
+1230 
+	`mª_log
+ (
+mª
+, 
+p
+[2]);
+
+1233 ià(
+	`¡»q
+ (
+p
+[0], "echo"))
+
+1235 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 
+MN_AT_LEAST
+))
+
+1237 ià(
+p
+[1])
+
+1238 
+	`mª_echo
+ (
+mª
+, 
+p
+[1]);
+
+1239 ià(
+p
+[2])
+
+1240 
+	`mª_echo
+ (
+mª
+, 
+p
+[2]);
+
+1243 ià(
+	`¡»q
+ (
+p
+[0], "username"))
+
+1245 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1246 
+	`mª_qu”y_u£ºame
+ (
+mª
+, 
+p
+[1],…[2]);
+
+1248 ià(
+	`¡»q
+ (
+p
+[0], "password"))
+
+1250 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1251 
+	`mª_qu”y_·sswÜd
+ (
+mª
+, 
+p
+[1],…[2]);
+
+1253 ià(
+	`¡»q
+ (
+p
+[0], "forget-passwords"))
+
+1255 
+	`mª_fÜg‘_·sswÜds
+ (
+mª
+);
+
+1257 ià(
+	`¡»q
+ (
+p
+[0], "needok"))
+
+1259 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1260 
+	`mª_qu”y_Ãed_ok
+ (
+mª
+, 
+p
+[1],…[2]);
+
+1262 ià(
+	`¡»q
+ (
+p
+[0], "needstr"))
+
+1264 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1265 
+	`mª_qu”y_Ãed_¡r
+ (
+mª
+, 
+p
+[1],…[2]);
+
+1267 ià(
+	`¡»q
+ (
+p
+[0], "net"))
+
+1269 
+	`mª_Ãt
+ (
+mª
+);
+
+1271 ià(
+	`¡»q
+ (
+p
+[0], "hold"))
+
+1273 
+	`mª_hÞd
+ (
+mª
+, 
+p
+[1]);
+
+1275 ià(
+	`¡»q
+ (
+p
+[0], "bytecount"))
+
+1277 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1278 
+	`mª_by‹couÁ
+ (
+mª
+, 
+	`©oi
+(
+p
+[1]));
+
+1280 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1281 ià(
+	`¡»q
+ (
+p
+[0], "client-kill"))
+
+1283 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 
+MN_AT_LEAST
+))
+
+1284 
+	`mª_þ›Á_kžl
+ (
+mª
+, 
+p
+[1],…[2]);
+
+1286 ià(
+	`¡»q
+ (
+p
+[0], "client-deny"))
+
+1288 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 3, 
+MN_AT_LEAST
+))
+
+1289 
+	`mª_þ›Á_d’y
+ (
+mª
+, 
+p
+[1],…[2],…[3],…[4]);
+
+1291 ià(
+	`¡»q
+ (
+p
+[0], "client-auth-nt"))
+
+1293 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1294 
+	`mª_þ›Á_auth
+ (
+mª
+, 
+p
+[1],…[2], 
+çl£
+);
+
+1296 ià(
+	`¡»q
+ (
+p
+[0], "client-auth"))
+
+1298 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 2, 0))
+
+1299 
+	`mª_þ›Á_auth
+ (
+mª
+, 
+p
+[1],…[2], 
+Œue
+);
+
+1301 #ifdeà
+MANAGEMENT_PF
+
+
+1302 ià(
+	`¡»q
+ (
+p
+[0], "client-pf"))
+
+1304 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1305 
+	`mª_þ›Á_pf
+ (
+mª
+, 
+p
+[1]);
+
+1309 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+1310 ià(
+	`¡»q
+ (
+p
+[0], "rsa-sig"))
+
+1312 
+	`mª_r§_sig
+ (
+mª
+);
+
+1315 #ifdeà
+ENABLE_PKCS11
+
+
+1316 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-id-count"))
+
+1318 
+	`mª_pkcs11_id_couÁ
+ (
+mª
+);
+
+1320 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-id-get"))
+
+1322 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1323 
+	`mª_pkcs11_id_g‘
+ (
+mª
+, 
+	`©oi
+(
+p
+[1]));
+
+1326 ià(
+	`¡»q
+ (
+p
+[0], "proxy"))
+
+1328 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 
+MN_AT_LEAST
+))
+
+1329 
+	`mª_´oxy
+ (
+mª
+, 
+p
+);
+
+1331 ià(
+	`¡»q
+ (
+p
+[0], "remote"))
+
+1333 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 
+MN_AT_LEAST
+))
+
+1334 
+	`mª_»mÙe
+ (
+mª
+, 
+p
+);
+
+1337 ià(
+	`¡»q
+ (
+p
+[0], "test"))
+
+1339 ià(
+	`mª_Ãed
+ (
+mª
+, 
+p
+, 1, 0))
+
+1341 
+i
+;
+
+1342 cÚ¡ 
+n
+ = 
+	`©oi
+ (
+p
+[1]);
+
+1343 
+i
+ = 0; i < 
+n
+; ++i)
+
+1345 
+	`msg
+ (
+M_CLIENT
+, "[%d] Th�pu½o£ oàthi commªd i tØg’”©�Ïrg�amouÁ oàou�ut.", 
+i
+);
+
+1352 
+	`msg
+ (
+M_CLIENT
+, "ERROR: unknown command,ƒnter 'help' for more options");
+
+1355 
+dÚe
+:
+
+1356 
+	`gc_ä“
+ (&
+gc
+);
+
+1357 
+	}
+}
+
+1359 #ifdeà
+WIN32
+
+
+1362 
+	$mª_¡¬t_Ã32
+ (
+mªagem’t
+ *
+mª
+)
+
+1364 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+)
+
+1366 
+MS_LISTEN
+:
+
+1367 
+	`Ãt_ev’t_wš32_¡¬t
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+, 
+FD_ACCEPT
+, mª->cÚÃùiÚ.
+sd_tÝ
+);
+
+1369 
+MS_CC_WAIT_READ
+:
+
+1370 
+MS_CC_WAIT_WRITE
+:
+
+1371 
+	`Ãt_ev’t_wš32_¡¬t
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+, 
+FD_READ
+|
+FD_WRITE
+|
+FD_CLOSE
+, mª->cÚÃùiÚ.
+sd_þi
+);
+
+1374 
+	`ASSERT
+ (0);
+
+1376 
+	}
+}
+
+1379 
+	$mª_¡Ý_Ã32
+ (
+mªagem’t
+ *
+mª
+)
+
+1381 
+	`Ãt_ev’t_wš32_¡Ý
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+1382 
+	}
+}
+
+1387 
+	$mª_»cÜd_³”_šfo
+ (
+mªagem’t
+ *
+mª
+)
+
+1389 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1390 ià(
+mª
+->
+£‰šgs
+.
+wr™e_³”_šfo_fže
+)
+
+1392 
+boÞ
+ 
+sucûss
+ = 
+çl£
+;
+
+1393 #ifdeà
+HAVE_GETSOCKNAME
+
+
+1394 ià(
+	`sock‘_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+1396 
+sockaddr_š
+ 
+addr
+;
+
+1397 
+sockËn_t
+ 
+add¾’
+ =  (
+addr
+);
+
+1398 
+¡©us
+;
+
+1400 
+	`CLEAR
+ (
+addr
+);
+
+1401 
+¡©us
+ = 
+	`g‘sockÇme
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, (
+sockaddr
+ *)&
+addr
+, &
+add¾’
+);
+
+1402 ià(!
+¡©us
+ && 
+add¾’
+ =ð (
+addr
+))
+
+1404 cÚ¡ 
+š_addr_t
+ 
+a
+ = 
+	`Áohl
+ (
+addr
+.
+sš_addr
+.
+s_addr
+);
+
+1405 cÚ¡ 
+p
+ = 
+	`Áohs
+ (
+addr
+.
+sš_pÜt
+);
+
+1406 
+FILE
+ *
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+mª
+->
+£‰šgs
+.
+wr™e_³”_šfo_fže
+, "w");
+
+1407 ià(
+å
+)
+
+1409 
+	`årštf
+ (
+å
+, "%s\n%d\n", 
+	`´št_š_addr_t
+ (
+a
+, 0, &
+gc
+), 
+p
+);
+
+1410 ià(!
+	`fþo£
+ (
+å
+))
+
+1411 
+sucûss
+ = 
+Œue
+;
+
+1416 ià(!
+sucûss
+)
+
+1418 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: failed�o write…eer info�o file %s",
+
+1419 
+mª
+->
+£‰šgs
+.
+wr™e_³”_šfo_fže
+);
+
+1420 
+	`throw_sigÇl_soá
+ (
+SIGTERM
+, "management-connect-failed");
+
+1423 
+	`gc_ä“
+ (&
+gc
+);
+
+1424 
+	}
+}
+
+1427 
+	$mª_cÚÃùiÚ_£‰šgs_»£t
+ (
+mªagem’t
+ *
+mª
+)
+
+1429 
+mª
+->
+cÚÃùiÚ
+.
+¡©e_»®time
+ = 
+çl£
+;
+
+1430 
+mª
+->
+cÚÃùiÚ
+.
+log_»®time
+ = 
+çl£
+;
+
+1431 
+mª
+->
+cÚÃùiÚ
+.
+echo_»®time
+ = 
+çl£
+;
+
+1432 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+ = 0;
+
+1433 
+mª
+->
+cÚÃùiÚ
+.
+·sswÜd_v”if›d
+ = 
+çl£
+;
+
+1434 
+mª
+->
+cÚÃùiÚ
+.
+·sswÜd_Œ›s
+ = 0;
+
+1435 
+mª
+->
+cÚÃùiÚ
+.
+h®t
+ = 
+çl£
+;
+
+1436 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_CC_WAIT_WRITE
+;
+
+1437 
+	}
+}
+
+1440 
+	$mª_Ãw_cÚÃùiÚ_po¡
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+desü�tiÚ
+)
+
+1442 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1444 
+	`£t_nÚblock
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+);
+
+1445 
+	`£t_þÛxec
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+);
+
+1447 
+	`mª_cÚÃùiÚ_£‰šgs_»£t
+ (
+mª
+);
+
+1449 #ifdeà
+WIN32
+
+
+1450 
+	`mª_¡¬t_Ã32
+ (
+mª
+);
+
+1453 #ià
+UNIX_SOCK_SUPPORT
+
+
+1454 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1456 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: %s %s",
+
+1457 
+desü�tiÚ
+,
+
+1458 
+	`sockaddr_unix_Çme
+ (&
+mª
+->
+£‰šgs
+.
+loÿl_unix
+, "NULL"));
+
+1462 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: %s %s",
+
+1463 
+desü�tiÚ
+,
+
+1464 
+	`´št_sockaddr
+ (&
+mª
+->
+£‰šgs
+.
+loÿl
+, &
+gc
+));
+
+1466 
+	`bufãr_li¡_»£t
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+);
+
+1468 ià(!
+	`mª_·sswÜd_Ãeded
+ (
+mª
+))
+
+1469 
+	`mª_w–come
+ (
+mª
+);
+
+1470 
+	`mª_´om±
+ (
+mª
+);
+
+1471 
+	`mª_upd©e_io_¡©e
+ (
+mª
+);
+
+1473 
+	`gc_ä“
+ (&
+gc
+);
+
+1474 
+	}
+}
+
+1476 #ià
+UNIX_SOCK_SUPPORT
+
+
+1477 
+boÞ
+
+
+1478 
+	$mª_v”ify_unix_³”_uid_gid
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+1480 ià(
+	`sock‘_defšed
+ (
+sd
+è&& (
+mª
+->
+£‰šgs
+.
+þ›Á_uid
+ !ð-1 || mª->£‰šgs.
+þ›Á_gid
+ != -1))
+
+1482 cÚ¡ 
+”r_´efix
+[] = "MANAGEMENT: unix domain socket client connection„ejected --";
+
+1483 
+uid
+, 
+gid
+;
+
+1484 ià(
+	`unix_sock‘_g‘_³”_uid_gid
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, &
+uid
+, &
+gid
+))
+
+1486 ià(
+mª
+->
+£‰šgs
+.
+þ›Á_uid
+ !ð-1 && mª->£‰šgs.þ›Á_uid !ð
+uid
+)
+
+1488 
+	`msg
+ (
+D_MANAGEMENT
+, "%s UID of socket…eer (%d) doesn't match„equired value (%d)‡s given by --management-client-user",
+
+1489 
+”r_´efix
+, 
+uid
+, 
+mª
+->
+£‰šgs
+.
+þ›Á_uid
+);
+
+1490  
+çl£
+;
+
+1492 ià(
+mª
+->
+£‰šgs
+.
+þ›Á_gid
+ !ð-1 && mª->£‰šgs.þ›Á_gid !ð
+gid
+)
+
+1494 
+	`msg
+ (
+D_MANAGEMENT
+, "%s GID of socket…eer (%d) doesn't match„equired value (%d)‡s given by --management-client-group",
+
+1495 
+”r_´efix
+, 
+gid
+, 
+mª
+->
+£‰šgs
+.
+þ›Á_gid
+);
+
+1496  
+çl£
+;
+
+1501 
+	`msg
+ (
+D_MANAGEMENT
+, "% ÿÂÙ g‘ UID/GID oàsock‘…“r", 
+”r_´efix
+);
+
+1502  
+çl£
+;
+
+1505  
+Œue
+;
+
+1506 
+	}
+}
+
+1510 
+	$mª_acû±
+ (
+mªagem’t
+ *
+mª
+)
+
+1512 
+lšk_sock‘_aùu®
+ 
+aù
+;
+
+1513 
+	`CLEAR
+ (
+aù
+);
+
+1518 #ià
+UNIX_SOCK_SUPPORT
+
+
+1519 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1521 
+sockaddr_un
+ 
+»mÙe
+;
+
+1522 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+	`sock‘_acû±_unix
+ (mª->cÚÃùiÚ.
+sd_tÝ
+, &
+»mÙe
+);
+
+1523 ià(!
+	`mª_v”ify_unix_³”_uid_gid
+ (
+mª
+, mª->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+1524 
+	`sd_þo£
+ (&
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+);
+
+1528 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+	`sock‘_do_acû±
+ (mª->cÚÃùiÚ.
+sd_tÝ
+, &
+aù
+, 
+çl£
+);
+
+1530 ià(
+	`sock‘_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+1532 
+mª
+->
+cÚÃùiÚ
+.
+»mÙe
+ = 
+aù
+.
+de¡
+;
+
+1534 ià(
+	`sock‘_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+))
+
+1536 #ifdeà
+WIN32
+
+
+1537 
+	`mª_¡Ý_Ã32
+ (
+mª
+);
+
+1541 
+	`mª_Ãw_cÚÃùiÚ_po¡
+ (
+mª
+, "Client connected from");
+
+1543 
+	}
+}
+
+1546 
+	$mª_li¡’
+ (
+mªagem’t
+ *
+mª
+)
+
+1548 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1553 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_LISTEN
+;
+
+1554 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+SOCKET_UNDEFINED
+;
+
+1559 ià(
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+ =ð
+SOCKET_UNDEFINED
+)
+
+1561 #ià
+UNIX_SOCK_SUPPORT
+
+
+1562 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1564 
+	`mª_d–‘e_unix_sock‘
+ (
+mª
+);
+
+1565 
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+ = 
+	`ü—‹_sock‘_unix
+ ();
+
+1566 
+	`sock‘_bšd_unix
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+, &mª->
+£‰šgs
+.
+loÿl_unix
+, "MANAGEMENT");
+
+1571 
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET
+);
+
+1572 
+	`sock‘_bšd
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+, &mª->
+£‰šgs
+.
+loÿl
+, "MANAGEMENT");
+
+1578 ià(
+	`li¡’
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+, 1))
+
+1579 
+	`msg
+ (
+M_ERR
+, "MANAGEMENT:†isten() failed");
+
+1584 
+	`£t_nÚblock
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+);
+
+1585 
+	`£t_þÛxec
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+);
+
+1587 #ià
+UNIX_SOCK_SUPPORT
+
+
+1588 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1590 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: unix domain socket†istening on %s",
+
+1591 
+	`sockaddr_unix_Çme
+ (&
+mª
+->
+£‰šgs
+.
+loÿl_unix
+, "NULL"));
+
+1595 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: TCP Socket†istening on %s",
+
+1596 
+	`´št_sockaddr
+ (&
+mª
+->
+£‰šgs
+.
+loÿl
+, &
+gc
+));
+
+1599 #ifdeà
+WIN32
+
+
+1600 
+	`mª_¡¬t_Ã32
+ (
+mª
+);
+
+1603 
+	`gc_ä“
+ (&
+gc
+);
+
+1604 
+	}
+}
+
+1607 
+	$mª_cÚÃù
+ (
+mªagem’t
+ *
+mª
+)
+
+1609 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1610 
+¡©us
+;
+
+1611 
+sigÇl_»ûived
+ = 0;
+
+1616 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_INITIAL
+;
+
+1617 
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+ = 
+SOCKET_UNDEFINED
+;
+
+1619 #ià
+UNIX_SOCK_SUPPORT
+
+
+1620 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1622 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+	`ü—‹_sock‘_unix
+ ();
+
+1623 
+¡©us
+ = 
+	`sock‘_cÚÃù_unix
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, &mª->
+£‰šgs
+.
+loÿl_unix
+);
+
+1624 ià(!
+¡©us
+ && !
+	`mª_v”ify_unix_³”_uid_gid
+ (
+mª
+, mª->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+1626 #ifdeà
+EPERM
+
+
+1627 
+¡©us
+ = 
+EPERM
+;
+
+1629 
+¡©us
+ = 1;
+
+1631 
+	`sd_þo£
+ (&
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+);
+
+1637 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET
+);
+
+1638 
+¡©us
+ = 
+	`Ý’v²_cÚÃù
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+,
+
+1639 &
+mª
+->
+£‰šgs
+.
+loÿl
+,
+
+1641 &
+sigÇl_»ûived
+);
+
+1644 ià(
+sigÇl_»ûived
+)
+
+1646 
+	`throw_sigÇl
+ (
+sigÇl_»ûived
+);
+
+1647 
+dÚe
+;
+
+1650 ià(
+¡©us
+)
+
+1652 #ià
+UNIX_SOCK_SUPPORT
+
+
+1653 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+1655 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1657 
+	`sockaddr_unix_Çme
+ (&
+mª
+->
+£‰šgs
+.
+loÿl_unix
+, "NULL"),
+
+1658 
+	`¡»¼Ü_ts
+ (
+¡©us
+, &
+gc
+));
+
+1662 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1664 
+	`´št_sockaddr
+ (&
+mª
+->
+£‰šgs
+.
+loÿl
+, &
+gc
+),
+
+1665 
+	`¡»¼Ü_ts
+ (
+¡©us
+, &
+gc
+));
+
+1666 
+	`throw_sigÇl_soá
+ (
+SIGTERM
+, "management-connect-failed");
+
+1667 
+dÚe
+;
+
+1670 
+	`mª_»cÜd_³”_šfo
+ (
+mª
+);
+
+1671 
+	`mª_Ãw_cÚÃùiÚ_po¡
+ (
+mª
+, "Connected�o management server‡t");
+
+1673 
+dÚe
+:
+
+1674 
+	`gc_ä“
+ (&
+gc
+);
+
+1675 
+	}
+}
+
+1678 
+	$mª_»£t_þ›Á_sock‘
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+boÞ
+ 
+ex™šg
+)
+
+1680 ià(
+	`sock‘_defšed
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+))
+
+1682 #ifdeà
+WIN32
+
+
+1683 
+	`mª_¡Ý_Ã32
+ (
+mª
+);
+
+1685 
+	`mª_þo£_sock‘
+ (
+mª
+, mª->
+cÚÃùiÚ
+.
+sd_þi
+);
+
+1686 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+ = 
+SOCKET_UNDEFINED
+;
+
+1687 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ = 
+MS_INITIAL
+;
+
+1688 
+	`commªd_lše_»£t
+ (
+mª
+->
+cÚÃùiÚ
+.
+š
+);
+
+1689 
+	`bufãr_li¡_»£t
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+);
+
+1690 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+1691 
+	`š_exŒa_»£t
+ (&
+mª
+->
+cÚÃùiÚ
+, 
+IER_RESET
+);
+
+1693 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: Client disconnected");
+
+1695 ià(!
+ex™šg
+)
+
+1697 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+1698 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_FORGET_DISCONNECT
+)
+
+1699 
+	`s¦_purge_auth
+ (
+çl£
+);
+
+1701 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_SIGNAL
+) {
+
+1702 
+mysig
+ = 
+	`mª_mod_sigÇl
+ (
+mª
+, 
+SIGUSR1
+);
+
+1703 ià(
+mysig
+ >= 0)
+
+1705 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: Triggering management signal");
+
+1706 
+	`throw_sigÇl_soá
+ (
+mysig
+, "management-disconnect");
+
+1710 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_CONNECT_AS_CLIENT
+)
+
+1712 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: Triggering managementƒxit");
+
+1713 
+	`throw_sigÇl_soá
+ (
+SIGTERM
+, "management-exit");
+
+1716 
+	`mª_li¡’
+ (
+mª
+);
+
+1718 
+	}
+}
+
+1721 
+	$mª_´oûss_commªd
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+lše
+)
+
+1723 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1724 
+¡©us_ou�ut
+ *
+so
+;
+
+1725 
+Å¬ms
+;
+
+1726 *
+·rms
+[
+MAX_PARMS
++1];
+
+1728 
+	`CLEAR
+ (
+·rms
+);
+
+1729 
+so
+ = 
+	`¡©us_Ý’
+ (
+NULL
+, 0, -1, &
+mª
+->
+³rsi¡
+.
+vout
+, 0);
+
+1730 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+1731 
+	`š_exŒa_»£t
+ (&
+mª
+->
+cÚÃùiÚ
+, 
+IER_RESET
+);
+
+1734 ià(
+	`mª_·sswÜd_Ãeded
+ (
+mª
+))
+
+1736 
+	`mª_check_·sswÜd
+ (
+mª
+, 
+lše
+);
+
+1740 
+Å¬ms
+ = 
+	`·r£_lše
+ (
+lše
+, 
+·rms
+, 
+MAX_PARMS
+, "TCP", 0, 
+M_CLIENT
+, &
+gc
+);
+
+1741 ià(
+·rms
+[0] && 
+	`¡»q
+ (parms[0], "password"))
+
+1742 
+	`msg
+ (
+D_MANAGEMENT_DEBUG
+, "MANAGEMENT: CMD 'password [...]'");
+
+1743 ià(!
+	`¡»q
+ (
+lše
+, "load-stats"))
+
+1744 
+	`msg
+ (
+D_MANAGEMENT_DEBUG
+, "MANAGEMENT: CMD '%s'", 
+lše
+);
+
+1749 
+i
+;
+
+1750 
+i
+ = 0; i < 
+Å¬ms
+; ++i)
+
+1751 
+	`msg
+ (
+M_INFO
+, "[%d] '%s'", 
+i
+, 
+·rms
+[i]);
+
+1755 ià(
+Å¬ms
+ > 0)
+
+1756 
+	`mª_di¥©ch_commªd
+ (
+mª
+, 
+so
+, (cÚ¡ **)
+·rms
+, 
+Å¬ms
+);
+
+1759 
+	`CLEAR
+ (
+·rms
+);
+
+1760 
+	`¡©us_þo£
+ (
+so
+);
+
+1761 
+	`gc_ä“
+ (&
+gc
+);
+
+1762 
+	}
+}
+
+1764 
+boÞ
+
+
+1765 
+	$mª_io_”rÜ
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+´efix
+)
+
+1767 cÚ¡ 
+”r
+ = 
+	`Ý’v²_”ºo
+ ();
+
+1769 ià(!
+	`ignÜe_sys_”rÜ
+ (
+”r
+))
+
+1771 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1772 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: TCP %sƒrror: %s",
+
+1773 
+´efix
+,
+
+1774 
+	`¡»¼Ü_ts
+ (
+”r
+, &
+gc
+));
+
+1775 
+	`gc_ä“
+ (&
+gc
+);
+
+1776  
+Œue
+;
+
+1779  
+çl£
+;
+
+1780 
+	}
+}
+
+1783 
+	$mª_»ad
+ (
+mªagem’t
+ *
+mª
+)
+
+1788 
+buf
+[256];
+
+1789 
+Ën
+ = 0;
+
+1791 
+Ën
+ = 
+	`»cv
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, 
+buf
+,  (buf), 
+MSG_NOSIGNAL
+);
+
+1792 ià(
+Ën
+ == 0)
+
+1794 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+çl£
+);
+
+1796 ià(
+Ën
+ > 0)
+
+1798 
+boÞ
+ 
+´oûs£d_commªd
+ = 
+çl£
+;
+
+1800 
+	`ASSERT
+ (
+Ën
+ <ð(è (
+buf
+));
+
+1801 
+	`commªd_lše_add
+ (
+mª
+->
+cÚÃùiÚ
+.
+š
+, 
+buf
+, 
+Ën
+);
+
+1806 
+	`bufãr_li¡_»£t
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+);
+
+1812 cÚ¡ *
+lše
+;
+
+1813 (
+lše
+ = 
+	`commªd_lše_g‘
+ (
+mª
+->
+cÚÃùiÚ
+.
+š
+)))
+
+1815 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+1816 ià(
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+)
+
+1818 ià(!
+	`¡rcmp
+ ((*)
+lše
+, "END"))
+
+1819 
+	`š_exŒa_di¥©ch
+ (
+mª
+);
+
+1821 
+	`bufãr_li¡_push
+ (
+mª
+->
+cÚÃùiÚ
+.
+š_exŒa
+, 
+lše
+);
+
+1825 
+	`mª_´oûss_commªd
+ (
+mª
+, (*è
+lše
+);
+
+1826 ià(
+mª
+->
+cÚÃùiÚ
+.
+h®t
+)
+
+1828 
+	`commªd_lše_Ãxt
+ (
+mª
+->
+cÚÃùiÚ
+.
+š
+);
+
+1829 
+´oûs£d_commªd
+ = 
+Œue
+;
+
+1836 ià(
+mª
+->
+cÚÃùiÚ
+.
+h®t
+)
+
+1838 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+çl£
+);
+
+1839 
+Ën
+ = 0;
+
+1843 ià(
+´oûs£d_commªd
+)
+
+1844 
+	`mª_´om±
+ (
+mª
+);
+
+1845 
+	`mª_upd©e_io_¡©e
+ (
+mª
+);
+
+1850 ià(
+	`mª_io_”rÜ
+ (
+mª
+, "recv"))
+
+1851 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+çl£
+);
+
+1853  
+Ën
+;
+
+1854 
+	}
+}
+
+1857 
+	$mª_wr™e
+ (
+mªagem’t
+ *
+mª
+)
+
+1859 cÚ¡ 
+size_hšt
+ = 1024;
+
+1860 
+£Á
+ = 0;
+
+1861 cÚ¡ 
+bufãr
+ *
+buf
+;
+
+1863 
+	`bufãr_li¡_agg»g©e
+(
+mª
+->
+cÚÃùiÚ
+.
+out
+, 
+size_hšt
+);
+
+1864 
+buf
+ = 
+	`bufãr_li¡_³ek
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+);
+
+1865 ià(
+buf
+ && 
+	`BLEN
+ (buf))
+
+1867 cÚ¡ 
+Ën
+ = 
+	`mš_št
+ (
+size_hšt
+, 
+	`BLEN
+ (
+buf
+));
+
+1868 
+£Á
+ = 
+	`£nd
+ (
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, 
+	`BPTR
+ (
+buf
+), 
+Ën
+, 
+MSG_NOSIGNAL
+);
+
+1869 ià(
+£Á
+ >= 0)
+
+1871 
+	`bufãr_li¡_advªû
+ (
+mª
+->
+cÚÃùiÚ
+.
+out
+, 
+£Á
+);
+
+1873 ià(
+£Á
+ < 0)
+
+1875 ià(
+	`mª_io_”rÜ
+ (
+mª
+, "send"))
+
+1876 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+çl£
+);
+
+1883 
+	`mª_upd©e_io_¡©e
+ (
+mª
+);
+
+1885  
+£Á
+;
+
+1886 
+	}
+}
+
+1889 
+	$mª_cÚÃùiÚ_þ—r
+ (
+mª_cÚÃùiÚ
+ *
+mc
+)
+
+1891 
+	`CLEAR
+ (*
+mc
+);
+
+1894 
+mc
+->
+¡©e
+ = 
+MS_INITIAL
+;
+
+1897 
+mc
+->
+sd_tÝ
+ = 
+SOCKET_UNDEFINED
+;
+
+1898 
+mc
+->
+sd_þi
+ = 
+SOCKET_UNDEFINED
+;
+
+1899 
+	}
+}
+
+1902 
+	$mª_³rsi¡_š™
+ (
+mªagem’t
+ *
+mª
+,
+
+1903 cÚ¡ 
+log_hi¡Üy_ÿche
+,
+
+1904 cÚ¡ 
+echo_bufãr_size
+,
+
+1905 cÚ¡ 
+¡©e_bufãr_size
+)
+
+1907 
+mª_³rsi¡
+ *
+mp
+ = &
+mª
+->
+³rsi¡
+;
+
+1908 ià(!
+mp
+->
+defšed
+)
+
+1910 
+	`CLEAR
+ (*
+mp
+);
+
+1913 
+mp
+->
+log
+ = 
+	`log_hi¡Üy_š™
+ (
+log_hi¡Üy_ÿche
+);
+
+1920 
+mp
+->
+vout
+.
+func
+ = 
+vœtu®_ou�ut_ÿÎback_func
+;
+
+1921 
+mp
+->
+vout
+.
+¬g
+ = 
+mª
+;
+
+1922 
+mp
+->
+vout
+.
+æags_deçuÉ
+ = 
+M_CLIENT
+;
+
+1923 
+	`msg_£t_vœtu®_ou�ut
+ (&
+mp
+->
+vout
+);
+
+1928 
+mª
+->
+³rsi¡
+.
+echo
+ = 
+	`log_hi¡Üy_š™
+ (
+echo_bufãr_size
+);
+
+1933 
+mª
+->
+³rsi¡
+.
+¡©e
+ = 
+	`log_hi¡Üy_š™
+ (
+¡©e_bufãr_size
+);
+
+1935 
+mp
+->
+defšed
+ = 
+Œue
+;
+
+1937 
+	}
+}
+
+1940 
+	$mª_³rsi¡_þo£
+ (
+mª_³rsi¡
+ *
+mp
+)
+
+1942 ià(
+mp
+->
+log
+)
+
+1944 
+	`msg_£t_vœtu®_ou�ut
+ (
+NULL
+);
+
+1945 
+	`log_hi¡Üy_þo£
+ (
+mp
+->
+log
+);
+
+1948 ià(
+mp
+->
+echo
+)
+
+1949 
+	`log_hi¡Üy_þo£
+ (
+mp
+->
+echo
+);
+
+1951 ià(
+mp
+->
+¡©e
+)
+
+1952 
+	`log_hi¡Üy_þo£
+ (
+mp
+->
+¡©e
+);
+
+1954 
+	`CLEAR
+ (*
+mp
+);
+
+1955 
+	}
+}
+
+1958 
+	$mª_£‰šgs_š™
+ (
+mª_£‰šgs
+ *
+ms
+,
+
+1959 cÚ¡ *
+addr
+,
+
+1960 cÚ¡ 
+pÜt
+,
+
+1961 cÚ¡ *
+·ss_fže
+,
+
+1962 cÚ¡ *
+þ›Á_u£r
+,
+
+1963 cÚ¡ *
+þ›Á_group
+,
+
+1964 cÚ¡ 
+log_hi¡Üy_ÿche
+,
+
+1965 cÚ¡ 
+echo_bufãr_size
+,
+
+1966 cÚ¡ 
+¡©e_bufãr_size
+,
+
+1967 cÚ¡ *
+wr™e_³”_šfo_fže
+,
+
+1968 cÚ¡ 
+»m­_sigu¤1
+,
+
+1969 cÚ¡ 
+æags
+)
+
+1971 ià(!
+ms
+->
+defšed
+)
+
+1973 
+	`CLEAR
+ (*
+ms
+);
+
+1975 
+ms
+->
+æags
+ = flags;
+
+1976 
+ms
+->
+þ›Á_uid
+ = -1;
+
+1977 
+ms
+->
+þ›Á_gid
+ = -1;
+
+1982 ià(
+·ss_fže
+)
+
+1983 
+	`g‘_u£r_·ss
+ (&
+ms
+->
+up
+, 
+·ss_fže
+, "Mªagem’t", 
+GET_USER_PASS_PASSWORD_ONLY
+);
+
+1988 ià(
+þ›Á_u£r
+)
+
+1990 
+¶©fÜm_¡©e_u£r
+ 
+s
+;
+
+1991 
+	`¶©fÜm_u£r_g‘
+ (
+þ›Á_u£r
+, &
+s
+);
+
+1992 
+ms
+->
+þ›Á_uid
+ = 
+	`¶©fÜm_¡©e_u£r_uid
+ (&
+s
+);
+
+1993 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: cl›Á_uid=%d", 
+ms
+->
+þ›Á_uid
+);
+
+1994 
+	`ASSERT
+ (
+ms
+->
+þ›Á_uid
+ >= 0);
+
+1996 ià(
+þ›Á_group
+)
+
+1998 
+¶©fÜm_¡©e_group
+ 
+s
+;
+
+1999 
+	`¶©fÜm_group_g‘
+ (
+þ›Á_group
+, &
+s
+);
+
+2000 
+ms
+->
+þ›Á_gid
+ = 
+	`¶©fÜm_¡©e_group_gid
+ (&
+s
+);
+
+2001 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: cl›Á_gid=%d", 
+ms
+->
+þ›Á_gid
+);
+
+2002 
+	`ASSERT
+ (
+ms
+->
+þ›Á_gid
+ >= 0);
+
+2005 
+ms
+->
+wr™e_³”_šfo_fže
+ = 
+	`¡ršg_®loc
+ (wr™e_³”_šfo_fže, 
+NULL
+);
+
+2007 #ià
+UNIX_SOCK_SUPPORT
+
+
+2008 ià(
+ms
+->
+æags
+ & 
+MF_UNIX_SOCK
+)
+
+2009 
+	`sockaddr_unix_š™
+ (&
+ms
+->
+loÿl_unix
+, 
+addr
+);
+
+2016 
+ms
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+2017 
+ms
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 0;
+
+2018 
+ms
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (
+pÜt
+);
+
+2024 ià(
+	`¡»q
+ (
+addr
+, "tuÂ–"è&& !(
+æags
+ & 
+MF_CONNECT_AS_CLIENT
+))
+
+2026 
+ms
+->
+mªagem’t_ov”_tuÂ–
+ = 
+Œue
+;
+
+2030 
+ms
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+g‘addr
+
+
+2031 (
+GETADDR_RESOLVE
+|
+GETADDR_WARN_ON_SIGNAL
+|
+GETADDR_FATAL
+, 
+addr
+, 0, 
+NULL
+, NULL);
+
+2038 
+ms
+->
+log_hi¡Üy_ÿche
+ =†og_history_cache;
+
+2039 
+ms
+->
+echo_bufãr_size
+ =ƒcho_buffer_size;
+
+2040 
+ms
+->
+¡©e_bufãr_size
+ = state_buffer_size;
+
+2045 ià(
+»m­_sigu¤1
+ =ð
+SIGHUP
+)
+
+2046 
+ms
+->
+mªsig
+ |ð
+MANSIG_MAP_USR1_TO_HUP
+;
+
+2047 ià(
+»m­_sigu¤1
+ =ð
+SIGTERM
+)
+
+2048 
+ms
+->
+mªsig
+ |ð
+MANSIG_MAP_USR1_TO_TERM
+;
+
+2050 
+ms
+->
+defšed
+ = 
+Œue
+;
+
+2052 
+	}
+}
+
+2055 
+	$mª_£‰šgs_þo£
+ (
+mª_£‰šgs
+ *
+ms
+)
+
+2057 
+	`ä“
+ (
+ms
+->
+wr™e_³”_šfo_fže
+);
+
+2058 
+	`CLEAR
+ (*
+ms
+);
+
+2059 
+	}
+}
+
+2063 
+	$mª_cÚÃùiÚ_š™
+ (
+mªagem’t
+ *
+mª
+)
+
+2065 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_INITIAL
+)
+
+2067 #ifdeà
+WIN32
+
+
+2072 
+	`Ãt_ev’t_wš32_š™
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+2079 
+mª
+->
+cÚÃùiÚ
+.
+š
+ = 
+	`commªd_lše_Ãw
+ (1024);
+
+2080 
+mª
+->
+cÚÃùiÚ
+.
+out
+ = 
+	`bufãr_li¡_Ãw
+ (0);
+
+2087 
+maxev’ts
+ = 1;
+
+2088 
+mª
+->
+cÚÃùiÚ
+.
+es
+ = 
+	`ev’t_£t_š™
+ (&
+maxev’ts
+, 
+EVENT_METHOD_FAST
+);
+
+2094 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_CONNECT_AS_CLIENT
+)
+
+2095 
+	`mª_cÚÃù
+ (
+mª
+);
+
+2097 
+	`mª_li¡’
+ (
+mª
+);
+
+2099 
+	}
+}
+
+2102 
+	$mª_cÚÃùiÚ_þo£
+ (
+mªagem’t
+ *
+mª
+)
+
+2104 
+mª_cÚÃùiÚ
+ *
+mc
+ = &
+mª
+->
+cÚÃùiÚ
+;
+
+2106 ià(
+mc
+->
+es
+)
+
+2107 
+	`ev’t_ä“
+ (
+mc
+->
+es
+);
+
+2108 #ifdeà
+WIN32
+
+
+2109 
+	`Ãt_ev’t_wš32_þo£
+ (&
+mc
+->
+Ã32
+);
+
+2111 ià(
+	`sock‘_defšed
+ (
+mc
+->
+sd_tÝ
+))
+
+2113 
+	`mª_þo£_sock‘
+ (
+mª
+, 
+mc
+->
+sd_tÝ
+);
+
+2114 
+	`mª_d–‘e_unix_sock‘
+ (
+mª
+);
+
+2116 ià(
+	`sock‘_defšed
+ (
+mc
+->
+sd_þi
+))
+
+2117 
+	`mª_þo£_sock‘
+ (
+mª
+, 
+mc
+->
+sd_þi
+);
+
+2118 ià(
+mc
+->
+š
+)
+
+2119 
+	`commªd_lše_ä“
+ (
+mc
+->
+š
+);
+
+2120 ià(
+mc
+->
+out
+)
+
+2121 
+	`bufãr_li¡_ä“
+ (
+mc
+->
+out
+);
+
+2122 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+2123 
+	`š_exŒa_»£t
+ (&
+mª
+->
+cÚÃùiÚ
+, 
+IER_RESET
+);
+
+2125 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2126 
+	`bufãr_li¡_ä“
+ (
+mc
+->
+ext_key_šput
+);
+
+2128 
+	`mª_cÚÃùiÚ_þ—r
+ (
+mc
+);
+
+2129 
+	}
+}
+
+2131 
+mªagem’t
+ *
+
+2132 
+	$mªagem’t_š™
+ ()
+
+2134 
+mªagem’t
+ *
+mª
+;
+
+2135 
+	`ALLOC_OBJ_CLEAR
+ (
+mª
+, 
+mªagem’t
+);
+
+2137 
+	`mª_³rsi¡_š™
+ (
+mª
+,
+
+2138 
+MANAGEMENT_LOG_HISTORY_INITIAL_SIZE
+,
+
+2139 
+MANAGEMENT_ECHO_BUFFER_SIZE
+,
+
+2140 
+MANAGEMENT_STATE_BUFFER_SIZE
+);
+
+2142 
+	`mª_cÚÃùiÚ_þ—r
+ (&
+mª
+->
+cÚÃùiÚ
+);
+
+2144  
+mª
+;
+
+2145 
+	}
+}
+
+2147 
+boÞ
+
+
+2148 
+	$mªagem’t_Ý’
+ (
+mªagem’t
+ *
+mª
+,
+
+2149 cÚ¡ *
+addr
+,
+
+2150 cÚ¡ 
+pÜt
+,
+
+2151 cÚ¡ *
+·ss_fže
+,
+
+2152 cÚ¡ *
+þ›Á_u£r
+,
+
+2153 cÚ¡ *
+þ›Á_group
+,
+
+2154 cÚ¡ 
+log_hi¡Üy_ÿche
+,
+
+2155 cÚ¡ 
+echo_bufãr_size
+,
+
+2156 cÚ¡ 
+¡©e_bufãr_size
+,
+
+2157 cÚ¡ *
+wr™e_³”_šfo_fže
+,
+
+2158 cÚ¡ 
+»m­_sigu¤1
+,
+
+2159 cÚ¡ 
+æags
+)
+
+2161 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2167 
+	`mª_£‰šgs_š™
+ (&
+mª
+->
+£‰šgs
+,
+
+2168 
+addr
+,
+
+2169 
+pÜt
+,
+
+2170 
+·ss_fže
+,
+
+2171 
+þ›Á_u£r
+,
+
+2172 
+þ›Á_group
+,
+
+2173 
+log_hi¡Üy_ÿche
+,
+
+2174 
+echo_bufãr_size
+,
+
+2175 
+¡©e_bufãr_size
+,
+
+2176 
+wr™e_³”_šfo_fže
+,
+
+2177 
+»m­_sigu¤1
+,
+
+2178 
+æags
+);
+
+2184 
+	`log_hi¡Üy_»size
+ (
+mª
+->
+³rsi¡
+.
+log
+, mª->
+£‰šgs
+.
+log_hi¡Üy_ÿche
+);
+
+2185 
+	`log_hi¡Üy_»size
+ (
+mª
+->
+³rsi¡
+.
+echo
+, mª->
+£‰šgs
+.
+echo_bufãr_size
+);
+
+2186 
+	`log_hi¡Üy_»size
+ (
+mª
+->
+³rsi¡
+.
+¡©e
+, mª->
+£‰šgs
+.
+¡©e_bufãr_size
+);
+
+2192 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_INITIAL
+)
+
+2194 ià(!
+mª
+->
+£‰šgs
+.
+mªagem’t_ov”_tuÂ–
+)
+
+2196 
+	`mª_cÚÃùiÚ_š™
+ (
+mª
+);
+
+2197 
+»t
+ = 
+Œue
+;
+
+2201  
+»t
+;
+
+2202 
+	}
+}
+
+2205 
+	$mªagem’t_þo£
+ (
+mªagem’t
+ *
+mª
+)
+
+2207 
+	`mª_ou�ut_li¡_push_fš®ize
+ (
+mª
+);
+
+2208 
+	`mª_cÚÃùiÚ_þo£
+ (
+mª
+);
+
+2209 
+	`mª_£‰šgs_þo£
+ (&
+mª
+->
+£‰šgs
+);
+
+2210 
+	`mª_³rsi¡_þo£
+ (&
+mª
+->
+³rsi¡
+);
+
+2211 
+	`ä“
+ (
+mª
+);
+
+2212 
+	}
+}
+
+2215 
+	$mªagem’t_£t_ÿÎback
+ (
+mªagem’t
+ *
+mª
+,
+
+2216 cÚ¡ 
+mªagem’t_ÿÎback
+ *
+cb
+)
+
+2218 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+Œue
+;
+
+2219 
+mª
+->
+³rsi¡
+.
+ÿÎback
+ = *
+cb
+;
+
+2220 
+	}
+}
+
+2223 
+	$mªagem’t_þ—r_ÿÎback
+ (
+mªagem’t
+ *
+mª
+)
+
+2225 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+2226 
+mª
+->
+³rsi¡
+.
+hÞd_»Ëa£
+ = 
+çl£
+;
+
+2227 
+	`CLEAR
+ (
+mª
+->
+³rsi¡
+.
+ÿÎback
+);
+
+2228 
+	`mª_ou�ut_li¡_push_fš®ize
+ (
+mª
+);
+
+2229 
+	}
+}
+
+2232 
+	$mªagem’t_£t_¡©e
+ (
+mªagem’t
+ *
+mª
+,
+
+2233 cÚ¡ 
+¡©e
+,
+
+2234 cÚ¡ *
+d‘až
+,
+
+2235 cÚ¡ 
+š_addr_t
+ 
+tun_loÿl_�
+,
+
+2236 cÚ¡ 
+š_addr_t
+ 
+tun_»mÙe_�
+)
+
+2238 ià(
+mª
+->
+³rsi¡
+.
+¡©e
+ && (!(mª->
+£‰šgs
+.
+æags
+ & 
+MF_SERVER
+è|| s�‹ < 
+OPENVPN_STATE_CLIENT_BASE
+))
+
+2240 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2241 
+log_’Œy
+ 
+e
+;
+
+2242 cÚ¡ *
+out
+ = 
+NULL
+;
+
+2244 
+	`upd©e_time
+ ();
+
+2245 
+	`CLEAR
+ (
+e
+);
+
+2246 
+e
+.
+time¡amp
+ = 
+now
+;
+
+2247 
+e
+.
+u
+.
+¡©e
+ = state;
+
+2248 
+e
+.
+¡ršg
+ = 
+d‘až
+;
+
+2249 
+e
+.
+loÿl_�
+ = 
+tun_loÿl_�
+;
+
+2250 
+e
+.
+»mÙe_�
+ = 
+tun_»mÙe_�
+;
+
+2252 
+	`log_hi¡Üy_add
+ (
+mª
+->
+³rsi¡
+.
+¡©e
+, &
+e
+);
+
+2254 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e_»®time
+)
+
+2255 
+out
+ = 
+	`log_’Œy_´št
+ (&
+e
+, 
+LOG_PRINT_STATE_PREFIX
+
+
+2256 | 
+LOG_PRINT_INT_DATE
+
+
+2257 | 
+LOG_PRINT_STATE
+
+
+2258 | 
+LOG_PRINT_LOCAL_IP
+
+
+2259 | 
+LOG_PRINT_REMOTE_IP
+
+
+2260 | 
+LOG_PRINT_CRLF
+
+
+2261 | 
+LOG_ECHO_TO_LOG
+, &
+gc
+);
+
+2263 ià(
+out
+)
+
+2264 
+	`mª_ou�ut_li¡_push
+ (
+mª
+, 
+out
+);
+
+2266 
+	`gc_ä“
+ (&
+gc
+);
+
+2268 
+	}
+}
+
+2270 
+boÞ
+
+
+2271 
+	$’v_fž‹r_m©ch
+ (cÚ¡ *
+’v_¡r
+, cÚ¡ 
+’v_fž‹r_Ëv–
+)
+
+2273 cÚ¡ *
+’v_Çmes
+[] = {
+
+2291 ià(
+’v_fž‹r_Ëv–
+ == 0)
+
+2292  
+Œue
+;
+
+2293 ià(
+’v_fž‹r_Ëv–
+ <ð1 && !
+	`¡ºcmp
+(
+’v_¡r
+, "X509_", 5))
+
+2294  
+Œue
+;
+
+2295 ià(
+’v_fž‹r_Ëv–
+ <= 2)
+
+2297 
+size_t
+ 
+i
+;
+
+2298 
+i
+ = 0; i < 
+	`SIZE
+(
+’v_Çmes
+); ++i)
+
+2300 cÚ¡ *
+’
+ = 
+’v_Çmes
+[
+i
+];
+
+2301 cÚ¡ 
+size_t
+ 
+Ën
+ = 
+	`¡¾’
+(
+’
+);
+
+2302 ià(!
+	`¡ºcmp
+(
+’v_¡r
+, 
+’
+, 
+Ën
+))
+
+2303  
+Œue
+;
+
+2305  
+çl£
+;
+
+2307  
+çl£
+;
+
+2308 
+	}
+}
+
+2311 
+	$mª_ou�ut_’v
+ (cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+boÞ
+ 
+�ž
+, cÚ¡ 
+’v_fž‹r_Ëv–
+, cÚ¡ *
+´efix
+)
+
+2313 ià(
+es
+)
+
+2315 
+’v_™em
+ *
+e
+;
+
+2316 
+e
+ = 
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+2318 ià(
+e
+->
+¡ršg
+ && (!
+’v_fž‹r_Ëv–
+ || 
+	`’v_fž‹r_m©ch
+(e->string,ƒnv_filter_level)))
+
+2319 
+	`msg
+ (
+M_CLIENT
+, ">%s:ENV,%s", 
+´efix
+, 
+e
+->
+¡ršg
+);
+
+2322 ià(
+�ž
+)
+
+2323 
+	`msg
+ (
+M_CLIENT
+, ">%s:ENV,END", 
+´efix
+);
+
+2324 
+	}
+}
+
+2327 
+	$mª_ou�ut_exŒa_’v
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+´efix
+)
+
+2329 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2330 
+’v_£t
+ *
+es
+ = 
+	`’v_£t_ü—‹
+ (&
+gc
+);
+
+2331 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+)
+
+2333 cÚ¡ 
+nþ›Ás
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+n_þ›Ás
+è(mª->³rsi¡.ÿÎback.
+¬g
+);
+
+2334 
+	`£‹nv_št
+ (
+es
+, "n_þ›Ás", 
+nþ›Ás
+);
+
+2336 
+	`mª_ou�ut_’v
+ (
+es
+, 
+çl£
+, 
+mª
+->
+cÚÃùiÚ
+.
+’v_fž‹r_Ëv–
+, 
+´efix
+);
+
+2337 
+	`gc_ä“
+ (&
+gc
+);
+
+2338 
+	}
+}
+
+2341 
+	$mªagem’t_up_down
+(
+mªagem’t
+ *
+mª
+, cÚ¡ *
+updown
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+2343 ià(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_UP_DOWN
+)
+
+2345 
+	`msg
+ (
+M_CLIENT
+, ">UPDOWN:%s", 
+updown
+);
+
+2346 
+	`mª_ou�ut_’v
+ (
+es
+, 
+Œue
+, 0, "UPDOWN");
+
+2348 
+	}
+}
+
+2351 
+	$mªagem’t_nÙify
+(
+mªagem’t
+ *
+mª
+, cÚ¡ *
+£v”™y
+, cÚ¡ *
+ty³
+, cÚ¡ *
+‹xt
+)
+
+2353 
+	`msg
+ (
+M_CLIENT
+, ">NOTIFY:%s,%s,%s", 
+£v”™y
+, 
+ty³
+, 
+‹xt
+);
+
+2354 
+	}
+}
+
+2357 
+	$mªagem’t_nÙify_g’”ic
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡r
+)
+
+2359 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+¡r
+);
+
+2360 
+	}
+}
+
+2362 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+2364 
+boÞ
+
+
+2365 
+	$v®id©e_³”_šfo_lše
+(cÚ¡ *
+lše
+)
+
+2367 
+ušt8_t
+ 
+c
+;
+
+2368 
+¡©e
+ = 0;
+
+2369 (
+c
+=*
+lše
+++))
+
+2371 
+¡©e
+)
+
+2375 ià(
+c
+ =ð'=' && 
+¡©e
+ == 1)
+
+2376 
+¡©e
+ = 2;
+
+2377 ià(
+	`i§Êum
+(
+c
+) || c == '_')
+
+2378 
+¡©e
+ = 1;
+
+2380  
+çl£
+;
+
+2382 ià(
+	`i¥ršt
+(
+c
+))
+
+2385  
+çl£
+;
+
+2388  (
+¡©e
+ == 2);
+
+2389 
+	}
+}
+
+2392 
+	$mª_ou�ut_³”_šfo_’v
+ (
+mªagem’t
+ *
+mª
+, 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+)
+
+2394 
+lše
+[256];
+
+2395 ià(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+g‘_³”_šfo
+)
+
+2397 cÚ¡ *
+³”_šfo
+ = (*
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+g‘_³”_šfo
+è(mª->³rsi¡.ÿÎback.
+¬g
+, 
+mdac
+->
+cid
+);
+
+2398 ià(
+³”_šfo
+)
+
+2400 
+bufãr
+ 
+buf
+;
+
+2401 
+	`buf_£t_»ad
+ (&
+buf
+, (cÚ¡ 
+ušt8_t
+ *è
+³”_šfo
+, 
+	`¡¾’
+(peer_info));
+
+2402 
+	`buf_·r£
+ (&
+buf
+, '\n', 
+lše
+,  (line)))
+
+2404 
+	`chomp
+ (
+lše
+);
+
+2405 ià(
+	`v®id©e_³”_šfo_lše
+(
+lše
+))
+
+2407 
+	`msg
+ (
+M_CLIENT
+, ">CLIENT:ENV,%s", 
+lše
+);
+
+2410 
+	`msg
+ (
+D_MANAGEMENT
+, "validation failed on…eer_info†ine„eceived from client");
+
+2414 
+	}
+}
+
+2417 
+	$mªagem’t_nÙify_þ›Á_Ãedšg_auth
+ (
+mªagem’t
+ *management,
+
+2418 cÚ¡ 
+mda_key_id
+,
+
+2419 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+2420 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+2422 ià(!(
+mdac
+->
+æags
+ & 
+DAF_CONNECTION_CLOSED
+))
+
+2424 cÚ¡ *
+mode
+ = "CONNECT";
+
+2425 ià(
+mdac
+->
+æags
+ & 
+DAF_CONNECTION_ESTABLISHED
+)
+
+2426 
+mode
+ = "REAUTH";
+
+2427 
+	`msg
+ (
+M_CLIENT
+, ">CLIENT:%s,%lu,%u", 
+mode
+, 
+mdac
+->
+cid
+, 
+mda_key_id
+);
+
+2428 
+	`mª_ou�ut_exŒa_’v
+ (
+mªagem’t
+, "CLIENT");
+
+2429 
+	`mª_ou�ut_³”_šfo_’v
+(
+mªagem’t
+, 
+mdac
+);
+
+2430 
+	`mª_ou�ut_’v
+ (
+es
+, 
+Œue
+, 
+mªagem’t
+->
+cÚÃùiÚ
+.
+’v_fž‹r_Ëv–
+, "CLIENT");
+
+2431 
+mdac
+->
+æags
+ |ð
+DAF_INITIAL_AUTH
+;
+
+2433 
+	}
+}
+
+2436 
+	$mªagem’t_cÚÃùiÚ_e¡ablished
+ (
+mªagem’t
+ *management,
+
+2437 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+2438 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+2440 
+mdac
+->
+æags
+ |ð
+DAF_CONNECTION_ESTABLISHED
+;
+
+2441 
+	`msg
+ (
+M_CLIENT
+, ">CLIENT:ESTABLISHED,%lu", 
+mdac
+->
+cid
+);
+
+2442 
+	`mª_ou�ut_exŒa_’v
+ (
+mªagem’t
+, "CLIENT");
+
+2443 
+	`mª_ou�ut_’v
+ (
+es
+, 
+Œue
+, 
+mªagem’t
+->
+cÚÃùiÚ
+.
+’v_fž‹r_Ëv–
+, "CLIENT");
+
+2444 
+	}
+}
+
+2447 
+	$mªagem’t_nÙify_þ›Á_þo£
+ (
+mªagem’t
+ *management,
+
+2448 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+2449 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+2451 ià((
+mdac
+->
+æags
+ & 
+DAF_INITIAL_AUTH
+è&& !(mdac->æag & 
+DAF_CONNECTION_CLOSED
+))
+
+2453 
+	`msg
+ (
+M_CLIENT
+, ">CLIENT:DISCONNECT,%lu", 
+mdac
+->
+cid
+);
+
+2454 
+	`mª_ou�ut_’v
+ (
+es
+, 
+Œue
+, 
+mªagem’t
+->
+cÚÃùiÚ
+.
+’v_fž‹r_Ëv–
+, "CLIENT");
+
+2455 
+mdac
+->
+æags
+ |ð
+DAF_CONNECTION_CLOSED
+;
+
+2457 
+	}
+}
+
+2460 
+	$mªagem’t_Ë¬n_addr
+ (
+mªagem’t
+ *management,
+
+2461 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+2462 cÚ¡ 
+mrou‹_addr
+ *
+addr
+,
+
+2463 cÚ¡ 
+boÞ
+ 
+´im¬y
+)
+
+2465 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2466 ià((
+mdac
+->
+æags
+ & 
+DAF_INITIAL_AUTH
+è&& !(mdac->æag & 
+DAF_CONNECTION_CLOSED
+))
+
+2468 
+	`msg
+ (
+M_CLIENT
+, ">CLIENT:ADDRESS,%lu,%s,%d",
+
+2469 
+mdac
+->
+cid
+,
+
+2470 
+	`mrou‹_addr_´št_ex
+ (
+addr
+, 
+MAPF_SUBNET
+, &
+gc
+),
+
+2471 
+	`BOOL_CAST
+ (
+´im¬y
+));
+
+2473 
+	`gc_ä“
+ (&
+gc
+);
+
+2474 
+	}
+}
+
+2479 
+	$mªagem’t_echo
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡ršg
+, cÚ¡ 
+boÞ
+ 
+puÎ
+)
+
+2481 ià(
+mª
+->
+³rsi¡
+.
+echo
+)
+
+2483 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2484 
+log_’Œy
+ 
+e
+;
+
+2485 cÚ¡ *
+out
+ = 
+NULL
+;
+
+2487 
+	`upd©e_time
+ ();
+
+2488 
+	`CLEAR
+ (
+e
+);
+
+2489 
+e
+.
+time¡amp
+ = 
+now
+;
+
+2490 
+e
+.
+¡ršg
+ = string;
+
+2491 
+e
+.
+u
+.
+štv®
+ = 
+	`BOOL_CAST
+ (
+puÎ
+);
+
+2493 
+	`log_hi¡Üy_add
+ (
+mª
+->
+³rsi¡
+.
+echo
+, &
+e
+);
+
+2495 ià(
+mª
+->
+cÚÃùiÚ
+.
+echo_»®time
+)
+
+2496 
+out
+ = 
+	`log_’Œy_´št
+ (&
+e
+, 
+LOG_PRINT_INT_DATE
+|
+LOG_PRINT_ECHO_PREFIX
+|
+LOG_PRINT_CRLF
+|
+MANAGEMENT_ECHO_FLAGS
+, &
+gc
+);
+
+2498 ià(
+out
+)
+
+2499 
+	`mª_ou�ut_li¡_push
+ (
+mª
+, 
+out
+);
+
+2501 
+	`gc_ä“
+ (&
+gc
+);
+
+2503 
+	}
+}
+
+2506 
+	$mªagem’t_po¡_tuÂ–_Ý’
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+š_addr_t
+ 
+tun_loÿl_�
+)
+
+2512 ià(
+mª
+->
+£‰šgs
+.
+mªagem’t_ov”_tuÂ–
+
+
+2513 && 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_INITIAL
+)
+
+2516 
+mª
+->
+£‰šgs
+.
+loÿl
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (
+tun_loÿl_�
+);
+
+2517 
+	`mª_cÚÃùiÚ_š™
+ (
+mª
+);
+
+2520 
+	}
+}
+
+2523 
+	$mªagem’t_´e_tuÂ–_þo£
+ (
+mªagem’t
+ *
+mª
+)
+
+2525 ià(
+mª
+->
+£‰šgs
+.
+mªagem’t_ov”_tuÂ–
+)
+
+2526 
+	`mª_cÚÃùiÚ_þo£
+ (
+mª
+);
+
+2527 
+	}
+}
+
+2530 
+	$mªagem’t_auth_çžu»
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+»asÚ
+)
+
+2532 ià(
+»asÚ
+)
+
+2533 
+	`msg
+ (
+M_CLIENT
+, ">PASSWORD:V”ifiÿtiÚ Fažed: '%s' ['%s']", 
+ty³
+, 
+»asÚ
+);
+
+2535 
+	`msg
+ (
+M_CLIENT
+, ">PASSWORD:V”ifiÿtiÚ Fažed: '%s'", 
+ty³
+);
+
+2536 
+	}
+}
+
+2539 
+	$mªagem’t_auth_tok’
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+tok’
+)
+
+2541 
+	`msg
+ (
+M_CLIENT
+, ">PASSWORD:Auth-Tok’:%s", 
+tok’
+);
+
+2542 
+	}
+}
+
+2544 
+šlše
+ 
+boÞ
+
+
+2545 
+	$mª_³rsi¡_¡©e
+ (*
+³rsi¡’t
+, cÚ¡ 
+n
+)
+
+2547 ià(
+³rsi¡’t
+)
+
+2549 ià(*
+³rsi¡’t
+ =ð()
+n
+)
+
+2550  
+çl£
+;
+
+2551 *
+³rsi¡’t
+ = 
+n
+;
+
+2553  
+Œue
+;
+
+2554 
+	}
+}
+
+2556 #ifdeà
+WIN32
+
+
+2559 
+	$mªagem’t_sock‘_£t
+ (
+mªagem’t
+ *
+mª
+,
+
+2560 
+ev’t_£t
+ *
+es
+,
+
+2561 *
+¬g
+,
+
+2562 *
+³rsi¡’t
+)
+
+2564 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ !ð
+MS_INITIAL
+)
+
+2566 
+ev’t_t
+ 
+ev
+ = 
+	`Ãt_ev’t_wš32_g‘_ev’t
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+2567 
+	`Ãt_ev’t_wš32_»£t_wr™e
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+2569 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+)
+
+2571 
+MS_LISTEN
+:
+
+2572 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 1))
+
+2573 
+	`ev’t_ùl
+ (
+es
+, 
+ev
+, 
+EVENT_READ
+, 
+¬g
+);
+
+2575 
+MS_CC_WAIT_READ
+:
+
+2576 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 2))
+
+2577 
+	`ev’t_ùl
+ (
+es
+, 
+ev
+, 
+EVENT_READ
+, 
+¬g
+);
+
+2579 
+MS_CC_WAIT_WRITE
+:
+
+2580 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 3))
+
+2581 
+	`ev’t_ùl
+ (
+es
+, 
+ev
+, 
+EVENT_READ
+|
+EVENT_WRITE
+, 
+¬g
+);
+
+2584 
+	`ASSERT
+ (0);
+
+2587 
+	}
+}
+
+2590 
+	$mªagem’t_io
+ (
+mªagem’t
+ *
+mª
+)
+
+2592 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ !ð
+MS_INITIAL
+)
+
+2594 
+Ãt_ev’ts
+;
+
+2595 
+	`Ãt_ev’t_wš32_»£t
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+2596 
+Ãt_ev’ts
+ = 
+	`Ãt_ev’t_wš32_g‘_ev’t_mask
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+);
+
+2598 ià(
+Ãt_ev’ts
+ & 
+FD_CLOSE
+)
+
+2600 
+	`mª_»£t_þ›Á_sock‘
+ (
+mª
+, 
+çl£
+);
+
+2604 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_LISTEN
+)
+
+2606 ià(
+Ãt_ev’ts
+ & 
+FD_ACCEPT
+)
+
+2608 
+	`mª_acû±
+ (
+mª
+);
+
+2609 
+	`Ãt_ev’t_wš32_þ—r_£Ëùed_ev’ts
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+, 
+FD_ACCEPT
+);
+
+2612 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_CC_WAIT_READ
+ || mª->cÚÃùiÚ.¡©�=ð
+MS_CC_WAIT_WRITE
+)
+
+2614 ià(
+Ãt_ev’ts
+ & 
+FD_READ
+)
+
+2616 
+	`mª_»ad
+ (
+mª
+) > 0)
+
+2618 
+	`Ãt_ev’t_wš32_þ—r_£Ëùed_ev’ts
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+, 
+FD_READ
+);
+
+2621 ià(
+Ãt_ev’ts
+ & 
+FD_WRITE
+)
+
+2623 
+¡©us
+;
+
+2624 
+¡©us
+ = 
+	`mª_wr™e
+ (
+mª
+);
+
+2625 ià(
+¡©us
+ < 0 && 
+	`WSAG‘La¡E¼Ü
+(è=ð
+WSAEWOULDBLOCK
+)
+
+2627 
+	`Ãt_ev’t_wš32_þ—r_£Ëùed_ev’ts
+ (&
+mª
+->
+cÚÃùiÚ
+.
+Ã32
+, 
+FD_WRITE
+);
+
+2633 
+	}
+}
+
+2638 
+	$mªagem’t_sock‘_£t
+ (
+mªagem’t
+ *
+mª
+,
+
+2639 
+ev’t_£t
+ *
+es
+,
+
+2640 *
+¬g
+,
+
+2641 *
+³rsi¡’t
+)
+
+2643 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+)
+
+2645 
+MS_LISTEN
+:
+
+2646 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 1))
+
+2647 
+	`ev’t_ùl
+ (
+es
+, 
+mª
+->
+cÚÃùiÚ
+.
+sd_tÝ
+, 
+EVENT_READ
+, 
+¬g
+);
+
+2649 
+MS_CC_WAIT_READ
+:
+
+2650 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 2))
+
+2651 
+	`ev’t_ùl
+ (
+es
+, 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, 
+EVENT_READ
+, 
+¬g
+);
+
+2653 
+MS_CC_WAIT_WRITE
+:
+
+2654 ià(
+	`mª_³rsi¡_¡©e
+ (
+³rsi¡’t
+, 3))
+
+2655 
+	`ev’t_ùl
+ (
+es
+, 
+mª
+->
+cÚÃùiÚ
+.
+sd_þi
+, 
+EVENT_WRITE
+, 
+¬g
+);
+
+2657 
+MS_INITIAL
+:
+
+2660 
+	`ASSERT
+ (0);
+
+2662 
+	}
+}
+
+2665 
+	$mªagem’t_io
+ (
+mªagem’t
+ *
+mª
+)
+
+2667 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+)
+
+2669 
+MS_LISTEN
+:
+
+2670 
+	`mª_acû±
+ (
+mª
+);
+
+2672 
+MS_CC_WAIT_READ
+:
+
+2673 
+	`mª_»ad
+ (
+mª
+);
+
+2675 
+MS_CC_WAIT_WRITE
+:
+
+2676 
+	`mª_wr™e
+ (
+mª
+);
+
+2678 
+MS_INITIAL
+:
+
+2681 
+	`ASSERT
+ (0);
+
+2683 
+	}
+}
+
+2687 
+šlše
+ 
+boÞ
+
+
+2688 
+	$mª_¡ªd®Úe_ok
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+2690  !
+mª
+->
+£‰šgs
+.
+mªagem’t_ov”_tuÂ–
+ && mª->
+cÚÃùiÚ
+.
+¡©e
+ !ð
+MS_INITIAL
+;
+
+2691 
+	}
+}
+
+2693 
+boÞ
+
+
+2694 
+	$mª_check_fÜ_sigÇls
+ (vÞ©ž�*
+sigÇl_»ûived
+)
+
+2696 ià(
+sigÇl_»ûived
+)
+
+2698 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+2699 ià(*
+sigÇl_»ûived
+)
+
+2700  
+Œue
+;
+
+2702  
+çl£
+;
+
+2703 
+	}
+}
+
+2709 
+	$mª_block
+ (
+mªagem’t
+ *
+mª
+, vÞ©ž�*
+sigÇl_»ûived
+, cÚ¡ 
+time_t
+ 
+expœe
+)
+
+2711 
+timev®
+ 
+tv
+;
+
+2712 
+ev’t_£t_»tuº
+ 
+e¤
+;
+
+2713 
+¡©us
+ = -1;
+
+2715 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+2717 
+Œue
+)
+
+2719 
+	`ev’t_»£t
+ (
+mª
+->
+cÚÃùiÚ
+.
+es
+);
+
+2720 
+	`mªagem’t_sock‘_£t
+ (
+mª
+, mª->
+cÚÃùiÚ
+.
+es
+, 
+NULL
+, NULL);
+
+2721 
+tv
+.
+tv_u£c
+ = 0;
+
+2722 
+tv
+.
+tv_£c
+ = 1;
+
+2723 ià(
+	`mª_check_fÜ_sigÇls
+ (
+sigÇl_»ûived
+))
+
+2725 
+¡©us
+ = -1;
+
+2728 
+¡©us
+ = 
+	`ev’t_wa™
+ (
+mª
+->
+cÚÃùiÚ
+.
+es
+, &
+tv
+, &
+e¤
+, 1);
+
+2729 
+	`upd©e_time
+ ();
+
+2730 ià(
+	`mª_check_fÜ_sigÇls
+ (
+sigÇl_»ûived
+))
+
+2732 
+¡©us
+ = -1;
+
+2736 ià(
+¡©us
+ > 0)
+
+2738 ià(
+expœe
+ && 
+now
+ >=ƒxpire)
+
+2741 
+¡©us
+ = 0;
+
+2742 ià(
+sigÇl_»ûived
+)
+
+2743 *
+sigÇl_»ûived
+ = 
+SIGINT
+;
+
+2748  
+¡©us
+;
+
+2749 
+	}
+}
+
+2755 
+	$mª_ou�ut_¡ªd®Úe
+ (
+mªagem’t
+ *
+mª
+, vÞ©ž�*
+sigÇl_»ûived
+)
+
+2757 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+2759 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_CC_WAIT_WRITE
+)
+
+2761 
+	`mªagem’t_io
+ (
+mª
+);
+
+2762 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_CC_WAIT_WRITE
+)
+
+2763 
+	`mª_block
+ (
+mª
+, 
+sigÇl_»ûived
+, 0);
+
+2764 ià(
+sigÇl_»ûived
+ && *signal_received)
+
+2768 
+	}
+}
+
+2774 
+	$mª_¡ªd®Úe_ev’t_loÝ
+ (
+mªagem’t
+ *
+mª
+, vÞ©ž�*
+sigÇl_»ûived
+, cÚ¡ 
+time_t
+ 
+expœe
+)
+
+2776 
+¡©us
+ = -1;
+
+2777 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+2779 
+¡©us
+ = 
+	`mª_block
+ (
+mª
+, 
+sigÇl_»ûived
+, 
+expœe
+);
+
+2780 ià(
+¡©us
+ > 0)
+
+2781 
+	`mªagem’t_io
+ (
+mª
+);
+
+2783  
+¡©us
+;
+
+2784 
+	}
+}
+
+2786 
+	#MWCC_PASSWORD_WAIT
+ (1<<0)
+
+	)
+
+2787 
+	#MWCC_HOLD_WAIT
+ (1<<1)
+
+	)
+
+2788 
+	#MWCC_OTHER_WAIT
+ (1<<2)
+
+	)
+
+2794 
+	$mª_wa™_fÜ_þ›Á_cÚÃùiÚ
+ (
+mªagem’t
+ *
+mª
+,
+
+2795 vÞ©ž�*
+sigÇl_»ûived
+,
+
+2796 cÚ¡ 
+time_t
+ 
+expœe
+,
+
+2797 
+æags
+)
+
+2799 
+	`ASSERT
+ (
+	`mª_¡ªd®Úe_ok
+ (
+mª
+));
+
+2800 ià(
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_LISTEN
+)
+
+2802 ià(
+æags
+ & 
+MWCC_PASSWORD_WAIT
+)
+
+2803 
+	`msg
+ (
+D_MANAGEMENT
+, "Need…assword(s) from management interface, waiting...");
+
+2804 ià(
+æags
+ & 
+MWCC_HOLD_WAIT
+)
+
+2805 
+	`msg
+ (
+D_MANAGEMENT
+, "Need hold„elease from management interface, waiting...");
+
+2806 ià(
+æags
+ & 
+MWCC_OTHER_WAIT
+)
+
+2807 
+	`msg
+ (
+D_MANAGEMENT
+, "Need information from management interface, waiting...");
+
+2809 
+	`mª_¡ªd®Úe_ev’t_loÝ
+ (
+mª
+, 
+sigÇl_»ûived
+, 
+expœe
+);
+
+2810 ià(
+sigÇl_»ûived
+ && *signal_received)
+
+2812 } 
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_LISTEN
+ || 
+	`mª_·sswÜd_Ãeded
+ (man));
+
+2814 
+	}
+}
+
+2820 
+	$mªagem’t_ev’t_loÝ_n_£cÚds
+ (
+mªagem’t
+ *
+mª
+, 
+£c
+)
+
+2822 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+2824 vÞ©ž�
+sigÇl_»ûived
+ = 0;
+
+2825 cÚ¡ 
+boÞ
+ 
+¡ªd®Úe_di§bËd_§ve
+ = 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+;
+
+2826 
+time_t
+ 
+expœe
+ = 0;
+
+2828 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+2831 
+	`upd©e_time
+ ();
+
+2832 ià(
+£c
+)
+
+2833 
+expœe
+ = 
+now
+ + 
+£c
+;
+
+2836 
+	`mª_wa™_fÜ_þ›Á_cÚÃùiÚ
+ (
+mª
+, &
+sigÇl_»ûived
+, 
+expœe
+, 0);
+
+2837 ià(
+sigÇl_»ûived
+)
+
+2843 
+	`mª_¡ªd®Úe_ev’t_loÝ
+ (
+mª
+, &
+sigÇl_»ûived
+, 
+expœe
+);
+
+2844 ià(!
+sigÇl_»ûived
+)
+
+2845 
+	`mª_check_fÜ_sigÇls
+ (&
+sigÇl_»ûived
+);
+
+2846 ià(
+sigÇl_»ûived
+)
+
+2848 } 
+expœe
+);
+
+2851 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+¡ªd®Úe_di§bËd_§ve
+;
+
+2855 
+	`¦“p
+ (
+£c
+);
+
+2857 
+	}
+}
+
+2862 
+boÞ
+
+
+2863 
+	$mªagem’t_qu”y_u£r_·ss
+ (
+mªagem’t
+ *
+mª
+,
+
+2864 
+u£r_·ss
+ *
+up
+,
+
+2865 cÚ¡ *
+ty³
+,
+
+2866 cÚ¡ 
+æags
+,
+
+2867 cÚ¡ *
+¡©ic_ch®Ënge
+)
+
+2869 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2870 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2872 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+2874 vÞ©ž�
+sigÇl_»ûived
+ = 0;
+
+2875 cÚ¡ 
+boÞ
+ 
+¡ªd®Úe_di§bËd_§ve
+ = 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+;
+
+2876 
+bufãr
+ 
+®”t_msg
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+2877 cÚ¡ *
+®”t_ty³
+ = 
+NULL
+;
+
+2878 cÚ¡ *
+´efix
+ = 
+NULL
+;
+
+2879 
+up_qu”y_mode
+ = 0;
+
+2880 #ifdeà
+ENABLE_CLIENT_CR
+
+
+2881 cÚ¡ *
+sc
+ = 
+NULL
+;
+
+2883 
+»t
+ = 
+Œue
+;
+
+2884 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+2885 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+2887 
+	`CLEAR
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+);
+
+2889 ià(
+æags
+ & 
+GET_USER_PASS_NEED_OK
+)
+
+2891 
+up_qu”y_mode
+ = 
+UP_QUERY_NEED_OK
+;
+
+2892 
+´efix
+= "NEED-OK";
+
+2893 
+®”t_ty³
+ = "confirmation";
+
+2895 ià(
+æags
+ & 
+GET_USER_PASS_NEED_STR
+)
+
+2897 
+up_qu”y_mode
+ = 
+UP_QUERY_NEED_STR
+;
+
+2898 
+´efix
+= "NEED-STR";
+
+2899 
+®”t_ty³
+ = "string";
+
+2901 ià(
+æags
+ & 
+GET_USER_PASS_PASSWORD_ONLY
+)
+
+2903 
+up_qu”y_mode
+ = 
+UP_QUERY_PASS
+;
+
+2904 
+´efix
+ = "PASSWORD";
+
+2905 
+®”t_ty³
+ = "password";
+
+2909 
+up_qu”y_mode
+ = 
+UP_QUERY_USER_PASS
+;
+
+2910 
+´efix
+ = "PASSWORD";
+
+2911 
+®”t_ty³
+ = "username/password";
+
+2912 #ifdeà
+ENABLE_CLIENT_CR
+
+
+2913 ià(
+¡©ic_ch®Ënge
+)
+
+2914 
+sc
+ = 
+¡©ic_ch®Ënge
+;
+
+2917 
+	`buf_´štf
+ (&
+®”t_msg
+, ">%s:Need '%s' %s",
+
+2918 
+´efix
+,
+
+2919 
+ty³
+,
+
+2920 
+®”t_ty³
+);
+
+2922 ià(
+æags
+ & (
+GET_USER_PASS_NEED_OK
+ | 
+GET_USER_PASS_NEED_STR
+))
+
+2923 
+	`buf_´štf
+ (&
+®”t_msg
+, " MSG:%s", 
+up
+->
+u£ºame
+);
+
+2925 #ifdeà
+ENABLE_CLIENT_CR
+
+
+2926 ià(
+sc
+)
+
+2927 
+	`buf_´štf
+ (&
+®”t_msg
+, " SC:%d,%s",
+
+2928 
+	`BOOL_CAST
+(
+æags
+ & 
+GET_USER_PASS_STATIC_CHALLENGE_ECHO
+),
+
+2929 
+sc
+);
+
+2932 
+	`mª_wa™_fÜ_þ›Á_cÚÃùiÚ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0, 
+MWCC_PASSWORD_WAIT
+);
+
+2933 ià(
+sigÇl_»ûived
+)
+
+2934 
+»t
+ = 
+çl£
+;
+
+2936 ià(
+»t
+)
+
+2938 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+	`BSTR
+ (&
+®”t_msg
+);
+
+2939 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+);
+
+2942 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ = up_query_mode;
+
+2943 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+ = 
+ty³
+;
+
+2948 
+	`mª_¡ªd®Úe_ev’t_loÝ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0);
+
+2949 ià(!
+sigÇl_»ûived
+)
+
+2950 
+	`mª_check_fÜ_sigÇls
+ (&
+sigÇl_»ûived
+);
+
+2951 ià(
+sigÇl_»ûived
+)
+
+2953 
+»t
+ = 
+çl£
+;
+
+2956 } !
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+defšed
+);
+
+2960 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_mode
+ = 
+UP_QUERY_DISABLED
+;
+
+2961 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y_ty³
+ = 
+NULL
+;
+
+2962 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+¡ªd®Úe_di§bËd_§ve
+;
+
+2963 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+2966 ià(!
+	`¡rcmp
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+, 
+bÏnk_up
+))
+
+2967 
+	`CLEAR
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+·sswÜd
+);
+
+2973 ià(
+»t
+)
+
+2975 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+.
+noÿche
+ = 
+up
+->nocache;
+
+2976 *
+up
+ = 
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+;
+
+2978 
+	`CLEAR
+ (
+mª
+->
+cÚÃùiÚ
+.
+up_qu”y
+);
+
+2981 
+	`gc_ä“
+ (&
+gc
+);
+
+2982  
+»t
+;
+
+2983 
+	}
+}
+
+2985 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2988 
+	$mªagem’t_qu”y_r§_sig
+ (
+mªagem’t
+ *
+mª
+,
+
+2989 cÚ¡ *
+b64_d©a
+)
+
+2991 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2992 *
+»t
+ = 
+NULL
+;
+
+2993 vÞ©ž�
+sigÇl_»ûived
+ = 0;
+
+2994 
+bufãr
+ 
+®”t_msg
+ = 
+	`þ—r_buf
+();
+
+2995 
+bufãr
+ *
+buf
+;
+
+2996 cÚ¡ 
+boÞ
+ 
+¡ªd®Úe_di§bËd_§ve
+ = 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+;
+
+2997 
+mª_cÚÃùiÚ
+ *
+mc
+ = &
+mª
+->
+cÚÃùiÚ
+;
+
+2999 ià(
+	`mª_¡ªd®Úe_ok
+ (
+mª
+))
+
+3001 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+3002 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+3004 
+mc
+->
+ext_key_¡©e
+ = 
+EKS_SOLICIT
+;
+
+3006 
+®”t_msg
+ = 
+	`®loc_buf_gc
+ (
+	`¡¾’
+(
+b64_d©a
+)+64, &
+gc
+);
+
+3007 
+	`buf_´štf
+ (&
+®”t_msg
+, ">RSA_SIGN:%s", 
+b64_d©a
+);
+
+3009 
+	`mª_wa™_fÜ_þ›Á_cÚÃùiÚ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0, 
+MWCC_OTHER_WAIT
+);
+
+3011 ià(
+sigÇl_»ûived
+)
+
+3012 
+dÚe
+;
+
+3014 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+	`BSTR
+ (&
+®”t_msg
+);
+
+3015 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+);
+
+3020 
+	`mª_¡ªd®Úe_ev’t_loÝ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0);
+
+3021 ià(!
+sigÇl_»ûived
+)
+
+3022 
+	`mª_check_fÜ_sigÇls
+ (&
+sigÇl_»ûived
+);
+
+3023 ià(
+sigÇl_»ûived
+)
+
+3024 
+dÚe
+;
+
+3025 } 
+mc
+->
+ext_key_¡©e
+ !ð
+EKS_READY
+);
+
+3027 ià(
+	`bufãr_li¡_defšed
+(
+mc
+->
+ext_key_šput
+))
+
+3029 
+	`bufãr_li¡_agg»g©e
+ (
+mc
+->
+ext_key_šput
+, 2048);
+
+3030 
+buf
+ = 
+	`bufãr_li¡_³ek
+ (
+mc
+->
+ext_key_šput
+);
+
+3031 ià(
+buf
+ && 
+	`BLEN
+(buf) > 0)
+
+3033 
+»t
+ = (*è
+	`m®loc
+(
+	`BLEN
+(
+buf
+)+1);
+
+3034 
+	`check_m®loc_»tuº
+(
+»t
+);
+
+3035 
+	`memýy
+(
+»t
+, 
+buf
+->
+d©a
+, 
+	`BLEN
+(buf));
+
+3036 
+»t
+[
+	`BLEN
+(
+buf
+)] = '\0';
+
+3041 
+dÚe
+:
+
+3042 ià(
+mc
+->
+ext_key_¡©e
+ =ð
+EKS_READY
+ && 
+»t
+)
+
+3043 
+	`msg
+ (
+M_CLIENT
+, "SUCCESS:„sa-sig command succeeded");
+
+3044 ià(
+mc
+->
+ext_key_¡©e
+ =ð
+EKS_INPUT
+ || mc->ext_key_¡©�=ð
+EKS_READY
+)
+
+3045 
+	`msg
+ (
+M_CLIENT
+, "ERROR:„sa-sig command failed");
+
+3048 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+¡ªd®Úe_di§bËd_§ve
+;
+
+3049 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+3050 
+	`š_exŒa_»£t
+ (
+mc
+, 
+IER_RESET
+);
+
+3051 
+mc
+->
+ext_key_¡©e
+ = 
+EKS_UNDEF
+;
+
+3052 
+	`bufãr_li¡_ä“
+ (
+mc
+->
+ext_key_šput
+);
+
+3053 
+mc
+->
+ext_key_šput
+ = 
+NULL
+;
+
+3055 
+	`gc_ä“
+ (&
+gc
+);
+
+3056  
+»t
+;
+
+3057 
+	}
+}
+
+3064 
+boÞ
+
+
+3065 
+	$mªagem’t_would_hÞd
+ (
+mªagem’t
+ *
+mª
+)
+
+3067  (
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_HOLD
+è&& !mª->
+³rsi¡
+.
+hÞd_»Ëa£
+ && 
+	`mª_¡ªd®Úe_ok
+ (man);
+
+3068 
+	}
+}
+
+3074 
+boÞ
+
+
+3075 
+	$mªagem’t_should_d«mÚize
+ (
+mªagem’t
+ *
+mª
+)
+
+3077  
+	`mªagem’t_would_hÞd
+ (
+mª
+è|| (mª->
+£‰šgs
+.
+æags
+ & 
+MF_QUERY_PASSWORDS
+);
+
+3078 
+	}
+}
+
+3084 
+boÞ
+
+
+3085 
+	$mªagem’t_hÞd
+ (
+mªagem’t
+ *
+mª
+)
+
+3087 ià(
+	`mªagem’t_would_hÞd
+ (
+mª
+))
+
+3089 vÞ©ž�
+sigÇl_»ûived
+ = 0;
+
+3090 cÚ¡ 
+boÞ
+ 
+¡ªd®Úe_di§bËd_§ve
+ = 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+;
+
+3092 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+çl£
+;
+
+3093 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+3094 
+mª
+->
+£‰šgs
+.
+mªsig
+ |ð
+MANSIG_IGNORE_USR1_HUP
+;
+
+3096 
+	`mª_wa™_fÜ_þ›Á_cÚÃùiÚ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0, 
+MWCC_HOLD_WAIT
+);
+
+3098 ià(!
+sigÇl_»ûived
+)
+
+3100 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = ">HOLD:Waiting for hold„elease";
+
+3101 
+	`msg
+ (
+M_CLIENT
+, "%s", 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+);
+
+3106 
+	`mª_¡ªd®Úe_ev’t_loÝ
+ (
+mª
+, &
+sigÇl_»ûived
+, 0);
+
+3107 ià(!
+sigÇl_»ûived
+)
+
+3108 
+	`mª_check_fÜ_sigÇls
+ (&
+sigÇl_»ûived
+);
+
+3109 ià(
+sigÇl_»ûived
+)
+
+3111 } !
+mª
+->
+³rsi¡
+.
+hÞd_»Ëa£
+);
+
+3115 
+mª
+->
+³rsi¡
+.
+¡ªd®Úe_di§bËd
+ = 
+¡ªd®Úe_di§bËd_§ve
+;
+
+3116 
+mª
+->
+³rsi¡
+.
+¥ecŸl_¡©e_msg
+ = 
+NULL
+;
+
+3117 
+mª
+->
+£‰šgs
+.
+mªsig
+ &ð~
+MANSIG_IGNORE_USR1_HUP
+;
+
+3119  
+Œue
+;
+
+3121  
+çl£
+;
+
+3122 
+	}
+}
+
+3128 
+commªd_lše
+ *
+
+3129 
+	$commªd_lše_Ãw
+ (cÚ¡ 
+buf_Ën
+)
+
+3131 
+commªd_lše
+ *
+þ
+;
+
+3132 
+	`ALLOC_OBJ_CLEAR
+ (
+þ
+, 
+commªd_lše
+);
+
+3133 
+þ
+->
+buf
+ = 
+	`®loc_buf
+ (
+buf_Ën
+);
+
+3134 
+þ
+->
+»sidu®
+ = 
+	`®loc_buf
+ (
+buf_Ën
+);
+
+3135  
+þ
+;
+
+3136 
+	}
+}
+
+3139 
+	$commªd_lše_»£t
+ (
+commªd_lše
+ *
+þ
+)
+
+3141 
+	`buf_þ—r
+ (&
+þ
+->
+buf
+);
+
+3142 
+	`buf_þ—r
+ (&
+þ
+->
+»sidu®
+);
+
+3143 
+	}
+}
+
+3146 
+	$commªd_lše_ä“
+ (
+commªd_lše
+ *
+þ
+)
+
+3148 
+	`commªd_lše_»£t
+ (
+þ
+);
+
+3149 
+	`ä“_buf
+ (&
+þ
+->
+buf
+);
+
+3150 
+	`ä“_buf
+ (&
+þ
+->
+»sidu®
+);
+
+3151 
+	`ä“
+ (
+þ
+);
+
+3152 
+	}
+}
+
+3155 
+	$commªd_lše_add
+ (
+commªd_lše
+ *
+þ
+, cÚ¡ *
+buf
+, cÚ¡ 
+Ën
+)
+
+3157 
+i
+;
+
+3158 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+3160 ià(
+buf
+[
+i
+] && 
+	`ch¬_þass
+(buf[i], (
+CC_PRINT
+|
+CC_NEWLINE
+)))
+
+3162 ià(!
+	`buf_wr™e_u8
+ (&
+þ
+->
+buf
+, buf[
+i
+]))
+
+3163 
+	`buf_þ—r
+ (&
+þ
+->
+buf
+);
+
+3166 
+	}
+}
+
+3169 
+	$commªd_lše_g‘
+ (
+commªd_lše
+ *
+þ
+)
+
+3171 
+i
+;
+
+3172 cÚ¡ *
+»t
+ = 
+NULL
+;
+
+3174 
+i
+ = 
+	`buf_sub¡ršg_Ën
+ (&
+þ
+->
+buf
+, '\n');
+
+3175 ià(
+i
+ >= 0)
+
+3177 
+	`buf_cÝy_exûss
+ (&
+þ
+->
+»sidu®
+, &þ->
+buf
+, 
+i
+);
+
+3178 
+	`buf_chomp
+ (&
+þ
+->
+buf
+);
+
+3179 
+»t
+ = (cÚ¡ *è
+	`BSTR
+ (&
+þ
+->
+buf
+);
+
+3181  
+»t
+;
+
+3182 
+	}
+}
+
+3185 
+	$commªd_lše_Ãxt
+ (
+commªd_lše
+ *
+þ
+)
+
+3187 
+	`buf_þ—r
+ (&
+þ
+->
+buf
+);
+
+3188 
+	`buf_cÝy
+ (&
+þ
+->
+buf
+, &þ->
+»sidu®
+);
+
+3189 
+	`buf_þ—r
+ (&
+þ
+->
+»sidu®
+);
+
+3190 
+	}
+}
+
+3197 
+	$log_’Œy_´št
+ (cÚ¡ 
+log_’Œy
+ *
+e
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+)
+
+3199 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (
+ERR_BUF_SIZE
+, 
+gc
+);
+
+3200 ià(
+æags
+ & 
+LOG_FATAL_NOTIFY
+)
+
+3201 
+	`buf_´štf
+ (&
+out
+, ">FATAL:");
+
+3202 ià(
+æags
+ & 
+LOG_PRINT_LOG_PREFIX
+)
+
+3203 
+	`buf_´štf
+ (&
+out
+, ">LOG:");
+
+3204 ià(
+æags
+ & 
+LOG_PRINT_ECHO_PREFIX
+)
+
+3205 
+	`buf_´štf
+ (&
+out
+, ">ECHO:");
+
+3206 ià(
+æags
+ & 
+LOG_PRINT_STATE_PREFIX
+)
+
+3207 
+	`buf_´štf
+ (&
+out
+, ">STATE:");
+
+3208 ià(
+æags
+ & 
+LOG_PRINT_INT_DATE
+)
+
+3209 
+	`buf_´štf
+ (&
+out
+, "%u,", ()
+e
+->
+time¡amp
+);
+
+3210 ià(
+æags
+ & 
+LOG_PRINT_MSG_FLAGS
+)
+
+3211 
+	`buf_´štf
+ (&
+out
+, "%s,", 
+	`msg_æags_¡ršg
+ (
+e
+->
+u
+.
+msg_æags
+, 
+gc
+));
+
+3212 ià(
+æags
+ & 
+LOG_PRINT_STATE
+)
+
+3213 
+	`buf_´štf
+ (&
+out
+, "%s,", 
+	`mª_¡©e_Çme
+ (
+e
+->
+u
+.
+¡©e
+));
+
+3214 ià(
+æags
+ & 
+LOG_PRINT_INTVAL
+)
+
+3215 
+	`buf_´štf
+ (&
+out
+, "%d,", 
+e
+->
+u
+.
+štv®
+);
+
+3216 ià(
+e
+->
+¡ršg
+)
+
+3217 
+	`buf_´štf
+ (&
+out
+, "%s", 
+e
+->
+¡ršg
+);
+
+3218 ià(
+æags
+ & 
+LOG_PRINT_LOCAL_IP
+)
+
+3219 
+	`buf_´štf
+ (&
+out
+, ",%s", 
+	`´št_š_addr_t
+ (
+e
+->
+loÿl_�
+, 
+IA_EMPTY_IF_UNDEF
+, 
+gc
+));
+
+3220 ià(
+æags
+ & 
+LOG_PRINT_REMOTE_IP
+)
+
+3221 
+	`buf_´štf
+ (&
+out
+, ",%s", 
+	`´št_š_addr_t
+ (
+e
+->
+»mÙe_�
+, 
+IA_EMPTY_IF_UNDEF
+, 
+gc
+));
+
+3222 ià(
+æags
+ & 
+LOG_ECHO_TO_LOG
+)
+
+3223 
+	`msg
+ (
+D_MANAGEMENT
+, "MANAGEMENT: %s", 
+	`BSTR
+ (&
+out
+));
+
+3224 ià(
+æags
+ & 
+LOG_PRINT_CRLF
+)
+
+3225 
+	`buf_´štf
+ (&
+out
+, "\r\n");
+
+3226  
+	`BSTR
+ (&
+out
+);
+
+3227 
+	}
+}
+
+3230 
+	$log_’Œy_ä“_cÚ‹Ás
+ (
+log_’Œy
+ *
+e
+)
+
+3232 ià(
+e
+->
+¡ršg
+)
+
+3233 
+	`ä“
+ ((*)
+e
+->
+¡ršg
+);
+
+3234 
+	`CLEAR
+ (*
+e
+);
+
+3235 
+	}
+}
+
+3241 
+šlše
+ 
+
+3242 
+	$log_šdex
+ (cÚ¡ 
+log_hi¡Üy
+ *
+h
+, 
+i
+)
+
+3244  
+	`modulo_add
+ (
+h
+->
+ba£
+, 
+i
+, h->
+ÿ·c™y
+);
+
+3245 
+	}
+}
+
+3248 
+	$log_hi¡Üy_obj_š™
+ (
+log_hi¡Üy
+ *
+h
+, 
+ÿ·c™y
+)
+
+3250 
+	`CLEAR
+ (*
+h
+);
+
+3251 
+h
+->
+ÿ·c™y
+ = capacity;
+
+3252 
+	`ALLOC_ARRAY_CLEAR
+ (
+h
+->
+¬¿y
+, 
+log_’Œy
+, 
+ÿ·c™y
+);
+
+3253 
+	}
+}
+
+3255 
+log_hi¡Üy
+ *
+
+3256 
+	$log_hi¡Üy_š™
+ (cÚ¡ 
+ÿ·c™y
+)
+
+3258 
+log_hi¡Üy
+ *
+h
+;
+
+3259 
+	`ASSERT
+ (
+ÿ·c™y
+ > 0);
+
+3260 
+	`ALLOC_OBJ
+ (
+h
+, 
+log_hi¡Üy
+);
+
+3261 
+	`log_hi¡Üy_obj_š™
+ (
+h
+, 
+ÿ·c™y
+);
+
+3262  
+h
+;
+
+3263 
+	}
+}
+
+3266 
+	$log_hi¡Üy_ä“_cÚ‹Ás
+ (
+log_hi¡Üy
+ *
+h
+)
+
+3268 
+i
+;
+
+3269 
+i
+ = 0; i < 
+h
+->
+size
+; ++i)
+
+3270 
+	`log_’Œy_ä“_cÚ‹Ás
+ (&
+h
+->
+¬¿y
+[
+	`log_šdex
+(h, 
+i
+)]);
+
+3271 
+	`ä“
+ (
+h
+->
+¬¿y
+);
+
+3272 
+	}
+}
+
+3275 
+	$log_hi¡Üy_þo£
+ (
+log_hi¡Üy
+ *
+h
+)
+
+3277 
+	`log_hi¡Üy_ä“_cÚ‹Ás
+ (
+h
+);
+
+3278 
+	`ä“
+ (
+h
+);
+
+3279 
+	}
+}
+
+3282 
+	$log_hi¡Üy_add
+ (
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+log_’Œy
+ *
+Ë
+)
+
+3284 
+log_’Œy
+ *
+e
+;
+
+3285 
+	`ASSERT
+ (
+h
+->
+size
+ >ð0 && h->siz�<ðh->
+ÿ·c™y
+);
+
+3286 ià(
+h
+->
+size
+ =ðh->
+ÿ·c™y
+)
+
+3288 
+e
+ = &
+h
+->
+¬¿y
+[h->
+ba£
+];
+
+3289 
+	`log_’Œy_ä“_cÚ‹Ás
+ (
+e
+);
+
+3290 
+h
+->
+ba£
+ = 
+	`log_šdex
+ (h, 1);
+
+3294 
+e
+ = &
+h
+->
+¬¿y
+[
+	`log_šdex
+(h, h->
+size
+)];
+
+3295 ++
+h
+->
+size
+;
+
+3298 *
+e
+ = *
+Ë
+;
+
+3299 
+e
+->
+¡ršg
+ = 
+	`¡ršg_®loc
+ (
+Ë
+->¡ršg, 
+NULL
+);
+
+3300 
+	}
+}
+
+3303 
+	$log_hi¡Üy_»size
+ (
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+ÿ·c™y
+)
+
+3305 ià(
+ÿ·c™y
+ !ð
+h
+->capacity)
+
+3307 
+log_hi¡Üy
+ 
+Ãwlog
+;
+
+3308 
+i
+;
+
+3310 
+	`ASSERT
+ (
+ÿ·c™y
+ > 0);
+
+3311 
+	`log_hi¡Üy_obj_š™
+ (&
+Ãwlog
+, 
+ÿ·c™y
+);
+
+3313 
+i
+ = 0; i < 
+h
+->
+size
+; ++i)
+
+3314 
+	`log_hi¡Üy_add
+ (&
+Ãwlog
+, &
+h
+->
+¬¿y
+[
+	`log_šdex
+(h, 
+i
+)]);
+
+3316 
+	`log_hi¡Üy_ä“_cÚ‹Ás
+ (
+h
+);
+
+3317 *
+h
+ = 
+Ãwlog
+;
+
+3319 
+	}
+}
+
+3321 cÚ¡ 
+log_’Œy
+ *
+
+3322 
+	$log_hi¡Üy_»f
+ (cÚ¡ 
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+šdex
+)
+
+3324 ià(
+šdex
+ >ð0 && index < 
+h
+->
+size
+)
+
+3325  &
+h
+->
+¬¿y
+[
+	`log_šdex
+(h, (h->
+size
+ - 1è- 
+šdex
+)];
+
+3327  
+NULL
+;
+
+3328 
+	}
+}
+
+3331 
+	$dummy
+(è{
+	}
+}
+
+	@manage.h
+
+25 #iâdeà
+MANAGE_H
+
+
+26 
+	#MANAGE_H
+
+
+	)
+
+28 #ifdeà
+ENABLE_MANAGEMENT
+
+
+30 
+	~"misc.h
+"
+
+31 
+	~"ev’t.h
+"
+
+32 
+	~"sock‘.h
+"
+
+33 
+	~"mrou‹.h
+"
+
+35 
+	#MANAGEMENT_VERSION
+ 1
+
+	)
+
+36 
+	#MANAGEMENT_N_PASSWORD_RETRIES
+ 3
+
+	)
+
+37 
+	#MANAGEMENT_LOG_HISTORY_INITIAL_SIZE
+ 100
+
+	)
+
+38 
+	#MANAGEMENT_ECHO_BUFFER_SIZE
+ 100
+
+	)
+
+39 
+	#MANAGEMENT_STATE_BUFFER_SIZE
+ 100
+
+	)
+
+44 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+45 
+	smª_def_auth_cÚ‹xt
+ {
+
+46 
+	mcid
+;
+
+48 
+	#DAF_CONNECTION_ESTABLISHED
+ (1<<0)
+
+	)
+
+49 
+	#DAF_CONNECTION_CLOSED
+ (1<<1)
+
+	)
+
+50 
+	#DAF_INITIAL_AUTH
+ (1<<2)
+
+	)
+
+51 
+	mæags
+;
+
+53 
+	mmda_key_id_couÁ”
+;
+
+55 
+time_t
+ 
+	mby‹couÁ_Ï¡_upd©e
+;
+
+62 
+	scommªd_lše
+
+
+64 
+bufãr
+ 
+	mbuf
+;
+
+65 
+bufãr
+ 
+	m»sidu®
+;
+
+68 
+commªd_lše
+ *
+commªd_lše_Ãw
+ (cÚ¡ 
+buf_Ën
+);
+
+69 
+commªd_lše_ä“
+ (
+commªd_lše
+ *
+þ
+);
+
+71 
+commªd_lše_add
+ (
+commªd_lše
+ *
+þ
+, cÚ¡ *
+buf
+, cÚ¡ 
+Ën
+);
+
+72 cÚ¡ *
+commªd_lše_g‘
+ (
+commªd_lše
+ *
+þ
+);
+
+73 
+commªd_lše_»£t
+ (
+commªd_lše
+ *
+þ
+);
+
+74 
+commªd_lše_Ãxt
+ (
+commªd_lše
+ *
+þ
+);
+
+80 
+	ulog_’Œy_uniÚ
+ {
+
+81 
+	mmsg_æags
+;
+
+82 
+	m¡©e
+;
+
+83 
+	mštv®
+;
+
+86 
+	slog_’Œy
+
+
+88 
+time_t
+ 
+	mtime¡amp
+;
+
+89 cÚ¡ *
+	m¡ršg
+;
+
+90 
+š_addr_t
+ 
+	mloÿl_�
+;
+
+91 
+š_addr_t
+ 
+	m»mÙe_�
+;
+
+92 
+log_’Œy_uniÚ
+ 
+	mu
+;
+
+95 
+	#LOG_PRINT_LOG_PREFIX
+ (1<<0)
+
+	)
+
+96 
+	#LOG_PRINT_ECHO_PREFIX
+ (1<<1)
+
+	)
+
+97 
+	#LOG_PRINT_STATE_PREFIX
+ (1<<2)
+
+	)
+
+99 
+	#LOG_PRINT_INT_DATE
+ (1<<3)
+
+	)
+
+100 
+	#LOG_PRINT_MSG_FLAGS
+ (1<<4)
+
+	)
+
+101 
+	#LOG_PRINT_STATE
+ (1<<5)
+
+	)
+
+102 
+	#LOG_PRINT_LOCAL_IP
+ (1<<6)
+
+	)
+
+104 
+	#LOG_PRINT_CRLF
+ (1<<7)
+
+	)
+
+105 
+	#LOG_FATAL_NOTIFY
+ (1<<8)
+
+	)
+
+107 
+	#LOG_PRINT_INTVAL
+ (1<<9)
+
+	)
+
+109 
+	#LOG_PRINT_REMOTE_IP
+ (1<<10)
+
+	)
+
+111 
+	#LOG_ECHO_TO_LOG
+ (1<<11)
+
+	)
+
+113 cÚ¡ *
+log_’Œy_´št
+ (cÚ¡ 
+log_’Œy
+ *
+e
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+);
+
+115 
+	slog_hi¡Üy
+
+
+117 
+	mba£
+;
+
+118 
+	msize
+;
+
+119 
+	mÿ·c™y
+;
+
+120 
+log_’Œy
+ *
+	m¬¿y
+;
+
+123 
+log_hi¡Üy
+ *
+log_hi¡Üy_š™
+ (cÚ¡ 
+ÿ·c™y
+);
+
+124 
+log_hi¡Üy_þo£
+ (
+log_hi¡Üy
+ *
+h
+);
+
+125 
+log_hi¡Üy_add
+ (
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+log_’Œy
+ *
+Ë
+);
+
+126 
+log_hi¡Üy_»size
+ (
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+ÿ·c™y
+);
+
+127 cÚ¡ 
+log_’Œy
+ *
+log_hi¡Üy_»f
+ (cÚ¡ 
+log_hi¡Üy
+ *
+h
+, cÚ¡ 
+šdex
+);
+
+129 
+šlše
+ 
+
+130 
+	$log_hi¡Üy_size
+ (cÚ¡ 
+log_hi¡Üy
+ *
+h
+)
+
+132  
+h
+->
+size
+;
+
+133 
+	}
+}
+
+135 
+šlše
+ 
+
+136 
+	$log_hi¡Üy_ÿ·c™y
+ (cÚ¡ 
+log_hi¡Üy
+ *
+h
+)
+
+138  
+h
+->
+ÿ·c™y
+;
+
+139 
+	}
+}
+
+145 
+	smªagem’t_ÿÎback
+
+
+147 *
+	m¬g
+;
+
+149 
+	#MCF_SERVER
+ (1<<0è
+
+	)
+
+150 
+	mæags
+;
+
+152 (*
+	m¡©us
+è(*
+	m¬g
+, cÚ¡ 
+	mv”siÚ
+, 
+¡©us_ou�ut
+ *
+	mso
+);
+
+153 (*
+	mshow_Ãt
+è(*
+	m¬g
+, cÚ¡ 
+	mmsgËv–
+);
+
+154 (*
+	mkžl_by_ú
+è(*
+	m¬g
+, cÚ¡ *
+	mcommÚ_Çme
+);
+
+155 (*
+	mkžl_by_addr
+è(*
+	m¬g
+, cÚ¡ 
+š_addr_t
+ 
+	maddr
+, cÚ¡ 
+	mpÜt
+);
+
+156 (*
+	md–‘e_ev’t
+è(*
+	m¬g
+, 
+ev’t_t
+ 
+	mev’t
+);
+
+157 (*
+	mn_þ›Ás
+è(*
+	m¬g
+);
+
+158 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+159 
+boÞ
+ (*
+kžl_by_cid
+è(*
+	m¬g
+, cÚ¡ 
+	mcid
+, cÚ¡ *
+	mkžl_msg
+);
+
+160 
+boÞ
+ (*
+þ›Á_auth
+è(*
+	m¬g
+,
+
+161 cÚ¡ 
+	mcid
+,
+
+162 cÚ¡ 
+	mmda_key_id
+,
+
+163 cÚ¡ 
+boÞ
+ 
+	mauth
+,
+
+164 cÚ¡ *
+	m»asÚ
+,
+
+165 cÚ¡ *
+	mþ›Á_»asÚ
+,
+
+166 
+bufãr_li¡
+ *
+	mcc_cÚfig
+);
+
+167 *(*
+	mg‘_³”_šfo
+è(*
+	m¬g
+, cÚ¡ 
+	mcid
+);
+
+169 #ifdeà
+MANAGEMENT_PF
+
+
+170 
+boÞ
+ (*
+þ›Á_pf
+è(*
+	m¬g
+,
+
+171 cÚ¡ 
+	mcid
+,
+
+172 
+bufãr_li¡
+ *
+	mpf_cÚfig
+);
+
+174 
+boÞ
+ (*
+´oxy_cmd
+è(*
+	m¬g
+, cÚ¡ **
+	mp
+);
+
+175 
+boÞ
+ (*
+»mÙe_cmd
+è(*
+	m¬g
+, cÚ¡ **
+	mp
+);
+
+192 
+	smª_³rsi¡
+ {
+
+193 
+boÞ
+ 
+	mdefšed
+;
+
+195 
+log_hi¡Üy
+ *
+	mlog
+;
+
+196 
+vœtu®_ou�ut
+ 
+	mvout
+;
+
+198 
+boÞ
+ 
+	m¡ªd®Úe_di§bËd
+;
+
+199 
+mªagem’t_ÿÎback
+ 
+	mÿÎback
+;
+
+201 
+log_hi¡Üy
+ *
+	mecho
+;
+
+202 
+log_hi¡Üy
+ *
+	m¡©e
+;
+
+204 
+boÞ
+ 
+	mhÞd_»Ëa£
+;
+
+206 cÚ¡ *
+	m¥ecŸl_¡©e_msg
+;
+
+208 
+couÁ”_ty³
+ 
+	mby‹s_š
+;
+
+209 
+couÁ”_ty³
+ 
+	mby‹s_out
+;
+
+212 
+	smª_£‰šgs
+ {
+
+213 
+boÞ
+ 
+	mdefšed
+;
+
+214 
+	mæags
+;
+
+215 
+Ý’v²_sockaddr
+ 
+	mloÿl
+;
+
+216 #ià
+UNIX_SOCK_SUPPORT
+
+
+217 
+sockaddr_un
+ 
+	mloÿl_unix
+;
+
+219 
+boÞ
+ 
+	mmªagem’t_ov”_tuÂ–
+;
+
+220 
+u£r_·ss
+ 
+	mup
+;
+
+221 
+	mlog_hi¡Üy_ÿche
+;
+
+222 
+	mecho_bufãr_size
+;
+
+223 
+	m¡©e_bufãr_size
+;
+
+224 *
+	mwr™e_³”_šfo_fže
+;
+
+225 
+	mþ›Á_uid
+;
+
+226 
+	mþ›Á_gid
+;
+
+229 
+	#MANSIG_IGNORE_USR1_HUP
+ (1<<0)
+
+	)
+
+230 
+	#MANSIG_MAP_USR1_TO_HUP
+ (1<<1)
+
+	)
+
+231 
+	#MANSIG_MAP_USR1_TO_TERM
+ (1<<2)
+
+	)
+
+232 
+	mmªsig
+;
+
+236 
+	#UP_QUERY_DISABLED
+ 0
+
+	)
+
+237 
+	#UP_QUERY_USER_PASS
+ 1
+
+	)
+
+238 
+	#UP_QUERY_PASS
+ 2
+
+	)
+
+239 
+	#UP_QUERY_NEED_OK
+ 3
+
+	)
+
+240 
+	#UP_QUERY_NEED_STR
+ 4
+
+	)
+
+243 
+	#MS_INITIAL
+ 0
+
+	)
+
+244 
+	#MS_LISTEN
+ 1
+
+	)
+
+245 
+	#MS_CC_WAIT_READ
+ 2
+
+	)
+
+246 
+	#MS_CC_WAIT_WRITE
+ 3
+
+	)
+
+248 
+	smª_cÚÃùiÚ
+ {
+
+249 
+	m¡©e
+;
+
+251 
+sock‘_desü�tÜ_t
+ 
+	msd_tÝ
+;
+
+252 
+sock‘_desü�tÜ_t
+ 
+	msd_þi
+;
+
+253 
+Ý’v²_sockaddr
+ 
+	m»mÙe
+;
+
+255 #ifdeà
+WIN32
+
+
+256 
+Ãt_ev’t_wš32
+ 
+	mÃ32
+;
+
+259 
+boÞ
+ 
+	mh®t
+;
+
+260 
+boÞ
+ 
+	m·sswÜd_v”if›d
+;
+
+261 
+	m·sswÜd_Œ›s
+;
+
+263 
+commªd_lše
+ *
+	mš
+;
+
+264 
+bufãr_li¡
+ *
+	mout
+;
+
+266 #ifdeà
+MANAGEMENT_IN_EXTRA
+
+
+267 
+	#IEC_UNDEF
+ 0
+
+	)
+
+268 
+	#IEC_CLIENT_AUTH
+ 1
+
+	)
+
+269 
+	#IEC_CLIENT_PF
+ 2
+
+	)
+
+270 
+	#IEC_RSA_SIGN
+ 3
+
+	)
+
+271 
+	mš_exŒa_cmd
+;
+
+272 
+bufãr_li¡
+ *
+	mš_exŒa
+;
+
+273 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+274 
+	mš_exŒa_cid
+;
+
+275 
+	mš_exŒa_kid
+;
+
+277 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+278 
+	#EKS_UNDEF
+ 0
+
+	)
+
+279 
+	#EKS_SOLICIT
+ 1
+
+	)
+
+280 
+	#EKS_INPUT
+ 2
+
+	)
+
+281 
+	#EKS_READY
+ 3
+
+	)
+
+282 
+	mext_key_¡©e
+;
+
+283 
+bufãr_li¡
+ *
+	mext_key_šput
+;
+
+286 
+ev’t_£t
+ *
+	mes
+;
+
+287 
+	m’v_fž‹r_Ëv–
+;
+
+289 
+boÞ
+ 
+	m¡©e_»®time
+;
+
+290 
+boÞ
+ 
+	mlog_»®time
+;
+
+291 
+boÞ
+ 
+	mecho_»®time
+;
+
+292 
+	mby‹couÁ_upd©e_£cÚds
+;
+
+293 
+time_t
+ 
+	mby‹couÁ_Ï¡_upd©e
+;
+
+295 cÚ¡ *
+	mup_qu”y_ty³
+;
+
+296 
+	mup_qu”y_mode
+;
+
+297 
+u£r_·ss
+ 
+	mup_qu”y
+;
+
+299 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+300 
+bufãr_li¡
+ *
+	mr§_sig
+;
+
+304 
+	smªagem’t
+
+
+306 
+mª_³rsi¡
+ 
+	m³rsi¡
+;
+
+307 
+mª_£‰šgs
+ 
+	m£‰šgs
+;
+
+308 
+mª_cÚÃùiÚ
+ 
+	mcÚÃùiÚ
+;
+
+311 

+mªagem’t
+ *management;
+
+313 
+	gu£r_·ss
+;
+
+315 
+mªagem’t
+ *
+mªagem’t_š™
+ ();
+
+318 
+	#MF_SERVER
+ (1<<0)
+
+	)
+
+319 
+	#MF_QUERY_PASSWORDS
+ (1<<1)
+
+	)
+
+320 
+	#MF_HOLD
+ (1<<2)
+
+	)
+
+321 
+	#MF_SIGNAL
+ (1<<3)
+
+	)
+
+322 
+	#MF_FORGET_DISCONNECT
+ (1<<4)
+
+	)
+
+323 
+	#MF_CONNECT_AS_CLIENT
+ (1<<5)
+
+	)
+
+324 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+325 
+	#MF_CLIENT_AUTH
+ (1<<6)
+
+	)
+
+327 #ifdeà
+MANAGEMENT_PF
+
+
+328 
+	#MF_CLIENT_PF
+ (1<<7)
+
+	)
+
+330 
+	#MF_UNIX_SOCK
+ (1<<8)
+
+	)
+
+331 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+332 
+	#MF_EXTERNAL_KEY
+ (1<<9)
+
+	)
+
+334 
+	#MF_UP_DOWN
+ (1<<10)
+
+	)
+
+335 
+	#MF_QUERY_REMOTE
+ (1<<11)
+
+	)
+
+336 
+	#MF_QUERY_PROXY
+ (1<<12)
+
+	)
+
+338 
+boÞ
+ 
+mªagem’t_Ý’
+ (
+mªagem’t
+ *
+mª
+,
+
+339 cÚ¡ *
+addr
+,
+
+340 cÚ¡ 
+pÜt
+,
+
+341 cÚ¡ *
+·ss_fže
+,
+
+342 cÚ¡ *
+þ›Á_u£r
+,
+
+343 cÚ¡ *
+þ›Á_group
+,
+
+344 cÚ¡ 
+log_hi¡Üy_ÿche
+,
+
+345 cÚ¡ 
+echo_bufãr_size
+,
+
+346 cÚ¡ 
+¡©e_bufãr_size
+,
+
+347 cÚ¡ *
+wr™e_³”_šfo_fže
+,
+
+348 cÚ¡ 
+»m­_sigu¤1
+,
+
+349 cÚ¡ 
+æags
+);
+
+351 
+mªagem’t_þo£
+ (
+mªagem’t
+ *
+mª
+);
+
+353 
+mªagem’t_po¡_tuÂ–_Ý’
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+š_addr_t
+ 
+tun_loÿl_�
+);
+
+355 
+mªagem’t_´e_tuÂ–_þo£
+ (
+mªagem’t
+ *
+mª
+);
+
+357 
+mªagem’t_sock‘_£t
+ (
+mªagem’t
+ *
+mª
+,
+
+358 
+ev’t_£t
+ *
+es
+,
+
+359 *
+¬g
+,
+
+360 *
+³rsi¡’t
+);
+
+362 
+mªagem’t_io
+ (
+mªagem’t
+ *
+mª
+);
+
+364 
+mªagem’t_£t_ÿÎback
+ (
+mªagem’t
+ *
+mª
+,
+
+365 cÚ¡ 
+mªagem’t_ÿÎback
+ *
+cb
+);
+
+367 
+mªagem’t_þ—r_ÿÎback
+ (
+mªagem’t
+ *
+mª
+);
+
+369 
+boÞ
+ 
+mªagem’t_qu”y_u£r_·ss
+ (
+mªagem’t
+ *
+mª
+,
+
+370 
+u£r_·ss
+ *
+up
+,
+
+371 cÚ¡ *
+ty³
+,
+
+372 cÚ¡ 
+æags
+,
+
+373 cÚ¡ *
+¡©ic_ch®Ënge
+);
+
+375 
+boÞ
+ 
+mªagem’t_should_d«mÚize
+ (
+mªagem’t
+ *
+mª
+);
+
+376 
+boÞ
+ 
+mªagem’t_would_hÞd
+ (
+mªagem’t
+ *
+mª
+);
+
+377 
+boÞ
+ 
+mªagem’t_hÞd
+ (
+mªagem’t
+ *
+mª
+);
+
+379 
+mªagem’t_ev’t_loÝ_n_£cÚds
+ (
+mªagem’t
+ *
+mª
+, 
+£c
+);
+
+381 
+mªagem’t_up_down
+(
+mªagem’t
+ *
+mª
+, cÚ¡ *
+updown
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+383 
+mªagem’t_nÙify
+(
+mªagem’t
+ *
+mª
+, cÚ¡ *
+£v”™y
+, cÚ¡ *
+ty³
+, cÚ¡ *
+‹xt
+);
+
+385 
+mªagem’t_nÙify_g’”ic
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡r
+);
+
+387 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+388 
+mªagem’t_nÙify_þ›Á_Ãedšg_auth
+ (
+mªagem’t
+ *management,
+
+389 cÚ¡ 
+auth_id
+,
+
+390 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+391 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+393 
+mªagem’t_cÚÃùiÚ_e¡ablished
+ (
+mªagem’t
+ *management,
+
+394 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+395 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+397 
+mªagem’t_nÙify_þ›Á_þo£
+ (
+mªagem’t
+ *management,
+
+398 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+399 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+401 
+mªagem’t_Ë¬n_addr
+ (
+mªagem’t
+ *management,
+
+402 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+,
+
+403 cÚ¡ 
+mrou‹_addr
+ *
+addr
+,
+
+404 cÚ¡ 
+boÞ
+ 
+´im¬y
+);
+
+407 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+409 *
+mªagem’t_qu”y_r§_sig
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+b64_d©a
+);
+
+413 
+šlše
+ 
+boÞ
+
+
+414 
+	$mªagem’t_cÚÃùed
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+416  
+mª
+->
+cÚÃùiÚ
+.
+¡©e
+ =ð
+MS_CC_WAIT_READ
+ || mª->cÚÃùiÚ.¡©�=ð
+MS_CC_WAIT_WRITE
+;
+
+417 
+	}
+}
+
+419 
+šlše
+ 
+boÞ
+
+
+420 
+	$mªagem’t_qu”y_u£r_·ss_’abËd
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+422  
+	`BOOL_CAST
+(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_QUERY_PASSWORDS
+);
+
+423 
+	}
+}
+
+425 
+šlše
+ 
+boÞ
+
+
+426 
+	$mªagem’t_qu”y_»mÙe_’abËd
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+428  
+	`BOOL_CAST
+(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_QUERY_REMOTE
+);
+
+429 
+	}
+}
+
+431 
+šlše
+ 
+boÞ
+
+
+432 
+	$mªagem’t_qu”y_´oxy_’abËd
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+434  
+	`BOOL_CAST
+(
+mª
+->
+£‰šgs
+.
+æags
+ & 
+MF_QUERY_PROXY
+);
+
+435 
+	}
+}
+
+437 #ifdeà
+MANAGEMENT_PF
+
+
+438 
+šlše
+ 
+boÞ
+
+
+439 
+	$mªagem’t_’abË_pf
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+441  
+mª
+ && 
+	`BOOL_CAST
+(mª->
+£‰šgs
+.
+æags
+ & 
+MF_CLIENT_PF
+);
+
+442 
+	}
+}
+
+445 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+446 
+šlše
+ 
+boÞ
+
+
+447 
+	$mªagem’t_’abË_def_auth
+ (cÚ¡ 
+mªagem’t
+ *
+mª
+)
+
+449  
+mª
+ && 
+	`BOOL_CAST
+(mª->
+£‰šgs
+.
+æags
+ & 
+MF_CLIENT_AUTH
+);
+
+450 
+	}
+}
+
+458 
+	#OPENVPN_STATE_INITIAL
+ 0
+
+	)
+
+459 
+	#OPENVPN_STATE_CONNECTING
+ 1
+
+	)
+
+460 
+	#OPENVPN_STATE_ASSIGN_IP
+ 2
+
+	)
+
+461 
+	#OPENVPN_STATE_ADD_ROUTES
+ 3
+
+	)
+
+462 
+	#OPENVPN_STATE_CONNECTED
+ 4
+
+	)
+
+463 
+	#OPENVPN_STATE_RECONNECTING
+ 5
+
+	)
+
+464 
+	#OPENVPN_STATE_EXITING
+ 6
+
+	)
+
+467 
+	#OPENVPN_STATE_WAIT
+ 7
+
+	)
+
+468 
+	#OPENVPN_STATE_AUTH
+ 8
+
+	)
+
+469 
+	#OPENVPN_STATE_GET_CONFIG
+ 9
+
+	)
+
+470 
+	#OPENVPN_STATE_RESOLVE
+ 10
+
+	)
+
+471 
+	#OPENVPN_STATE_TCP_CONNECT
+ 11
+
+	)
+
+473 
+	#OPENVPN_STATE_CLIENT_BASE
+ 7
+
+	)
+
+475 
+mªagem’t_£t_¡©e
+ (
+mªagem’t
+ *
+mª
+,
+
+476 cÚ¡ 
+¡©e
+,
+
+477 cÚ¡ *
+d‘až
+,
+
+478 cÚ¡ 
+š_addr_t
+ 
+tun_loÿl_�
+,
+
+479 cÚ¡ 
+š_addr_t
+ 
+tun_»mÙe_�
+);
+
+485 
+mªagem’t_echo
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+¡ršg
+, cÚ¡ 
+boÞ
+ 
+puÎ
+);
+
+491 
+mªagem’t_auth_çžu»
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+ty³
+, cÚ¡ *
+»asÚ
+);
+
+496 
+mªagem’t_auth_tok’
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ *
+tok’
+);
+
+502 
+mª_by‹couÁ_ou�ut_þ›Á
+ (
+mªagem’t
+ *
+mª
+);
+
+504 
+šlše
+ 
+
+505 
+	$mª_by‹couÁ_possibË_ou�ut_þ›Á
+ (
+mªagem’t
+ *
+mª
+)
+
+507 ià(
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+ > 0
+
+508 && 
+now
+ >ð
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_Ï¡_upd©e
+
+
+509 + 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+)
+
+510 
+	`mª_by‹couÁ_ou�ut_þ›Á
+ (
+mª
+);
+
+511 
+	}
+}
+
+513 
+šlše
+ 
+
+514 
+	$mªagem’t_by‹s_out_þ›Á
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+size
+)
+
+516 
+mª
+->
+³rsi¡
+.
+by‹s_out
+ +ð
+size
+;
+
+517 
+	`mª_by‹couÁ_possibË_ou�ut_þ›Á
+ (
+mª
+);
+
+518 
+	}
+}
+
+520 
+šlše
+ 
+
+521 
+	$mªagem’t_by‹s_š_þ›Á
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+size
+)
+
+523 
+mª
+->
+³rsi¡
+.
+by‹s_š
+ +ð
+size
+;
+
+524 
+	`mª_by‹couÁ_possibË_ou�ut_þ›Á
+ (
+mª
+);
+
+525 
+	}
+}
+
+527 
+šlše
+ 
+
+528 
+	$mªagem’t_by‹s_out
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+size
+)
+
+530 ià(!(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+æags
+ & 
+MCF_SERVER
+))
+
+531 
+	`mªagem’t_by‹s_out_þ›Á
+ (
+mª
+, 
+size
+);
+
+532 
+	}
+}
+
+534 
+šlše
+ 
+
+535 
+	$mªagem’t_by‹s_š
+ (
+mªagem’t
+ *
+mª
+, cÚ¡ 
+size
+)
+
+537 ià(!(
+mª
+->
+³rsi¡
+.
+ÿÎback
+.
+æags
+ & 
+MCF_SERVER
+))
+
+538 
+	`mªagem’t_by‹s_š_þ›Á
+ (
+mª
+, 
+size
+);
+
+539 
+	}
+}
+
+541 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+543 
+šlše
+ 
+
+544 
+	$mªagem’t_by‹s_£rv”
+ (
+mªagem’t
+ *
+mª
+,
+
+545 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_š_tÙ®
+,
+
+546 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_out_tÙ®
+,
+
+547 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+)
+
+549 
+	`mª_by‹couÁ_ou�ut_£rv”
+ (
+mªagem’t
+ *
+mª
+,
+
+550 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_š_tÙ®
+,
+
+551 cÚ¡ 
+couÁ”_ty³
+ *
+by‹s_out_tÙ®
+,
+
+552 
+mª_def_auth_cÚ‹xt
+ *
+mdac
+);
+
+554 ià(
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+ > 0
+
+555 && 
+now
+ >ð
+mdac
+->
+by‹couÁ_Ï¡_upd©e
+ + 
+mª
+->
+cÚÃùiÚ
+.
+by‹couÁ_upd©e_£cÚds
+
+
+556 && (
+mdac
+->
+æags
+ & (
+DAF_CONNECTION_ESTABLISHED
+|
+DAF_CONNECTION_CLOSED
+)) == DAF_CONNECTION_ESTABLISHED)
+
+557 
+	`mª_by‹couÁ_ou�ut_£rv”
+ (
+mª
+, 
+by‹s_š_tÙ®
+, 
+by‹s_out_tÙ®
+, 
+mdac
+);
+
+558 
+	}
+}
+
+	@mbuf.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP
+
+
+35 
+	~"bufãr.h
+"
+
+36 
+	~"”rÜ.h
+"
+
+37 
+	~"misc.h
+"
+
+38 
+	~"mbuf.h
+"
+
+40 
+	~"memdbg.h
+"
+
+42 
+mbuf_£t
+ *
+
+43 
+	$mbuf_š™
+ (
+size
+)
+
+45 
+mbuf_£t
+ *
+»t
+;
+
+46 
+	`ALLOC_OBJ_CLEAR
+ (
+»t
+, 
+mbuf_£t
+);
+
+47 
+»t
+->
+ÿ·c™y
+ = 
+	`adju¡_pow”_of_2
+ (
+size
+);
+
+48 
+	`ALLOC_ARRAY
+ (
+»t
+->
+¬¿y
+, 
+mbuf_™em
+,„‘->
+ÿ·c™y
+);
+
+49  
+»t
+;
+
+50 
+	}
+}
+
+53 
+	$mbuf_ä“
+ (
+mbuf_£t
+ *
+ms
+)
+
+55 ià(
+ms
+)
+
+57 
+i
+;
+
+58 
+i
+ = 0; i < (è
+ms
+->
+Ën
+; ++i)
+
+60 
+mbuf_™em
+ *
+™em
+ = &
+ms
+->
+¬¿y
+[
+	`MBUF_INDEX
+(ms->
+h—d
+, 
+i
+, ms->
+ÿ·c™y
+)];
+
+61 
+	`mbuf_ä“_buf
+ (
+™em
+->
+bufãr
+);
+
+63 
+	`ä“
+ (
+ms
+->
+¬¿y
+);
+
+64 
+	`ä“
+ (
+ms
+);
+
+66 
+	}
+}
+
+68 
+mbuf_bufãr
+ *
+
+69 
+	$mbuf_®loc_buf
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+71 
+mbuf_bufãr
+ *
+»t
+;
+
+72 
+	`ALLOC_OBJ
+ (
+»t
+, 
+mbuf_bufãr
+);
+
+73 
+»t
+->
+buf
+ = 
+	`þÚe_buf
+ (buf);
+
+74 
+»t
+->
+»fcouÁ
+ = 1;
+
+75 
+»t
+->
+æags
+ = 0;
+
+76  
+»t
+;
+
+77 
+	}
+}
+
+80 
+	$mbuf_ä“_buf
+ (
+mbuf_bufãr
+ *
+mb
+)
+
+82 ià(
+mb
+)
+
+84 ià(--
+mb
+->
+»fcouÁ
+ <= 0)
+
+86 
+	`ä“_buf
+ (&
+mb
+->
+buf
+);
+
+87 
+	`ä“
+ (
+mb
+);
+
+90 
+	}
+}
+
+93 
+	$mbuf_add_™em
+ (
+mbuf_£t
+ *
+ms
+, cÚ¡ 
+mbuf_™em
+ *
+™em
+)
+
+95 
+	`ASSERT
+ (
+ms
+);
+
+96 ià(
+ms
+->
+Ën
+ =ðms->
+ÿ·c™y
+)
+
+98 
+mbuf_™em
+ 
+rm
+;
+
+99 
+	`ASSERT
+ (
+	`mbuf_exŒaù_™em
+ (
+ms
+, &
+rm
+));
+
+100 
+	`mbuf_ä“_buf
+ (
+rm
+.
+bufãr
+);
+
+101 
+	`msg
+ (
+D_MULTI_DROPPED
+, "MBUF: mbuf…acket dropped");
+
+104 
+	`ASSERT
+ (
+ms
+->
+Ën
+ < ms->
+ÿ·c™y
+);
+
+106 
+ms
+->
+¬¿y
+[
+	`MBUF_INDEX
+(ms->
+h—d
+, ms->
+Ën
+, ms->
+ÿ·c™y
+)] = *
+™em
+;
+
+107 ià(++
+ms
+->
+Ën
+ > ms->
+max_queued
+)
+
+108 
+ms
+->
+max_queued
+ = ms->
+Ën
+;
+
+109 ++
+™em
+->
+bufãr
+->
+»fcouÁ
+;
+
+110 
+	}
+}
+
+112 
+boÞ
+
+
+113 
+	$mbuf_exŒaù_™em
+ (
+mbuf_£t
+ *
+ms
+, 
+mbuf_™em
+ *
+™em
+)
+
+115 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+116 ià(
+ms
+)
+
+118 
+ms
+->
+Ën
+)
+
+120 *
+™em
+ = 
+ms
+->
+¬¿y
+[ms->
+h—d
+];
+
+121 
+ms
+->
+h—d
+ = 
+	`MBUF_INDEX
+(ms->h—d, 1, ms->
+ÿ·c™y
+);
+
+122 --
+ms
+->
+Ën
+;
+
+123 ià(
+™em
+->
+š¡ªû
+)
+
+125 
+»t
+ = 
+Œue
+;
+
+130  
+»t
+;
+
+131 
+	}
+}
+
+133 
+muÉi_š¡ªû
+ *
+
+134 
+	$mbuf_³ek_dowÜk
+ (
+mbuf_£t
+ *
+ms
+)
+
+136 
+muÉi_š¡ªû
+ *
+»t
+ = 
+NULL
+;
+
+137 ià(
+ms
+)
+
+139 
+i
+;
+
+140 
+i
+ = 0; i < (è
+ms
+->
+Ën
+; ++i)
+
+142 
+mbuf_™em
+ *
+™em
+ = &
+ms
+->
+¬¿y
+[
+	`MBUF_INDEX
+(ms->
+h—d
+, 
+i
+, ms->
+ÿ·c™y
+)];
+
+143 ià(
+™em
+->
+š¡ªû
+)
+
+145 
+»t
+ = 
+™em
+->
+š¡ªû
+;
+
+150  
+»t
+;
+
+151 
+	}
+}
+
+154 
+	$mbuf_d”eã»nû_š¡ªû
+ (
+mbuf_£t
+ *
+ms
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+156 ià(
+ms
+)
+
+158 
+i
+;
+
+159 
+i
+ = 0; i < (è
+ms
+->
+Ën
+; ++i)
+
+161 
+mbuf_™em
+ *
+™em
+ = &
+ms
+->
+¬¿y
+[
+	`MBUF_INDEX
+(ms->
+h—d
+, 
+i
+, ms->
+ÿ·c™y
+)];
+
+162 ià(
+™em
+->
+š¡ªû
+ =ð
+mi
+)
+
+164 
+	`mbuf_ä“_buf
+ (
+™em
+->
+bufãr
+);
+
+165 
+™em
+->
+bufãr
+ = 
+NULL
+;
+
+166 
+™em
+->
+š¡ªû
+ = 
+NULL
+;
+
+167 
+	`msg
+ (
+D_MBUF
+, "MBUF: dereferenced queued…acket");
+
+171 
+	}
+}
+
+174 
+	$dummy
+(è{
+	}
+}
+
+	@mbuf.h
+
+25 #iâdeà
+MBUF_H
+
+
+26 
+	#MBUF_H
+
+
+	)
+
+32 #ià
+P2MP
+
+
+37 
+	~"basic.h
+"
+
+38 
+	~"bufãr.h
+"
+
+40 
+	gmuÉi_š¡ªû
+;
+
+42 
+	#MBUF_INDEX
+(
+h—d
+, 
+off£t
+, 
+size
+è(((h—dè+ (off£t)è& ((size)-1))
+
+	)
+
+44 
+	smbuf_bufãr
+
+
+46 
+bufãr
+ 
+	mbuf
+;
+
+47 
+	m»fcouÁ
+;
+
+49 
+	#MF_UNICAST
+ (1<<0)
+
+	)
+
+50 
+	mæags
+;
+
+53 
+	smbuf_™em
+
+
+55 
+mbuf_bufãr
+ *
+	mbufãr
+;
+
+56 
+muÉi_š¡ªû
+ *
+	mš¡ªû
+;
+
+59 
+	smbuf_£t
+
+
+61 
+	mh—d
+;
+
+62 
+	mËn
+;
+
+63 
+	mÿ·c™y
+;
+
+64 
+	mmax_queued
+;
+
+65 
+mbuf_™em
+ *
+	m¬¿y
+;
+
+68 
+mbuf_£t
+ *
+mbuf_š™
+ (
+size
+);
+
+69 
+mbuf_ä“
+ (
+mbuf_£t
+ *
+ms
+);
+
+71 
+mbuf_bufãr
+ *
+mbuf_®loc_buf
+ (cÚ¡ 
+bufãr
+ *
+buf
+);
+
+72 
+mbuf_ä“_buf
+ (
+mbuf_bufãr
+ *
+mb
+);
+
+74 
+mbuf_add_™em
+ (
+mbuf_£t
+ *
+ms
+, cÚ¡ 
+mbuf_™em
+ *
+™em
+);
+
+76 
+boÞ
+ 
+mbuf_exŒaù_™em
+ (
+mbuf_£t
+ *
+ms
+, 
+mbuf_™em
+ *
+™em
+);
+
+78 
+mbuf_d”eã»nû_š¡ªû
+ (
+mbuf_£t
+ *
+ms
+, 
+muÉi_š¡ªû
+ *
+mi
+);
+
+80 
+šlše
+ 
+boÞ
+
+
+81 
+	$mbuf_defšed
+ (cÚ¡ 
+mbuf_£t
+ *
+ms
+)
+
+83  
+ms
+ && ms->
+Ën
+;
+
+84 
+	}
+}
+
+86 
+šlše
+ 
+
+87 
+	$mbuf_Ën
+ (cÚ¡ 
+mbuf_£t
+ *
+ms
+)
+
+89  
+ms
+->
+Ën
+;
+
+90 
+	}
+}
+
+92 
+šlše
+ 
+
+93 
+	$mbuf_maximum_queued
+ (cÚ¡ 
+mbuf_£t
+ *
+ms
+)
+
+95  (è
+ms
+->
+max_queued
+;
+
+96 
+	}
+}
+
+98 
+šlše
+ 
+muÉi_š¡ªû
+ *
+
+99 
+	$mbuf_³ek
+ (
+mbuf_£t
+ *
+ms
+)
+
+101 
+muÉi_š¡ªû
+ *
+	`mbuf_³ek_dowÜk
+ (
+mbuf_£t
+ *
+ms
+);
+
+102 ià(
+	`mbuf_defšed
+ (
+ms
+))
+
+103  
+	`mbuf_³ek_dowÜk
+ (
+ms
+);
+
+105  
+NULL
+;
+
+106 
+	}
+}
+
+	@memdbg.h
+
+25 #iâdeà
+MEMDBG_H
+
+
+26 
+	#MEMDBG_H
+
+
+	)
+
+46 #ifdeà
+USE_VALGRIND
+
+
+48 
+	~"v®gršd/memcheck.h
+"
+
+50 
+	#VALGRIND_MAKE_READABLE
+(
+addr
+, 
+Ën
+)
+
+	)
+
+54 
+	#VALGRIND_MAKE_READABLE
+(
+addr
+, 
+Ën
+)
+
+	)
+
+58 #ifdeà
+DMALLOC
+
+
+88 
+	~"dm®loc.h
+"
+
+90 
+	#Ý’v²_dm®loc
+(
+fže
+, 
+lše
+, 
+size
+è
+	`dm®loc_m®loc
+((fže), (lše), (size), 
+DMALLOC_FUNC_MALLOC
+, 0, 0)
+
+	)
+
+102 #undeà
+m®loc
+
+
+103 
+	#m®loc
+(
+size
+è
+	`Ý’v²_dm®loc
+("logfže", 
+x_msg_lše_num
+, (size))
+
+	)
+
+	@misc.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"bufãr.h
+"
+
+34 
+	~"misc.h
+"
+
+35 
+	~"ba£64.h
+"
+
+36 
+	~"tun.h
+"
+
+37 
+	~"”rÜ.h
+"
+
+38 
+	~"Ùime.h
+"
+
+39 
+	~"¶ugš.h
+"
+
+40 
+	~"ÝtiÚs.h
+"
+
+41 
+	~"mªage.h
+"
+
+42 
+	~"üy±o.h
+"
+
+43 
+	~"rou‹.h
+"
+
+44 
+	~"cÚsÞe.h
+"
+
+45 
+	~"wš32.h
+"
+
+47 
+	~"memdbg.h
+"
+
+49 #ifdeà
+ENABLE_IPROUTE
+
+
+50 cÚ¡ *
+	g�rou‹_·th
+ = 
+IPROUTE_PATH
+;
+
+54 
+	gsü�t_£cur™y
+ = 
+SSEC_BUILT_IN
+;
+
+61 
+	$run_up_down
+ (cÚ¡ *
+commªd
+,
+
+62 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+63 
+¶ugš_ty³
+,
+
+64 cÚ¡ *
+¬g
+,
+
+65 cÚ¡ *
+dev_ty³
+,
+
+66 
+tun_mtu
+,
+
+67 
+lšk_mtu
+,
+
+68 cÚ¡ *
+ifcÚfig_loÿl
+,
+
+69 cÚ¡ * 
+ifcÚfig_»mÙe
+,
+
+70 cÚ¡ *
+cÚ‹xt
+,
+
+71 cÚ¡ *
+sigÇl_‹xt
+,
+
+72 cÚ¡ *
+sü�t_ty³
+,
+
+73 
+’v_£t
+ *
+es
+)
+
+75 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+77 ià(
+sigÇl_‹xt
+)
+
+78 
+	`£‹nv_¡r
+ (
+es
+, "sigÇl", 
+sigÇl_‹xt
+);
+
+79 
+	`£‹nv_¡r
+ (
+es
+, "sü�t_cÚ‹xt", 
+cÚ‹xt
+);
+
+80 
+	`£‹nv_št
+ (
+es
+, "tun_mtu", 
+tun_mtu
+);
+
+81 
+	`£‹nv_št
+ (
+es
+, "lšk_mtu", 
+lšk_mtu
+);
+
+82 
+	`£‹nv_¡r
+ (
+es
+, "dev", 
+¬g
+);
+
+83 ià(
+dev_ty³
+)
+
+84 
+	`£‹nv_¡r
+ (
+es
+, "dev_ty³", 
+dev_ty³
+);
+
+86 ià(!
+ifcÚfig_loÿl
+)
+
+87 
+ifcÚfig_loÿl
+ = "";
+
+88 ià(!
+ifcÚfig_»mÙe
+)
+
+89 
+ifcÚfig_»mÙe
+ = "";
+
+90 ià(!
+cÚ‹xt
+)
+
+91 
+cÚ‹xt
+ = "";
+
+93 ià(
+	`¶ugš_defšed
+ (
+¶ugšs
+, 
+¶ugš_ty³
+))
+
+95 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+96 
+	`ASSERT
+ (
+¬g
+);
+
+97 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+99 
+¬g
+,
+
+100 
+tun_mtu
+, 
+lšk_mtu
+,
+
+101 
+ifcÚfig_loÿl
+, 
+ifcÚfig_»mÙe
+,
+
+102 
+cÚ‹xt
+);
+
+104 ià(
+	`¶ugš_ÿÎ
+ (
+¶ugšs
+, 
+¶ugš_ty³
+, &
+¬gv
+, 
+NULL
+, 
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+105 
+	`msg
+ (
+M_FATAL
+, "ERROR: up/down…lugin call failed");
+
+107 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+110 ià(
+commªd
+)
+
+112 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+113 
+	`ASSERT
+ (
+¬g
+);
+
+114 
+	`£‹nv_¡r
+ (
+es
+, "sü�t_ty³", 
+sü�t_ty³
+);
+
+115 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+117 
+commªd
+,
+
+118 
+¬g
+,
+
+119 
+tun_mtu
+, 
+lšk_mtu
+,
+
+120 
+ifcÚfig_loÿl
+, 
+ifcÚfig_»mÙe
+,
+
+121 
+cÚ‹xt
+);
+
+122 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+123 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "--up/--down");
+
+124 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+127 
+	`gc_ä“
+ (&
+gc
+);
+
+128 
+	}
+}
+
+132 
+	$wr™e_pid
+ (cÚ¡ *
+fž’ame
+)
+
+134 ià(
+fž’ame
+)
+
+136 
+pid
+ = 0;
+
+137 
+FILE
+ *
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+fž’ame
+, "w");
+
+138 ià(!
+å
+)
+
+139 
+	`msg
+ (
+M_ERR
+, "O³À”rÜ oÀpid fž�%s", 
+fž’ame
+);
+
+141 
+pid
+ = 
+	`¶©fÜm_g‘pid
+ ();
+
+142 
+	`årštf
+(
+å
+, "%u\n", 
+pid
+);
+
+143 ià(
+	`fþo£
+ (
+å
+))
+
+144 
+	`msg
+ (
+M_ERR
+, "Clo£ƒ¼Ü oÀpid fž�%s", 
+fž’ame
+);
+
+146 
+	}
+}
+
+152 
+	$£t_¡d_fžes_to_nuÎ
+ (
+boÞ
+ 
+¡dš_Úly
+)
+
+154 #ià
+	`defšed
+(
+HAVE_DUP
+è&& defšed(
+HAVE_DUP2
+)
+
+155 
+fd
+;
+
+156 ià((
+fd
+ = 
+	`Ý’
+ ("/dev/nuÎ", 
+O_RDWR
+, 0)) != -1)
+
+158 
+	`dup2
+ (
+fd
+, 0);
+
+159 ià(!
+¡dš_Úly
+)
+
+161 
+	`dup2
+ (
+fd
+, 1);
+
+162 
+	`dup2
+ (
+fd
+, 2);
+
+164 ià(
+fd
+ > 2)
+
+165 
+	`þo£
+ (
+fd
+);
+
+168 
+	}
+}
+
+174 
+	gš‘d_sock‘_desü�tÜ
+ = 
+SOCKET_UNDEFINED
+;
+
+177 
+	$§ve_š‘d_sock‘_desü�tÜ
+ ()
+
+179 
+š‘d_sock‘_desü�tÜ
+ = 
+INETD_SOCKET_DESCRIPTOR
+;
+
+180 #ià
+	`defšed
+(
+HAVE_DUP
+è&& defšed(
+HAVE_DUP2
+)
+
+182 ià((
+š‘d_sock‘_desü�tÜ
+ = 
+	`dup
+ (
+INETD_SOCKET_DESCRIPTOR
+)) < 0)
+
+183 
+	`msg
+ (
+M_ERR
+, "INETD_SOCKET_DESCRIPTOR dup(%dèçžed", 
+INETD_SOCKET_DESCRIPTOR
+);
+
+184 
+	`£t_¡d_fžes_to_nuÎ
+ (
+Œue
+);
+
+186 
+	}
+}
+
+192 
+	$w¬n_if_group_Ùh”s_acûssibË
+ (cÚ¡ * 
+fž’ame
+)
+
+194 #iâdeà
+WIN32
+
+
+195 #ifdeà
+HAVE_STAT
+
+
+196 ià(
+	`¡rcmp
+ (
+fž’ame
+, 
+INLINE_FILE_TAG
+))
+
+198 
+¡©
+ 
+¡
+;
+
+199 ià(
+	`¡©
+ (
+fž’ame
+, &
+¡
+))
+
+201 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "WARNING: cªnÙ s�ˆfž�'%s'", 
+fž’ame
+);
+
+205 ià(
+¡
+.
+¡_mode
+ & (
+S_IRWXG
+|
+S_IRWXO
+))
+
+206 
+	`msg
+ (
+M_WARN
+, "WARNING: fž�'%s' i grou°Ü oth” acûssibË", 
+fž’ame
+);
+
+211 
+	}
+}
+
+217 
+	$sy¡em_”rÜ_mes§ge
+ (
+¡©
+, 
+gc_¬’a
+ *
+gc
+)
+
+219 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+220 #ifdeà
+WIN32
+
+
+221 ià(
+¡©
+ == -1)
+
+222 
+	`buf_´štf
+ (&
+out
+, "external…rogram did‚otƒxecute -- ");
+
+223 
+	`buf_´štf
+ (&
+out
+, "»tuºedƒ¼Ü cod�%d", 
+¡©
+);
+
+225 ià(
+¡©
+ == -1)
+
+226 
+	`buf_´štf
+ (&
+out
+, "external…rogram fork failed");
+
+227 ià(!
+	`WIFEXITED
+ (
+¡©
+))
+
+228 
+	`buf_´štf
+ (&
+out
+, "external…rogram did‚otƒxit‚ormally");
+
+231 cÚ¡ 
+cmd_»t
+ = 
+	`WEXITSTATUS
+ (
+¡©
+);
+
+232 ià(!
+cmd_»t
+)
+
+233 
+	`buf_´štf
+ (&
+out
+, "external…rogramƒxited‚ormally");
+
+234 ià(
+cmd_»t
+ == 127)
+
+235 
+	`buf_´štf
+ (&
+out
+, "could‚otƒxecuteƒxternal…rogram");
+
+237 
+	`buf_´štf
+ (&
+out
+, "ex‹º®…rog¿mƒx™ed w™hƒ¼Ü s�tus: %d", 
+cmd_»t
+);
+
+240  (cÚ¡ *)
+out
+.
+d©a
+;
+
+241 
+	}
+}
+
+246 
+boÞ
+
+
+247 
+	$Ý’v²_execve_check
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+, cÚ¡ *
+”rÜ_mes§ge
+)
+
+249 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+250 cÚ¡ 
+¡©
+ = 
+	`Ý’v²_execve
+ (
+a
+, 
+es
+, 
+æags
+);
+
+251 
+»t
+ = 
+çl£
+;
+
+253 ià(
+	`¶©fÜm_sy¡em_ok
+ (
+¡©
+))
+
+254 
+»t
+ = 
+Œue
+;
+
+257 ià(
+”rÜ_mes§ge
+)
+
+258 
+	`msg
+ (((
+æags
+ & 
+S_FATAL
+è? 
+M_FATAL
+ : 
+M_WARN
+), "%s: %s",
+
+259 
+”rÜ_mes§ge
+,
+
+260 
+	`sy¡em_”rÜ_mes§ge
+ (
+¡©
+, &
+gc
+));
+
+262 
+	`gc_ä“
+ (&
+gc
+);
+
+263  
+»t
+;
+
+264 
+	}
+}
+
+266 
+boÞ
+
+
+267 
+	$Ý’v²_execve_®lowed
+ (cÚ¡ 
+æags
+)
+
+269 ià(
+æags
+ & 
+S_SCRIPT
+)
+
+270  
+sü�t_£cur™y
+ >ð
+SSEC_SCRIPTS
+;
+
+272  
+sü�t_£cur™y
+ >ð
+SSEC_BUILT_IN
+;
+
+273 
+	}
+}
+
+276 #iâdeà
+WIN32
+
+
+283 
+	$Ý’v²_execve
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+)
+
+285 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+286 
+»t
+ = -1;
+
+287 
+boÞ
+ 
+w¬n_shown
+ = 
+çl£
+;
+
+289 ià(
+a
+ &&‡->
+¬gv
+[0])
+
+291 #ià
+	`defšed
+(
+ENABLE_FEATURE_EXECVE
+)
+
+292 ià(
+	`Ý’v²_execve_®lowed
+ (
+æags
+))
+
+294 cÚ¡ *
+cmd
+ = 
+a
+->
+¬gv
+[0];
+
+295 *cÚ¡ *
+¬gv
+ = 
+a
+->argv;
+
+296 *cÚ¡ *
+’vp
+ = (*cÚ¡ *)
+	`make_’v_¬¿y
+ (
+es
+, 
+Œue
+, &
+gc
+);
+
+297 
+pid_t
+ 
+pid
+;
+
+299 
+pid
+ = 
+	`fÜk
+ ();
+
+300 ià(
+pid
+ =ð(
+pid_t
+)0)
+
+302 
+	`execve
+ (
+cmd
+, 
+¬gv
+, 
+’vp
+);
+
+303 
+	`ex™
+ (127);
+
+305 ià(
+pid
+ < (
+pid_t
+)0)
+
+306 
+	`msg
+ (
+M_ERR
+, "openvpn_execve: unable�o fork");
+
+309 ià(
+	`wa™pid
+ (
+pid
+, &
+»t
+, 0) !=…id)
+
+310 
+»t
+ = -1;
+
+313 ià(!
+w¬n_shown
+ && (
+sü�t_£cur™y
+ < 
+SSEC_SCRIPTS
+))
+
+315 
+	`msg
+ (
+M_WARN
+, 
+SCRIPT_SECURITY_WARNING
+);
+
+316 
+w¬n_shown
+ = 
+Œue
+;
+
+319 
+	`msg
+ (
+M_WARN
+, "openvpn_execve:ƒxecve function‚ot‡vailable");
+
+324 
+	`msg
+ (
+M_FATAL
+, "openvpn_execve: called withƒmpty‡rgv");
+
+327 
+	`gc_ä“
+ (&
+gc
+);
+
+328  
+»t
+;
+
+329 
+	}
+}
+
+338 
+	$Ý’v²_pÝ’
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+340 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+341 
+»t
+ = -1;
+
+342 
+boÞ
+ 
+w¬n_shown
+ = 
+çl£
+;
+
+344 ià(
+a
+ &&‡->
+¬gv
+[0])
+
+346 #ià
+	`defšed
+(
+ENABLE_FEATURE_EXECVE
+)
+
+347 ià(
+sü�t_£cur™y
+ >ð
+SSEC_BUILT_IN
+)
+
+349 cÚ¡ *
+cmd
+ = 
+a
+->
+¬gv
+[0];
+
+350 *cÚ¡ *
+¬gv
+ = 
+a
+->argv;
+
+351 *cÚ¡ *
+’vp
+ = (*cÚ¡ *)
+	`make_’v_¬¿y
+ (
+es
+, 
+Œue
+, &
+gc
+);
+
+352 
+pid_t
+ 
+pid
+;
+
+353 
+p�e_¡dout
+[2];
+
+355 ià(
+	`p�e
+ (
+p�e_¡dout
+) == 0) {
+
+356 
+pid
+ = 
+	`fÜk
+ ();
+
+357 ià(
+pid
+ =ð(
+pid_t
+)0)
+
+359 
+	`þo£
+ (
+p�e_¡dout
+[0]);
+
+360 
+	`dup2
+ (
+p�e_¡dout
+[1],1);
+
+361 
+	`execve
+ (
+cmd
+, 
+¬gv
+, 
+’vp
+);
+
+362 
+	`ex™
+ (127);
+
+364 ià(
+pid
+ < (
+pid_t
+)0)
+
+366 
+	`msg
+ (
+M_ERR
+, "openvpn_popen: unable�o fork");
+
+370 
+¡©us
+ = 0;
+
+372 
+	`wa™pid
+(
+pid
+, &
+¡©us
+, 0);
+
+373 
+»t
+ = 
+p�e_¡dout
+[0];
+
+374 
+	`þo£
+ (
+p�e_¡dout
+[1]);
+
+378 
+	`msg
+ (
+M_WARN
+, "openvpn_popen: unable�o create stdout…ipe");
+
+379 
+»t
+ = -1;
+
+382 ià(!
+w¬n_shown
+ && (
+sü�t_£cur™y
+ < 
+SSEC_SCRIPTS
+))
+
+384 
+	`msg
+ (
+M_WARN
+, 
+SCRIPT_SECURITY_WARNING
+);
+
+385 
+w¬n_shown
+ = 
+Œue
+;
+
+388 
+	`msg
+ (
+M_WARN
+, "openvpn_popen:ƒxecve function‚ot‡vailable");
+
+393 
+	`msg
+ (
+M_FATAL
+, "openvpn_popen: called withƒmpty‡rgv");
+
+396 
+	`gc_ä“
+ (&
+gc
+);
+
+397  
+»t
+;
+
+398 
+	}
+}
+
+410 
+	$š™_¿ndom_£ed
+()
+
+412 
+timev®
+ 
+tv
+;
+
+414 ià(!
+	`g‘timeofday
+ (&
+tv
+, 
+NULL
+))
+
+416 cÚ¡ 
+£ed
+ = (è
+tv
+.
+tv_£c
+ ^�v.
+tv_u£c
+;
+
+417 
+	`¤ªdom
+ (
+£ed
+);
+
+419 
+	}
+}
+
+424 
+	$¡»¼Ü_ts
+ (
+”ºum
+, 
+gc_¬’a
+ *
+gc
+)
+
+426 #ifdeà
+HAVE_STRERROR
+
+
+427 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+429 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`Ý’v²_¡»¼Ü
+ (
+”ºum
+, 
+gc
+));
+
+430  
+	`BSTR
+ (&
+out
+);
+
+434 
+	}
+}
+
+447 
+	$cÚ¡ruù_Çme_v®ue
+ (cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+, 
+gc_¬’a
+ *
+gc
+)
+
+449 
+bufãr
+ 
+out
+;
+
+451 
+	`ASSERT
+ (
+Çme
+);
+
+452 ià(!
+v®ue
+)
+
+453 
+v®ue
+ = "";
+
+454 
+out
+ = 
+	`®loc_buf_gc
+ (
+	`¡¾’
+ (
+Çme
+è+ sŒËÀ(
+v®ue
+è+ 2, 
+gc
+);
+
+455 
+	`buf_´štf
+ (&
+out
+, "%s=%s", 
+Çme
+, 
+v®ue
+);
+
+456  
+	`BSTR
+ (&
+out
+);
+
+457 
+	}
+}
+
+459 
+boÞ
+
+
+460 
+	$decÚ¡ruù_Çme_v®ue
+ (cÚ¡ *
+¡r
+, cÚ¡ **
+Çme
+, cÚ¡ **
+v®ue
+, 
+gc_¬’a
+ *
+gc
+)
+
+462 *
+ý
+;
+
+464 
+	`ASSERT
+ (
+¡r
+);
+
+465 
+	`ASSERT
+ (
+Çme
+ && 
+v®ue
+);
+
+467 *
+Çme
+ = 
+ý
+ = 
+	`¡ršg_®loc
+ (
+¡r
+, 
+gc
+);
+
+468 *
+v®ue
+ = 
+NULL
+;
+
+470 (*
+ý
+))
+
+472 ià(*
+ý
+ =ð'=' && !*
+v®ue
+)
+
+474 *
+ý
+ = 0;
+
+475 *
+v®ue
+ = 
+ý
+ + 1;
+
+477 ++
+ý
+;
+
+479  *
+Çme
+ && *
+v®ue
+;
+
+480 
+	}
+}
+
+482 
+boÞ
+
+
+483 
+	$’v_¡ršg_equ®
+ (cÚ¡ *
+s1
+, cÚ¡ *
+s2
+)
+
+485 
+c1
+, 
+c2
+;
+
+486 
+	`ASSERT
+ (
+s1
+);
+
+487 
+	`ASSERT
+ (
+s2
+);
+
+489 
+Œue
+)
+
+491 
+c1
+ = *
+s1
+++;
+
+492 
+c2
+ = *
+s2
+++;
+
+493 ià(
+c1
+ == '=')
+
+494 
+c1
+ = 0;
+
+495 ià(
+c2
+ == '=')
+
+496 
+c2
+ = 0;
+
+497 ià(!
+c1
+ && !
+c2
+)
+
+498  
+Œue
+;
+
+499 ià(
+c1
+ !ð
+c2
+)
+
+502  
+çl£
+;
+
+503 
+	}
+}
+
+505 
+boÞ
+
+
+506 
+	$»move_’v_™em
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+boÞ
+ 
+do_ä“
+, 
+’v_™em
+ **
+li¡
+)
+
+508 
+’v_™em
+ *
+cu¼’t
+, *
+´ev
+;
+
+510 
+	`ASSERT
+ (
+¡r
+);
+
+511 
+	`ASSERT
+ (
+li¡
+);
+
+513 
+cu¼’t
+ = *
+li¡
+, 
+´ev
+ = 
+NULL
+; cu¼’ˆ!ðNULL; cu¼’ˆðcu¼’t->
+Ãxt
+)
+
+515 ià(
+	`’v_¡ršg_equ®
+ (
+cu¼’t
+->
+¡ršg
+, 
+¡r
+))
+
+517 ià(
+´ev
+)
+
+518 
+´ev
+->
+Ãxt
+ = 
+cu¼’t
+->next;
+
+520 *
+li¡
+ = 
+cu¼’t
+->
+Ãxt
+;
+
+521 ià(
+do_ä“
+)
+
+523 
+	`mem£t
+ (
+cu¼’t
+->
+¡ršg
+, 0, 
+	`¡¾’
+ (current->string));
+
+524 
+	`ä“
+ (
+cu¼’t
+->
+¡ršg
+);
+
+525 
+	`ä“
+ (
+cu¼’t
+);
+
+527  
+Œue
+;
+
+529 
+´ev
+ = 
+cu¼’t
+;
+
+531  
+çl£
+;
+
+532 
+	}
+}
+
+535 
+	$add_’v_™em
+ (*
+¡r
+, cÚ¡ 
+boÞ
+ 
+do_®loc
+, 
+’v_™em
+ **
+li¡
+, 
+gc_¬’a
+ *
+gc
+)
+
+537 
+’v_™em
+ *
+™em
+;
+
+539 
+	`ASSERT
+ (
+¡r
+);
+
+540 
+	`ASSERT
+ (
+li¡
+);
+
+542 
+	`ALLOC_OBJ_GC
+ (
+™em
+, 
+’v_™em
+, 
+gc
+);
+
+543 
+™em
+->
+¡ršg
+ = 
+do_®loc
+ ? 
+	`¡ršg_®loc
+ (
+¡r
+, 
+gc
+): str;
+
+544 
+™em
+->
+Ãxt
+ = *
+li¡
+;
+
+545 *
+li¡
+ = 
+™em
+;
+
+546 
+	}
+}
+
+550 
+boÞ
+
+
+551 
+	$’v_£t_d–_nÞock
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+)
+
+553  
+	`»move_’v_™em
+ (
+¡r
+, 
+es
+->
+gc
+ =ð
+NULL
+, &es->
+li¡
+);
+
+554 
+	}
+}
+
+557 
+	$’v_£t_add_nÞock
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+)
+
+559 
+	`»move_’v_™em
+ (
+¡r
+, 
+es
+->
+gc
+ =ð
+NULL
+, &es->
+li¡
+);
+
+560 
+	`add_’v_™em
+ ((*)
+¡r
+, 
+Œue
+, &
+es
+->
+li¡
+,ƒs->
+gc
+);
+
+561 
+	}
+}
+
+563 
+’v_£t
+ *
+
+564 
+	$’v_£t_ü—‹
+ (
+gc_¬’a
+ *
+gc
+)
+
+566 
+’v_£t
+ *
+es
+;
+
+567 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+es
+, 
+’v_£t
+, 
+gc
+);
+
+568 
+es
+->
+li¡
+ = 
+NULL
+;
+
+569 
+es
+->
+gc
+ = gc;
+
+570  
+es
+;
+
+571 
+	}
+}
+
+574 
+	$’v_£t_de¡roy
+ (
+’v_£t
+ *
+es
+)
+
+576 ià(
+es
+ &&ƒs->
+gc
+ =ð
+NULL
+)
+
+578 
+’v_™em
+ *
+e
+ = 
+es
+->
+li¡
+;
+
+579 
+e
+)
+
+581 
+’v_™em
+ *
+Ãxt
+ = 
+e
+->next;
+
+582 
+	`ä“
+ (
+e
+->
+¡ršg
+);
+
+583 
+	`ä“
+ (
+e
+);
+
+584 
+e
+ = 
+Ãxt
+;
+
+586 
+	`ä“
+ (
+es
+);
+
+588 
+	}
+}
+
+590 
+boÞ
+
+
+591 
+	$’v_£t_d–
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+)
+
+593 
+boÞ
+ 
+»t
+;
+
+594 
+	`ASSERT
+ (
+es
+);
+
+595 
+	`ASSERT
+ (
+¡r
+);
+
+596 
+»t
+ = 
+	`’v_£t_d–_nÞock
+ (
+es
+, 
+¡r
+);
+
+597  
+»t
+;
+
+598 
+	}
+}
+
+601 
+	$’v_£t_add
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+)
+
+603 
+	`ASSERT
+ (
+es
+);
+
+604 
+	`ASSERT
+ (
+¡r
+);
+
+605 
+	`’v_£t_add_nÞock
+ (
+es
+, 
+¡r
+);
+
+606 
+	}
+}
+
+609 
+	$’v_£t_´št
+ (
+msgËv–
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+611 ià(
+	`check_debug_Ëv–
+ (
+msgËv–
+))
+
+613 cÚ¡ 
+’v_™em
+ *
+e
+;
+
+614 
+i
+;
+
+616 ià(
+es
+)
+
+618 
+e
+ = 
+es
+->
+li¡
+;
+
+619 
+i
+ = 0;
+
+621 
+e
+)
+
+623 ià(
+	`’v_§ã_to_´št
+ (
+e
+->
+¡ršg
+))
+
+624 
+	`msg
+ (
+msgËv–
+, "ENV [%d] '%s'", 
+i
+, 
+e
+->
+¡ršg
+);
+
+625 ++
+i
+;
+
+626 
+e
+ =ƒ->
+Ãxt
+;
+
+630 
+	}
+}
+
+633 
+	$’v_£t_šh”™
+ (
+’v_£t
+ *
+es
+, cÚ¡ ’v_£ˆ*
+¤c
+)
+
+635 cÚ¡ 
+’v_™em
+ *
+e
+;
+
+637 
+	`ASSERT
+ (
+es
+);
+
+639 ià(
+¤c
+)
+
+641 
+e
+ = 
+¤c
+->
+li¡
+;
+
+642 
+e
+)
+
+644 
+	`’v_£t_add_nÞock
+ (
+es
+, 
+e
+->
+¡ršg
+);
+
+645 
+e
+ =ƒ->
+Ãxt
+;
+
+648 
+	}
+}
+
+651 
+	$’v_£t_add_to_’vœÚm’t
+ (cÚ¡ 
+’v_£t
+ *
+es
+)
+
+653 ià(
+es
+)
+
+655 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+656 cÚ¡ 
+’v_™em
+ *
+e
+;
+
+658 
+e
+ = 
+es
+->
+li¡
+;
+
+660 
+e
+)
+
+662 cÚ¡ *
+Çme
+;
+
+663 cÚ¡ *
+v®ue
+;
+
+665 ià(
+	`decÚ¡ruù_Çme_v®ue
+ (
+e
+->
+¡ršg
+, &
+Çme
+, &
+v®ue
+, &
+gc
+))
+
+666 
+	`£‹nv_¡r
+ (
+NULL
+, 
+Çme
+, 
+v®ue
+);
+
+668 
+e
+ =ƒ->
+Ãxt
+;
+
+670 
+	`gc_ä“
+ (&
+gc
+);
+
+672 
+	}
+}
+
+675 
+	$’v_£t_»move_äom_’vœÚm’t
+ (cÚ¡ 
+’v_£t
+ *
+es
+)
+
+677 ià(
+es
+)
+
+679 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+680 cÚ¡ 
+’v_™em
+ *
+e
+;
+
+682 
+e
+ = 
+es
+->
+li¡
+;
+
+684 
+e
+)
+
+686 cÚ¡ *
+Çme
+;
+
+687 cÚ¡ *
+v®ue
+;
+
+689 ià(
+	`decÚ¡ruù_Çme_v®ue
+ (
+e
+->
+¡ršg
+, &
+Çme
+, &
+v®ue
+, &
+gc
+))
+
+690 
+	`£‹nv_d–
+ (
+NULL
+, 
+Çme
+);
+
+692 
+e
+ =ƒ->
+Ãxt
+;
+
+694 
+	`gc_ä“
+ (&
+gc
+);
+
+696 
+	}
+}
+
+698 #ifdeà
+HAVE_PUTENV
+
+
+702 
+’v_™em
+ *
+	gglob®_’v
+ = 
+NULL
+;
+
+709 
+	$£‹nv_couÁ”
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+couÁ”_ty³
+ 
+v®ue
+)
+
+711 
+buf
+[64];
+
+712 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), 
+couÁ”_fÜm©
+, 
+v®ue
+);
+
+713 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme
+, 
+buf
+);
+
+714 
+	}
+}
+
+717 
+	$£‹nv_št
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+v®ue
+)
+
+719 
+buf
+[64];
+
+720 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "%d", 
+v®ue
+);
+
+721 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme
+, 
+buf
+);
+
+722 
+	}
+}
+
+725 
+	$£‹nv_unsigÃd
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+v®ue
+)
+
+727 
+buf
+[64];
+
+728 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "%u", 
+v®ue
+);
+
+729 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme
+, 
+buf
+);
+
+730 
+	}
+}
+
+733 
+	$£‹nv_¡r
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+)
+
+735 
+	`£‹nv_¡r_ex
+ (
+es
+, 
+Çme
+, 
+v®ue
+, 
+CC_NAME
+, 0, 0, 
+CC_PRINT
+, 0, 0);
+
+736 
+	}
+}
+
+739 
+	$£‹nv_¡r_§ã
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+)
+
+741 
+ušt8_t
+ 
+b
+[64];
+
+742 
+bufãr
+ 
+buf
+;
+
+743 
+	`buf_£t_wr™e
+ (&
+buf
+, 
+b
+,  (b));
+
+744 ià(
+	`buf_´štf
+ (&
+buf
+, "OPENVPN_%s", 
+Çme
+))
+
+745 
+	`£‹nv_¡r
+ (
+es
+, 
+	`BSTR
+(&
+buf
+), 
+v®ue
+);
+
+747 
+	`msg
+ (
+M_WARN
+, "setenv_str_safe:‚ame overflow");
+
+748 
+	}
+}
+
+751 
+	$£‹nv_d–
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+)
+
+753 
+	`ASSERT
+ (
+Çme
+);
+
+754 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme
+, 
+NULL
+);
+
+755 
+	}
+}
+
+758 
+	$£‹nv_¡r_ex
+ (
+’v_£t
+ *
+es
+,
+
+759 cÚ¡ *
+Çme
+,
+
+760 cÚ¡ *
+v®ue
+,
+
+761 cÚ¡ 
+Çme_šþude
+,
+
+762 cÚ¡ 
+Çme_exþude
+,
+
+763 cÚ¡ 
+Çme_»¶aû
+,
+
+764 cÚ¡ 
+v®ue_šþude
+,
+
+765 cÚ¡ 
+v®ue_exþude
+,
+
+766 cÚ¡ 
+v®ue_»¶aû
+)
+
+768 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+769 cÚ¡ *
+Çme_tmp
+;
+
+770 cÚ¡ *
+v®_tmp
+ = 
+NULL
+;
+
+772 
+	`ASSERT
+ (
+Çme
+ && 
+	`¡¾’
+ (name) > 1);
+
+774 
+Çme_tmp
+ = 
+	`¡ršg_mod_cÚ¡
+ (
+Çme
+, 
+Çme_šþude
+, 
+Çme_exþude
+, 
+Çme_»¶aû
+, &
+gc
+);
+
+776 ià(
+v®ue
+)
+
+777 
+v®_tmp
+ = 
+	`¡ršg_mod_cÚ¡
+ (
+v®ue
+, 
+v®ue_šþude
+, 
+v®ue_exþude
+, 
+v®ue_»¶aû
+, &
+gc
+);
+
+779 
+	`ASSERT
+ (
+es
+);
+
+781 ià(
+v®_tmp
+)
+
+783 cÚ¡ *
+¡r
+ = 
+	`cÚ¡ruù_Çme_v®ue
+ (
+Çme_tmp
+, 
+v®_tmp
+, &
+gc
+);
+
+784 
+	`’v_£t_add
+ (
+es
+, 
+¡r
+);
+
+785 #ià
+DEBUG_VERBOSE_SETENV
+
+
+786 
+	`msg
+ (
+M_INFO
+, "SETENV_ES '%s'", 
+¡r
+);
+
+790 
+	`’v_£t_d–
+ (
+es
+, 
+Çme_tmp
+);
+
+792 
+	`gc_ä“
+ (&
+gc
+);
+
+793 
+	}
+}
+
+799 
+	$£‹nv_fÜm©_šdexed_Çme
+ (cÚ¡ *
+Çme
+, cÚ¡ 
+i
+, 
+gc_¬’a
+ *
+gc
+)
+
+801 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (
+	`¡¾’
+ (
+Çme
+è+ 16, 
+gc
+);
+
+802 ià(
+i
+ >= 0)
+
+803 
+	`buf_´štf
+ (&
+out
+, "%s_%d", 
+Çme
+, 
+i
+);
+
+805 
+	`buf_´štf
+ (&
+out
+, "%s", 
+Çme
+);
+
+806  
+	`BSTR
+ (&
+out
+);
+
+807 
+	}
+}
+
+810 
+	$£‹nv_št_i
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ 
+v®ue
+, cÚ¡ 
+i
+)
+
+812 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+813 cÚ¡ *
+Çme_¡r
+ = 
+	`£‹nv_fÜm©_šdexed_Çme
+ (
+Çme
+, 
+i
+, &
+gc
+);
+
+814 
+	`£‹nv_št
+ (
+es
+, 
+Çme_¡r
+, 
+v®ue
+);
+
+815 
+	`gc_ä“
+ (&
+gc
+);
+
+816 
+	}
+}
+
+819 
+	$£‹nv_¡r_i
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+, cÚ¡ 
+i
+)
+
+821 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+822 cÚ¡ *
+Çme_¡r
+ = 
+	`£‹nv_fÜm©_šdexed_Çme
+ (
+Çme
+, 
+i
+, &
+gc
+);
+
+823 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_¡r
+, 
+v®ue
+);
+
+824 
+	`gc_ä“
+ (&
+gc
+);
+
+825 
+	}
+}
+
+831 
+	$couÁ_b™s
+(
+a
+)
+
+833 
+»suÉ
+;
+
+834 
+»suÉ
+ = (
+a
+ & 0x55) + ((a >> 1) & 0x55);
+
+835 
+»suÉ
+ = (result & 0x33) + ((result >> 2) & 0x33);
+
+836 ((
+»suÉ
+ & 0x0F) + ((result >> 4) & 0x0F));
+
+837 
+	}
+}
+
+840 
+	$couÁ_Ãtmask_b™s
+(cÚ¡ *
+dÙ‹d_quad
+)
+
+842 
+»suÉ
+, 
+a
+, 
+b
+, 
+c
+, 
+d
+;
+
+844 ià(
+	`ssÿnf
+(
+dÙ‹d_quad
+, "%u.%u.%u.%u", &
+a
+, &
+b
+, &
+c
+, &
+d
+) != 4)
+
+846 
+»suÉ
+ = 
+	`couÁ_b™s
+(
+a
+);
+
+847 
+»suÉ
+ +ð
+	`couÁ_b™s
+(
+b
+);
+
+848 
+»suÉ
+ +ð
+	`couÁ_b™s
+(
+c
+);
+
+849 
+»suÉ
+ +ð
+	`couÁ_b™s
+(
+d
+);
+
+850  (()
+»suÉ
+);
+
+851 
+	}
+}
+
+854 
+boÞ
+
+
+855 
+	$‹¡_fže
+ (cÚ¡ *
+fž’ame
+)
+
+857 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+858 ià(
+fž’ame
+)
+
+860 
+FILE
+ *
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+fž’ame
+, "r");
+
+861 ià(
+å
+)
+
+863 
+	`fþo£
+ (
+å
+);
+
+864 
+»t
+ = 
+Œue
+;
+
+868 ifÐ
+	`Ý’v²_”ºo
+ (è=ð
+EACCES
+ ) {
+
+869 
+	`msg
+Ð
+M_WARN
+ | 
+M_ERRNO
+, "Could‚Ù‡cûs fž�'%s'", 
+fž’ame
+);
+
+874 
+	`dmsg
+ (
+D_TEST_FILE
+, "TEST FILE '%s' [%d]",
+
+875 
+fž’ame
+ ? filename : "UNDEF",
+
+876 
+»t
+);
+
+878  
+»t
+;
+
+879 
+	}
+}
+
+881 #ifdeà
+ENABLE_CRYPTO
+
+
+885 
+	$ü—‹_‹mp_fže
+ (cÚ¡ *
+dœeùÜy
+, cÚ¡ *
+´efix
+, 
+gc_¬’a
+ *
+gc
+)
+
+887 
+couÁ”
+;
+
+888 
+bufãr
+ 
+âame
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+889 
+fd
+;
+
+890 cÚ¡ *
+»tâame
+ = 
+NULL
+;
+
+891 
+©‹m±s
+ = 0;
+
+895 
+ušt8_t
+ 
+ºdby‹s
+[16];
+
+896 cÚ¡ *
+ºd¡r
+;
+
+898 ++
+©‹m±s
+;
+
+899 ++
+couÁ”
+;
+
+901 
+	`´ng_by‹s
+ (
+ºdby‹s
+, „ndbytes);
+
+902 
+ºd¡r
+ = 
+	`fÜm©_hex_ex
+ (
+ºdby‹s
+, „ndby‹s, 40, 0, 
+NULL
+, 
+gc
+);
+
+903 
+	`buf_´štf
+ (&
+âame
+, 
+PACKAGE
+ "_%s_%s.tmp", 
+´efix
+, 
+ºd¡r
+);
+
+905 
+»tâame
+ = 
+	`g’_·th
+ (
+dœeùÜy
+, 
+	`BSTR
+ (&
+âame
+), 
+gc
+);
+
+906 ià(!
+»tâame
+)
+
+908 
+	`msg
+ (
+M_FATAL
+, "Failed�o create�emporary filename‡nd…ath");
+
+909  
+NULL
+;
+
+914 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+»tâame
+, 
+O_CREAT
+ | 
+O_EXCL
+ | 
+O_WRONLY
+, 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+915 ià(
+fd
+ != -1)
+
+917 
+	`þo£
+ (
+fd
+);
+
+918  
+»tâame
+;
+
+920 ià(
+fd
+ =ð-1 && 
+”ºo
+ !ð
+EEXIST
+)
+
+923 
+gc_¬’a
+ 
+gû¼
+ = 
+	`gc_Ãw
+ ();
+
+924 
+	`msg
+ (
+M_FATAL
+, "Could‚ot create�emporary file '%s': %s",
+
+925 
+»tâame
+, 
+	`¡»¼Ü_ts
+ (
+”ºo
+, &
+gû¼
+));
+
+926 
+	`gc_ä“
+ (&
+gû¼
+);
+
+927  
+NULL
+;
+
+930 
+©‹m±s
+ < 6);
+
+932 
+	`msg
+ (
+M_FATAL
+, "Fažed�Øü—‹�empÜ¬y fž�aá” %˜©‹m±s", 
+©‹m±s
+);
+
+933  
+NULL
+;
+
+934 
+	}
+}
+
+942 
+	$ho¡Çme_¿ndomize
+(cÚ¡ *
+ho¡Çme
+, 
+gc_¬’a
+ *
+gc
+)
+
+944 
+	#n_ºd_by‹s
+ 6
+
+	)
+
+946 
+ušt8_t
+ 
+ºd_by‹s
+[
+n_ºd_by‹s
+];
+
+947 cÚ¡ *
+ºd_¡r
+;
+
+948 
+bufãr
+ 
+hÇme
+ = 
+	`®loc_buf_gc
+ (
+	`¡¾’
+(
+ho¡Çme
+)+(
+ºd_by‹s
+)*2+4, 
+gc
+);
+
+950 
+	`´ng_by‹s
+ (
+ºd_by‹s
+,  (rnd_bytes));
+
+951 
+ºd_¡r
+ = 
+	`fÜm©_hex_ex
+ (
+ºd_by‹s
+,  (ºd_by‹s), 40, 0, 
+NULL
+, 
+gc
+);
+
+952 
+	`buf_´štf
+(&
+hÇme
+, "%s.%s", 
+ºd_¡r
+, 
+ho¡Çme
+);
+
+953  
+	`BSTR
+(&
+hÇme
+);
+
+954 #undeà
+n_ºd_by‹s
+
+
+955 
+	}
+}
+
+960 
+	$ho¡Çme_¿ndomize
+(cÚ¡ *
+ho¡Çme
+, 
+gc_¬’a
+ *
+gc
+)
+
+962 
+	`msg
+ (
+M_WARN
+, "WARNING: hostname„andomization disabled when crypto support is‚ot compiled");
+
+963  
+ho¡Çme
+;
+
+964 
+	}
+}
+
+972 
+	$g’_·th
+ (cÚ¡ *
+dœeùÜy
+, cÚ¡ *
+fž’ame
+, 
+gc_¬’a
+ *
+gc
+)
+
+974 #ià
+WIN32
+
+
+975 cÚ¡ 
+CC_PATH_RESERVED
+ = 
+CC_LESS_THAN
+|
+CC_GREATER_THAN
+|
+CC_COLON
+|
+
+976 
+CC_DOUBLE_QUOTE
+|
+CC_SLASH
+|
+CC_BACKSLASH
+|
+CC_PIPE
+|
+CC_QUESTION_MARK
+|
+CC_ASTERISK
+;
+
+978 cÚ¡ 
+CC_PATH_RESERVED
+ = 
+CC_SLASH
+;
+
+980 cÚ¡ *
+§ã_fž’ame
+ = 
+	`¡ršg_mod_cÚ¡
+ (
+fž’ame
+, 
+CC_PRINT
+, 
+CC_PATH_RESERVED
+, '_', 
+gc
+);
+
+982 ià(
+§ã_fž’ame
+
+
+983 && 
+	`¡rcmp
+ (
+§ã_fž’ame
+, ".")
+
+984 && 
+	`¡rcmp
+ (
+§ã_fž’ame
+, "..")
+
+985 #ifdeà
+WIN32
+
+
+986 && 
+	`wš_§ã_fž’ame
+ (
+§ã_fž’ame
+)
+
+990 cÚ¡ 
+size_t
+ 
+outsize
+ = 
+	`¡¾’
+(
+§ã_fž’ame
+è+ (
+dœeùÜy
+ ? strlen (directory) : 0) + 16;
+
+991 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (
+outsize
+, 
+gc
+);
+
+992 
+dœ£p
+[2];
+
+994 
+dœ£p
+[0] = 
+OS_SPECIFIC_DIRSEP
+;
+
+995 
+dœ£p
+[1] = '\0';
+
+997 ià(
+dœeùÜy
+)
+
+998 
+	`buf_´štf
+ (&
+out
+, "%s%s", 
+dœeùÜy
+, 
+dœ£p
+);
+
+999 
+	`buf_´štf
+ (&
+out
+, "%s", 
+§ã_fž’ame
+);
+
+1001  
+	`BSTR
+ (&
+out
+);
+
+1004  
+NULL
+;
+
+1005 
+	}
+}
+
+1007 
+boÞ
+
+
+1008 
+	$absÞu‹_·thÇme
+ (cÚ¡ *
+·thÇme
+)
+
+1010 ià(
+·thÇme
+)
+
+1012 cÚ¡ 
+c
+ = 
+·thÇme
+[0];
+
+1013 #ifdeà
+WIN32
+
+
+1014  
+c
+ =ð'\\' || (
+	`i§Íha
+(cè&& 
+·thÇme
+[1] == ':' &&…athname[2] == '\\');
+
+1016  
+c
+ == '/';
+
+1020  
+çl£
+;
+
+1021 
+	}
+}
+
+1027 
+boÞ
+
+
+1028 
+	$g‘_u£r_·ss_ü
+ (
+u£r_·ss
+ *
+up
+,
+
+1029 cÚ¡ *
+auth_fže
+,
+
+1030 cÚ¡ *
+´efix
+,
+
+1031 cÚ¡ 
+æags
+,
+
+1032 cÚ¡ *
+auth_ch®Ënge
+)
+
+1034 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1036 ià(!
+up
+->
+defšed
+)
+
+1038 cÚ¡ 
+boÞ
+ 
+äom_¡dš
+ = (!
+auth_fže
+ || !
+	`¡rcmp
+ (auth_file, "stdin"));
+
+1040 ià(
+æags
+ & 
+GET_USER_PASS_PREVIOUS_CREDS_FAILED
+)
+
+1041 
+	`msg
+ (
+M_WARN
+, "NÙe:…»viou '%s' c»d’tŸl çžed", 
+´efix
+);
+
+1043 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1047 ià(
+mªagem’t
+
+
+1048 && ((
+auth_fže
+ && 
+	`¡»q
+ (auth_fže, "mªagem’t")è|| (
+äom_¡dš
+ && (
+æags
+ & 
+GET_USER_PASS_MANAGEMENT
+)))
+
+1049 && 
+	`mªagem’t_qu”y_u£r_·ss_’abËd
+ (
+mªagem’t
+))
+
+1051 cÚ¡ *
+sc
+ = 
+NULL
+;
+
+1053 ià(
+æags
+ & 
+GET_USER_PASS_PREVIOUS_CREDS_FAILED
+)
+
+1054 
+	`mªagem’t_auth_çžu»
+ (
+mªagem’t
+, 
+´efix
+, "previous‡uth credentials failed");
+
+1056 #ifdeà
+ENABLE_CLIENT_CR
+
+
+1057 ià(
+auth_ch®Ënge
+ && (
+æags
+ & 
+GET_USER_PASS_STATIC_CHALLENGE
+))
+
+1058 
+sc
+ = 
+auth_ch®Ënge
+;
+
+1060 ià(!
+	`mªagem’t_qu”y_u£r_·ss
+ (
+mªagem’t
+, 
+up
+, 
+´efix
+, 
+æags
+, 
+sc
+))
+
+1062 ià((
+æags
+ & 
+GET_USER_PASS_NOFATAL
+) != 0)
+
+1063  
+çl£
+;
+
+1065 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚Ù„—d % u£ºame/·sswÜd/ok/¡ršg from mªagem’ˆš‹rçû", 
+´efix
+);
+
+1073 ià(
+æags
+ & 
+GET_USER_PASS_NEED_OK
+)
+
+1075 
+bufãr
+ 
+u£r_´om±
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+1077 
+	`buf_´štf
+ (&
+u£r_´om±
+, "NEED-OK|%s|%s:", 
+´efix
+, 
+up
+->
+u£ºame
+);
+
+1079 ià(!
+	`g‘_cÚsÞe_šput
+ (
+	`BSTR
+ (&
+u£r_´om±
+), 
+Œue
+, 
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+))
+
+1080 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚Ù„—d % ok-cÚfœm©iÚ from stdš", 
+´efix
+);
+
+1082 ià(!
+	`¡¾’
+ (
+up
+->
+·sswÜd
+))
+
+1083 
+	`¡rýy
+ (
+up
+->
+·sswÜd
+, "ok");
+
+1089 ià(
+äom_¡dš
+)
+
+1091 #iâdeà
+WIN32
+
+
+1093 iàÐ!
+	`i§‰y
+(0) && !isatty(2) )
+
+1094 { 
+	`msg
+(
+M_FATAL
+, "Ã™h” stdš‚Ü std”¸¬�¨‰y deviû, cª'ˆask fÜ % ·sswÜd. Iàyou u£d --d«mÚ, you‚“d�Øu£ --ask·s tØmak�·s¥h¿£-´Ùeùed key wÜk,‡nd you cª‚Ù u£ --auth-noÿche.", 
+´efix
+ ); }
+
+1097 #ifdeà
+ENABLE_CLIENT_CR
+
+
+1098 ià(
+auth_ch®Ënge
+ && (
+æags
+ & 
+GET_USER_PASS_DYNAMIC_CHALLENGE
+))
+
+1100 
+auth_ch®Ënge_šfo
+ *
+ac
+ = 
+	`g‘_auth_ch®Ënge
+ (
+auth_ch®Ënge
+, &
+gc
+);
+
+1101 ià(
+ac
+)
+
+1103 *
+»¥Ú£
+ = (*è
+	`gc_m®loc
+ (
+USER_PASS_LEN
+, 
+çl£
+, &
+gc
+);
+
+1104 
+bufãr
+ 
+·cked_»¥
+;
+
+1106 
+	`buf_£t_wr™e
+ (&
+·cked_»¥
+, (
+ušt8_t
+*)
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+1107 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "CHALLENGE: %s", 
+ac
+->
+ch®Ënge_‹xt
+);
+
+1108 ià(!
+	`g‘_cÚsÞe_šput
+ ("Re¥Ú£:", 
+	`BOOL_CAST
+(
+ac
+->
+æags
+&
+CR_ECHO
+), 
+»¥Ú£
+, 
+USER_PASS_LEN
+))
+
+1109 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚ot„ead challenge„esponse from stdin");
+
+1110 
+	`¡ºýyÁ
+ (
+up
+->
+u£ºame
+, 
+ac
+->
+u£r
+, 
+USER_PASS_LEN
+);
+
+1111 
+	`buf_´štf
+ (&
+·cked_»¥
+, "CRV1::%s::%s", 
+ac
+->
+¡©e_id
+, 
+»¥Ú£
+);
+
+1115 
+	`msg
+ (
+M_FATAL
+, "ERROR:„eceived malformed challenge„equest from server");
+
+1121 
+bufãr
+ 
+u£r_´om±
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+1122 
+bufãr
+ 
+·ss_´om±
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+1124 
+	`buf_´štf
+ (&
+u£r_´om±
+, "EÁ” % U£ºame:", 
+´efix
+);
+
+1125 
+	`buf_´štf
+ (&
+·ss_´om±
+, "EÁ” % PasswÜd:", 
+´efix
+);
+
+1127 ià(!(
+æags
+ & 
+GET_USER_PASS_PASSWORD_ONLY
+))
+
+1129 ià(!
+	`g‘_cÚsÞe_šput
+ (
+	`BSTR
+ (&
+u£r_´om±
+), 
+Œue
+, 
+up
+->
+u£ºame
+, 
+USER_PASS_LEN
+))
+
+1130 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚Ù„—d % u£ºam�äom stdš", 
+´efix
+);
+
+1131 ià(
+	`¡¾’
+ (
+up
+->
+u£ºame
+) == 0)
+
+1132 
+	`msg
+ (
+M_FATAL
+, "ERROR: % u£ºam�i em±y", 
+´efix
+);
+
+1135 ià(!
+	`g‘_cÚsÞe_šput
+ (
+	`BSTR
+ (&
+·ss_´om±
+), 
+çl£
+, 
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+))
+
+1136 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚Ù‚Ù„—d % ·sswÜd from stdš", 
+´efix
+);
+
+1138 #ifdeà
+ENABLE_CLIENT_CR
+
+
+1139 ià(
+auth_ch®Ënge
+ && (
+æags
+ & 
+GET_USER_PASS_STATIC_CHALLENGE
+))
+
+1141 *
+»¥Ú£
+ = (*è
+	`gc_m®loc
+ (
+USER_PASS_LEN
+, 
+çl£
+, &
+gc
+);
+
+1142 
+bufãr
+ 
+·cked_»¥
+;
+
+1143 *
+pw64
+=
+NULL
+, *
+»¥64
+=NULL;
+
+1145 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "CHALLENGE: %s", 
+auth_ch®Ënge
+);
+
+1146 ià(!
+	`g‘_cÚsÞe_šput
+ ("Re¥Ú£:", 
+	`BOOL_CAST
+(
+æags
+ & 
+GET_USER_PASS_STATIC_CHALLENGE_ECHO
+), 
+»¥Ú£
+, 
+USER_PASS_LEN
+))
+
+1147 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚ot„ead static challenge„esponse from stdin");
+
+1148 ià(
+	`Ý’v²_ba£64_’code
+(
+up
+->
+·sswÜd
+, 
+	`¡¾’
+(up->·sswÜd), &
+pw64
+) == -1
+
+1149 || 
+	`Ý’v²_ba£64_’code
+(
+»¥Ú£
+, 
+	`¡¾’
+Ôe¥Ú£), &
+»¥64
+) == -1)
+
+1150 
+	`msg
+ (
+M_FATAL
+, "ERROR: could‚ot base64-encode…assword/static_response");
+
+1151 
+	`buf_£t_wr™e
+ (&
+·cked_»¥
+, (
+ušt8_t
+*)
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+1152 
+	`buf_´štf
+ (&
+·cked_»¥
+, "SCRV1:%s:%s", 
+pw64
+, 
+»¥64
+);
+
+1153 
+	`¡ršg_þ—r
+(
+pw64
+);
+
+1154 
+	`ä“
+(
+pw64
+);
+
+1155 
+	`¡ršg_þ—r
+(
+»¥64
+);
+
+1156 
+	`ä“
+(
+»¥64
+);
+
+1166 
+FILE
+ *
+å
+;
+
+1168 #iâdeà
+ENABLE_PASSWORD_SAVE
+
+
+1173 ià(
+æags
+ & 
+GET_USER_PASS_SENSITIVE
+)
+
+1174 
+	`msg
+ (
+M_FATAL
+, "SÜry, '%s'…asswÜd cªnÙ b�»ad from‡ fže", 
+´efix
+);
+
+1177 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+auth_fže
+);
+
+1179 
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+auth_fže
+, "r");
+
+1180 ià(!
+å
+)
+
+1181 
+	`msg
+ (
+M_ERR
+, "E¼Ü o³nšg '%s'‡uth fže: %s", 
+´efix
+, 
+auth_fže
+);
+
+1183 ià(
+æags
+ & 
+GET_USER_PASS_PASSWORD_ONLY
+)
+
+1185 ià(
+	`fg‘s
+ (
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+, 
+å
+è=ð
+NULL
+)
+
+1186 
+	`msg
+ (
+M_FATAL
+, "Error„eading…assword from %s‡uthfile: %s",
+
+1187 
+´efix
+,
+
+1188 
+auth_fže
+);
+
+1192 ià(
+	`fg‘s
+ (
+up
+->
+u£ºame
+, 
+USER_PASS_LEN
+, 
+å
+è=ð
+NULL
+
+
+1193 || 
+	`fg‘s
+ (
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+, 
+å
+è=ð
+NULL
+)
+
+1194 
+	`msg
+ (
+M_FATAL
+, "Error„eading username‡nd…assword (must be on�wo consecutive†ines) from %s‡uthfile: %s",
+
+1195 
+´efix
+,
+
+1196 
+auth_fže
+);
+
+1199 
+	`fþo£
+ (
+å
+);
+
+1201 
+	`chomp
+ (
+up
+->
+u£ºame
+);
+
+1202 
+	`chomp
+ (
+up
+->
+·sswÜd
+);
+
+1204 ià(!(
+æags
+ & 
+GET_USER_PASS_PASSWORD_ONLY
+è&& 
+	`¡¾’
+ (
+up
+->
+u£ºame
+) == 0)
+
+1205 
+	`msg
+ (
+M_FATAL
+, "ERROR: u£ºam�äom % authfž�'%s' i em±y", 
+´efix
+, 
+auth_fže
+);
+
+1208 
+	`¡ršg_mod
+ (
+up
+->
+u£ºame
+, 
+CC_PRINT
+, 
+CC_CRLF
+, 0);
+
+1209 
+	`¡ršg_mod
+ (
+up
+->
+·sswÜd
+, 
+CC_PRINT
+, 
+CC_CRLF
+, 0);
+
+1211 
+up
+->
+defšed
+ = 
+Œue
+;
+
+1215 
+	`msg
+ (
+M_INFO
+, "GET_USER_PASS % u='%s'…='%s'", 
+´efix
+, 
+up
+->
+u£ºame
+, up->
+·sswÜd
+);
+
+1218 
+	`gc_ä“
+ (&
+gc
+);
+
+1220  
+Œue
+;
+
+1221 
+	}
+}
+
+1223 #ifdeà
+ENABLE_CLIENT_CR
+
+
+1229 
+auth_ch®Ënge_šfo
+ *
+
+1230 
+	$g‘_auth_ch®Ënge
+ (cÚ¡ *
+auth_ch®Ënge
+, 
+gc_¬’a
+ *
+gc
+)
+
+1232 ià(
+auth_ch®Ënge
+)
+
+1234 
+auth_ch®Ënge_šfo
+ *
+ac
+;
+
+1235 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+auth_ch®Ënge
+);
+
+1236 *
+wÜk
+ = (*è
+	`gc_m®loc
+ (
+Ën
++1, 
+çl£
+, 
+gc
+);
+
+1237 *
+ý
+;
+
+1239 
+bufãr
+ 
+b
+;
+
+1240 
+	`buf_£t_»ad
+ (&
+b
+, (cÚ¡ 
+ušt8_t
+ *)
+auth_ch®Ënge
+, 
+Ën
+);
+
+1242 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+ac
+, 
+auth_ch®Ënge_šfo
+, 
+gc
+);
+
+1245 ià(!
+	`buf_·r£
+(&
+b
+, ':', 
+wÜk
+, 
+Ën
+))
+
+1246  
+NULL
+;
+
+1247 ià(
+	`¡rcmp
+(
+wÜk
+, "CRV1"))
+
+1248  
+NULL
+;
+
+1251 ià(!
+	`buf_·r£
+(&
+b
+, ':', 
+wÜk
+, 
+Ën
+))
+
+1252  
+NULL
+;
+
+1253 
+ý
+ = 
+wÜk
+; *cp != '\0'; ++cp)
+
+1255 cÚ¡ 
+c
+ = *
+ý
+;
+
+1256 ià(
+c
+ == 'E')
+
+1257 
+ac
+->
+æags
+ |ð
+CR_ECHO
+;
+
+1258 ià(
+c
+ == 'R')
+
+1259 
+ac
+->
+æags
+ |ð
+CR_RESPONSE
+;
+
+1263 ià(!
+	`buf_·r£
+(&
+b
+, ':', 
+wÜk
+, 
+Ën
+))
+
+1264  
+NULL
+;
+
+1265 
+ac
+->
+¡©e_id
+ = 
+	`¡ršg_®loc
+(
+wÜk
+, 
+gc
+);
+
+1268 ià(!
+	`buf_·r£
+(&
+b
+, ':', 
+wÜk
+, 
+Ën
+))
+
+1269  
+NULL
+;
+
+1270 
+ac
+->
+u£r
+ = (*è
+	`gc_m®loc
+ (
+	`¡¾’
+(
+wÜk
+)+1, 
+Œue
+, 
+gc
+);
+
+1271 
+	`Ý’v²_ba£64_decode
+(
+wÜk
+, (*)
+ac
+->
+u£r
+, -1);
+
+1274 
+ac
+->
+ch®Ënge_‹xt
+ = 
+	`¡ršg_®loc
+(
+	`BSTR
+(&
+b
+), 
+gc
+);
+
+1276  
+ac
+;
+
+1279  
+NULL
+;
+
+1280 
+	}
+}
+
+1284 #ià
+AUTO_USERID
+
+
+1287 
+	$g‘_u£r_·ss_auto_u£rid
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ *
+�g
+)
+
+1289 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1290 
+bufãr
+ 
+buf
+;
+
+1291 
+ušt8_t
+ 
+maÿddr
+[6];
+
+1292 
+ušt8_t
+ 
+dige¡
+ [
+MD5_DIGEST_LENGTH
+];
+
+1293 cÚ¡ 
+ušt8_t
+ 
+hash´efix
+[] = "AUTO_USERID_DIGEST";
+
+1295 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+1296 
+md_ùx_t
+ 
+ùx
+;
+
+1298 
+	`CLEAR
+ (*
+up
+);
+
+1299 
+	`buf_£t_wr™e
+ (&
+buf
+, (
+ušt8_t
+*)
+up
+->
+u£ºame
+, 
+USER_PASS_LEN
+);
+
+1300 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+TARGET_PREFIX
+);
+
+1301 ià(
+	`g‘_deçuÉ_g©eway_mac_addr
+ (
+maÿddr
+))
+
+1303 
+	`dmsg
+ (
+D_AUTO_USERID
+, "GUPAU: maÿddr=%s", 
+	`fÜm©_hex_ex
+ (
+maÿddr
+,  (maÿddr), 0, 1, ":", &
+gc
+));
+
+1304 
+	`md_ùx_š™
+(&
+ùx
+, 
+md5_kt
+);
+
+1305 
+	`md_ùx_upd©e
+(&
+ùx
+, 
+hash´efix
+,  (hashprefix) - 1);
+
+1306 
+	`md_ùx_upd©e
+(&
+ùx
+, 
+maÿddr
+,  (macaddr));
+
+1307 
+	`md_ùx_fš®
+(&
+ùx
+, 
+dige¡
+);
+
+1308 
+	`md_ùx_þ—nup
+(&
+ùx
+)
+
+1309 
+	`buf_´štf
+(&
+buf
+, "%s", 
+	`fÜm©_hex_ex
+ (
+dige¡
+,  (dige¡), 0, 256, " ", &
+gc
+));
+
+1313 
+	`buf_´štf
+ (&
+buf
+, "UNKNOWN");
+
+1315 ià(
+�g
+ && 
+	`¡rcmp
+ (tag, "stdin"))
+
+1316 
+	`buf_´štf
+ (&
+buf
+, "-%s", 
+�g
+);
+
+1317 
+up
+->
+defšed
+ = 
+Œue
+;
+
+1318 
+	`gc_ä“
+ (&
+gc
+);
+
+1320 
+	`dmsg
+ (
+D_AUTO_USERID
+, "GUPAU: AUTO_USERID: '%s'", 
+up
+->
+u£ºame
+);
+
+1321 
+	}
+}
+
+1326 
+	$purge_u£r_·ss
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ 
+boÞ
+ 
+fÜû
+)
+
+1328 cÚ¡ 
+boÞ
+ 
+noÿche
+ = 
+up
+->nocache;
+
+1329 
+boÞ
+ 
+w¬n_shown
+ = 
+çl£
+;
+
+1330 ià(
+noÿche
+ || 
+fÜû
+)
+
+1332 
+	`CLEAR
+ (*
+up
+);
+
+1333 
+up
+->
+noÿche
+ =‚ocache;
+
+1335 ià(!
+w¬n_shown
+)
+
+1337 
+	`msg
+ (
+M_WARN
+, "WARNING:�his configuration may cache…asswords in memory -- use�he‡uth-nocache option�o…revent�his");
+
+1338 
+w¬n_shown
+ = 
+Œue
+;
+
+1340 
+	}
+}
+
+1343 
+	$£t_auth_tok’
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ *
+tok’
+)
+
+1345 ià(
+tok’
+ && 
+	`¡¾’
+Ñok’è&& 
+up
+ && up->
+defšed
+ && !up->
+noÿche
+)
+
+1347 
+	`CLEAR
+ (
+up
+->
+·sswÜd
+);
+
+1348 
+	`¡ºýyÁ
+ (
+up
+->
+·sswÜd
+, 
+tok’
+, 
+USER_PASS_LEN
+);
+
+1350 
+	}
+}
+
+1359 
+	$§ã_´št
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+1361  
+	`¡ršg_mod_cÚ¡
+ (
+¡r
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '.', 
+gc
+);
+
+1362 
+	}
+}
+
+1364 
+boÞ
+
+
+1365 
+	$is_·sswÜd_’v_v¬
+ (cÚ¡ *
+¡r
+)
+
+1367  (
+	`¡ºcmp
+ (
+¡r
+, "password", 8) == 0);
+
+1368 
+	}
+}
+
+1370 
+boÞ
+
+
+1371 
+	$’v_®lowed
+ (cÚ¡ *
+¡r
+)
+
+1373  (
+sü�t_£cur™y
+ >ð
+SSEC_PW_ENV
+ || !
+	`is_·sswÜd_’v_v¬
+ (
+¡r
+));
+
+1374 
+	}
+}
+
+1376 
+boÞ
+
+
+1377 
+	$’v_§ã_to_´št
+ (cÚ¡ *
+¡r
+)
+
+1379 #iâdeà
+UNSAFE_DEBUG
+
+
+1380 ià(
+	`is_·sswÜd_’v_v¬
+ (
+¡r
+))
+
+1381  
+çl£
+;
+
+1383  
+Œue
+;
+
+1384 
+	}
+}
+
+1389 
+	$make_’v_¬¿y
+ (cÚ¡ 
+’v_£t
+ *
+es
+,
+
+1390 cÚ¡ 
+boÞ
+ 
+check_®lowed
+,
+
+1391 
+gc_¬’a
+ *
+gc
+)
+
+1393 **
+»t
+ = 
+NULL
+;
+
+1394 
+’v_™em
+ *
+e
+ = 
+NULL
+;
+
+1395 
+i
+ = 0, 
+n
+ = 0;
+
+1398 ià(
+es
+)
+
+1400 
+e
+ = 
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+1401 ++
+n
+;
+
+1405 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+»t
+, *, 
+n
++1, 
+gc
+);
+
+1408 ià(
+es
+)
+
+1410 
+i
+ = 0;
+
+1411 
+e
+ = 
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+1413 ià(!
+check_®lowed
+ || 
+	`’v_®lowed
+ (
+e
+->
+¡ršg
+))
+
+1415 
+	`ASSERT
+ (
+i
+ < 
+n
+);
+
+1416 
+»t
+[
+i
+++] = 
+e
+->
+¡ršg
+;
+
+1421 
+»t
+[
+i
+] = 
+NULL
+;
+
+1422  (cÚ¡ **)
+»t
+;
+
+1423 
+	}
+}
+
+1426 
+	$make_¬g_¬¿y
+ (cÚ¡ *
+fœ¡
+, cÚ¡ *
+·rms
+, 
+gc_¬’a
+ *
+gc
+)
+
+1428 **
+»t
+ = 
+NULL
+;
+
+1429 
+ba£
+ = 0;
+
+1430 cÚ¡ 
+max_·rms
+ = 
+MAX_PARMS
+ + 2;
+
+1431 
+n
+ = 0;
+
+1434 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+»t
+, *, 
+max_·rms
+, 
+gc
+);
+
+1437 ià(
+fœ¡
+)
+
+1439 
+»t
+[
+ba£
+++] = 
+	`¡ršg_®loc
+ (
+fœ¡
+, 
+gc
+);
+
+1442 ià(
+·rms
+)
+
+1444 
+n
+ = 
+	`·r£_lše
+ (
+·rms
+, &
+»t
+[
+ba£
+], 
+max_·rms
+ - ba£ - 1, "make_¬g_¬¿y", 0, 
+M_WARN
+, 
+gc
+);
+
+1445 
+	`ASSERT
+ (
+n
+ >ð0 &&‚ + 
+ba£
+ + 1 <ð
+max_·rms
+);
+
+1447 
+»t
+[
+ba£
+ + 
+n
+] = 
+NULL
+;
+
+1449  (cÚ¡ **)
+»t
+;
+
+1450 
+	}
+}
+
+1453 
+	$make_šlše_¬¿y
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+1455 
+lše
+[
+OPTION_LINE_SIZE
+];
+
+1456 
+bufãr
+ 
+buf
+;
+
+1457 
+Ën
+ = 0;
+
+1458 **
+»t
+ = 
+NULL
+;
+
+1459 
+i
+ = 0;
+
+1461 
+	`buf_£t_»ad
+ (&
+buf
+, (cÚ¡ 
+ušt8_t
+ *è
+¡r
+, 
+	`¡¾’
+ (str));
+
+1462 
+	`buf_·r£
+ (&
+buf
+, '\n', 
+lše
+,  (line)))
+
+1463 ++
+Ën
+;
+
+1466 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+»t
+, *, 
+Ën
+ + 1, 
+gc
+);
+
+1468 
+	`buf_£t_»ad
+ (&
+buf
+, (cÚ¡ 
+ušt8_t
+ *è
+¡r
+, 
+	`¡¾’
+(str));
+
+1469 
+	`buf_·r£
+ (&
+buf
+, '\n', 
+lše
+,  (line)))
+
+1471 
+	`chomp
+ (
+lše
+);
+
+1472 
+	`ASSERT
+ (
+i
+ < 
+Ën
+);
+
+1473 
+»t
+[
+i
+] = 
+	`¡ršg_®loc
+ (
+	`sk�_Ëadšg_wh™e¥aû
+ (
+lše
+), 
+gc
+);
+
+1474 ++
+i
+;
+
+1476 
+	`ASSERT
+ (
+i
+ <ð
+Ën
+);
+
+1477 
+»t
+[
+i
+] = 
+NULL
+;
+
+1478  (cÚ¡ **)
+»t
+;
+
+1479 
+	}
+}
+
+1482 
+	$make_¬g_cÝy
+ (**
+p
+, 
+gc_¬’a
+ *
+gc
+)
+
+1484 **
+»t
+ = 
+NULL
+;
+
+1485 cÚ¡ 
+Ën
+ = 
+	`¡ršg_¬¿y_Ën
+ ((cÚ¡ **)
+p
+);
+
+1486 cÚ¡ 
+max_·rms
+ = 
+Ën
+ + 1;
+
+1487 
+i
+;
+
+1490 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+»t
+, *, 
+max_·rms
+, 
+gc
+);
+
+1492 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+1493 
+»t
+[
+i
+] = 
+p
+[i];
+
+1495  (cÚ¡ **)
+»t
+;
+
+1496 
+	}
+}
+
+1499 
+	$make_ex‹nded_¬g_¬¿y
+ (**
+p
+, 
+gc_¬’a
+ *
+gc
+)
+
+1501 cÚ¡ 
+¬gc
+ = 
+	`¡ršg_¬¿y_Ën
+ ((cÚ¡ **)
+p
+);
+
+1502 ià(!
+	`¡rcmp
+ (
+p
+[0], 
+INLINE_FILE_TAG
+è&& 
+¬gc
+ == 2)
+
+1503  
+	`make_šlše_¬¿y
+ (
+p
+[1], 
+gc
+);
+
+1505 ià(
+¬gc
+ == 0)
+
+1506  
+	`make_¬g_¬¿y
+ (
+NULL
+, NULL, 
+gc
+);
+
+1507 ià(
+¬gc
+ == 1)
+
+1508  
+	`make_¬g_¬¿y
+ (
+p
+[0], 
+NULL
+, 
+gc
+);
+
+1509 ià(
+¬gc
+ == 2)
+
+1510  
+	`make_¬g_¬¿y
+ (
+p
+[0],…[1], 
+gc
+);
+
+1512  
+	`make_¬g_cÝy
+ (
+p
+, 
+gc
+);
+
+1513 
+	}
+}
+
+1516 
+	$Ý’v²_¦“p
+ (cÚ¡ 
+n
+)
+
+1518 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1519 ià(
+mªagem’t
+)
+
+1521 
+	`mªagem’t_ev’t_loÝ_n_£cÚds
+ (
+mªagem’t
+, 
+n
+);
+
+1525 
+	`¦“p
+ (
+n
+);
+
+1526 
+	}
+}
+
+1532 
+size_t
+
+
+1533 
+	$adju¡_pow”_of_2
+ (
+size_t
+ 
+u
+)
+
+1535 
+size_t
+ 
+»t
+ = 1;
+
+1537 
+»t
+ < 
+u
+)
+
+1539 
+»t
+ <<= 1;
+
+1540 
+	`ASSERT
+ (
+»t
+ > 0);
+
+1543  
+»t
+;
+
+1544 
+	}
+}
+
+1554 
+	$¬gv_š™
+ (
+¬gv
+ *
+a
+)
+
+1556 
+a
+->
+ÿ·c™y
+ = 0;
+
+1557 
+a
+->
+¬gc
+ = 0;
+
+1558 
+a
+->
+¬gv
+ = 
+NULL
+;
+
+1559 
+a
+->
+sy¡em_¡r
+ = 
+NULL
+;
+
+1560 
+	}
+}
+
+1562 
+¬gv
+
+
+1563 
+	$¬gv_Ãw
+ ()
+
+1565 
+¬gv
+ 
+»t
+;
+
+1566 
+	`¬gv_š™
+ (&
+»t
+);
+
+1567  
+»t
+;
+
+1568 
+	}
+}
+
+1571 
+	$¬gv_»£t
+ (
+¬gv
+ *
+a
+)
+
+1573 
+size_t
+ 
+i
+;
+
+1574 
+i
+ = 0; i < 
+a
+->
+¬gc
+; ++i)
+
+1575 
+	`ä“
+ (
+a
+->
+¬gv
+[
+i
+]);
+
+1576 
+	`ä“
+ (
+a
+->
+¬gv
+);
+
+1577 
+	`ä“
+ (
+a
+->
+sy¡em_¡r
+);
+
+1578 
+	`¬gv_š™
+ (
+a
+);
+
+1579 
+	}
+}
+
+1582 
+	$¬gv_ex‹nd
+ (
+¬gv
+ *
+a
+, cÚ¡ 
+size_t
+ 
+Ãwÿp
+)
+
+1584 ià(
+Ãwÿp
+ > 
+a
+->
+ÿ·c™y
+)
+
+1586 **
+Ãw¬gv
+;
+
+1587 
+size_t
+ 
+i
+;
+
+1588 
+	`ALLOC_ARRAY_CLEAR
+ (
+Ãw¬gv
+, *, 
+Ãwÿp
+);
+
+1589 
+i
+ = 0; i < 
+a
+->
+¬gc
+; ++i)
+
+1590 
+Ãw¬gv
+[
+i
+] = 
+a
+->
+¬gv
+[i];
+
+1591 
+	`ä“
+ (
+a
+->
+¬gv
+);
+
+1592 
+a
+->
+¬gv
+ = 
+Ãw¬gv
+;
+
+1593 
+a
+->
+ÿ·c™y
+ = 
+Ãwÿp
+;
+
+1595 
+	}
+}
+
+1598 
+	$¬gv_grow
+ (
+¬gv
+ *
+a
+, cÚ¡ 
+size_t
+ 
+add
+)
+
+1600 cÚ¡ 
+size_t
+ 
+Ãw¬gc
+ = 
+a
+->
+¬gc
+ + 
+add
+ + 1;
+
+1601 
+	`ASSERT
+ (
+Ãw¬gc
+ > 
+a
+->
+¬gc
+);
+
+1602 
+	`¬gv_ex‹nd
+ (
+a
+, 
+	`adju¡_pow”_of_2
+ (
+Ãw¬gc
+));
+
+1603 
+	}
+}
+
+1606 
+	$¬gv_­³nd
+ (
+¬gv
+ *
+a
+, *
+¡r
+)
+
+1608 
+	`¬gv_grow
+ (
+a
+, 1);
+
+1609 
+a
+->
+¬gv
+[a->
+¬gc
+++] = 
+¡r
+;
+
+1610 
+	}
+}
+
+1613 
+	$¬gv_sy¡em_¡r_­³nd
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+¡r
+, cÚ¡ 
+boÞ
+ 
+’quÙe
+)
+
+1615 ià(
+¡r
+)
+
+1617 *
+Ãw¡r
+;
+
+1620 
+size_t
+ 
+l
+ = 
+	`¡¾’
+ (
+¡r
+) + 1;
+
+1621 ià(
+a
+->
+sy¡em_¡r
+)
+
+1622 
+l
+ +ð
+	`¡¾’
+ (
+a
+->
+sy¡em_¡r
+) + 1;
+
+1623 ià(
+’quÙe
+)
+
+1624 
+l
+ += 2;
+
+1627 
+Ãw¡r
+ = (*è
+	`m®loc
+ (
+l
+);
+
+1628 
+Ãw¡r
+[0] = '\0';
+
+1629 
+	`check_m®loc_»tuº
+ (
+Ãw¡r
+);
+
+1630 ià(
+a
+->
+sy¡em_¡r
+)
+
+1632 
+	`¡rýy
+ (
+Ãw¡r
+, 
+a
+->
+sy¡em_¡r
+);
+
+1633 
+	`¡rÿt
+ (
+Ãw¡r
+, " ");
+
+1635 ià(
+’quÙe
+)
+
+1636 
+	`¡rÿt
+ (
+Ãw¡r
+, "\"");
+
+1637 
+	`¡rÿt
+ (
+Ãw¡r
+, 
+¡r
+);
+
+1638 ià(
+’quÙe
+)
+
+1639 
+	`¡rÿt
+ (
+Ãw¡r
+, "\"");
+
+1640 
+	`ä“
+ (
+a
+->
+sy¡em_¡r
+);
+
+1641 
+a
+->
+sy¡em_¡r
+ = 
+Ãw¡r
+;
+
+1643 
+	}
+}
+
+1646 
+	$¬gv_exŒaù_cmd_Çme
+ (cÚ¡ *
+·th
+)
+
+1648 ià(
+·th
+)
+
+1650 *
+·th_ý
+ = 
+	`¡rdup
+(
+·th
+);
+
+1651 cÚ¡ *
+bn
+ = 
+	`ba£Çme
+ (
+·th_ý
+);
+
+1652 ià(
+bn
+)
+
+1654 *
+»t
+ = 
+	`¡ršg_®loc
+ (
+bn
+, 
+NULL
+);
+
+1655 *
+dÙ
+ = 
+	`¡¼chr
+ (
+»t
+, '.');
+
+1656 ià(
+dÙ
+)
+
+1657 *
+dÙ
+ = '\0';
+
+1658 
+	`ä“
+(
+·th_ý
+);
+
+1659 ià(
+»t
+[0] != '\0')
+
+1660  
+»t
+;
+
+1663  
+NULL
+;
+
+1664 
+	}
+}
+
+1667 
+	$¬gv_sy¡em_¡r
+ (cÚ¡ 
+¬gv
+ *
+a
+)
+
+1669  
+a
+->
+sy¡em_¡r
+;
+
+1670 
+	}
+}
+
+1672 
+¬gv
+
+
+1673 
+	$¬gv_þÚe
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+size_t
+ 
+h—droom
+)
+
+1675 
+¬gv
+ 
+r
+;
+
+1676 
+size_t
+ 
+i
+;
+
+1678 
+	`¬gv_š™
+ (&
+r
+);
+
+1679 
+i
+ = 0; i < 
+h—droom
+; ++i)
+
+1680 
+	`¬gv_­³nd
+ (&
+r
+, 
+NULL
+);
+
+1681 ià(
+a
+)
+
+1683 
+i
+ = 0; i < 
+a
+->
+¬gc
+; ++i)
+
+1684 
+	`¬gv_­³nd
+ (&
+r
+, 
+	`¡ršg_®loc
+ (
+a
+->
+¬gv
+[
+i
+], 
+NULL
+));
+
+1685 
+r
+.
+sy¡em_¡r
+ = 
+	`¡ršg_®loc
+ (
+a
+->sy¡em_¡r, 
+NULL
+);
+
+1687  
+r
+;
+
+1688 
+	}
+}
+
+1690 
+¬gv
+
+
+1691 
+	$¬gv_š£¹_h—d
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ *
+h—d
+)
+
+1693 
+¬gv
+ 
+r
+;
+
+1694 *
+s
+;
+
+1696 
+r
+ = 
+	`¬gv_þÚe
+ (
+a
+, 1);
+
+1697 
+r
+.
+¬gv
+[0] = 
+	`¡ršg_®loc
+ (
+h—d
+, 
+NULL
+);
+
+1698 
+s
+ = 
+r
+.
+sy¡em_¡r
+;
+
+1699 
+r
+.
+sy¡em_¡r
+ = 
+	`¡ršg_®loc
+ (
+h—d
+, 
+NULL
+);
+
+1700 ià(
+s
+)
+
+1702 
+	`¬gv_sy¡em_¡r_­³nd
+ (&
+r
+, 
+s
+, 
+çl£
+);
+
+1703 
+	`ä“
+ (
+s
+);
+
+1705  
+r
+;
+
+1706 
+	}
+}
+
+1709 
+	$¬gv_‹rm
+ (cÚ¡ **
+f
+)
+
+1711 cÚ¡ *
+p
+ = *
+f
+;
+
+1712 cÚ¡ *
+‹rm
+ = 
+NULL
+;
+
+1713 
+size_t
+ 
+‹rmËn
+ = 0;
+
+1715 ià(*
+p
+ == '\0')
+
+1716  
+NULL
+;
+
+1718 
+Œue
+)
+
+1720 cÚ¡ 
+c
+ = *
+p
+;
+
+1721 ià(
+c
+ == '\0')
+
+1723 ià(
+‹rm
+)
+
+1725 ià(!
+	`is¥aû
+ (
+c
+))
+
+1726 ++
+‹rmËn
+;
+
+1732 ià(!
+	`is¥aû
+ (
+c
+))
+
+1734 
+‹rm
+ = 
+p
+;
+
+1735 
+‹rmËn
+ = 1;
+
+1738 ++
+p
+;
+
+1740 *
+f
+ = 
+p
+;
+
+1742 ià(
+‹rm
+)
+
+1744 *
+»t
+;
+
+1745 
+	`ASSERT
+ (
+‹rmËn
+ > 0);
+
+1746 
+»t
+ = 
+	`m®loc
+ (
+‹rmËn
+ + 1);
+
+1747 
+	`check_m®loc_»tuº
+ (
+»t
+);
+
+1748 
+	`memýy
+ (
+»t
+, 
+‹rm
+, 
+‹rmËn
+);
+
+1749 
+»t
+[
+‹rmËn
+] = '\0';
+
+1750  
+»t
+;
+
+1753  
+NULL
+;
+
+1754 
+	}
+}
+
+1757 
+	$¬gv_¡r
+ (cÚ¡ 
+¬gv
+ *
+a
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ 
+æags
+)
+
+1759 ià(
+a
+->
+¬gv
+)
+
+1760  
+	`´št_¬gv
+ ((cÚ¡ **)
+a
+->
+¬gv
+, 
+gc
+, 
+æags
+);
+
+1763 
+	}
+}
+
+1766 
+	$¬gv_msg
+ (cÚ¡ 
+msgËv
+, cÚ¡ 
+¬gv
+ *
+a
+)
+
+1768 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1769 
+	`msg
+ (
+msgËv
+, "%s", 
+	`¬gv_¡r
+ (
+a
+, &
+gc
+, 0));
+
+1770 
+	`gc_ä“
+ (&
+gc
+);
+
+1771 
+	}
+}
+
+1774 
+	$¬gv_msg_´efix
+ (cÚ¡ 
+msgËv
+, cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ *
+´efix
+)
+
+1776 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1777 
+	`msg
+ (
+msgËv
+, "%s: %s", 
+´efix
+, 
+	`¬gv_¡r
+ (
+a
+, &
+gc
+, 0));
+
+1778 
+	`gc_ä“
+ (&
+gc
+);
+
+1779 
+	}
+}
+
+1782 
+	$¬gv_´štf
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, ...)
+
+1784 
+va_li¡
+ 
+¬gli¡
+;
+
+1785 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+1786 
+	`¬gv_´štf_¬gli¡
+ (
+a
+, 
+fÜm©
+, 0, 
+¬gli¡
+);
+
+1787 
+	`va_’d
+ (
+¬gli¡
+);
+
+1788 
+	}
+}
+
+1791 
+	$¬gv_´štf_ÿt
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, ...)
+
+1793 
+va_li¡
+ 
+¬gli¡
+;
+
+1794 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+1795 
+	`¬gv_´štf_¬gli¡
+ (
+a
+, 
+fÜm©
+, 
+APA_CAT
+, 
+¬gli¡
+);
+
+1796 
+	`va_’d
+ (
+¬gli¡
+);
+
+1797 
+	}
+}
+
+1800 
+	$¬gv_´štf_¬gli¡
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, cÚ¡ 
+æags
+, 
+va_li¡
+ 
+¬gli¡
+)
+
+1802 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1803 *
+‹rm
+;
+
+1804 cÚ¡ *
+f
+ = 
+fÜm©
+;
+
+1806 ià(!(
+æags
+ & 
+APA_CAT
+))
+
+1807 
+	`¬gv_»£t
+ (
+a
+);
+
+1808 
+	`¬gv_ex‹nd
+ (
+a
+, 1);
+
+1810 (
+‹rm
+ = 
+	`¬gv_‹rm
+ (&
+f
+)è!ð
+NULL
+)
+
+1812 ià(
+‹rm
+[0] == '%')
+
+1814 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%s"))
+
+1816 *
+s
+ = 
+	`va_¬g
+ (
+¬gli¡
+, *);
+
+1817 ià(!
+s
+)
+
+1818 
+s
+ = "";
+
+1819 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ (
+s
+, 
+NULL
+));
+
+1820 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+s
+, 
+Œue
+);
+
+1822 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%sc"))
+
+1824 *
+s
+ = 
+	`va_¬g
+ (
+¬gli¡
+, *);
+
+1825 ià(
+s
+)
+
+1827 
+Å¬ms
+;
+
+1828 *
+·rms
+[
+MAX_PARMS
++1];
+
+1829 
+i
+;
+
+1831 
+Å¬ms
+ = 
+	`·r£_lše
+ (
+s
+, 
+·rms
+, 
+MAX_PARMS
+, "SCRIPT-ARGV", 0, 
+D_ARGV_PARSE_CMD
+, &
+gc
+);
+
+1832 ià(
+Å¬ms
+)
+
+1834 
+i
+ = 0; i < 
+Å¬ms
+; ++i)
+
+1835 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ (
+·rms
+[
+i
+], 
+NULL
+));
+
+1838 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ (
+s
+, 
+NULL
+));
+
+1840 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+s
+, 
+çl£
+);
+
+1844 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ ("", 
+NULL
+));
+
+1845 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, "echo", 
+çl£
+);
+
+1848 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%d"))
+
+1850 
+num¡r
+[64];
+
+1851 
+	`Ý’v²_¢´štf
+ (
+num¡r
+,  (num¡r), "%d", 
+	`va_¬g
+ (
+¬gli¡
+, ));
+
+1852 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ (
+num¡r
+, 
+NULL
+));
+
+1853 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+num¡r
+, 
+çl£
+);
+
+1855 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%u"))
+
+1857 
+num¡r
+[64];
+
+1858 
+	`Ý’v²_¢´štf
+ (
+num¡r
+,  (num¡r), "%u", 
+	`va_¬g
+ (
+¬gli¡
+, ));
+
+1859 
+	`¬gv_­³nd
+ (
+a
+, 
+	`¡ršg_®loc
+ (
+num¡r
+, 
+NULL
+));
+
+1860 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+num¡r
+, 
+çl£
+);
+
+1862 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%s/%d"))
+
+1864 
+num¡r
+[64];
+
+1865 *
+s
+ = 
+	`va_¬g
+ (
+¬gli¡
+, *);
+
+1867 ià(!
+s
+)
+
+1868 
+s
+ = "";
+
+1870 
+	`Ý’v²_¢´štf
+ (
+num¡r
+,  (num¡r), "%d", 
+	`va_¬g
+ (
+¬gli¡
+, ));
+
+1873 cÚ¡ 
+size_t
+ 
+Ën
+ = 
+	`¡¾’
+(
+s
+è+ sŒËn(
+num¡r
+) + 2;
+
+1874 *
+combšed
+ = (*è
+	`m®loc
+ (
+Ën
+);
+
+1875 
+	`check_m®loc_»tuº
+ (
+combšed
+);
+
+1877 
+	`¡rýy
+ (
+combšed
+, 
+s
+);
+
+1878 
+	`¡rÿt
+ (
+combšed
+, "/");
+
+1879 
+	`¡rÿt
+ (
+combšed
+, 
+num¡r
+);
+
+1880 
+	`¬gv_­³nd
+ (
+a
+, 
+combšed
+);
+
+1881 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+combšed
+, 
+çl£
+);
+
+1884 ià(!
+	`¡rcmp
+ (
+‹rm
+, "%s%sc"))
+
+1886 *
+s1
+ = 
+	`va_¬g
+ (
+¬gli¡
+, *);
+
+1887 *
+s2
+ = 
+	`va_¬g
+ (
+¬gli¡
+, *);
+
+1888 *
+combšed
+;
+
+1889 *
+cmd_Çme
+;
+
+1891 ià(!
+s1
+) s1 = "";
+
+1892 ià(!
+s2
+) s2 = "";
+
+1893 
+combšed
+ = (*è
+	`m®loc
+ (
+	`¡¾’
+(
+s1
+è+ sŒËn(
+s2
+) + 1);
+
+1894 
+	`check_m®loc_»tuº
+ (
+combšed
+);
+
+1895 
+	`¡rýy
+ (
+combšed
+, 
+s1
+);
+
+1896 
+	`¡rÿt
+ (
+combšed
+, 
+s2
+);
+
+1897 
+	`¬gv_­³nd
+ (
+a
+, 
+combšed
+);
+
+1899 
+cmd_Çme
+ = 
+	`¬gv_exŒaù_cmd_Çme
+ (
+combšed
+);
+
+1900 ià(
+cmd_Çme
+)
+
+1902 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+cmd_Çme
+, 
+çl£
+);
+
+1903 
+	`ä“
+ (
+cmd_Çme
+);
+
+1907 
+	`ASSERT
+ (0);
+
+1908 
+	`ä“
+ (
+‹rm
+);
+
+1912 
+	`¬gv_­³nd
+ (
+a
+, 
+‹rm
+);
+
+1913 
+	`¬gv_sy¡em_¡r_­³nd
+ (
+a
+, 
+‹rm
+, 
+çl£
+);
+
+1916 
+	`gc_ä“
+ (&
+gc
+);
+
+1917 
+	}
+}
+
+1919 #ifdeà
+ARGV_TEST
+
+
+1921 
+	$¬gv_‹¡
+ ()
+
+1923 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1924 cÚ¡ *
+s
+;
+
+1926 
+¬gv
+ 
+a
+;
+
+1928 
+	`¬gv_š™
+ (&
+a
+);
+
+1929 
+	`¬gv_´štf
+ (&
+a
+, "%sc foo bar %s", "c:\\\\src\\\\test\\\\jyargs.exe", "foo bar");
+
+1930 
+	`¬gv_msg_´efix
+ (
+M_INFO
+, &
+a
+, "ARGV");
+
+1931 
+	`msg
+ (
+M_INFO
+, "ARGV-S: %s", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1934 
+	`¬gv_´štf
+ (&
+a
+, "%sc %s %s", "c:\\\\src\\\\test files\\\\batargs.bat", "foo", "bar");
+
+1935 
+	`¬gv_msg_´efix
+ (
+M_INFO
+, &
+a
+, "ARGV");
+
+1936 
+	`msg
+ (
+M_INFO
+, "ARGV-S: %s", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1939 
+	`¬gv_´štf
+ (&
+a
+, "%s%sc foo bar %s %s/%d %d %u", "/foo", "/bar.exe", "one�wo", "1.2.3.4", 24, -69, 96);
+
+1940 
+	`¬gv_msg_´efix
+ (
+M_INFO
+, &
+a
+, "ARGV");
+
+1941 
+	`msg
+ (
+M_INFO
+, "ARGV-S: %s", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1944 
+	`¬gv_´štf
+ (&
+a
+, "this is‡ %s�est of int %d unsigned %u", "FOO", -69, 42);
+
+1945 
+s
+ = 
+	`¬gv_¡r
+ (&
+a
+, &
+gc
+, 
+PA_BRACKET
+);
+
+1946 
+	`´štf
+ ("PF: %s\n", 
+s
+);
+
+1947 
+	`´štf
+ ("PF-S: %s\n", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1950 
+¬gv
+ 
+b
+ = 
+	`¬gv_š£¹_h—d
+ (&
+a
+, "MARK");
+
+1951 
+s
+ = 
+	`¬gv_¡r
+ (&
+b
+, &
+gc
+, 
+PA_BRACKET
+);
+
+1952 
+	`´štf
+ ("PF: %s\n", 
+s
+);
+
+1953 
+	`´štf
+ ("PF-S: %s\n", 
+	`¬gv_sy¡em_¡r
+(&
+b
+));
+
+1954 
+	`¬gv_»£t
+ (&
+b
+);
+
+1957 
+	`¬gv_´štf
+ (&
+a
+, "%sc foo bar %d", "\"multi�erm\" command following \\\"spaces", 99);
+
+1958 
+s
+ = 
+	`¬gv_¡r
+ (&
+a
+, &
+gc
+, 
+PA_BRACKET
+);
+
+1959 
+	`´štf
+ ("PF: %s\n", 
+s
+);
+
+1960 
+	`´štf
+ ("PF-S: %s\n", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1961 
+	`¬gv_»£t
+ (&
+a
+);
+
+1963 
+s
+ = 
+	`¬gv_¡r
+ (&
+a
+, &
+gc
+, 
+PA_BRACKET
+);
+
+1964 
+	`´štf
+ ("PF: %s\n", 
+s
+);
+
+1965 
+	`´štf
+ ("PF-S: %s\n", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1966 
+	`¬gv_»£t
+ (&
+a
+);
+
+1968 
+	`¬gv_´štf
+ (&
+a
+, "foo bar %d", 99);
+
+1969 
+	`¬gv_´štf_ÿt
+ (&
+a
+, "bar %d foo %sc", 42, "nonesuch");
+
+1970 
+	`¬gv_´štf_ÿt
+ (&
+a
+, "cool %s %d u %s/%dƒnd", "frood", 4, "hello", 7);
+
+1971 
+s
+ = 
+	`¬gv_¡r
+ (&
+a
+, &
+gc
+, 
+PA_BRACKET
+);
+
+1972 
+	`´štf
+ ("PF: %s\n", 
+s
+);
+
+1973 
+	`´štf
+ ("PF-S: %s\n", 
+	`¬gv_sy¡em_¡r
+(&
+a
+));
+
+1974 
+	`¬gv_»£t
+ (&
+a
+);
+
+1978 
+lše
+[512];
+
+1979 
+	`fg‘s
+ (
+lše
+, Öše), 
+¡dš
+è!ð
+NULL
+)
+
+1981 *
+‹rm
+;
+
+1982 cÚ¡ *
+f
+ = 
+lše
+;
+
+1983 
+i
+ = 0;
+
+1985 (
+‹rm
+ = 
+	`¬gv_‹rm
+ (&
+f
+)è!ð
+NULL
+)
+
+1987 
+	`´štf
+ ("[%d] '%s'\n", 
+i
+, 
+‹rm
+);
+
+1988 ++
+i
+;
+
+1989 
+	`ä“
+ (
+‹rm
+);
+
+1995 
+	`¬gv_»£t
+ (&
+a
+);
+
+1996 
+	`gc_ä“
+ (&
+gc
+);
+
+1997 
+	}
+}
+
+2005 
+	$§n™ize_cÚŒÞ_mes§ge
+(cÚ¡ *
+¤c
+, 
+gc_¬’a
+ *
+gc
+)
+
+2007 *
+»t
+ = 
+	`gc_m®loc
+ (
+	`¡¾’
+(
+¤c
+)+1, 
+çl£
+, 
+gc
+);
+
+2008 *
+de¡
+ = 
+»t
+;
+
+2009 
+boÞ
+ 
+»daù
+ = 
+çl£
+;
+
+2010 
+sk�
+ = 0;
+
+2014 cÚ¡ 
+c
+ = *
+¤c
+;
+
+2015 ià(
+c
+ == '\0')
+
+2017 ià(
+c
+ =ð'S' && !
+	`¡ºcmp
+(
+¤c
+, "SESS_ID_", 8))
+
+2019 
+sk�
+ = 7;
+
+2020 
+»daù
+ = 
+Œue
+;
+
+2022 ià(
+c
+ =ð'e' && !
+	`¡ºcmp
+(
+¤c
+, "echo ", 5))
+
+2024 
+sk�
+ = 4;
+
+2025 
+»daù
+ = 
+Œue
+;
+
+2028 ià(
+c
+ == ',')
+
+2030 
+sk�
+ = 0;
+
+2031 
+»daù
+ = 
+çl£
+;
+
+2034 ià(
+»daù
+)
+
+2036 ià(
+sk�
+ > 0)
+
+2038 --
+sk�
+;
+
+2039 *
+de¡
+++ = 
+c
+;
+
+2043 *
+de¡
+++ = 
+c
+;
+
+2045 ++
+¤c
+;
+
+2047 *
+de¡
+ = '\0';
+
+2048  
+»t
+;
+
+2049 
+	}
+}
+
+2060 
+boÞ
+
+
+2061 
+	$com·t_æag
+ (
+æag
+)
+
+2063 
+com·t_æags
+ = 0;
+
+2065 ià(
+æag
+ & 
+COMPAT_FLAG_SET
+)
+
+2066 
+com·t_æags
+ |ð(
+æag
+ >> 1);
+
+2068  (
+com·t_æags
+ & (
+æag
+ >> 1));
+
+2070 
+	}
+}
+
+	@misc.h
+
+25 #iâdeà
+MISC_H
+
+
+26 
+	#MISC_H
+
+
+	)
+
+28 
+	~"basic.h
+"
+
+29 
+	~"commÚ.h
+"
+
+30 
+	~"š‹g”.h
+"
+
+31 
+	~"bufãr.h
+"
+
+32 
+	~"¶©fÜm.h
+"
+
+35 
+	#INETD_SOCKET_DESCRIPTOR
+ 0
+
+	)
+
+38 
+	g¶ugš_li¡
+;
+
+41 
+	s¬gv
+ {
+
+42 
+size_t
+ 
+	mÿ·c™y
+;
+
+43 
+size_t
+ 
+	m¬gc
+;
+
+44 **
+	m¬gv
+;
+
+45 *
+	msy¡em_¡r
+;
+
+52 
+	s’v_™em
+ {
+
+53 *
+	m¡ršg
+;
+
+54 
+’v_™em
+ *
+	mÃxt
+;
+
+57 
+	s’v_£t
+ {
+
+58 
+gc_¬’a
+ *
+	mgc
+;
+
+59 
+’v_™em
+ *
+	mli¡
+;
+
+62 
+run_up_down
+ (cÚ¡ *
+commªd
+,
+
+63 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+64 
+¶ugš_ty³
+,
+
+65 cÚ¡ *
+¬g
+,
+
+66 cÚ¡ *
+dev_ty³
+,
+
+67 
+tun_mtu
+,
+
+68 
+lšk_mtu
+,
+
+69 cÚ¡ *
+ifcÚfig_loÿl
+,
+
+70 cÚ¡ * 
+ifcÚfig_»mÙe
+,
+
+71 cÚ¡ *
+cÚ‹xt
+,
+
+72 cÚ¡ *
+sigÇl_‹xt
+,
+
+73 cÚ¡ *
+sü�t_ty³
+,
+
+74 
+’v_£t
+ *
+es
+);
+
+76 
+wr™e_pid
+ (cÚ¡ *
+fž’ame
+);
+
+79 
+w¬n_if_group_Ùh”s_acûssibË
+(cÚ¡ * 
+fž’ame
+);
+
+82 
+	#S_SCRIPT
+ (1<<0)
+
+	)
+
+83 
+	#S_FATAL
+ (1<<1)
+
+	)
+
+85 cÚ¡ *
+sy¡em_”rÜ_mes§ge
+ (, 
+gc_¬’a
+ *
+gc
+);
+
+88 
+Ý’v²_pÝ’
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+89 
+Ý’v²_execve
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+);
+
+90 
+boÞ
+ 
+Ý’v²_execve_check
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+, cÚ¡ *
+”rÜ_mes§ge
+);
+
+91 
+boÞ
+ 
+Ý’v²_execve_®lowed
+ (cÚ¡ 
+æags
+);
+
+93 
+šlše
+ 
+boÞ
+
+
+94 
+	$Ý’v²_run_sü�t
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+, cÚ¡ *
+hook
+)
+
+96 
+msg
+[256];
+
+98 
+	`Ý’v²_¢´štf
+(
+msg
+, (msg), "WARNING: Fažed„uÂšg commªd (%s)", 
+hook
+);
+
+99  
+	`Ý’v²_execve_check
+(
+a
+, 
+es
+, 
+æags
+ | 
+S_SCRIPT
+, 
+msg
+);
+
+100 
+	}
+}
+
+103 #ifdeà
+HAVE_STRERROR
+
+
+105 cÚ¡ * 
+¡»¼Ü_ts
+ (
+”ºum
+, 
+gc_¬’a
+ *
+gc
+);
+
+109 
+£t_¡d_fžes_to_nuÎ
+ (
+boÞ
+ 
+¡dš_Úly
+);
+
+112 

+š‘d_sock‘_desü�tÜ
+;
+
+113 
+§ve_š‘d_sock‘_desü�tÜ
+ ();
+
+116 
+š™_¿ndom_£ed
+();
+
+119 
+£‹nv_¡r_ex
+ (
+’v_£t
+ *
+es
+,
+
+120 cÚ¡ *
+Çme
+,
+
+121 cÚ¡ *
+v®ue
+,
+
+122 cÚ¡ 
+Çme_šþude
+,
+
+123 cÚ¡ 
+Çme_exþude
+,
+
+124 cÚ¡ 
+Çme_»¶aû
+,
+
+125 cÚ¡ 
+v®ue_šþude
+,
+
+126 cÚ¡ 
+v®ue_exþude
+,
+
+127 cÚ¡ 
+v®ue_»¶aû
+);
+
+129 
+£‹nv_couÁ”
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+couÁ”_ty³
+ 
+v®ue
+);
+
+130 
+£‹nv_št
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+v®ue
+);
+
+131 
+£‹nv_unsigÃd
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, 
+v®ue
+);
+
+132 
+£‹nv_¡r
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+);
+
+133 
+£‹nv_¡r_§ã
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+);
+
+134 
+£‹nv_d–
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+);
+
+136 
+£‹nv_št_i
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ 
+v®ue
+, cÚ¡ 
+i
+);
+
+137 
+£‹nv_¡r_i
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, cÚ¡ *
+v®ue
+, cÚ¡ 
+i
+);
+
+141 
+’v_£t
+ *
+’v_£t_ü—‹
+ (
+gc_¬’a
+ *
+gc
+);
+
+142 
+’v_£t_de¡roy
+ (
+’v_£t
+ *
+es
+);
+
+143 
+boÞ
+ 
+’v_£t_d–
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+);
+
+144 
+’v_£t_add
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+¡r
+);
+
+146 
+’v_£t_´št
+ (
+msgËv–
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+148 
+’v_£t_šh”™
+ (
+’v_£t
+ *
+es
+, cÚ¡ ’v_£ˆ*
+¤c
+);
+
+150 
+’v_£t_add_to_’vœÚm’t
+ (cÚ¡ 
+’v_£t
+ *
+es
+);
+
+151 
+’v_£t_»move_äom_’vœÚm’t
+ (cÚ¡ 
+’v_£t
+ *
+es
+);
+
+155 cÚ¡ **
+make_’v_¬¿y
+ (cÚ¡ 
+’v_£t
+ *
+es
+,
+
+156 cÚ¡ 
+boÞ
+ 
+check_®lowed
+,
+
+157 
+gc_¬’a
+ *
+gc
+);
+
+159 cÚ¡ **
+make_¬g_¬¿y
+ (cÚ¡ *
+fœ¡
+, cÚ¡ *
+·rms
+, 
+gc_¬’a
+ *
+gc
+);
+
+160 cÚ¡ **
+make_ex‹nded_¬g_¬¿y
+ (**
+p
+, 
+gc_¬’a
+ *
+gc
+);
+
+163 
+couÁ_Ãtmask_b™s
+(const *);
+
+164 
+couÁ_b™s
+();
+
+167 #ifdeà
+ENABLE_CRYPTO
+
+
+168 
+g‘_¿ndom
+();
+
+170 
+	#g‘_¿ndom
+ 
+¿ndom
+
+
+	)
+
+174 
+boÞ
+ 
+‹¡_fže
+ (cÚ¡ *
+fž’ame
+);
+
+177 cÚ¡ *
+ü—‹_‹mp_fže
+ (cÚ¡ *
+dœeùÜy
+, cÚ¡ *
+´efix
+, 
+gc_¬’a
+ *
+gc
+);
+
+180 cÚ¡ *
+g’_·th
+ (cÚ¡ *
+dœeùÜy
+, cÚ¡ *
+fž’ame
+, 
+gc_¬’a
+ *
+gc
+);
+
+183 
+boÞ
+ 
+absÞu‹_·thÇme
+ (cÚ¡ *
+·thÇme
+);
+
+186 cÚ¡ *
+ho¡Çme_¿ndomize
+(cÚ¡ *
+ho¡Çme
+, 
+gc_¬’a
+ *
+gc
+);
+
+192 
+	su£r_·ss
+
+
+194 
+boÞ
+ 
+	mdefšed
+;
+
+195 
+boÞ
+ 
+	mnoÿche
+;
+
+198 #ifdeà
+ENABLE_PKCS11
+
+
+199 
+	#USER_PASS_LEN
+ 4096
+
+	)
+
+201 
+	#USER_PASS_LEN
+ 128
+
+	)
+
+203 
+	mu£ºame
+[
+USER_PASS_LEN
+];
+
+204 
+	m·sswÜd
+[
+USER_PASS_LEN
+];
+
+207 #ifdeà
+ENABLE_CLIENT_CR
+
+
+211 
+	sauth_ch®Ënge_šfo
+ {
+
+212 
+	#CR_ECHO
+ (1<<0è
+
+	)
+
+213 
+	#CR_RESPONSE
+ (1<<1è
+
+	)
+
+214 
+	mæags
+;
+
+216 cÚ¡ *
+	mu£r
+;
+
+217 cÚ¡ *
+	m¡©e_id
+;
+
+218 cÚ¡ *
+	mch®Ënge_‹xt
+;
+
+221 
+auth_ch®Ënge_šfo
+ *
+g‘_auth_ch®Ënge
+ (cÚ¡ *
+auth_ch®Ënge
+, 
+gc_¬’a
+ *
+gc
+);
+
+226 
+	s¡©ic_ch®Ënge_šfo
+ {
+
+227 
+	#SC_ECHO
+ (1<<0è
+
+	)
+
+228 
+	mæags
+;
+
+230 cÚ¡ *
+	mch®Ënge_‹xt
+;
+
+234 
+	sauth_ch®Ënge_šfo
+ {};
+
+235 
+	s¡©ic_ch®Ënge_šfo
+ {};
+
+241 
+	#GET_USER_PASS_MANAGEMENT
+ (1<<0)
+
+	)
+
+242 
+	#GET_USER_PASS_SENSITIVE
+ (1<<1)
+
+	)
+
+243 
+	#GET_USER_PASS_PASSWORD_ONLY
+ (1<<2)
+
+	)
+
+244 
+	#GET_USER_PASS_NEED_OK
+ (1<<3)
+
+	)
+
+245 
+	#GET_USER_PASS_NOFATAL
+ (1<<4)
+
+	)
+
+246 
+	#GET_USER_PASS_NEED_STR
+ (1<<5)
+
+	)
+
+247 
+	#GET_USER_PASS_PREVIOUS_CREDS_FAILED
+ (1<<6)
+
+	)
+
+249 
+	#GET_USER_PASS_DYNAMIC_CHALLENGE
+ (1<<7è
+
+	)
+
+250 
+	#GET_USER_PASS_STATIC_CHALLENGE
+ (1<<8è
+
+	)
+
+251 
+	#GET_USER_PASS_STATIC_CHALLENGE_ECHO
+ (1<<9è
+
+	)
+
+253 
+boÞ
+ 
+g‘_u£r_·ss_ü
+ (
+u£r_·ss
+ *
+up
+,
+
+254 cÚ¡ *
+auth_fže
+,
+
+255 cÚ¡ *
+´efix
+,
+
+256 cÚ¡ 
+æags
+,
+
+257 cÚ¡ *
+auth_ch®Ënge
+);
+
+259 
+šlše
+ 
+boÞ
+
+
+260 
+	$g‘_u£r_·ss
+ (
+u£r_·ss
+ *
+up
+,
+
+261 cÚ¡ *
+auth_fže
+,
+
+262 cÚ¡ *
+´efix
+,
+
+263 cÚ¡ 
+æags
+)
+
+265  
+	`g‘_u£r_·ss_ü
+ (
+up
+, 
+auth_fže
+, 
+´efix
+, 
+æags
+, 
+NULL
+);
+
+266 
+	}
+}
+
+268 
+çž_u£r_·ss
+ (cÚ¡ *
+´efix
+,
+
+269 cÚ¡ 
+æags
+,
+
+270 cÚ¡ *
+»asÚ
+);
+
+272 
+purge_u£r_·ss
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ 
+boÞ
+ 
+fÜû
+);
+
+274 
+£t_auth_tok’
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ *
+tok’
+);
+
+281 cÚ¡ *
+§ã_´št
+ (cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+);
+
+284 
+boÞ
+ 
+’v_§ã_to_´št
+ (cÚ¡ *
+¡r
+);
+
+287 
+boÞ
+ 
+’v_®lowed
+ (cÚ¡ *
+¡r
+);
+
+293 
+Ý’v²_¦“p
+ (cÚ¡ 
+n
+);
+
+295 
+cÚfigu»_·th
+ ();
+
+297 cÚ¡ *
+§n™ize_cÚŒÞ_mes§ge
+(cÚ¡ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+);
+
+299 #ià
+AUTO_USERID
+
+
+300 
+g‘_u£r_·ss_auto_u£rid
+ (
+u£r_·ss
+ *
+up
+, cÚ¡ *
+�g
+);
+
+306 #ifdeà
+ENABLE_IPROUTE
+
+
+307 
cÚ¡ *
+�rou‹_·th
+;
+
+311 
+	#SSEC_NONE
+ 0
+
+	)
+
+312 
+	#SSEC_BUILT_IN
+ 1
+
+	)
+
+313 
+	#SSEC_SCRIPTS
+ 2
+
+	)
+
+314 
+	#SSEC_PW_ENV
+ 3
+
+	)
+
+315 

+sü�t_£cur™y
+;
+
+318 
+size_t
+ 
+adju¡_pow”_of_2
+ (size_ˆ
+u
+);
+
+326 
+¬gv_š™
+ (
+¬gv
+ *
+a
+);
+
+327 
+¬gv
+ 
+¬gv_Ãw
+ ();
+
+328 
+¬gv_»£t
+ (
+¬gv
+ *
+a
+);
+
+329 *
+¬gv_‹rm
+ (cÚ¡ **
+f
+);
+
+330 cÚ¡ *
+¬gv_¡r
+ (cÚ¡ 
+¬gv
+ *
+a
+, 
+gc_¬’a
+ *
+gc
+, cÚ¡ 
+æags
+);
+
+331 
+¬gv
+ 
+¬gv_š£¹_h—d
+ (cÚ¡ ¬gv *
+a
+, cÚ¡ *
+h—d
+);
+
+332 
+¬gv_msg
+ (cÚ¡ 
+msgËv
+, cÚ¡ 
+¬gv
+ *
+a
+);
+
+333 
+¬gv_msg_´efix
+ (cÚ¡ 
+msgËv
+, cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ *
+´efix
+);
+
+334 cÚ¡ *
+¬gv_sy¡em_¡r
+ (cÚ¡ 
+¬gv
+ *
+a
+);
+
+336 
+	#APA_CAT
+ (1<<0è
+
+	)
+
+337 
+¬gv_´štf_¬gli¡
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, cÚ¡ 
+æags
+, 
+va_li¡
+ 
+¬gli¡
+);
+
+339 
+	$¬gv_´štf
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, ...)
+
+340 #ifdeà
+__GNUC__
+
+
+341 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+342 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 2, 3)))
+
+344 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 2, 3)))
+
+349 
+	$¬gv_´štf_ÿt
+ (
+¬gv
+ *
+a
+, cÚ¡ *
+fÜm©
+, ...)
+
+350 #ifdeà
+__GNUC__
+
+
+351 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+352 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 2, 3)))
+
+354 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 2, 3)))
+
+359 
+	#COMPAT_FLAG_QUERY
+ 0
+
+	)
+
+360 
+	#COMPAT_FLAG_SET
+ (1<<0è
+
+	)
+
+361 
+	#COMPAT_NAMES
+ (1<<1è
+
+	)
+
+362 
+	#COMPAT_NO_NAME_REMAPPING
+ (1<<2è
+
+	)
+
+363 
+boÞ
+ 
+	`com·t_æag
+ (
+æag
+);
+
+	@mroute.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"mrou‹.h
+"
+
+36 
+	~"´Ùo.h
+"
+
+37 
+	~"”rÜ.h
+"
+
+38 
+	~"sock‘.h
+"
+
+40 
+	~"memdbg.h
+"
+
+43 
+	$mrou‹_addr_š™
+ (
+mrou‹_addr
+ *
+addr
+)
+
+45 
+	`CLEAR
+ (*
+addr
+);
+
+46 
+	}
+}
+
+52 
+šlše
+ 
+boÞ
+
+
+53 
+	$is_mac_mÿ¡_addr
+ (cÚ¡ 
+ušt8_t
+ *
+mac
+)
+
+55  (
+boÞ
+è(
+mac
+[0] & 1);
+
+56 
+	}
+}
+
+58 
+šlše
+ 
+boÞ
+
+
+59 
+	$is_mac_mÿ¡_maddr
+ (cÚ¡ 
+mrou‹_addr
+ *
+addr
+)
+
+61  (
+addr
+->
+ty³
+ & 
+MR_ADDR_MASK
+è=ð
+MR_ADDR_ETHER
+ && 
+	`is_mac_mÿ¡_addr
+ (addr->addr);
+
+62 
+	}
+}
+
+67 
+boÞ
+
+
+68 
+	$mrou‹_Ë¬ÇbË_add»ss
+ (cÚ¡ 
+mrou‹_addr
+ *
+addr
+)
+
+70 
+i
+;
+
+71 
+boÞ
+ 
+nÙ_®l_z”os
+ = 
+çl£
+;
+
+72 
+boÞ
+ 
+nÙ_®l_Úes
+ = 
+çl£
+;
+
+74 
+i
+ = 0; i < 
+addr
+->
+Ën
+; ++i)
+
+76 
+b
+ = 
+addr
+->addr[
+i
+];
+
+77 ià(
+b
+ != 0x00)
+
+78 
+nÙ_®l_z”os
+ = 
+Œue
+;
+
+79 ià(
+b
+ != 0xFF)
+
+80 
+nÙ_®l_Úes
+ = 
+Œue
+;
+
+82  
+nÙ_®l_z”os
+ && 
+nÙ_®l_Úes
+ && !
+	`is_mac_mÿ¡_maddr
+ (
+addr
+);
+
+83 
+	}
+}
+
+85 
+šlše
+ 
+
+86 
+	$mrou‹_g‘_š_addr_t
+ (
+mrou‹_addr
+ *
+ma
+, cÚ¡ 
+š_addr_t
+ 
+¤c
+, 
+mask
+)
+
+88 ià(
+ma
+)
+
+90 
+ma
+->
+ty³
+ = 
+MR_ADDR_IPV4
+ | 
+mask
+;
+
+91 
+ma
+->
+Ãtb™s
+ = 0;
+
+92 
+ma
+->
+Ën
+ = 4;
+
+93 *(
+š_addr_t
+*)
+ma
+->
+addr
+ = 
+¤c
+;
+
+95 
+	}
+}
+
+97 
+šlše
+ 
+
+98 
+	$mrou‹_g‘_š6_addr
+ (
+mrou‹_addr
+ *
+ma
+, cÚ¡ 
+š6_addr
+ 
+¤c
+, 
+mask
+)
+
+100 ià(
+ma
+)
+
+102 
+ma
+->
+ty³
+ = 
+MR_ADDR_IPV6
+ | 
+mask
+;
+
+103 
+ma
+->
+Ãtb™s
+ = 0;
+
+104 
+ma
+->
+Ën
+ = 16;
+
+105 *(
+š6_addr
+ *)
+ma
+->
+addr
+ = 
+¤c
+;
+
+107 
+	}
+}
+
+109 
+šlše
+ 
+boÞ
+
+
+110 
+	$mrou‹_is_mÿ¡
+ (cÚ¡ 
+š_addr_t
+ 
+addr
+)
+
+112  ((
+addr
+ & 
+	`htÚl
+(
+IP_MCAST_SUBNET_MASK
+)è=ðhtÚl(
+IP_MCAST_NETWORK
+));
+
+113 
+	}
+}
+
+118 
+šlše
+ 
+boÞ
+
+
+119 
+	$mrou‹_is_mÿ¡_�v6
+ (cÚ¡ 
+š6_addr
+ 
+addr
+)
+
+121  (
+addr
+.
+s6_addr
+[0] == 0xff);
+
+122 
+	}
+}
+
+124 #ifdeà
+ENABLE_PF
+
+
+127 
+	$mrou‹_exŒaù_addr_¬p
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+128 
+mrou‹_addr
+ *
+de¡
+,
+
+129 cÚ¡ 
+bufãr
+ *
+buf
+)
+
+131 
+»t
+ = 0;
+
+132 ià(
+	`BLEN
+ (
+buf
+è>ð(è (
+Ý’v²_¬p
+))
+
+134 cÚ¡ 
+Ý’v²_¬p
+ *
+¬p
+ = (cÚ¡ Ý’v²_¬°*è
+	`BPTR
+ (
+buf
+);
+
+135 ià(
+¬p
+->
+mac_addr_ty³
+ =ð
+	`htÚs
+(0x0001)
+
+136 && 
+¬p
+->
+´Ùo_addr_ty³
+ =ð
+	`htÚs
+(0x0800)
+
+137 && 
+¬p
+->
+mac_addr_size
+ == 0x06
+
+138 && 
+¬p
+->
+´Ùo_addr_size
+ == 0x04)
+
+140 
+	`mrou‹_g‘_š_addr_t
+ (
+¤c
+, 
+¬p
+->
+�_¤c
+, 
+MR_ARP
+);
+
+141 
+	`mrou‹_g‘_š_addr_t
+ (
+de¡
+, 
+¬p
+->
+�_de¡
+, 
+MR_ARP
+);
+
+144 ià(
+	`mrou‹_is_mÿ¡
+ (
+¬p
+->
+�_de¡
+))
+
+145 
+»t
+ |ð
+MROUTE_EXTRACT_MCAST
+;
+
+147 
+»t
+ |ð
+MROUTE_EXTRACT_SUCCEEDED
+;
+
+150  
+»t
+;
+
+151 
+	}
+}
+
+156 
+	$mrou‹_exŒaù_addr_�v4
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+157 
+mrou‹_addr
+ *
+de¡
+,
+
+158 cÚ¡ 
+bufãr
+ *
+buf
+)
+
+160 
+»t
+ = 0;
+
+161 ià(
+	`BLEN
+ (
+buf
+) >= 1)
+
+163 
+	`OPENVPN_IPH_GET_VER
+ (*
+	`BPTR
+(
+buf
+)))
+
+166 ià(
+	`BLEN
+ (
+buf
+è>ð(è (
+Ý’v²_�hdr
+))
+
+168 cÚ¡ 
+Ý’v²_�hdr
+ *
+�
+ = (cÚ¡ Ý’v²_�hd¸*è
+	`BPTR
+ (
+buf
+);
+
+170 
+	`mrou‹_g‘_š_addr_t
+ (
+¤c
+, 
+�
+->
+§ddr
+, 0);
+
+171 
+	`mrou‹_g‘_š_addr_t
+ (
+de¡
+, 
+�
+->
+daddr
+, 0);
+
+174 ià(
+	`mrou‹_is_mÿ¡
+ (
+�
+->
+daddr
+))
+
+175 
+»t
+ |ð
+MROUTE_EXTRACT_MCAST
+;
+
+178 ià(
+�
+->
+´ÙocÞ
+ =ð
+OPENVPN_IPPROTO_IGMP
+)
+
+179 
+»t
+ |ð
+MROUTE_EXTRACT_IGMP
+;
+
+181 
+»t
+ |ð
+MROUTE_EXTRACT_SUCCEEDED
+;
+
+185 ià(
+	`BLEN
+ (
+buf
+è>ð(è (
+Ý’v²_�v6hdr
+))
+
+187 cÚ¡ 
+Ý’v²_�v6hdr
+ *
+�v6
+ = (cÚ¡ Ý’v²_�v6hd¸*è
+	`BPTR
+ (
+buf
+);
+
+189 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+190 
+	`msg
+Ð
+M_INFO
+, "IPv6…acket! src=%s, dst=%s",
+
+191 
+	`´št_š6_addr
+Ð
+�v6
+->
+§ddr
+, 0, &
+gc
+ ),
+
+192 
+	`´št_š6_addr
+Ð
+�v6
+->
+daddr
+, 0, &
+gc
+ ));
+
+193 
+	`gc_ä“
+ (&
+gc
+);
+
+196 
+	`mrou‹_g‘_š6_addr
+ (
+¤c
+, 
+�v6
+->
+§ddr
+, 0);
+
+197 
+	`mrou‹_g‘_š6_addr
+ (
+de¡
+, 
+�v6
+->
+daddr
+, 0);
+
+199 ià(
+	`mrou‹_is_mÿ¡_�v6
+ (
+�v6
+->
+daddr
+))
+
+200 
+»t
+ |ð
+MROUTE_EXTRACT_MCAST
+;
+
+202 
+»t
+ |ð
+MROUTE_EXTRACT_SUCCEEDED
+;
+
+206 
+	`msg
+ (
+M_WARN
+, "IP…acket with unknown IP version=%d seen",
+
+207 
+	`OPENVPN_IPH_GET_VER
+ (*
+	`BPTR
+(
+buf
+)));
+
+210  
+»t
+;
+
+211 
+	}
+}
+
+214 
+	$mrou‹_exŒaù_addr_‘h”
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+215 
+mrou‹_addr
+ *
+de¡
+,
+
+216 
+mrou‹_addr
+ *
+e¤c
+,
+
+217 
+mrou‹_addr
+ *
+ede¡
+,
+
+218 cÚ¡ 
+bufãr
+ *
+buf
+)
+
+220 
+»t
+ = 0;
+
+221 ià(
+	`BLEN
+ (
+buf
+è>ð(è (
+Ý’v²_‘hhdr
+))
+
+223 cÚ¡ 
+Ý’v²_‘hhdr
+ *
+‘h
+ = (cÚ¡ Ý’v²_‘hhd¸*è
+	`BPTR
+ (
+buf
+);
+
+224 ià(
+¤c
+)
+
+226 
+¤c
+->
+ty³
+ = 
+MR_ADDR_ETHER
+;
+
+227 
+¤c
+->
+Ãtb™s
+ = 0;
+
+228 
+¤c
+->
+Ën
+ = 6;
+
+229 
+	`memýy
+ (
+¤c
+->
+addr
+, 
+‘h
+->
+sourû
+, 6);
+
+231 ià(
+de¡
+)
+
+233 
+de¡
+->
+ty³
+ = 
+MR_ADDR_ETHER
+;
+
+234 
+de¡
+->
+Ãtb™s
+ = 0;
+
+235 
+de¡
+->
+Ën
+ = 6;
+
+236 
+	`memýy
+ (
+de¡
+->
+addr
+, 
+‘h
+->dest, 6);
+
+239 ià(
+	`is_mac_mÿ¡_addr
+ (
+‘h
+->
+de¡
+))
+
+240 
+»t
+ |ð
+MROUTE_EXTRACT_BCAST
+;
+
+243 
+»t
+ |ð
+MROUTE_EXTRACT_SUCCEEDED
+;
+
+245 #ifdeà
+ENABLE_PF
+
+
+246 ià(
+e¤c
+ || 
+ede¡
+)
+
+248 
+bufãr
+ 
+b
+ = *
+buf
+;
+
+249 ià(
+	`buf_advªû
+ (&
+b
+,  (
+Ý’v²_‘hhdr
+)))
+
+251 
+	`Áohs
+ (
+‘h
+->
+´Ùo
+))
+
+253 
+OPENVPN_ETH_P_IPV4
+:
+
+254 
+»t
+ |ð(
+	`mrou‹_exŒaù_addr_�v4
+ (
+e¤c
+, 
+ede¡
+, &
+b
+è<< 
+MROUTE_SEC_SHIFT
+);
+
+256 
+OPENVPN_ETH_P_ARP
+:
+
+257 
+»t
+ |ð(
+	`mrou‹_exŒaù_addr_¬p
+ (
+e¤c
+, 
+ede¡
+, &
+b
+è<< 
+MROUTE_SEC_SHIFT
+);
+
+264  
+»t
+;
+
+265 
+	}
+}
+
+271 
+boÞ
+ 
+	$mrou‹_exŒaù_Ý’v²_sockaddr
+ (
+mrou‹_addr
+ *
+addr
+,
+
+272 cÚ¡ 
+Ý’v²_sockaddr
+ *
+o§ddr
+,
+
+273 
+boÞ
+ 
+u£_pÜt
+)
+
+275 
+o§ddr
+->
+addr
+.
+§
+.
+§_çmžy
+)
+
+277 
+AF_INET
+:
+
+279 ià(
+u£_pÜt
+)
+
+281 
+addr
+->
+ty³
+ = 
+MR_ADDR_IPV4
+ | 
+MR_WITH_PORT
+;
+
+282 
+addr
+->
+Ãtb™s
+ = 0;
+
+283 
+addr
+->
+Ën
+ = 6;
+
+284 
+	`memýy
+ (
+addr
+->addr, &
+o§ddr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+, 4);
+
+285 
+	`memýy
+ (
+addr
+->add¸+ 4, &
+o§ddr
+->addr.
+š4
+.
+sš_pÜt
+, 2);
+
+289 
+addr
+->
+ty³
+ = 
+MR_ADDR_IPV4
+;
+
+290 
+addr
+->
+Ãtb™s
+ = 0;
+
+291 
+addr
+->
+Ën
+ = 4;
+
+292 
+	`memýy
+ (
+addr
+->addr, &
+o§ddr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+, 4);
+
+294  
+Œue
+;
+
+296 
+AF_INET6
+:
+
+297 ià(
+u£_pÜt
+)
+
+299 
+addr
+->
+ty³
+ = 
+MR_ADDR_IPV6
+ | 
+MR_WITH_PORT
+;
+
+300 
+addr
+->
+Ãtb™s
+ = 0;
+
+301 
+addr
+->
+Ën
+ = 18;
+
+302 
+	`memýy
+ (
+addr
+->addr, &
+o§ddr
+->addr.
+š6
+.
+sš6_addr
+, 16);
+
+303 
+	`memýy
+ (
+addr
+->add¸+ 16, &
+o§ddr
+->addr.
+š6
+.
+sš6_pÜt
+, 2);
+
+307 
+addr
+->
+ty³
+ = 
+MR_ADDR_IPV6
+;
+
+308 
+addr
+->
+Ãtb™s
+ = 0;
+
+309 
+addr
+->
+Ën
+ = 16;
+
+310 
+	`memýy
+ (
+addr
+->addr, &
+o§ddr
+->addr.
+š6
+.
+sš6_addr
+, 16);
+
+312  
+Œue
+;
+
+314  
+çl£
+;
+
+315 
+	}
+}
+
+327 
+	$mrou‹_addr_mask_ho¡_b™s
+ (
+mrou‹_addr
+ *
+ma
+)
+
+329 
+š_addr_t
+ 
+addr
+ = 
+	`Áohl
+(*(š_addr_t*)
+ma
+->addr);
+
+330 ià((
+ma
+->
+ty³
+ & 
+MR_ADDR_MASK
+è=ð
+MR_ADDR_IPV4
+)
+
+332 
+addr
+ &ð
+	`Ãtb™s_to_Ãtmask
+ (
+ma
+->
+Ãtb™s
+);
+
+333 *(
+š_addr_t
+*)
+ma
+->
+addr
+ = 
+	`htÚl
+ (addr);
+
+335 ià((
+ma
+->
+ty³
+ & 
+MR_ADDR_MASK
+è=ð
+MR_ADDR_IPV6
+)
+
+337 
+by‹
+ = 
+ma
+->
+Ën
+-1;
+
+338 
+b™s_to_þ—r
+ = 128 - 
+ma
+->
+Ãtb™s
+;
+
+340  
+by‹
+ >ð0 && 
+b™s_to_þ—r
+ > 0 )
+
+342 iàÐ
+b™s_to_þ—r
+ >= 8 )
+
+343 { 
+ma
+->
+addr
+[
+by‹
+--] = 0; 
+b™s_to_þ—r
+ -= 8; }
+
+345 { 
+ma
+->
+addr
+[
+by‹
+--] &ð(
+IPV4_NETMASK_HOST
+ << 
+b™s_to_þ—r
+); bits_to_clear = 0; }
+
+347 
+	`ASSERT
+Ð
+b™s_to_þ—r
+ == 0 );
+
+350 
+	`ASSERT
+(0);
+
+351 
+	}
+}
+
+358 
+ušt32_t
+
+
+359 
+	$mrou‹_addr_hash_funùiÚ
+ (cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+)
+
+361  
+	`hash_func
+ (
+	`mrou‹_addr_hash_±r
+ ((cÚ¡ 
+mrou‹_addr
+ *è
+key
+),
+
+362 
+	`mrou‹_addr_hash_Ën
+ ((cÚ¡ 
+mrou‹_addr
+ *è
+key
+),
+
+363 
+iv
+);
+
+364 
+	}
+}
+
+366 
+boÞ
+
+
+367 
+	$mrou‹_addr_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+)
+
+369  
+	`mrou‹_addr_equ®
+ ((cÚ¡ 
+mrou‹_addr
+ *è
+key1
+,
+
+370 (cÚ¡ 
+mrou‹_addr
+ *è
+key2
+);
+
+371 
+	}
+}
+
+374 
+	$mrou‹_addr_´št
+ (cÚ¡ 
+mrou‹_addr
+ *
+ma
+,
+
+375 
+gc_¬’a
+ *
+gc
+)
+
+377  
+	`mrou‹_addr_´št_ex
+ (
+ma
+, 
+MAPF_IA_EMPTY_IF_UNDEF
+, 
+gc
+);
+
+378 
+	}
+}
+
+381 
+	$mrou‹_addr_´št_ex
+ (cÚ¡ 
+mrou‹_addr
+ *
+ma
+,
+
+382 cÚ¡ 
+æags
+,
+
+383 
+gc_¬’a
+ *
+gc
+)
+
+385 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+386 ià(
+ma
+)
+
+388 
+mrou‹_addr
+ 
+maddr
+ = *
+ma
+;
+
+390 
+maddr
+.
+ty³
+ & 
+MR_ADDR_MASK
+)
+
+392 
+MR_ADDR_ETHER
+:
+
+393 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`fÜm©_hex_ex
+ (
+ma
+->
+addr
+, 6, 0, 1, ":", 
+gc
+));
+
+395 
+MR_ADDR_IPV4
+:
+
+397 
+bufãr
+ 
+buf
+;
+
+398 
+š_addr_t
+ 
+addr
+;
+
+399 
+pÜt
+;
+
+400 
+boÞ
+ 
+¡©us
+;
+
+401 
+	`buf_£t_»ad
+ (&
+buf
+, 
+maddr
+.
+addr
+, maddr.
+Ën
+);
+
+402 
+addr
+ = 
+	`buf_»ad_u32
+ (&
+buf
+, &
+¡©us
+);
+
+403 ià(
+¡©us
+)
+
+405 ià((
+æags
+ & 
+MAPF_SHOW_ARP
+è&& (
+maddr
+.
+ty³
+ & 
+MR_ARP
+))
+
+406 
+	`buf_´štf
+ (&
+out
+, "ARP/");
+
+407 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`´št_š_addr_t
+ (
+addr
+, (
+æags
+ & 
+MAPF_IA_EMPTY_IF_UNDEF
+è? 
+IA_EMPTY_IF_UNDEF
+ : 0, 
+gc
+));
+
+408 ià(
+maddr
+.
+ty³
+ & 
+MR_WITH_NETBITS
+)
+
+410 ià(
+æags
+ & 
+MAPF_SUBNET
+)
+
+412 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+ = 
+	`Ãtb™s_to_Ãtmask
+ (
+maddr
+.
+Ãtb™s
+);
+
+413 
+	`buf_´štf
+ (&
+out
+, "/%s", 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, 
+gc
+));
+
+416 
+	`buf_´štf
+ (&
+out
+, "/%d", 
+maddr
+.
+Ãtb™s
+);
+
+419 ià(
+maddr
+.
+ty³
+ & 
+MR_WITH_PORT
+)
+
+421 
+pÜt
+ = 
+	`buf_»ad_u16
+ (&
+buf
+);
+
+422 ià(
+pÜt
+ >= 0)
+
+423 
+	`buf_´štf
+ (&
+out
+, ":%d", 
+pÜt
+);
+
+427 
+MR_ADDR_IPV6
+:
+
+429 
+	`buf_´štf
+ (&
+out
+, "%s",
+
+430 
+	`´št_š6_addr
+Ð*(
+š6_addr
+*)&
+maddr
+.
+addr
+, 0, 
+gc
+));
+
+431 ià(
+maddr
+.
+ty³
+ & 
+MR_WITH_NETBITS
+)
+
+433 
+	`buf_´štf
+ (&
+out
+, "/%d", 
+maddr
+.
+Ãtb™s
+);
+
+438 
+	`buf_´štf
+ (&
+out
+, "UNKNOWN");
+
+441  
+	`BSTR
+ (&
+out
+);
+
+445 
+	}
+}
+
+453 
+mrou‹_h–³r
+ *
+
+454 
+	$mrou‹_h–³r_š™
+ (
+ag—bË_‰l_£cs
+)
+
+456 
+mrou‹_h–³r
+ *
+mh
+;
+
+457 
+	`ALLOC_OBJ_CLEAR
+ (
+mh
+, 
+mrou‹_h–³r
+);
+
+458 
+mh
+->
+ag—bË_‰l_£cs
+ =‡geable_ttl_secs;
+
+459  
+mh
+;
+
+460 
+	}
+}
+
+463 
+	$mrou‹_h–³r_»g’”©e
+ (
+mrou‹_h–³r
+ *
+mh
+)
+
+465 
+i
+, 
+j
+ = 0;
+
+466 
+i
+ = 
+MR_HELPER_NET_LEN
+ - 1; i >= 0; --i)
+
+468 ià(
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+i
+] > 0)
+
+469 
+mh
+->
+Ãt_Ën
+[
+j
+++] = (
+ušt8_t
+è
+i
+;
+
+471 
+mh
+->
+n_Ãt_Ën
+ = 
+j
+;
+
+473 #ifdeà
+ENABLE_DEBUG
+
+
+474 ià(
+	`check_debug_Ëv–
+ (
+D_MULTI_DEBUG
+))
+
+476 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+477 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+478 
+	`buf_´štf
+ (&
+out
+, "MROUTE CIDR‚etlen:");
+
+479 
+i
+ = 0; i < 
+mh
+->
+n_Ãt_Ën
+; ++i)
+
+481 
+	`buf_´štf
+ (&
+out
+, " /%d", 
+mh
+->
+Ãt_Ën
+[
+i
+]);
+
+483 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "%s", 
+	`BSTR
+ (&
+out
+));
+
+484 
+	`gc_ä“
+ (&
+gc
+);
+
+487 
+	}
+}
+
+490 
+	$mrou‹_h–³r_add_œou‹
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹
+ *
+œ
+)
+
+492 ià(
+œ
+->
+Ãtb™s
+ >= 0)
+
+494 
+	`ASSERT
+ (
+œ
+->
+Ãtb™s
+ < 
+MR_HELPER_NET_LEN
+);
+
+495 ++
+mh
+->
+ÿche_g’”©iÚ
+;
+
+496 ++
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ
+->
+Ãtb™s
+];
+
+497 ià(
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ
+->
+Ãtb™s
+] == 1)
+
+498 
+	`mrou‹_h–³r_»g’”©e
+ (
+mh
+);
+
+500 
+	}
+}
+
+503 
+	$mrou‹_h–³r_d–_œou‹
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹
+ *
+œ
+)
+
+505 ià(
+œ
+->
+Ãtb™s
+ >= 0)
+
+507 
+	`ASSERT
+ (
+œ
+->
+Ãtb™s
+ < 
+MR_HELPER_NET_LEN
+);
+
+508 ++
+mh
+->
+ÿche_g’”©iÚ
+;
+
+509 --
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ
+->
+Ãtb™s
+];
+
+510 
+	`ASSERT
+ (
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ
+->
+Ãtb™s
+] >= 0);
+
+511 ià(!
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ
+->
+Ãtb™s
+])
+
+512 
+	`mrou‹_h–³r_»g’”©e
+ (
+mh
+);
+
+514 
+	}
+}
+
+522 
+	$mrou‹_h–³r_add_œou‹6
+ (
+mrou‹_h–³r
+ *
+mh
+,
+
+523 cÚ¡ 
+œou‹_�v6
+ *
+œ6
+)
+
+525 ià(
+œ6
+->
+Ãtb™s
+ >= 0)
+
+527 
+	`ASSERT
+ (
+œ6
+->
+Ãtb™s
+ < 
+MR_HELPER_NET_LEN
+);
+
+528 ++
+mh
+->
+ÿche_g’”©iÚ
+;
+
+529 ++
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ6
+->
+Ãtb™s
+];
+
+530 ià(
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ6
+->
+Ãtb™s
+] == 1)
+
+531 
+	`mrou‹_h–³r_»g’”©e
+ (
+mh
+);
+
+533 
+	}
+}
+
+536 
+	$mrou‹_h–³r_d–_œou‹6
+ (
+mrou‹_h–³r
+ *
+mh
+,
+
+537 cÚ¡ 
+œou‹_�v6
+ *
+œ6
+)
+
+539 ià(
+œ6
+->
+Ãtb™s
+ >= 0)
+
+541 
+	`ASSERT
+ (
+œ6
+->
+Ãtb™s
+ < 
+MR_HELPER_NET_LEN
+);
+
+542 ++
+mh
+->
+ÿche_g’”©iÚ
+;
+
+543 --
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ6
+->
+Ãtb™s
+];
+
+544 
+	`ASSERT
+ (
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ6
+->
+Ãtb™s
+] >= 0);
+
+545 ià(!
+mh
+->
+Ãt_Ën_»fcouÁ
+[
+œ6
+->
+Ãtb™s
+])
+
+546 
+	`mrou‹_h–³r_»g’”©e
+ (
+mh
+);
+
+548 
+	}
+}
+
+551 
+	$mrou‹_h–³r_ä“
+ (
+mrou‹_h–³r
+ *
+mh
+)
+
+553 
+	`ä“
+ (
+mh
+);
+
+554 
+	}
+}
+
+557 
+	$dummy
+(è{
+	}
+}
+
+	@mroute.h
+
+25 #iâdeà
+MROUTE_H
+
+
+26 
+	#MROUTE_H
+
+
+	)
+
+28 #ià
+P2MP_SERVER
+
+
+30 
+	~"bufãr.h
+"
+
+31 
+	~"li¡.h
+"
+
+32 
+	~"rou‹.h
+"
+
+34 
+	#IP_MCAST_SUBNET_MASK
+ ((
+š_addr_t
+)240<<24)
+
+	)
+
+35 
+	#IP_MCAST_NETWORK
+ ((
+š_addr_t
+)224<<24)
+
+	)
+
+39 
+	#MROUTE_EXTRACT_SUCCEEDED
+ (1<<0)
+
+	)
+
+40 
+	#MROUTE_EXTRACT_BCAST
+ (1<<1)
+
+	)
+
+41 
+	#MROUTE_EXTRACT_MCAST
+ (1<<2)
+
+	)
+
+42 
+	#MROUTE_EXTRACT_IGMP
+ (1<<3)
+
+	)
+
+44 
+	#MROUTE_SEC_EXTRACT_SUCCEEDED
+ (1<<(0+
+MROUTE_SEC_SHIFT
+))
+
+	)
+
+45 
+	#MROUTE_SEC_EXTRACT_BCAST
+ (1<<(1+
+MROUTE_SEC_SHIFT
+))
+
+	)
+
+46 
+	#MROUTE_SEC_EXTRACT_MCAST
+ (1<<(2+
+MROUTE_SEC_SHIFT
+))
+
+	)
+
+47 
+	#MROUTE_SEC_EXTRACT_IGMP
+ (1<<(3+
+MROUTE_SEC_SHIFT
+))
+
+	)
+
+49 
+	#MROUTE_SEC_SHIFT
+ 4
+
+	)
+
+56 
+	#MR_MAX_ADDR_LEN
+ 20
+
+	)
+
+61 
+	#MR_ADDR_NONE
+ 0
+
+	)
+
+62 
+	#MR_ADDR_ETHER
+ 1
+
+	)
+
+63 
+	#MR_ADDR_IPV4
+ 2
+
+	)
+
+64 
+	#MR_ADDR_IPV6
+ 3
+
+	)
+
+65 
+	#MR_ADDR_MASK
+ 3
+
+	)
+
+68 
+	#MR_WITH_PORT
+ 4
+
+	)
+
+71 
+	#MR_WITH_NETBITS
+ 8
+
+	)
+
+74 
+	#MR_ARP
+ 16
+
+	)
+
+76 
+	smrou‹_addr
+ {
+
+77 
+ušt8_t
+ 
+	mËn
+;
+
+78 
+ušt8_t
+ 
+	munu£d
+;
+
+79 
+ušt8_t
+ 
+	mty³
+;
+
+80 
+ušt8_t
+ 
+	mÃtb™s
+;
+
+82 
+ušt8_t
+ 
+	maddr
+[
+MR_MAX_ADDR_LEN
+];
+
+88 
+	#MR_HELPER_NET_LEN
+ 129
+
+	)
+
+93 
+	smrou‹_h–³r
+ {
+
+94 
+	mÿche_g’”©iÚ
+;
+
+95 
+	mag—bË_‰l_£cs
+;
+
+96 
+	mn_Ãt_Ën
+;
+
+97 
+ušt8_t
+ 
+	mÃt_Ën
+[
+MR_HELPER_NET_LEN
+];
+
+98 
+	mÃt_Ën_»fcouÁ
+[
+MR_HELPER_NET_LEN
+];
+
+101 
+	gÝ’v²_sockaddr
+;
+
+103 
+boÞ
+ 
+mrou‹_exŒaù_Ý’v²_sockaddr
+ (
+mrou‹_addr
+ *
+addr
+,
+
+104 cÚ¡ 
+Ý’v²_sockaddr
+ *
+o§ddr
+,
+
+105 
+boÞ
+ 
+u£_pÜt
+);
+
+107 
+boÞ
+ 
+mrou‹_Ë¬ÇbË_add»ss
+ (cÚ¡ 
+mrou‹_addr
+ *
+addr
+);
+
+109 
+ušt32_t
+ 
+mrou‹_addr_hash_funùiÚ
+ (cÚ¡ *
+key
+, ušt32_ˆ
+iv
+);
+
+110 
+boÞ
+ 
+mrou‹_addr_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+);
+
+112 
+mrou‹_addr_š™
+ (
+mrou‹_addr
+ *
+addr
+);
+
+114 cÚ¡ *
+mrou‹_addr_´št
+ (cÚ¡ 
+mrou‹_addr
+ *
+ma
+,
+
+115 
+gc_¬’a
+ *
+gc
+);
+
+117 
+	#MAPF_SUBNET
+ (1<<0)
+
+	)
+
+118 
+	#MAPF_IA_EMPTY_IF_UNDEF
+ (1<<1)
+
+	)
+
+119 
+	#MAPF_SHOW_ARP
+ (1<<2)
+
+	)
+
+120 cÚ¡ *
+mrou‹_addr_´št_ex
+ (cÚ¡ 
+mrou‹_addr
+ *
+ma
+,
+
+121 cÚ¡ 
+æags
+,
+
+122 
+gc_¬’a
+ *
+gc
+);
+
+124 
+mrou‹_addr_mask_ho¡_b™s
+ (
+mrou‹_addr
+ *
+ma
+);
+
+126 
+mrou‹_h–³r
+ *
+mrou‹_h–³r_š™
+ (
+ag—bË_‰l_£cs
+);
+
+127 
+mrou‹_h–³r_ä“
+ (
+mrou‹_h–³r
+ *
+mh
+);
+
+128 
+mrou‹_h–³r_add_œou‹
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹
+ *
+œ
+);
+
+129 
+mrou‹_h–³r_d–_œou‹
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹
+ *
+œ
+);
+
+130 
+mrou‹_h–³r_add_œou‹6
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹_�v6
+ *
+œ6
+);
+
+131 
+mrou‹_h–³r_d–_œou‹6
+ (
+mrou‹_h–³r
+ *
+mh
+, cÚ¡ 
+œou‹_�v6
+ *
+œ6
+);
+
+137 
+šlše
+ 
+
+138 
+	$mrou‹_exŒaù_addr_äom_·ck‘
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+139 
+mrou‹_addr
+ *
+de¡
+,
+
+140 
+mrou‹_addr
+ *
+e¤c
+,
+
+141 
+mrou‹_addr
+ *
+ede¡
+,
+
+142 cÚ¡ 
+bufãr
+ *
+buf
+,
+
+143 
+tuÂ–_ty³
+)
+
+145 
+	`mrou‹_exŒaù_addr_�v4
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+146 
+mrou‹_addr
+ *
+de¡
+,
+
+147 cÚ¡ 
+bufãr
+ *
+buf
+);
+
+149 
+	`mrou‹_exŒaù_addr_‘h”
+ (
+mrou‹_addr
+ *
+¤c
+,
+
+150 
+mrou‹_addr
+ *
+de¡
+,
+
+151 
+mrou‹_addr
+ *
+e¤c
+,
+
+152 
+mrou‹_addr
+ *
+ede¡
+,
+
+153 cÚ¡ 
+bufãr
+ *
+buf
+);
+
+154 
+»t
+ = 0;
+
+155 
+	`v”ify_®ign_4
+ (
+buf
+);
+
+156 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+157 
+»t
+ = 
+	`mrou‹_exŒaù_addr_�v4
+ (
+¤c
+, 
+de¡
+, 
+buf
+);
+
+158 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+159 
+»t
+ = 
+	`mrou‹_exŒaù_addr_‘h”
+ (
+¤c
+, 
+de¡
+, 
+e¤c
+, 
+ede¡
+, 
+buf
+);
+
+160  
+»t
+;
+
+161 
+	}
+}
+
+163 
+šlše
+ 
+boÞ
+
+
+164 
+	$mrou‹_addr_equ®
+ (cÚ¡ 
+mrou‹_addr
+ *
+a1
+, cÚ¡ mrou‹_add¸*
+a2
+)
+
+166 ià(
+a1
+->
+ty³
+ !ð
+a2
+->type)
+
+167  
+çl£
+;
+
+168 ià(
+a1
+->
+Ãtb™s
+ !ð
+a2
+->netbits)
+
+169  
+çl£
+;
+
+170 ià(
+a1
+->
+Ën
+ !ð
+a2
+->len)
+
+171  
+çl£
+;
+
+172  
+	`memcmp
+ (
+a1
+->
+addr
+, 
+a2
+->addr,‡1->
+Ën
+) == 0;
+
+173 
+	}
+}
+
+175 
+šlše
+ cÚ¡ 
+ušt8_t
+ *
+
+176 
+	$mrou‹_addr_hash_±r
+ (cÚ¡ 
+mrou‹_addr
+ *
+a
+)
+
+179  (
+ušt8_t
+ *è&
+a
+->
+ty³
+;
+
+180 
+	}
+}
+
+182 
+šlše
+ 
+ušt32_t
+
+
+183 
+	$mrou‹_addr_hash_Ën
+ (cÚ¡ 
+mrou‹_addr
+ *
+a
+)
+
+185  (
+ušt32_t
+è
+a
+->
+Ën
+ + 2;
+
+186 
+	}
+}
+
+188 
+šlše
+ 
+
+189 
+	$mrou‹_exŒaù_š_addr_t
+ (
+mrou‹_addr
+ *
+de¡
+, cÚ¡ 
+š_addr_t
+ 
+¤c
+)
+
+191 
+de¡
+->
+ty³
+ = 
+MR_ADDR_IPV4
+;
+
+192 
+de¡
+->
+Ãtb™s
+ = 0;
+
+193 
+de¡
+->
+Ën
+ = 4;
+
+194 *(
+š_addr_t
+*)
+de¡
+->
+addr
+ = 
+	`htÚl
+ (
+¤c
+);
+
+195 
+	}
+}
+
+197 
+šlše
+ 
+š_addr_t
+
+
+198 
+	$š_addr_t_äom_mrou‹_addr
+ (cÚ¡ 
+mrou‹_addr
+ *
+addr
+)
+
+200 ià((
+addr
+->
+ty³
+ & 
+MR_ADDR_MASK
+è=ð
+MR_ADDR_IPV4
+ &&‡ddr->
+Ãtb™s
+ =ð0 &&‡ddr->
+Ën
+ == 4)
+
+201  
+	`Áohl
+(*(
+š_addr_t
+*)
+addr
+->addr);
+
+204 
+	}
+}
+
+206 
+šlše
+ 
+
+207 
+	$mrou‹_addr_»£t
+ (
+mrou‹_addr
+ *
+ma
+)
+
+209 
+ma
+->
+Ën
+ = 0;
+
+210 
+ma
+->
+ty³
+ = 
+MR_ADDR_NONE
+;
+
+211 
+	}
+}
+
+	@mss.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+32 
+	~"”rÜ.h
+"
+
+33 
+	~"mss.h
+"
+
+34 
+	~"memdbg.h
+"
+
+47 
+	$mss_fixup_�v4
+ (
+bufãr
+ *
+buf
+, 
+maxmss
+)
+
+49 cÚ¡ 
+Ý’v²_�hdr
+ *
+p�
+;
+
+50 
+hËn
+;
+
+52 ià(
+	`BLEN
+ (
+buf
+è< (è (
+Ý’v²_�hdr
+))
+
+55 
+	`v”ify_®ign_4
+ (
+buf
+);
+
+56 
+p�
+ = (
+Ý’v²_�hdr
+ *è
+	`BPTR
+ (
+buf
+);
+
+58 
+hËn
+ = 
+	`OPENVPN_IPH_GET_LEN
+ (
+p�
+->
+v”siÚ_Ën
+);
+
+60 ià(
+p�
+->
+´ÙocÞ
+ =ð
+OPENVPN_IPPROTO_TCP
+
+
+61 && 
+	`Áohs
+ (
+p�
+->
+tÙ_Ën
+è=ð
+	`BLEN
+ (
+buf
+)
+
+62 && (
+	`Áohs
+ (
+p�
+->
+äag_off
+è& 
+OPENVPN_IP_OFFMASK
+) == 0
+
+63 && 
+hËn
+ <ð
+	`BLEN
+ (
+buf
+)
+
+64 && 
+	`BLEN
+ (
+buf
+è- 
+hËn
+
+
+65 >ð(è (
+Ý’v²_týhdr
+))
+
+67 
+bufãr
+ 
+Ãwbuf
+ = *
+buf
+;
+
+68 ià(
+	`buf_advªû
+ (&
+Ãwbuf
+, 
+hËn
+))
+
+70 
+Ý’v²_týhdr
+ *
+tc
+ = (Ý’v²_týhd¸*è
+	`BPTR
+ (&
+Ãwbuf
+);
+
+71 ià(
+tc
+->
+æags
+ & 
+OPENVPN_TCPH_SYN_MASK
+)
+
+72 
+	`mss_fixup_dowÜk
+ (&
+Ãwbuf
+, (
+ušt16_t
+è
+maxmss
+);
+
+75 
+	}
+}
+
+83 
+	$mss_fixup_�v6
+ (
+bufãr
+ *
+buf
+, 
+maxmss
+)
+
+85 cÚ¡ 
+Ý’v²_�v6hdr
+ *
+p�6
+;
+
+86 
+bufãr
+ 
+Ãwbuf
+;
+
+88 ià(
+	`BLEN
+ (
+buf
+è< (è (
+Ý’v²_�v6hdr
+))
+
+91 
+	`v”ify_®ign_4
+ (
+buf
+);
+
+92 
+p�6
+ = (
+Ý’v²_�v6hdr
+ *è
+	`BPTR
+ (
+buf
+);
+
+97 ià(
+	`BLEN
+ (
+buf
+è!ð(è
+	`Áohs
+(
+p�6
+->
+·ylßd_Ën
+)+40 )
+
+110 iàÐ
+p�6
+->
+Ãxthdr
+ !ð
+OPENVPN_IPPROTO_TCP
+ )
+
+113 
+Ãwbuf
+ = *
+buf
+;
+
+114 iàÐ
+	`buf_advªû
+Ð&
+Ãwbuf
+, 40 ) )
+
+116 
+Ý’v²_týhdr
+ *
+tc
+ = (Ý’v²_týhd¸*è
+	`BPTR
+ (&
+Ãwbuf
+);
+
+117 ià(
+tc
+->
+æags
+ & 
+OPENVPN_TCPH_SYN_MASK
+)
+
+118 
+	`mss_fixup_dowÜk
+ (&
+Ãwbuf
+, (
+ušt16_t
+è
+maxmss
+-20);
+
+120 
+	}
+}
+
+128 
+	$mss_fixup_dowÜk
+ (
+bufãr
+ *
+buf
+, 
+ušt16_t
+ 
+maxmss
+)
+
+130 
+hËn
+, 
+Þ’
+, 
+ÝŽ’
+;
+
+131 
+ušt8_t
+ *
+Ýt
+;
+
+132 
+ušt16_t
+ *
+mss
+;
+
+133 
+accumuÏ‹
+;
+
+134 
+Ý’v²_týhdr
+ *
+tc
+;
+
+136 
+	`ASSERT
+ (
+	`BLEN
+ (
+buf
+è>ð(è (
+Ý’v²_týhdr
+));
+
+138 
+	`v”ify_®ign_4
+ (
+buf
+);
+
+139 
+tc
+ = (
+Ý’v²_týhdr
+ *è
+	`BPTR
+ (
+buf
+);
+
+140 
+hËn
+ = 
+	`OPENVPN_TCPH_GET_DOFF
+ (
+tc
+->
+doff_»s
+);
+
+143 ià(
+hËn
+ <ð(è (
+Ý’v²_týhdr
+)
+
+144 || 
+hËn
+ > 
+	`BLEN
+ (
+buf
+))
+
+147 
+Þ’
+ = 
+hËn
+ -  (
+Ý’v²_týhdr
+),
+
+148 
+Ýt
+ = (
+ušt8_t
+ *)(
+tc
+ + 1);
+
+149 
+Þ’
+ > 0;
+
+150 
+Þ’
+ -ð
+ÝŽ’
+, 
+Ýt
+ += optlen) {
+
+151 ià(*
+Ýt
+ =ð
+OPENVPN_TCPOPT_EOL
+)
+
+153 ià(*
+Ýt
+ =ð
+OPENVPN_TCPOPT_NOP
+)
+
+154 
+ÝŽ’
+ = 1;
+
+156 
+ÝŽ’
+ = *(
+Ýt
+ + 1);
+
+157 ià(
+ÝŽ’
+ <ð0 || o±ËÀ> 
+Þ’
+)
+
+159 ià(*
+Ýt
+ =ð
+OPENVPN_TCPOPT_MAXSEG
+) {
+
+160 ià(
+ÝŽ’
+ !ð
+OPENVPN_TCPOLEN_MAXSEG
+)
+
+162 
+mss
+ = (
+ušt16_t
+ *)(
+Ýt
+ + 2);
+
+163 ià(
+	`Áohs
+ (*
+mss
+è> 
+maxmss
+) {
+
+164 
+	`dmsg
+ (
+D_MSS
+, "MSS: %d -> %d",
+
+165 (è
+	`Áohs
+ (*
+mss
+),
+
+166 (è
+maxmss
+);
+
+167 
+accumuÏ‹
+ = *
+mss
+;
+
+168 *
+mss
+ = 
+	`htÚs
+ (
+maxmss
+);
+
+169 
+accumuÏ‹
+ -ð*
+mss
+;
+
+170 
+	`ADJUST_CHECKSUM
+ (
+accumuÏ‹
+, 
+tc
+->
+check
+);
+
+175 
+	}
+}
+
+	@mss.h
+
+25 #iâdeà
+MSS_H
+
+
+26 
+	#MSS_H
+
+
+	)
+
+28 
+	~"´Ùo.h
+"
+
+29 
+	~"”rÜ.h
+"
+
+31 
+mss_fixup_�v4
+ (
+bufãr
+ *
+buf
+, 
+maxmss
+);
+
+32 
+mss_fixup_�v6
+ (
+bufãr
+ *
+buf
+, 
+maxmss
+);
+
+33 
+mss_fixup_dowÜk
+ (
+bufãr
+ *
+buf
+, 
+ušt16_t
+ 
+maxmss
+);
+
+	@mstats.c
+
+29 #ifdeà
+HAVE_CONFIG_H
+
+
+30 
+	~"cÚfig.h
+"
+
+31 #–ià
+defšed
+(
+_MSC_VER
+)
+
+32 
+	~"cÚfig-msvc.h
+"
+
+35 
+	~"sysh—d.h
+"
+
+37 #ià
+defšed
+(
+ENABLE_MEMSTATS
+)
+
+39 
+	~<sys/mmª.h
+>
+
+41 
+	~"”rÜ.h
+"
+
+42 
+	~"misc.h
+"
+
+43 
+	~"m¡©s.h
+"
+
+45 
+	~"memdbg.h
+"
+
+47 vÞ©ž�
+mm­_¡©s
+ *
+	gmm­_¡©s
+ = 
+NULL
+;
+
+48 
+	gmm­_â
+[128];
+
+51 
+	$m¡©s_Ý’
+(cÚ¡ *
+â
+)
+
+53 *
+d©a
+;
+
+54 
+ssize_t
+ 
+¡©
+;
+
+55 
+fd
+;
+
+56 
+mm­_¡©s
+ 
+ms
+;
+
+58 ià(
+mm­_¡©s
+)
+
+62 ià(
+	`¡¾’
+(
+â
+è>ð(
+mm­_â
+))
+
+63 
+	`msg
+ (
+M_FATAL
+, "mstats_open: filename�oo†ong");
+
+66 
+fd
+ = 
+	`Ý’
+ (
+â
+, 
+O_CREAT
+ | 
+O_TRUNC
+ | 
+O_RDWR
+, 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+67 ià(
+fd
+ < 0)
+
+69 
+	`msg
+ (
+M_ERR
+, "m¡©s_Ý’: cªnÙ o³n: %s", 
+â
+);
+
+75 
+	`CLEAR
+(
+ms
+);
+
+76 
+ms
+.
+¡©e
+ = 
+MSTATS_ACTIVE
+;
+
+77 
+¡©
+ = 
+	`wr™e
+(
+fd
+, &
+ms
+, (ms));
+
+78 ià(
+¡©
+ !ð(
+ms
+))
+
+80 
+	`msg
+ (
+M_ERR
+, "m¡©s_Ý’: wr™�”rÜ: %s", 
+â
+);
+
+81 
+	`þo£
+(
+fd
+);
+
+86 
+d©a
+ = 
+	`mm­
+(
+NULL
+, (
+mm­_¡©s
+), 
+PROT_READ
+|
+PROT_WRITE
+, 
+MAP_SHARED
+, 
+fd
+, 0);
+
+87 ià(
+d©a
+ =ð
+MAP_FAILED
+)
+
+89 
+	`msg
+ (
+M_ERR
+, "m¡©s_Ý’: wr™�”rÜ: %s", 
+â
+);
+
+90 
+	`þo£
+(
+fd
+);
+
+95 ià(
+	`þo£
+(
+fd
+))
+
+97 
+	`msg
+ (
+M_ERR
+, "m¡©s_Ý’: clo£ƒ¼Ü: %s", 
+â
+);
+
+101 
+	`¡rýy
+(
+mm­_â
+, 
+â
+);
+
+104 
+mm­_¡©s
+ = (mm­_¡© *)
+d©a
+;
+
+106 
+	`msg
+ (
+M_INFO
+, "mem¡© d©¨wžÈb�wr™‹ÀtØ%s", 
+â
+);
+
+107 
+	}
+}
+
+110 
+	$m¡©s_þo£
+()
+
+112 ià(
+mm­_¡©s
+)
+
+114 
+mm­_¡©s
+->
+¡©e
+ = 
+MSTATS_EXPIRED
+;
+
+115 ià(
+	`munm­
+((*)
+mm­_¡©s
+, (mmap_stats)))
+
+116 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "mstats_close: munmapƒrror");
+
+117 
+	`¶©fÜm_uÆšk
+(
+mm­_â
+);
+
+118 
+mm­_¡©s
+ = 
+NULL
+;
+
+120 
+	}
+}
+
+	@mstats.h
+
+29 #ià!
+defšed
+(
+OPENVPN_MEMSTATS_H
+è&& defšed(
+ENABLE_MEMSTATS
+)
+
+30 
+	#OPENVPN_MEMSTATS_H
+
+
+	)
+
+32 
+	~"basic.h
+"
+
+35 
+	smm­_¡©s
+ {
+
+36 
+couÁ”_ty³
+ 
+	mlšk_»ad_by‹s
+;
+
+37 
+couÁ”_ty³
+ 
+	mlšk_wr™e_by‹s
+;
+
+38 
+	mn_þ›Ás
+;
+
+40 
+	#MSTATS_UNDEF
+ 0
+
+	)
+
+41 
+	#MSTATS_ACTIVE
+ 1
+
+	)
+
+42 
+	#MSTATS_EXPIRED
+ 2
+
+	)
+
+43 
+	m¡©e
+;
+
+46 
vÞ©ž�
+mm­_¡©s
+ *mmap_stats;
+
+48 
+m¡©s_Ý’
+(cÚ¡ *
+â
+);
+
+49 
+m¡©s_þo£
+();
+
+	@mtcp.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"muÉi.h
+"
+
+36 
+	~"fÜw¬d-šlše.h
+"
+
+38 
+	~"memdbg.h
+"
+
+43 
+	#TA_UNDEF
+ 0
+
+	)
+
+44 
+	#TA_SOCKET_READ
+ 1
+
+	)
+
+45 
+	#TA_SOCKET_READ_RESIDUAL
+ 2
+
+	)
+
+46 
+	#TA_SOCKET_WRITE
+ 3
+
+	)
+
+47 
+	#TA_SOCKET_WRITE_READY
+ 4
+
+	)
+
+48 
+	#TA_SOCKET_WRITE_DEFERRED
+ 5
+
+	)
+
+49 
+	#TA_TUN_READ
+ 6
+
+	)
+
+50 
+	#TA_TUN_WRITE
+ 7
+
+	)
+
+51 
+	#TA_INITIAL
+ 8
+
+	)
+
+52 
+	#TA_TIMEOUT
+ 9
+
+	)
+
+53 
+	#TA_TUN_WRITE_TIMEOUT
+ 10
+
+	)
+
+58 
+	#MTCP_SOCKET
+ ((*)1)
+
+	)
+
+59 
+	#MTCP_TUN
+ ((*)2)
+
+	)
+
+60 
+	#MTCP_SIG
+ ((*)3è
+
+	)
+
+61 #ifdeà
+ENABLE_MANAGEMENT
+
+
+62 
+	#MTCP_MANAGEMENT
+ ((*)4)
+
+	)
+
+65 
+	#MTCP_N
+ ((*)16è
+
+	)
+
+67 
+	s�_iow_æags
+
+
+69 
+	mæags
+;
+
+70 
+	m»t
+;
+
+71 
+	mtun
+;
+
+72 
+	msock
+;
+
+76 
+	$´aù
+ (
+aùiÚ
+)
+
+78 
+aùiÚ
+)
+
+80 
+TA_UNDEF
+:
+
+82 
+TA_SOCKET_READ
+:
+
+84 
+TA_SOCKET_READ_RESIDUAL
+:
+
+86 
+TA_SOCKET_WRITE
+:
+
+88 
+TA_SOCKET_WRITE_READY
+:
+
+90 
+TA_SOCKET_WRITE_DEFERRED
+:
+
+92 
+TA_TUN_READ
+:
+
+94 
+TA_TUN_WRITE
+:
+
+96 
+TA_INITIAL
+:
+
+98 
+TA_TIMEOUT
+:
+
+100 
+TA_TUN_WRITE_TIMEOUT
+:
+
+105 
+	}
+}
+
+107 
+muÉi_š¡ªû
+ *
+
+108 
+	$muÉi_ü—‹_š¡ªû_tý
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+110 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+111 
+muÉi_š¡ªû
+ *
+mi
+ = 
+NULL
+;
+
+112 
+hash
+ *hash = 
+m
+->hash;
+
+114 
+mi
+ = 
+	`muÉi_ü—‹_š¡ªû
+ (
+m
+, 
+NULL
+);
+
+115 ià(
+mi
+)
+
+117 
+hash_–em’t
+ *
+he
+;
+
+118 cÚ¡ 
+ušt32_t
+ 
+hv
+ = 
+	`hash_v®ue
+ (
+hash
+, &
+mi
+->
+»®
+);
+
+119 
+hash_buck‘
+ *
+buck‘
+ = 
+	`hash_buck‘
+ (
+hash
+, 
+hv
+);
+
+121 
+he
+ = 
+	`hash_lookup_ç¡
+ (
+hash
+, 
+buck‘
+, &
+mi
+->
+»®
+, 
+hv
+);
+
+123 ià(
+he
+)
+
+125 
+muÉi_š¡ªû
+ *
+Þdmi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+126 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI TCP:‚ew incoming client‡ddress matchesƒxisting client‡ddress --‚ew client�akes…recedence");
+
+127 
+Þdmi
+->
+did_»®_hash
+ = 
+çl£
+;
+
+128 
+	`muÉi_þo£_š¡ªû
+ (
+m
+, 
+Þdmi
+, 
+çl£
+);
+
+129 
+he
+->
+key
+ = &
+mi
+->
+»®
+;
+
+130 
+he
+->
+v®ue
+ = 
+mi
+;
+
+133 
+	`hash_add_ç¡
+ (
+hash
+, 
+buck‘
+, &
+mi
+->
+»®
+, 
+hv
+, mi);
+
+135 
+mi
+->
+did_»®_hash
+ = 
+Œue
+;
+
+138 #ifdeà
+ENABLE_DEBUG
+
+
+139 ià(
+mi
+)
+
+140 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP: in¡ªû‡dded: %s", 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+));
+
+142 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP:‚ew client instance failed");
+
+145 
+	`gc_ä“
+ (&
+gc
+);
+
+146 
+	`ASSERT
+ (!(
+mi
+ && mi->
+h®t
+));
+
+147  
+mi
+;
+
+148 
+	}
+}
+
+150 
+boÞ
+
+
+151 
+	$muÉi_tý_š¡ªû_¥ecific_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+154 
+mi
+->
+tý_lšk_out_deã¼ed
+ = 
+	`mbuf_š™
+ (
+m
+->
+tÝ
+.
+ÝtiÚs
+.
+n_bÿ¡_buf
+);
+
+156 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+);
+
+157 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+->
+šfo
+.
+l§
+);
+
+158 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+->
+mode
+ =ð
+LS_MODE_TCP_ACCEPT_FROM
+);
+
+159 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+ =ð
+AF_INET
+
+
+160 || 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+ =ð
+AF_INET6
+
+
+162 ià(!
+	`mrou‹_exŒaù_Ý’v²_sockaddr
+ (&
+mi
+->
+»®
+, &mi->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+, 
+Œue
+))
+
+164 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI TCP: TCP client‡ddress is undefined");
+
+165  
+çl£
+;
+
+167  
+Œue
+;
+
+168 
+	}
+}
+
+171 
+	$muÉi_tý_š¡ªû_¥ecific_ä“
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+173 
+	`mbuf_ä“
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+);
+
+174 
+	}
+}
+
+176 
+muÉi_tý
+ *
+
+177 
+	$muÉi_tý_š™
+ (
+maxev’ts
+, *
+maxþ›Ás
+)
+
+179 
+muÉi_tý
+ *
+mtý
+;
+
+180 cÚ¡ 
+exŒa_ev’ts
+ = 
+BASE_N_EVENTS
+;
+
+182 
+	`ASSERT
+ (
+maxev’ts
+ >= 1);
+
+183 
+	`ASSERT
+ (
+maxþ›Ás
+);
+
+185 
+	`ALLOC_OBJ_CLEAR
+ (
+mtý
+, 
+muÉi_tý
+);
+
+186 
+mtý
+->
+maxev’ts
+ = maxev’t + 
+exŒa_ev’ts
+;
+
+187 
+mtý
+->
+es
+ = 
+	`ev’t_£t_š™
+ (&mtý->
+maxev’ts
+, 0);
+
+188 
+	`wa™_sigÇl
+ (
+mtý
+->
+es
+, 
+MTCP_SIG
+);
+
+189 
+	`ALLOC_ARRAY
+ (
+mtý
+->
+e¤
+, 
+ev’t_£t_»tuº
+, mtý->
+maxev’ts
+);
+
+190 *
+maxþ›Ás
+ = 
+	`max_št
+ (
+	`mš_št
+ (
+mtý
+->
+maxev’ts
+ - 
+exŒa_ev’ts
+, *maxclients), 1);
+
+191 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: TCP INIT maxþ›Ás=%d maxev’ts=%d", *
+maxþ›Ás
+, 
+mtý
+->
+maxev’ts
+);
+
+192  
+mtý
+;
+
+193 
+	}
+}
+
+196 
+	$muÉi_tý_d–‘e_ev’t
+ (
+muÉi_tý
+ *
+mtý
+, 
+ev’t_t
+ 
+ev’t
+)
+
+198 ià(
+mtý
+ && mtý->
+es
+)
+
+199 
+	`ev’t_d–
+ (
+mtý
+->
+es
+, 
+ev’t
+);
+
+200 
+	}
+}
+
+203 
+	$muÉi_tý_ä“
+ (
+muÉi_tý
+ *
+mtý
+)
+
+205 ià(
+mtý
+)
+
+207 
+	`ev’t_ä“
+ (
+mtý
+->
+es
+);
+
+208 ià(
+mtý
+->
+e¤
+)
+
+209 
+	`ä“
+ (
+mtý
+->
+e¤
+);
+
+210 
+	`ä“
+ (
+mtý
+);
+
+212 
+	}
+}
+
+215 
+	$muÉi_tý_d”eã»nû_š¡ªû
+ (
+muÉi_tý
+ *
+mtý
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+217 
+lšk_sock‘
+ *
+ls
+ = 
+mi
+->
+cÚ‹xt
+.
+c2
+.link_socket;
+
+218 ià(
+ls
+ && 
+mi
+->
+sock‘_£t_ÿÎed
+)
+
+219 
+	`ev’t_d–
+ (
+mtý
+->
+es
+, 
+	`sock‘_ev’t_hªdË
+ (
+ls
+));
+
+220 
+mtý
+->
+n_e¤
+ = 0;
+
+221 
+	}
+}
+
+223 
+šlše
+ 
+
+224 
+	$muÉi_tý_£t_glob®_rw_æags
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+226 ià(
+mi
+)
+
+228 
+mi
+->
+sock‘_£t_ÿÎed
+ = 
+Œue
+;
+
+229 
+	`sock‘_£t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+,
+
+230 
+m
+->
+mtý
+->
+es
+,
+
+231 
+	`mbuf_defšed
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+è? 
+EVENT_WRITE
+ : 
+EVENT_READ
+,
+
+232 
+mi
+,
+
+233 &
+mi
+->
+tý_rwæags
+);
+
+235 
+	}
+}
+
+237 
+šlše
+ 
+
+238 
+	$muÉi_tý_wa™
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+,
+
+239 
+muÉi_tý
+ *
+mtý
+)
+
+241 
+¡©us
+;
+
+242 
+	`sock‘_£t_li¡’_³rsi¡’t
+ (
+c
+->
+c2
+.
+lšk_sock‘
+, 
+mtý
+->
+es
+, 
+MTCP_SOCKET
+);
+
+243 
+	`tun_£t
+ (
+c
+->
+c1
+.
+tuÁ­
+, 
+mtý
+->
+es
+, 
+EVENT_READ
+, 
+MTCP_TUN
+, &mtý->
+tun_rwæags
+);
+
+244 #ifdeà
+ENABLE_MANAGEMENT
+
+
+245 ià(
+mªagem’t
+)
+
+246 
+	`mªagem’t_sock‘_£t
+ (
+mªagem’t
+, 
+mtý
+->
+es
+, 
+MTCP_MANAGEMENT
+, &mtý->
+mªagem’t_³rsi¡_æags
+);
+
+248 
+¡©us
+ = 
+	`ev’t_wa™
+ (
+mtý
+->
+es
+, &
+c
+->
+c2
+.
+timev®
+, mtý->
+e¤
+, mtý->
+maxev’ts
+);
+
+249 
+	`upd©e_time
+ ();
+
+250 
+mtý
+->
+n_e¤
+ = 0;
+
+251 ià(
+¡©us
+ > 0)
+
+252 
+mtý
+->
+n_e¤
+ = 
+¡©us
+;
+
+253  
+¡©us
+;
+
+254 
+	}
+}
+
+256 
+šlše
+ 
+cÚ‹xt
+ *
+
+257 
+	$muÉi_tý_cÚ‹xt
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+259 ià(
+mi
+)
+
+260  &
+mi
+->
+cÚ‹xt
+;
+
+262  &
+m
+->
+tÝ
+;
+
+263 
+	}
+}
+
+265 
+boÞ
+
+
+266 
+	$muÉi_tý_´oûss_outgošg_lšk_»ady
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+mµ_æags
+)
+
+268 
+mbuf_™em
+ 
+™em
+;
+
+269 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+270 
+	`ASSERT
+ (
+mi
+);
+
+273 ià(
+	`mbuf_exŒaù_™em
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+, &
+™em
+))
+
+275 
+	`dmsg
+ (
+D_MULTI_TCP
+, "MULTI TCP:�ransmitting…reviously deferred…acket");
+
+277 
+	`ASSERT
+ (
+mi
+ =ð
+™em
+.
+š¡ªû
+);
+
+278 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+to_lšk
+ = 
+™em
+.
+bufãr
+->
+buf
+;
+
+279 
+»t
+ = 
+	`muÉi_´oûss_outgošg_lšk_dowÜk
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+280 ià(!
+»t
+)
+
+281 
+mi
+ = 
+NULL
+;
+
+282 
+	`mbuf_ä“_buf
+ (
+™em
+.
+bufãr
+);
+
+284  
+»t
+;
+
+285 
+	}
+}
+
+287 
+boÞ
+
+
+288 
+	$muÉi_tý_´oûss_outgošg_lšk
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+boÞ
+ 
+deãr
+, cÚ¡ 
+mµ_æags
+)
+
+290 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`muÉi_´oûss_outgošg_lšk_´e
+ (
+m
+);
+
+291 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+293 ià(
+mi
+)
+
+295 ià(
+deãr
+ || 
+	`mbuf_defšed
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+))
+
+298 
+bufãr
+ *
+buf
+ = &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+to_lšk
+;
+
+299 ià(
+	`BLEN
+ (
+buf
+) > 0)
+
+301 
+mbuf_bufãr
+ *
+mb
+ = 
+	`mbuf_®loc_buf
+ (
+buf
+);
+
+302 
+mbuf_™em
+ 
+™em
+;
+
+304 
+	`£t_´efix
+ (
+mi
+);
+
+305 
+	`dmsg
+ (
+D_MULTI_TCP
+, "MULTI TCP: queuing deferred…acket");
+
+306 
+™em
+.
+bufãr
+ = 
+mb
+;
+
+307 
+™em
+.
+š¡ªû
+ = 
+mi
+;
+
+308 
+	`mbuf_add_™em
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+, &
+™em
+);
+
+309 
+	`mbuf_ä“_buf
+ (
+mb
+);
+
+310 
+	`buf_»£t
+ (
+buf
+);
+
+311 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+312 ià(!
+»t
+)
+
+313 
+mi
+ = 
+NULL
+;
+
+314 
+	`þ—r_´efix
+ ();
+
+319 
+»t
+ = 
+	`muÉi_´oûss_outgošg_lšk_dowÜk
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+320 ià(!
+»t
+)
+
+321 
+mi
+ = 
+NULL
+;
+
+324  
+»t
+;
+
+325 
+	}
+}
+
+328 
+	$muÉi_tý_wa™_l™e
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+aùiÚ
+, 
+boÞ
+ *
+tun_šput_³ndšg
+)
+
+330 
+cÚ‹xt
+ *
+c
+ = 
+	`muÉi_tý_cÚ‹xt
+ (
+m
+, 
+mi
+);
+
+331 
+lookšg_fÜ
+ = 0;
+
+333 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP: muÉi_tý_wa™_l™�a=% mi=" 
+±r_fÜm©
+,
+
+334 
+	`´aù
+(
+aùiÚ
+),
+
+335 (
+±r_ty³
+)
+mi
+);
+
+337 
+	`tv_þ—r
+ (&
+c
+->
+c2
+.
+timev®
+);
+
+339 
+aùiÚ
+)
+
+341 
+TA_TUN_READ
+:
+
+342 
+lookšg_fÜ
+ = 
+TUN_READ
+;
+
+343 
+tun_šput_³ndšg
+ = 
+NULL
+;
+
+344 
+	`io_wa™
+ (
+c
+, 
+IOW_READ_TUN
+);
+
+346 
+TA_SOCKET_READ
+:
+
+347 
+lookšg_fÜ
+ = 
+SOCKET_READ
+;
+
+348 
+tun_šput_³ndšg
+ = 
+NULL
+;
+
+349 
+	`io_wa™
+ (
+c
+, 
+IOW_READ_LINK
+);
+
+351 
+TA_TUN_WRITE
+:
+
+352 
+lookšg_fÜ
+ = 
+TUN_WRITE
+;
+
+353 
+tun_šput_³ndšg
+ = 
+NULL
+;
+
+354 
+c
+->
+c2
+.
+timev®
+.
+tv_£c
+ = 1;
+
+355 
+	`³rf_push
+ (
+PERF_PROC_OUT_TUN_MTCP
+);
+
+356 
+	`io_wa™
+ (
+c
+, 
+IOW_TO_TUN
+);
+
+357 
+	`³rf_pÝ
+ ();
+
+359 
+TA_SOCKET_WRITE
+:
+
+360 
+lookšg_fÜ
+ = 
+SOCKET_WRITE
+;
+
+361 
+	`io_wa™
+ (
+c
+, 
+IOW_TO_LINK
+|
+IOW_READ_TUN_FORCE
+);
+
+364 
+	`msg
+ (
+M_FATAL
+, "MULTI TCP: muÉi_tý_wa™_l™e, unhªdËd‡ùiÚ=%d", 
+aùiÚ
+);
+
+367 ià(
+tun_šput_³ndšg
+ && (
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ & 
+TUN_READ
+))
+
+368 *
+tun_šput_³ndšg
+ = 
+Œue
+;
+
+370 ià(
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ & 
+lookšg_fÜ
+)
+
+372  
+aùiÚ
+;
+
+376 
+aùiÚ
+)
+
+379 
+TA_SOCKET_WRITE
+:
+
+380  
+TA_SOCKET_WRITE_DEFERRED
+;
+
+383 
+TA_TUN_WRITE
+:
+
+384  
+TA_TUN_WRITE_TIMEOUT
+;
+
+387  
+TA_UNDEF
+;
+
+389 
+	}
+}
+
+391 
+muÉi_š¡ªû
+ *
+
+392 
+	$muÉi_tý_di¥©ch
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+aùiÚ
+)
+
+394 cÚ¡ 
+mµ_æags
+ = 
+MPP_PRE_SELECT
+|
+MPP_RECORD_TOUCH
+;
+
+395 
+muÉi_š¡ªû
+ *
+touched
+ = 
+mi
+;
+
+396 
+m
+->
+mµ_touched
+ = &
+touched
+;
+
+398 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP: muÉi_tý_di¥©ch‡=% mi=" 
+±r_fÜm©
+,
+
+399 
+	`´aù
+(
+aùiÚ
+),
+
+400 (
+±r_ty³
+)
+mi
+);
+
+402 
+aùiÚ
+)
+
+404 
+TA_TUN_READ
+:
+
+405 
+	`»ad_šcomšg_tun
+ (&
+m
+->
+tÝ
+);
+
+406 ià(!
+	`IS_SIG
+ (&
+m
+->
+tÝ
+))
+
+407 
+	`muÉi_´oûss_šcomšg_tun
+ (
+m
+, 
+mµ_æags
+);
+
+409 
+TA_SOCKET_READ
+:
+
+410 
+TA_SOCKET_READ_RESIDUAL
+:
+
+411 
+	`ASSERT
+ (
+mi
+);
+
+412 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+);
+
+413 
+	`£t_´efix
+ (
+mi
+);
+
+414 
+	`»ad_šcomšg_lšk
+ (&
+mi
+->
+cÚ‹xt
+);
+
+415 
+	`þ—r_´efix
+ ();
+
+416 ià(!
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+))
+
+418 
+	`muÉi_´oûss_šcomšg_lšk
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+419 ià(!
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+))
+
+420 
+	`¡»am_buf_»ad_£tup
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_sock‘
+);
+
+423 
+TA_TIMEOUT
+:
+
+424 
+	`muÉi_´oûss_timeout
+ (
+m
+, 
+mµ_æags
+);
+
+426 
+TA_TUN_WRITE
+:
+
+427 
+	`muÉi_´oûss_outgošg_tun
+ (
+m
+, 
+mµ_æags
+);
+
+429 
+TA_TUN_WRITE_TIMEOUT
+:
+
+430 
+	`muÉi_´oûss_drÝ_outgošg_tun
+ (
+m
+, 
+mµ_æags
+);
+
+432 
+TA_SOCKET_WRITE_READY
+:
+
+433 
+	`ASSERT
+ (
+mi
+);
+
+434 
+	`muÉi_tý_´oûss_outgošg_lšk_»ady
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+436 
+TA_SOCKET_WRITE
+:
+
+437 
+	`muÉi_tý_´oûss_outgošg_lšk
+ (
+m
+, 
+çl£
+, 
+mµ_æags
+);
+
+439 
+TA_SOCKET_WRITE_DEFERRED
+:
+
+440 
+	`muÉi_tý_´oûss_outgošg_lšk
+ (
+m
+, 
+Œue
+, 
+mµ_æags
+);
+
+442 
+TA_INITIAL
+:
+
+443 
+	`ASSERT
+ (
+mi
+);
+
+444 
+	`muÉi_tý_£t_glob®_rw_æags
+ (
+m
+, 
+mi
+);
+
+445 
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+448 
+	`msg
+ (
+M_FATAL
+, "MULTI TCP: muÉi_tý_di¥©ch, unhªdËd‡ùiÚ=%d", 
+aùiÚ
+);
+
+451 
+m
+->
+mµ_touched
+ = 
+NULL
+;
+
+452  
+touched
+;
+
+453 
+	}
+}
+
+456 
+	$muÉi_tý_po¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+aùiÚ
+)
+
+458 
+cÚ‹xt
+ *
+c
+ = 
+	`muÉi_tý_cÚ‹xt
+ (
+m
+, 
+mi
+);
+
+459 
+ÃwaùiÚ
+ = 
+TA_UNDEF
+;
+
+461 
+	#MTP_NONE
+ 0
+
+	)
+
+462 
+	#MTP_TUN_OUT
+ (1<<0)
+
+	)
+
+463 
+	#MTP_LINK_OUT
+ (1<<1)
+
+	)
+
+464 
+æags
+ = 
+MTP_NONE
+;
+
+466 ià(
+	`TUN_OUT
+(
+c
+))
+
+467 
+æags
+ |ð
+MTP_TUN_OUT
+;
+
+468 ià(
+	`LINK_OUT
+(
+c
+))
+
+469 
+æags
+ |ð
+MTP_LINK_OUT
+;
+
+471 
+æags
+)
+
+473 
+MTP_TUN_OUT
+|
+MTP_LINK_OUT
+:
+
+474 
+MTP_TUN_OUT
+:
+
+475 
+ÃwaùiÚ
+ = 
+TA_TUN_WRITE
+;
+
+477 
+MTP_LINK_OUT
+:
+
+478 
+ÃwaùiÚ
+ = 
+TA_SOCKET_WRITE
+;
+
+480 
+MTP_NONE
+:
+
+481 ià(
+mi
+ && 
+	`sock‘_»ad_»sidu®
+ (
+c
+->
+c2
+.
+lšk_sock‘
+))
+
+482 
+ÃwaùiÚ
+ = 
+TA_SOCKET_READ_RESIDUAL
+;
+
+484 
+	`muÉi_tý_£t_glob®_rw_æags
+ (
+m
+, 
+mi
+);
+
+488 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+489 
+	`msg
+ (
+M_FATAL
+, "MULTI TCP: multi_tcp_post bad state, mi=%s flags=%d",
+
+490 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+),
+
+491 
+æags
+);
+
+492 
+	`gc_ä“
+ (&
+gc
+);
+
+497 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP: multi_tcp_post %s -> %s",
+
+498 
+	`´aù
+(
+aùiÚ
+),
+
+499 
+	`´aù
+(
+ÃwaùiÚ
+));
+
+501  
+ÃwaùiÚ
+;
+
+502 
+	}
+}
+
+505 
+	$muÉi_tý_aùiÚ
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, 
+aùiÚ
+, 
+boÞ
+ 
+pÞl
+)
+
+507 
+boÞ
+ 
+tun_šput_³ndšg
+ = 
+çl£
+;
+
+510 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI TCP: multi_tcp_action‡=%s…=%d",
+
+511 
+	`´aù
+(
+aùiÚ
+),
+
+512 
+pÞl
+);
+
+525 ià(
+pÞl
+ && 
+aùiÚ
+ !ð
+TA_SOCKET_READ_RESIDUAL
+)
+
+527 cÚ¡ 
+Üig_aùiÚ
+ = 
+aùiÚ
+;
+
+528 
+aùiÚ
+ = 
+	`muÉi_tý_wa™_l™e
+ (
+m
+, 
+mi
+,‡ùiÚ, &
+tun_šput_³ndšg
+);
+
+529 ià(
+aùiÚ
+ =ð
+TA_UNDEF
+)
+
+530 
+	`msg
+ (
+M_FATAL
+, "MULTI TCP: I/O wa™„equœed blockšg iÀmuÉi_tý_aùiÚ,‡ùiÚ=%d", 
+Üig_aùiÚ
+);
+
+537 
+muÉi_š¡ªû
+ *
+touched
+ = 
+	`muÉi_tý_di¥©ch
+ (
+m
+, 
+mi
+, 
+aùiÚ
+);
+
+543 ià(
+touched
+ && 
+	`IS_SIG
+ (&touched->
+cÚ‹xt
+))
+
+545 ià(
+mi
+ =ð
+touched
+)
+
+546 
+mi
+ = 
+NULL
+;
+
+547 
+	`muÉi_þo£_š¡ªû_Ú_sigÇl
+ (
+m
+, 
+touched
+);
+
+556 ià(
+m
+->
+³ndšg
+)
+
+557 
+mi
+ = 
+m
+->
+³ndšg
+;
+
+564 
+aùiÚ
+ = 
+	`muÉi_tý_po¡
+ (
+m
+, 
+mi
+,‡ction);
+
+571 ià(
+tun_šput_³ndšg
+ && 
+aùiÚ
+ =ð
+TA_UNDEF
+)
+
+573 
+aùiÚ
+ = 
+TA_TUN_READ
+;
+
+574 
+mi
+ = 
+NULL
+;
+
+575 
+tun_šput_³ndšg
+ = 
+çl£
+;
+
+576 
+pÞl
+ = 
+çl£
+;
+
+579 
+pÞl
+ = 
+Œue
+;
+
+581 } 
+aùiÚ
+ !ð
+TA_UNDEF
+);
+
+582 
+	}
+}
+
+585 
+	$muÉi_tý_´oûss_io
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+587 
+muÉi_tý
+ *
+mtý
+ = 
+m
+->mtcp;
+
+588 
+i
+;
+
+590 
+i
+ = 0; i < 
+mtý
+->
+n_e¤
+; ++i)
+
+592 
+ev’t_£t_»tuº
+ *
+e
+ = &
+mtý
+->
+e¤
+[
+i
+];
+
+595 ià(
+e
+->
+¬g
+ >ð
+MTCP_N
+)
+
+597 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+e
+->
+¬g
+;
+
+598 ià(
+mi
+)
+
+600 ià(
+e
+->
+rwæags
+ & 
+EVENT_WRITE
+)
+
+601 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+mi
+, 
+TA_SOCKET_WRITE_READY
+, 
+çl£
+);
+
+602 ià(
+e
+->
+rwæags
+ & 
+EVENT_READ
+)
+
+603 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+mi
+, 
+TA_SOCKET_READ
+, 
+çl£
+);
+
+608 #ifdeà
+ENABLE_MANAGEMENT
+
+
+609 ià(
+e
+->
+¬g
+ =ð
+MTCP_MANAGEMENT
+)
+
+611 
+	`ASSERT
+ (
+mªagem’t
+);
+
+612 
+	`mªagem’t_io
+ (
+mªagem’t
+);
+
+617 ià(
+e
+->
+¬g
+ =ð
+MTCP_TUN
+)
+
+619 ià(
+e
+->
+rwæags
+ & 
+EVENT_WRITE
+)
+
+620 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+NULL
+, 
+TA_TUN_WRITE
+, 
+çl£
+);
+
+621 ià(
+e
+->
+rwæags
+ & 
+EVENT_READ
+)
+
+622 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+NULL
+, 
+TA_TUN_READ
+, 
+çl£
+);
+
+625 ià(
+e
+->
+¬g
+ =ð
+MTCP_SOCKET
+)
+
+627 
+muÉi_š¡ªû
+ *
+mi
+;
+
+628 
+	`ASSERT
+ (
+m
+->
+tÝ
+.
+c2
+.
+lšk_sock‘
+);
+
+629 
+	`sock‘_»£t_li¡’_³rsi¡’t
+ (
+m
+->
+tÝ
+.
+c2
+.
+lšk_sock‘
+);
+
+630 
+mi
+ = 
+	`muÉi_ü—‹_š¡ªû_tý
+ (
+m
+);
+
+631 ià(
+mi
+)
+
+632 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+mi
+, 
+TA_INITIAL
+, 
+çl£
+);
+
+635 ià(
+e
+->
+¬g
+ =ð
+MTCP_SIG
+)
+
+637 
+	`g‘_sigÇl
+ (&
+m
+->
+tÝ
+.
+sig
+->
+sigÇl_»ûived
+);
+
+640 ià(
+	`IS_SIG
+ (&
+m
+->
+tÝ
+))
+
+643 
+mtý
+->
+n_e¤
+ = 0;
+
+649 
+muÉi_š¡ªû
+ *
+mi
+;
+
+650 !
+	`IS_SIG
+ (&
+m
+->
+tÝ
+è&& (
+mi
+ = 
+	`mbuf_³ek
+ (m->
+mbuf
+)è!ð
+NULL
+)
+
+652 
+	`muÉi_tý_aùiÚ
+ (
+m
+, 
+mi
+, 
+TA_SOCKET_WRITE
+, 
+Œue
+);
+
+655 
+	}
+}
+
+662 
+	$tuÂ–_£rv”_tý
+ (
+cÚ‹xt
+ *
+tÝ
+)
+
+664 
+muÉi_cÚ‹xt
+ 
+muÉi
+;
+
+665 
+¡©us
+;
+
+667 
+tÝ
+->
+mode
+ = 
+CM_TOP
+;
+
+668 
+	`cÚ‹xt_þ—r_2
+ (
+tÝ
+);
+
+671 
+	`š™_š¡ªû_hªdË_sigÇls
+ (
+tÝ
+,�Ý->
+es
+, 
+CC_HARD_USR1_TO_HUP
+);
+
+672 ià(
+	`IS_SIG
+ (
+tÝ
+))
+
+676 
+	`muÉi_š™
+ (&
+muÉi
+, 
+tÝ
+, 
+Œue
+, 
+MC_SINGLE_THREADED
+);
+
+679 
+	`muÉi_tÝ_š™
+ (&
+muÉi
+, 
+tÝ
+, 
+Œue
+);
+
+682 
+	`š™_mªagem’t_ÿÎback_muÉi
+ (&
+muÉi
+);
+
+685 
+	`š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+tÝ
+, 
+ISC_SERVER
+);
+
+688 
+Œue
+)
+
+690 
+	`³rf_push
+ (
+PERF_EVENT_LOOP
+);
+
+693 
+	`muÉi_g‘_timeout
+ (&
+muÉi
+, &muÉi.
+tÝ
+.
+c2
+.
+timev®
+);
+
+694 
+¡©us
+ = 
+	`muÉi_tý_wa™
+ (&
+muÉi
+.
+tÝ
+, muÉi.
+mtý
+);
+
+695 
+	`MULTI_CHECK_SIG
+ (&
+muÉi
+);
+
+698 
+	`muÉi_´oûss_³r_£cÚd_tim”s
+ (&
+muÉi
+);
+
+701 ià(
+¡©us
+ > 0)
+
+704 
+	`muÉi_tý_´oûss_io
+ (&
+muÉi
+);
+
+705 
+	`MULTI_CHECK_SIG
+ (&
+muÉi
+);
+
+707 ià(
+¡©us
+ == 0)
+
+709 
+	`muÉi_tý_aùiÚ
+ (&
+muÉi
+, 
+NULL
+, 
+TA_TIMEOUT
+, 
+çl£
+);
+
+712 
+	`³rf_pÝ
+ ();
+
+716 
+	`unš™_mªagem’t_ÿÎback_muÉi
+ (&
+muÉi
+);
+
+719 
+	`muÉi_ifcÚfig_poÞ_³rsi¡
+ (&
+muÉi
+, 
+Œue
+);
+
+722 
+	`muÉi_unš™
+ (&
+muÉi
+);
+
+723 
+	`muÉi_tÝ_ä“
+ (&
+muÉi
+);
+
+724 
+	`þo£_š¡ªû
+ (
+tÝ
+);
+
+725 
+	}
+}
+
+	@mtcp.h
+
+29 #iâdeà
+MTCP_H
+
+
+30 
+	#MTCP_H
+
+
+	)
+
+32 #ià
+P2MP_SERVER
+
+
+34 
+	~"ev’t.h
+"
+
+39 
+	smuÉi_tý
+
+
+41 
+ev’t_£t
+ *
+	mes
+;
+
+42 
+ev’t_£t_»tuº
+ *
+	me¤
+;
+
+43 
+	mn_e¤
+;
+
+44 
+	mmaxev’ts
+;
+
+45 
+	mtun_rwæags
+;
+
+46 #ifdeà
+ENABLE_MANAGEMENT
+
+
+47 
+	mmªagem’t_³rsi¡_æags
+;
+
+51 
+	gmuÉi_š¡ªû
+;
+
+52 
+	gcÚ‹xt
+;
+
+54 
+muÉi_tý
+ *
+muÉi_tý_š™
+ (
+maxev’ts
+, *
+maxþ›Ás
+);
+
+55 
+muÉi_tý_ä“
+ (
+muÉi_tý
+ *
+mtý
+);
+
+56 
+muÉi_tý_d”eã»nû_š¡ªû
+ (
+muÉi_tý
+ *
+mtý
+, 
+muÉi_š¡ªû
+ *
+mi
+);
+
+58 
+boÞ
+ 
+muÉi_tý_š¡ªû_¥ecific_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+);
+
+59 
+muÉi_tý_š¡ªû_¥ecific_ä“
+ (
+muÉi_š¡ªû
+ *
+mi
+);
+
+61 
+muÉi_tý_lšk_out_deã¼ed
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+);
+
+71 
+tuÂ–_£rv”_tý
+ (
+cÚ‹xt
+ *
+tÝ
+);
+
+74 
+muÉi_tý_d–‘e_ev’t
+ (
+muÉi_tý
+ *
+mtý
+, 
+ev’t_t
+ 
+ev’t
+);
+
+	@mtu.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"commÚ.h
+"
+
+34 
+	~"bufãr.h
+"
+
+35 
+	~"”rÜ.h
+"
+
+36 
+	~"š‹g”.h
+"
+
+37 
+	~"mtu.h
+"
+
+39 
+	~"memdbg.h
+"
+
+43 
+	$®loc_buf_sock_tun
+ (
+bufãr
+ *
+buf
+,
+
+44 cÚ¡ 
+äame
+ *frame,
+
+45 cÚ¡ 
+boÞ
+ 
+tuÁ­_bufãr
+,
+
+46 cÚ¡ 
+®ign_mask
+)
+
+49 *
+buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (
+äame
+));
+
+50 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 
+	`FRAME_HEADROOM_ADJ
+ (
+äame
+, 
+®ign_mask
+)));
+
+51 
+buf
+->
+Ën
+ = 
+tuÁ­_bufãr
+ ? 
+	`MAX_RW_SIZE_TUN
+ (
+äame
+è: 
+	`MAX_RW_SIZE_LINK
+ (frame);
+
+52 
+	`ASSERT
+ (
+	`buf_§ã
+ (
+buf
+, 0));
+
+53 
+	}
+}
+
+56 
+	$äame_fš®ize
+ (
+äame
+ *frame,
+
+57 
+boÞ
+ 
+lšk_mtu_defšed
+,
+
+58 
+lšk_mtu
+,
+
+59 
+boÞ
+ 
+tun_mtu_defšed
+,
+
+60 
+tun_mtu
+)
+
+63 ià(
+tun_mtu_defšed
+)
+
+65 
+	`ASSERT
+ (!
+lšk_mtu_defšed
+);
+
+66 
+äame
+->
+lšk_mtu
+ = 
+tun_mtu
+ + 
+	`TUN_LINK_DELTA
+ (frame);
+
+70 
+	`ASSERT
+ (
+lšk_mtu_defšed
+);
+
+71 
+äame
+->
+lšk_mtu
+ =†ink_mtu;
+
+74 ià(
+	`TUN_MTU_SIZE
+ (
+äame
+è< 
+TUN_MTU_MIN
+)
+
+76 
+	`msg
+ (
+M_WARN
+, "TUN MTU v®u�(%dèmu¡ b�©†—¡ %d", 
+	`TUN_MTU_SIZE
+ (
+äame
+), 
+TUN_MTU_MIN
+);
+
+77 
+	`äame_´št
+ (
+äame
+, 
+M_FATAL
+, "MTU is�oo small");
+
+80 
+äame
+->
+lšk_mtu_dyÇmic
+ = f¿me->
+lšk_mtu
+;
+
+82 
+äame
+->
+exŒa_bufãr
+ +ð
+PAYLOAD_ALIGN
+;
+
+83 
+	}
+}
+
+89 
+	$äame_£t_mtu_dyÇmic
+ (
+äame
+ *äame, 
+mtu
+, 
+æags
+)
+
+92 #ifdeà
+ENABLE_DEBUG
+
+
+93 cÚ¡ 
+Üig_mtu
+ = 
+mtu
+;
+
+94 cÚ¡ 
+Üig_lšk_mtu_dyÇmic
+ = 
+äame
+->
+lšk_mtu_dyÇmic
+;
+
+97 
+	`ASSERT
+ (
+mtu
+ >= 0);
+
+99 ià(
+æags
+ & 
+SET_MTU_TUN
+)
+
+100 
+mtu
+ +ð
+	`TUN_LINK_DELTA
+ (
+äame
+);
+
+102 ià(!(
+æags
+ & 
+SET_MTU_UPPER_BOUND
+è|| 
+mtu
+ < 
+äame
+->
+lšk_mtu_dyÇmic
+)
+
+104 
+äame
+->
+lšk_mtu_dyÇmic
+ = 
+	`cÚ¡¿š_št
+ (
+
+105 
+mtu
+,
+
+106 
+	`EXPANDED_SIZE_MIN
+ (
+äame
+),
+
+107 
+	`EXPANDED_SIZE
+ (
+äame
+));
+
+110 
+	`dmsg
+ (
+D_MTU_DEBUG
+, "MTU DYNAMIC mtu=%d, flags=%u, %d -> %d",
+
+111 
+Üig_mtu
+,
+
+112 
+æags
+,
+
+113 
+Üig_lšk_mtu_dyÇmic
+,
+
+114 
+äame
+->
+lšk_mtu_dyÇmic
+);
+
+115 
+	}
+}
+
+123 
+	$äame_subŒaù_exŒa
+ (
+äame
+ *äame, cÚ¡ äam�*
+¤c
+)
+
+125 
+äame
+->
+exŒa_äame
+ -ð
+¤c
+->extra_frame;
+
+126 
+äame
+->
+exŒa_tun
+ +ð
+¤c
+->
+exŒa_äame
+;
+
+127 
+	}
+}
+
+130 
+	$äame_´št
+ (cÚ¡ 
+äame
+ *frame,
+
+131 
+Ëv–
+,
+
+132 cÚ¡ *
+´efix
+)
+
+134 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+135 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+136 ià(
+´efix
+)
+
+137 
+	`buf_´štf
+ (&
+out
+, "% ", 
+´efix
+);
+
+138 
+	`buf_´štf
+ (&
+out
+, "[");
+
+139 
+	`buf_´štf
+ (&
+out
+, " L:%d", 
+äame
+->
+lšk_mtu
+);
+
+140 
+	`buf_´štf
+ (&
+out
+, " D:%d", 
+äame
+->
+lšk_mtu_dyÇmic
+);
+
+141 
+	`buf_´štf
+ (&
+out
+, " EF:%d", 
+äame
+->
+exŒa_äame
+);
+
+142 
+	`buf_´štf
+ (&
+out
+, " EB:%d", 
+äame
+->
+exŒa_bufãr
+);
+
+143 
+	`buf_´štf
+ (&
+out
+, " ET:%d", 
+äame
+->
+exŒa_tun
+);
+
+144 
+	`buf_´štf
+ (&
+out
+, " EL:%d", 
+äame
+->
+exŒa_lšk
+);
+
+145 ià(
+äame
+->
+®ign_æags
+ && f¿me->
+®ign_adju¡
+)
+
+146 
+	`buf_´štf
+ (&
+out
+, " AF:%u/%d", 
+äame
+->
+®ign_æags
+, f¿me->
+®ign_adju¡
+);
+
+147 
+	`buf_´štf
+ (&
+out
+, " ]");
+
+149 
+	`msg
+ (
+Ëv–
+, "%s", 
+out
+.
+d©a
+);
+
+150 
+	`gc_ä“
+ (&
+gc
+);
+
+151 
+	}
+}
+
+153 
+	#MTUDISC_NOT_SUPPORTED_MSG
+ "--mtu-disøi nÙ suµÜ‹d oÀthi OS"
+
+	)
+
+156 
+	$£t_mtu_discov”_ty³
+ (
+sd
+, 
+mtu_ty³
+)
+
+158 ià(
+mtu_ty³
+ >= 0)
+
+160 #ià
+	`defšed
+(
+HAVE_SETSOCKOPT
+è&& defšed(
+SOL_IP
+è&& defšed(
+IP_MTU_DISCOVER
+)
+
+161 ià(
+£tsockÝt
+
+
+162 (
+sd
+, 
+SOL_IP
+, 
+IP_MTU_DISCOVER
+, &
+mtu_ty³
+,  (mtu_type)))
+
+163 
+	`msg
+ (
+M_ERR
+, "Error setting IP_MTU_DISCOVER�ype=%d on TCP/UDP socket",
+
+164 
+mtu_ty³
+);
+
+166 
+	`msg
+ (
+M_FATAL
+, 
+MTUDISC_NOT_SUPPORTED_MSG
+);
+
+169 
+	}
+}
+
+172 
+	$Œª¦©e_mtu_discov”_ty³_Çme
+ (cÚ¡ *
+Çme
+)
+
+174 #ià
+	`defšed
+(
+IP_PMTUDISC_DONT
+è&& defšed(
+IP_PMTUDISC_WANT
+è&& defšed(
+IP_PMTUDISC_DO
+)
+
+175 ià(!
+	`¡rcmp
+ (
+Çme
+, "yes"))
+
+176  
+IP_PMTUDISC_DO
+;
+
+177 ià(!
+	`¡rcmp
+ (
+Çme
+, "maybe"))
+
+178  
+IP_PMTUDISC_WANT
+;
+
+179 ià(!
+	`¡rcmp
+ (
+Çme
+, "no"))
+
+180  
+IP_PMTUDISC_DONT
+;
+
+181 
+	`msg
+ (
+M_FATAL
+,
+
+183 
+Çme
+);
+
+185 
+	`msg
+ (
+M_FATAL
+, 
+MTUDISC_NOT_SUPPORTED_MSG
+);
+
+188 
+	}
+}
+
+190 #ià
+EXTENDED_SOCKET_ERROR_CAPABILITY
+
+
+192 
+	s´obehdr
+
+
+194 
+ušt32_t
+ 
+	m‰l
+;
+
+195 
+timev®
+ 
+	mtv
+;
+
+199 
+	$fÜm©_ex‹nded_sock‘_”rÜ
+ (
+fd
+, *
+mtu
+, 
+gc_¬’a
+ *
+gc
+)
+
+201 
+»s
+;
+
+202 
+´obehdr
+ 
+rcvbuf
+;
+
+203 
+iovec
+ 
+iov
+;
+
+204 
+msghdr
+ 
+msg
+;
+
+205 
+cmsghdr
+ *
+cmsg
+;
+
+206 
+sock_ex‹nded_”r
+ *
+e
+;
+
+207 
+sockaddr_š
+ 
+addr
+;
+
+208 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+209 *
+cbuf
+ = (*è
+	`gc_m®loc
+ (256, 
+çl£
+, 
+gc
+);
+
+211 *
+mtu
+ = 0;
+
+213 
+Œue
+)
+
+215 
+	`mem£t
+ (&
+rcvbuf
+, -1,  (rcvbuf));
+
+216 
+iov
+.
+iov_ba£
+ = &
+rcvbuf
+;
+
+217 
+iov
+.
+iov_Ën
+ =  (
+rcvbuf
+);
+
+218 
+msg
+.
+msg_Çme
+ = (
+ušt8_t
+ *è&
+addr
+;
+
+219 
+msg
+.
+msg_Çm–’
+ =  (
+addr
+);
+
+220 
+msg
+.
+msg_iov
+ = &
+iov
+;
+
+221 
+msg
+.
+msg_iovËn
+ = 1;
+
+222 
+msg
+.
+msg_æags
+ = 0;
+
+223 
+msg
+.
+msg_cÚŒÞ
+ = 
+cbuf
+;
+
+224 
+msg
+.
+msg_cÚŒÞËn
+ = 256;
+
+226 
+»s
+ = 
+	`»cvmsg
+ (
+fd
+, &
+msg
+, 
+MSG_ERRQUEUE
+);
+
+227 ià(
+»s
+ < 0)
+
+228 
+ex™
+;
+
+230 
+e
+ = 
+NULL
+;
+
+232 
+cmsg
+ = 
+	`CMSG_FIRSTHDR
+ (&
+msg
+); cmsg; cmsg = 
+	`CMSG_NXTHDR
+ (&msg, cmsg))
+
+234 ià(
+cmsg
+->
+cmsg_Ëv–
+ =ð
+SOL_IP
+)
+
+236 ià(
+cmsg
+->
+cmsg_ty³
+ =ð
+IP_RECVERR
+)
+
+238 
+e
+ = (
+sock_ex‹nded_”r
+ *è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+242 
+	`buf_´štf
+ (&
+out
+ ,"CMSG=%d|", 
+cmsg
+->
+cmsg_ty³
+);
+
+246 ià(
+e
+ =ð
+NULL
+)
+
+248 
+	`buf_´štf
+ (&
+out
+, "NO-INFO|");
+
+249 
+ex™
+;
+
+252 
+e
+->
+“_”ºo
+)
+
+254 
+ETIMEDOUT
+:
+
+255 
+	`buf_´štf
+ (&
+out
+, "ETIMEDOUT|");
+
+257 
+EMSGSIZE
+:
+
+258 
+	`buf_´štf
+ (&
+out
+, "EMSGSIZE P©h-MTU=%d|", 
+e
+->
+“_šfo
+);
+
+259 *
+mtu
+ = 
+e
+->
+“_šfo
+;
+
+261 
+ECONNREFUSED
+:
+
+262 
+	`buf_´štf
+ (&
+out
+, "ECONNREFUSED|");
+
+264 
+EPROTO
+:
+
+265 
+	`buf_´štf
+ (&
+out
+, "EPROTO|");
+
+267 
+EHOSTUNREACH
+:
+
+268 
+	`buf_´štf
+ (&
+out
+, "EHOSTUNREACH|");
+
+270 
+ENETUNREACH
+:
+
+271 
+	`buf_´štf
+ (&
+out
+, "ENETUNREACH|");
+
+273 
+EACCES
+:
+
+274 
+	`buf_´štf
+ (&
+out
+, "EACCES|");
+
+277 
+	`buf_´štf
+ (&
+out
+, "UNKNOWN|");
+
+282 
+ex™
+:
+
+283 
+	`buf_rm�ž
+ (&
+out
+, '|');
+
+284  
+	`BSTR
+ (&
+out
+);
+
+285 
+	}
+}
+
+288 
+	$£t_sock_ex‹nded_”rÜ_·ssšg
+ (
+sd
+)
+
+290 
+Ú
+ = 1;
+
+291 ià(
+	`£tsockÝt
+ (
+sd
+, 
+SOL_IP
+, 
+IP_RECVERR
+, &
+Ú
+,  (on)))
+
+292 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+,
+
+294 
+	}
+}
+
+	@mtu.h
+
+25 #iâdeà
+MTU_H
+
+
+26 
+	#MTU_H
+
+
+	)
+
+28 
+	~"bufãr.h
+"
+
+55 
+	#ETHERNET_MTU
+ 1500
+
+	)
+
+61 
+	#TUN_MTU_MIN
+ 100
+
+	)
+
+66 
+	#LINK_MTU_DEFAULT
+ 1500
+
+	)
+
+71 
+	#TUN_MTU_DEFAULT
+ 1500
+
+	)
+
+76 
+	#TAP_MTU_EXTRA_DEFAULT
+ 32
+
+	)
+
+81 
+	#MSSFIX_DEFAULT
+ 1450
+
+	)
+
+87 
+	#PAYLOAD_ALIGN
+ 4
+
+	)
+
+94 
+	säame
+ {
+
+95 
+	mlšk_mtu
+;
+
+98 
+	mlšk_mtu_dyÇmic
+;
+
+101 
+	mexŒa_äame
+;
+
+108 
+	mexŒa_bufãr
+;
+
+118 
+	mexŒa_tun
+;
+
+123 
+	mexŒa_lšk
+;
+
+130 
+	#FRAME_HEADROOM_MARKER_DECRYPT
+ (1<<0)
+
+	)
+
+131 
+	#FRAME_HEADROOM_MARKER_FRAGMENT
+ (1<<1)
+
+	)
+
+132 
+	#FRAME_HEADROOM_MARKER_READ_LINK
+ (1<<2)
+
+	)
+
+133 
+	#FRAME_HEADROOM_MARKER_READ_STREAM
+ (1<<3)
+
+	)
+
+134 
+	m®ign_æags
+;
+
+135 
+	m®ign_adju¡
+;
+
+143 
+	#EXTRA_FRAME
+(
+f
+è((f)->
+exŒa_äame
+)
+
+	)
+
+149 
+	#TUN_LINK_DELTA
+(
+f
+è((f)->
+exŒa_äame
+ + (f)->
+exŒa_tun
+)
+
+	)
+
+154 
+	#TUN_MTU_SIZE
+(
+f
+è((f)->
+lšk_mtu
+ - 
+	`TUN_LINK_DELTA
+(f))
+
+	)
+
+155 
+	#TUN_MTU_SIZE_DYNAMIC
+(
+f
+è((f)->
+lšk_mtu_dyÇmic
+ - 
+	`TUN_LINK_DELTA
+(f))
+
+	)
+
+163 
+	#PAYLOAD_SIZE
+(
+f
+è((f)->
+lšk_mtu
+ - (f)->
+exŒa_äame
+)
+
+	)
+
+164 
+	#PAYLOAD_SIZE_DYNAMIC
+(
+f
+è((f)->
+lšk_mtu_dyÇmic
+ - (f)->
+exŒa_äame
+)
+
+	)
+
+170 
+	#EXPANDED_SIZE
+(
+f
+è((f)->
+lšk_mtu
+)
+
+	)
+
+171 
+	#EXPANDED_SIZE_DYNAMIC
+(
+f
+è((f)->
+lšk_mtu_dyÇmic
+)
+
+	)
+
+172 
+	#EXPANDED_SIZE_MIN
+(
+f
+è(
+TUN_MTU_MIN
+ + 
+	`TUN_LINK_DELTA
+(f))
+
+	)
+
+178 
+	#MAX_RW_SIZE_TUN
+(
+f
+è(
+	`PAYLOAD_SIZE
+(f))
+
+	)
+
+179 
+	#MAX_RW_SIZE_LINK
+(
+f
+è(
+	`EXPANDED_SIZE
+(fè+ (f)->
+exŒa_lšk
+)
+
+	)
+
+184 
+	#FRAME_HEADROOM_BASE
+(
+f
+è(
+	`TUN_LINK_DELTA
+(fè+ (f)->
+exŒa_bufãr
+ + (f)->
+exŒa_lšk
+)
+
+	)
+
+185 
+	#FRAME_HEADROOM
+(
+f
+è
+	`äame_h—droom
+(f, 0)
+
+	)
+
+186 
+	#FRAME_HEADROOM_ADJ
+(
+f
+, 
+fm
+è
+	`äame_h—droom
+(f, fm)
+
+	)
+
+192 
+	#BUF_SIZE
+(
+f
+è(
+	`TUN_MTU_SIZE
+(fè+ 
+	`FRAME_HEADROOM_BASE
+(fè* 2)
+
+	)
+
+198 
+äame_fš®ize
+ (
+äame
+ *frame,
+
+199 
+boÞ
+ 
+lšk_mtu_defšed
+,
+
+200 
+lšk_mtu
+,
+
+201 
+boÞ
+ 
+tun_mtu_defšed
+,
+
+202 
+tun_mtu
+);
+
+204 
+äame_subŒaù_exŒa
+ (
+äame
+ *äame, cÚ¡ äam�*
+¤c
+);
+
+206 
+äame_´št
+ (cÚ¡ 
+äame
+ *frame,
+
+207 
+Ëv–
+,
+
+208 cÚ¡ *
+´efix
+);
+
+210 
+£t_mtu_discov”_ty³
+ (
+sd
+, 
+mtu_ty³
+);
+
+211 
+Œª¦©e_mtu_discov”_ty³_Çme
+ (cÚ¡ *
+Çme
+);
+
+217 
+	#SET_MTU_TUN
+ (1<<0è
+
+	)
+
+218 
+	#SET_MTU_UPPER_BOUND
+ (1<<1è
+
+	)
+
+220 
+äame_£t_mtu_dyÇmic
+ (
+äame
+ *äame, 
+mtu
+, 
+æags
+);
+
+225 
+®loc_buf_sock_tun
+ (
+bufãr
+ *
+buf
+,
+
+226 cÚ¡ 
+äame
+ *frame,
+
+227 cÚ¡ 
+boÞ
+ 
+tuÁ­_bufãr
+,
+
+228 cÚ¡ 
+®ign_mask
+);
+
+236 #ià
+EXTENDED_SOCKET_ERROR_CAPABILITY
+
+
+238 
+£t_sock_ex‹nded_”rÜ_·ssšg
+ (
+sd
+);
+
+239 cÚ¡ *
+fÜm©_ex‹nded_sock‘_”rÜ
+ (
+fd
+, *
+mtu
+, 
+gc_¬’a
+ *
+gc
+);
+
+247 
+šlše
+ 
+
+248 
+	$äame_h—droom
+ (cÚ¡ 
+äame
+ *
+f
+, cÚ¡ 
+æag_mask
+)
+
+250 cÚ¡ 
+off£t
+ = 
+	`FRAME_HEADROOM_BASE
+ (
+f
+);
+
+251 cÚ¡ 
+adju¡
+ = (
+æag_mask
+ & 
+f
+->
+®ign_æags
+è? f->
+®ign_adju¡
+ : 0;
+
+252 cÚ¡ 
+d–�
+ = ((
+PAYLOAD_ALIGN
+ << 24è- (
+off£t
+ + 
+adju¡
+)) & (PAYLOAD_ALIGN - 1);
+
+253  
+off£t
+ + 
+d–�
+;
+
+254 
+	}
+}
+
+260 
+šlše
+ 
+
+261 
+	$äame_add_to_lšk_mtu
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+263 
+äame
+->
+lšk_mtu
+ +ð
+šüem’t
+;
+
+264 
+	}
+}
+
+266 
+šlše
+ 
+
+267 
+	$äame_add_to_exŒa_äame
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+269 
+äame
+->
+exŒa_äame
+ +ð
+šüem’t
+;
+
+270 
+	}
+}
+
+272 
+šlše
+ 
+
+273 
+	$äame_add_to_exŒa_tun
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+275 
+äame
+->
+exŒa_tun
+ +ð
+šüem’t
+;
+
+276 
+	}
+}
+
+278 
+šlše
+ 
+
+279 
+	$äame_add_to_exŒa_lšk
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+281 
+äame
+->
+exŒa_lšk
+ +ð
+šüem’t
+;
+
+282 
+	}
+}
+
+284 
+šlše
+ 
+
+285 
+	$äame_add_to_exŒa_bufãr
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+287 
+äame
+->
+exŒa_bufãr
+ +ð
+šüem’t
+;
+
+288 
+	}
+}
+
+290 
+šlše
+ 
+
+291 
+	$äame_add_to_®ign_adju¡
+ (
+äame
+ *äame, cÚ¡ 
+šüem’t
+)
+
+293 
+äame
+->
+®ign_adju¡
+ +ð
+šüem’t
+;
+
+294 
+	}
+}
+
+296 
+šlše
+ 
+
+297 
+	$äame_®ign_to_exŒa_äame
+ (
+äame
+ *frame)
+
+299 
+äame
+->
+®ign_adju¡
+ = f¿me->
+exŒa_äame
+ + f¿me->
+exŒa_lšk
+;
+
+300 
+	}
+}
+
+302 
+šlše
+ 
+
+303 
+	$äame_Ü_®ign_æags
+ (
+äame
+ *äame, cÚ¡ 
+æag_mask
+)
+
+305 
+äame
+->
+®ign_æags
+ |ð
+æag_mask
+;
+
+306 
+	}
+}
+
+308 
+šlše
+ 
+boÞ
+
+
+309 
+	$äame_defšed
+ (cÚ¡ 
+äame
+ *frame)
+
+311  
+äame
+->
+lšk_mtu
+ > 0;
+
+312 
+	}
+}
+
+	@mudp.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"muÉi.h
+"
+
+36 
+	~"fÜw¬d-šlše.h
+"
+
+38 
+	~"memdbg.h
+"
+
+46 
+muÉi_š¡ªû
+ *
+
+47 
+	$muÉi_g‘_ü—‹_š¡ªû_udp
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+49 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+50 
+mrou‹_addr
+ 
+»®
+;
+
+51 
+muÉi_š¡ªû
+ *
+mi
+ = 
+NULL
+;
+
+52 
+hash
+ *hash = 
+m
+->hash;
+
+54 ià(
+	`mrou‹_exŒaù_Ý’v²_sockaddr
+ (&
+»®
+, &
+m
+->
+tÝ
+.
+c2
+.
+äom
+.
+de¡
+, 
+Œue
+))
+
+56 
+hash_–em’t
+ *
+he
+;
+
+57 cÚ¡ 
+ušt32_t
+ 
+hv
+ = 
+	`hash_v®ue
+ (
+hash
+, &
+»®
+);
+
+58 
+hash_buck‘
+ *
+buck‘
+ = 
+	`hash_buck‘
+ (
+hash
+, 
+hv
+);
+
+60 
+he
+ = 
+	`hash_lookup_ç¡
+ (
+hash
+, 
+buck‘
+, &
+»®
+, 
+hv
+);
+
+62 ià(
+he
+)
+
+64 
+mi
+ = (
+muÉi_š¡ªû
+ *è
+he
+->
+v®ue
+;
+
+68 ià(!
+m
+->
+tÝ
+.
+c2
+.
+Žs_auth_¡ªd®Úe
+
+
+69 || 
+	`Žs_´e_deüy±_l™e
+ (
+m
+->
+tÝ
+.
+c2
+.
+Žs_auth_¡ªd®Úe
+, &m->tÝ.c2.
+äom
+, &m->tÝ.c2.
+buf
+))
+
+71 ià(
+	`äequ’cy_lim™_ev’t_®lowed
+ (
+m
+->
+Ãw_cÚÃùiÚ_lim™”
+))
+
+73 
+mi
+ = 
+	`muÉi_ü—‹_š¡ªû
+ (
+m
+, &
+»®
+);
+
+74 ià(
+mi
+)
+
+76 
+	`hash_add_ç¡
+ (
+hash
+, 
+buck‘
+, &
+mi
+->
+»®
+, 
+hv
+, mi);
+
+77 
+mi
+->
+did_»®_hash
+ = 
+Œue
+;
+
+82 
+	`msg
+ (
+D_MULTI_ERRORS
+,
+
+84 
+	`mrou‹_addr_´št
+ (&
+»®
+, &
+gc
+));
+
+89 #ifdeà
+ENABLE_DEBUG
+
+
+90 ià(
+	`check_debug_Ëv–
+ (
+D_MULTI_DEBUG
+))
+
+92 cÚ¡ *
+¡©us
+;
+
+94 ià(
+he
+ && 
+mi
+)
+
+95 
+¡©us
+ = "[succeeded]";
+
+96 ià(!
+he
+ && 
+mi
+)
+
+97 
+¡©us
+ = "[created]";
+
+99 
+¡©us
+ = "[failed]";
+
+101 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "GET INST BY REAL: %s %s",
+
+102 
+	`mrou‹_addr_´št
+ (&
+»®
+, &
+gc
+),
+
+103 
+¡©us
+);
+
+108 
+	`gc_ä“
+ (&
+gc
+);
+
+109 
+	`ASSERT
+ (!(
+mi
+ && mi->
+h®t
+));
+
+110  
+mi
+;
+
+111 
+	}
+}
+
+116 
+šlše
+ 
+
+117 
+	$muÉi_´oûss_outgošg_lšk
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+)
+
+119 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`muÉi_´oûss_outgošg_lšk_´e
+ (
+m
+);
+
+120 ià(
+mi
+)
+
+121 
+	`muÉi_´oûss_outgošg_lšk_dowÜk
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+122 
+	}
+}
+
+128 
+	$muÉi_´oûss_io_udp
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+130 cÚ¡ 
+¡©us
+ = 
+m
+->
+tÝ
+.
+c2
+.
+ev’t_£t_¡©us
+;
+
+131 cÚ¡ 
+mµ_æags
+ = 
+m
+->
+tÝ
+.
+c2
+.
+ç¡_io
+
+
+132 ? (
+MPP_CONDITIONAL_PRE_SELECT
+ | 
+MPP_CLOSE_ON_SIGNAL
+)
+
+133 : (
+MPP_PRE_SELECT
+ | 
+MPP_CLOSE_ON_SIGNAL
+);
+
+135 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+136 
+buf
+[16];
+
+137 
+buf
+[0] = 0;
+
+138 ià(
+¡©us
+ & 
+SOCKET_READ
+)
+
+139 
+	`¡rÿt
+ (
+buf
+, "SR/");
+
+140 ià(
+¡©us
+ & 
+SOCKET_WRITE
+)
+
+141 
+	`¡rÿt
+ (
+buf
+, "SW/");
+
+142 ià(
+¡©us
+ & 
+TUN_READ
+)
+
+143 
+	`¡rÿt
+ (
+buf
+, "TR/");
+
+144 ià(
+¡©us
+ & 
+TUN_WRITE
+)
+
+145 
+	`¡rÿt
+ (
+buf
+, "TW/");
+
+146 
+	`´štf
+ ("IO %s\n", 
+buf
+);
+
+149 #ifdeà
+ENABLE_MANAGEMENT
+
+
+150 ià(
+¡©us
+ & (
+MANAGEMENT_READ
+|
+MANAGEMENT_WRITE
+))
+
+152 
+	`ASSERT
+ (
+mªagem’t
+);
+
+153 
+	`mªagem’t_io
+ (
+mªagem’t
+);
+
+158 ià(
+¡©us
+ & 
+SOCKET_WRITE
+)
+
+160 
+	`muÉi_´oûss_outgošg_lšk
+ (
+m
+, 
+mµ_æags
+);
+
+163 ià(
+¡©us
+ & 
+TUN_WRITE
+)
+
+165 
+	`muÉi_´oûss_outgošg_tun
+ (
+m
+, 
+mµ_æags
+);
+
+168 ià(
+¡©us
+ & 
+SOCKET_READ
+)
+
+170 
+	`»ad_šcomšg_lšk
+ (&
+m
+->
+tÝ
+);
+
+171 
+	`muÉi_»Ëa£_io_lock
+ (
+m
+);
+
+172 ià(!
+	`IS_SIG
+ (&
+m
+->
+tÝ
+))
+
+173 
+	`muÉi_´oûss_šcomšg_lšk
+ (
+m
+, 
+NULL
+, 
+mµ_æags
+);
+
+176 ià(
+¡©us
+ & 
+TUN_READ
+)
+
+178 
+	`»ad_šcomšg_tun
+ (&
+m
+->
+tÝ
+);
+
+179 
+	`muÉi_»Ëa£_io_lock
+ (
+m
+);
+
+180 ià(!
+	`IS_SIG
+ (&
+m
+->
+tÝ
+))
+
+181 
+	`muÉi_´oûss_šcomšg_tun
+ (
+m
+, 
+mµ_æags
+);
+
+183 
+	}
+}
+
+189 
+šlše
+ 
+
+190 
+	$p2mp_iow_æags
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+)
+
+192 
+æags
+ = 
+IOW_WAIT_SIGNAL
+;
+
+193 ià(
+m
+->
+³ndšg
+)
+
+195 ià(
+	`TUN_OUT
+ (&
+m
+->
+³ndšg
+->
+cÚ‹xt
+))
+
+196 
+æags
+ |ð
+IOW_TO_TUN
+;
+
+197 ià(
+	`LINK_OUT
+ (&
+m
+->
+³ndšg
+->
+cÚ‹xt
+))
+
+198 
+æags
+ |ð
+IOW_TO_LINK
+;
+
+200 ià(
+	`mbuf_defšed
+ (
+m
+->
+mbuf
+))
+
+201 
+æags
+ |ð
+IOW_MBUF
+;
+
+203 
+æags
+ |ð
+IOW_READ
+;
+
+205  
+æags
+;
+
+206 
+	}
+}
+
+221 
+	$tuÂ–_£rv”_udp_sšgË_th»aded
+ (
+cÚ‹xt
+ *
+tÝ
+)
+
+223 
+muÉi_cÚ‹xt
+ 
+muÉi
+;
+
+225 
+tÝ
+->
+mode
+ = 
+CM_TOP
+;
+
+226 
+	`cÚ‹xt_þ—r_2
+ (
+tÝ
+);
+
+229 
+	`š™_š¡ªû_hªdË_sigÇls
+ (
+tÝ
+,�Ý->
+es
+, 
+CC_HARD_USR1_TO_HUP
+);
+
+230 ià(
+	`IS_SIG
+ (
+tÝ
+))
+
+234 
+	`muÉi_š™
+ (&
+muÉi
+, 
+tÝ
+, 
+çl£
+, 
+MC_SINGLE_THREADED
+);
+
+237 
+	`muÉi_tÝ_š™
+ (&
+muÉi
+, 
+tÝ
+, 
+Œue
+);
+
+240 
+	`š™_mªagem’t_ÿÎback_muÉi
+ (&
+muÉi
+);
+
+243 
+	`š™Ÿliz©iÚ_£qu’û_com¶‘ed
+ (
+tÝ
+, 
+ISC_SERVER
+);
+
+246 
+Œue
+)
+
+248 
+	`³rf_push
+ (
+PERF_EVENT_LOOP
+);
+
+251 
+	`muÉi_g‘_timeout
+ (&
+muÉi
+, &muÉi.
+tÝ
+.
+c2
+.
+timev®
+);
+
+252 
+	`io_wa™
+ (&
+muÉi
+.
+tÝ
+, 
+	`p2mp_iow_æags
+ (&multi));
+
+253 
+	`MULTI_CHECK_SIG
+ (&
+muÉi
+);
+
+256 
+	`muÉi_´oûss_³r_£cÚd_tim”s
+ (&
+muÉi
+);
+
+259 ià(
+muÉi
+.
+tÝ
+.
+c2
+.
+ev’t_£t_¡©us
+ =ð
+ES_TIMEOUT
+)
+
+261 
+	`muÉi_´oûss_timeout
+ (&
+muÉi
+, 
+MPP_PRE_SELECT
+|
+MPP_CLOSE_ON_SIGNAL
+);
+
+266 
+	`muÉi_´oûss_io_udp
+ (&
+muÉi
+);
+
+267 
+	`MULTI_CHECK_SIG
+ (&
+muÉi
+);
+
+270 
+	`³rf_pÝ
+ ();
+
+274 
+	`unš™_mªagem’t_ÿÎback_muÉi
+ (&
+muÉi
+);
+
+277 
+	`muÉi_ifcÚfig_poÞ_³rsi¡
+ (&
+muÉi
+, 
+Œue
+);
+
+280 
+	`muÉi_unš™
+ (&
+muÉi
+);
+
+281 
+	`muÉi_tÝ_ä“
+ (&
+muÉi
+);
+
+282 
+	`þo£_š¡ªû
+ (
+tÝ
+);
+
+283 
+	}
+}
+
+286 
+	$tuÂ–_£rv”_udp
+ (
+cÚ‹xt
+ *
+tÝ
+)
+
+288 
+	`tuÂ–_£rv”_udp_sšgË_th»aded
+ (
+tÝ
+);
+
+289 
+	}
+}
+
+	@mudp.h
+
+29 #iâdeà
+MUDP_H
+
+
+30 
+	#MUDP_H
+
+
+	)
+
+32 #ià
+P2MP_SERVER
+
+
+34 
+	gcÚ‹xt
+;
+
+35 
+	gmuÉi_cÚ‹xt
+;
+
+47 
+tuÂ–_£rv”_udp
+ (
+cÚ‹xt
+ *
+tÝ
+);
+
+68 
+muÉi_š¡ªû
+ *
+muÉi_g‘_ü—‹_š¡ªû_udp
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+	@multi.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"muÉi.h
+"
+
+36 
+	~"push.h
+"
+
+37 
+	~"misc.h
+"
+
+38 
+	~"Ùime.h
+"
+
+39 
+	~"g»mlš.h
+"
+
+40 
+	~"m¡©s.h
+"
+
+42 
+	~"memdbg.h
+"
+
+44 
+	~"fÜw¬d-šlše.h
+"
+
+45 
+	~"pf-šlše.h
+"
+
+49 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+51 
+	$id
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+53 ià(
+mi
+)
+
+54  
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+);
+
+57 
+	}
+}
+
+60 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+62 
+	$£t_cc_cÚfig
+ (
+muÉi_š¡ªû
+ *
+mi
+, 
+bufãr_li¡
+ *
+cc_cÚfig
+)
+
+64 ià(
+mi
+->
+cc_cÚfig
+)
+
+65 
+	`bufãr_li¡_ä“
+ (
+mi
+->
+cc_cÚfig
+);
+
+66 
+mi
+->
+cc_cÚfig
+ = cc_config;
+
+67 
+	}
+}
+
+70 
+šlše
+ 
+
+71 
+	$upd©e_m¡©_n_þ›Ás
+(cÚ¡ 
+n_þ›Ás
+)
+
+73 #ifdeà
+ENABLE_MEMSTATS
+
+
+74 ià(
+mm­_¡©s
+)
+
+75 
+mm­_¡©s
+->
+n_þ›Ás
+ =‚_clients;
+
+77 
+	}
+}
+
+79 
+boÞ
+
+
+80 
+	$Ë¬n_add»ss_sü�t
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+,
+
+81 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+,
+
+82 cÚ¡ *
+Ý
+,
+
+83 cÚ¡ 
+mrou‹_addr
+ *
+addr
+)
+
+85 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+86 
+’v_£t
+ *
+es
+;
+
+87 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+88 
+¶ugš_li¡
+ *
+¶ugšs
+;
+
+91 ià(
+mi
+ && mi->
+cÚ‹xt
+.
+c2
+.
+es
+)
+
+92 
+es
+ = 
+mi
+->
+cÚ‹xt
+.
+c2
+.es;
+
+94 
+es
+ = 
+	`’v_£t_ü—‹
+ (&
+gc
+);
+
+97 ià(
+mi
+)
+
+98 
+¶ugšs
+ = 
+mi
+->
+cÚ‹xt
+.plugins;
+
+100 
+¶ugšs
+ = 
+m
+->
+tÝ
+.plugins;
+
+102 ià(
+	`¶ugš_defšed
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_LEARN_ADDRESS
+))
+
+104 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+105 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s",
+
+106 
+Ý
+,
+
+107 
+	`mrou‹_addr_´št
+ (
+addr
+, &
+gc
+));
+
+108 ià(
+mi
+)
+
+109 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+));
+
+110 ià(
+	`¶ugš_ÿÎ
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_LEARN_ADDRESS
+, &
+¬gv
+, 
+NULL
+, 
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+112 
+	`msg
+ (
+M_WARN
+, "WARNING:†earn-address…lugin call failed");
+
+113 
+»t
+ = 
+çl£
+;
+
+115 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+118 ià(
+m
+->
+tÝ
+.
+ÝtiÚs
+.
+Ë¬n_add»ss_sü�t
+)
+
+120 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+121 
+	`£‹nv_¡r
+ (
+es
+, "script_type", "learn-address");
+
+122 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sc %s %s",
+
+123 
+m
+->
+tÝ
+.
+ÝtiÚs
+.
+Ë¬n_add»ss_sü�t
+,
+
+124 
+Ý
+,
+
+125 
+	`mrou‹_addr_´št
+ (
+addr
+, &
+gc
+));
+
+126 ià(
+mi
+)
+
+127 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+));
+
+128 ià(!
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+es
+, 0, "--learn-address"))
+
+129 
+»t
+ = 
+çl£
+;
+
+130 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+133 
+	`gc_ä“
+ (&
+gc
+);
+
+134  
+»t
+;
+
+135 
+	}
+}
+
+138 
+	$muÉi_ifcÚfig_poÞ_³rsi¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+boÞ
+ 
+fÜû
+)
+
+141 ià(
+m
+->
+ifcÚfig_poÞ
+
+
+142 && 
+m
+->
+tÝ
+.
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+
+
+143 && (
+fÜû
+ || 
+	`ifcÚfig_poÞ_wr™e_Œigg”
+ (
+m
+->
+tÝ
+.
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+)))
+
+145 
+	`ifcÚfig_poÞ_wr™e
+ (
+m
+->
+tÝ
+.
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+, m->
+ifcÚfig_poÞ
+);
+
+147 
+	}
+}
+
+150 
+	$muÉi_»­_¿nge
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+,
+
+151 
+¡¬t_buck‘
+,
+
+152 
+’d_buck‘
+)
+
+154 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+155 
+hash_™”©Ü
+ 
+hi
+;
+
+156 
+hash_–em’t
+ *
+he
+;
+
+158 ià(
+¡¬t_buck‘
+ < 0)
+
+160 
+¡¬t_buck‘
+ = 0;
+
+161 
+’d_buck‘
+ = 
+	`hash_n_buck‘s
+ (
+m
+->
+vhash
+);
+
+164 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: REAP„ªg�%d -> %d", 
+¡¬t_buck‘
+, 
+’d_buck‘
+);
+
+165 
+	`hash_™”©Ü_š™_¿nge
+ (
+m
+->
+vhash
+, &
+hi
+, 
+¡¬t_buck‘
+, 
+’d_buck‘
+);
+
+166 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)è!ð
+NULL
+)
+
+168 
+muÉi_rou‹
+ *
+r
+ = (muÉi_rou‹ *è
+he
+->
+v®ue
+;
+
+169 ià(!
+	`muÉi_rou‹_defšed
+ (
+m
+, 
+r
+))
+
+171 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: REAP DEL %s",
+
+172 
+	`mrou‹_addr_´št
+ (&
+r
+->
+addr
+, &
+gc
+));
+
+173 
+	`Ë¬n_add»ss_sü�t
+ (
+m
+, 
+NULL
+, "d–‘e", &
+r
+->
+addr
+);
+
+174 
+	`muÉi_rou‹_d–
+ (
+r
+);
+
+175 
+	`hash_™”©Ü_d–‘e_–em’t
+ (&
+hi
+);
+
+178 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+179 
+	`gc_ä“
+ (&
+gc
+);
+
+180 
+	}
+}
+
+183 
+	$muÉi_»­_®l
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+)
+
+185 
+	`muÉi_»­_¿nge
+ (
+m
+, -1, 0);
+
+186 
+	}
+}
+
+188 
+muÉi_»­
+ *
+
+189 
+	$muÉi_»­_Ãw
+ (
+buck‘s_³r_·ss
+)
+
+191 
+muÉi_»­
+ *
+mr
+;
+
+192 
+	`ALLOC_OBJ
+ (
+mr
+, 
+muÉi_»­
+);
+
+193 
+mr
+->
+buck‘_ba£
+ = 0;
+
+194 
+mr
+->
+buck‘s_³r_·ss
+ = buckets_per_pass;
+
+195 
+mr
+->
+Ï¡_ÿÎ
+ = 
+now
+;
+
+196  
+mr
+;
+
+197 
+	}
+}
+
+200 
+	$muÉi_»­_´oûss_dowÜk
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+)
+
+202 
+muÉi_»­
+ *
+mr
+ = 
+m
+->
+»­”
+;
+
+203 ià(
+mr
+->
+buck‘_ba£
+ >ð
+	`hash_n_buck‘s
+ (
+m
+->
+vhash
+))
+
+204 
+mr
+->
+buck‘_ba£
+ = 0;
+
+205 
+	`muÉi_»­_¿nge
+ (
+m
+, 
+mr
+->
+buck‘_ba£
+, mr->buck‘_ba£ + mr->
+buck‘s_³r_·ss
+);
+
+206 
+mr
+->
+buck‘_ba£
+ +ðmr->
+buck‘s_³r_·ss
+;
+
+207 
+mr
+->
+Ï¡_ÿÎ
+ = 
+now
+;
+
+208 
+	}
+}
+
+211 
+	$muÉi_»­_ä“
+ (
+muÉi_»­
+ *
+mr
+)
+
+213 
+	`ä“
+ (
+mr
+);
+
+214 
+	}
+}
+
+220 
+	$»­_buck‘s_³r_·ss
+ (
+n_buck‘s
+)
+
+222  
+	`cÚ¡¿š_št
+ (
+n_buck‘s
+ / 
+REAP_DIVISOR
+, 
+REAP_MIN
+, 
+REAP_MAX
+);
+
+223 
+	}
+}
+
+225 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+227 
+ušt32_t
+
+
+228 
+	$cid_hash_funùiÚ
+ (cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+)
+
+230 cÚ¡ *
+k
+ = (cÚ¡ *)
+key
+;
+
+231  (
+ušt32_t
+è*
+k
+;
+
+232 
+	}
+}
+
+234 
+boÞ
+
+
+235 
+	$cid_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+)
+
+237 cÚ¡ *
+k1
+ = (cÚ¡ *)
+key1
+;
+
+238 cÚ¡ *
+k2
+ = (cÚ¡ *)
+key2
+;
+
+239  *
+k1
+ =ð*
+k2
+;
+
+240 
+	}
+}
+
+248 
+	$muÉi_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+cÚ‹xt
+ *
+t
+, 
+boÞ
+ 
+tý_mode
+, 
+th»ad_mode
+)
+
+250 
+dev
+ = 
+DEV_TYPE_UNDEF
+;
+
+252 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: multi_init called,„=%d v=%d",
+
+253 
+t
+->
+ÝtiÚs
+.
+»®_hash_size
+,
+
+254 
+t
+->
+ÝtiÚs
+.
+vœtu®_hash_size
+);
+
+259 
+dev
+ = 
+	`dev_ty³_’um
+ (
+t
+->
+ÝtiÚs
+.dev,�->ÝtiÚs.
+dev_ty³
+);
+
+264 
+	`CLEAR
+ (*
+m
+);
+
+266 
+m
+->
+th»ad_mode
+ =�hread_mode;
+
+274 
+m
+->
+hash
+ = 
+	`hash_š™
+ (
+t
+->
+ÝtiÚs
+.
+»®_hash_size
+,
+
+275 
+	`g‘_¿ndom
+ (),
+
+276 
+mrou‹_addr_hash_funùiÚ
+,
+
+277 
+mrou‹_addr_com·»_funùiÚ
+);
+
+283 
+m
+->
+vhash
+ = 
+	`hash_š™
+ (
+t
+->
+ÝtiÚs
+.
+vœtu®_hash_size
+,
+
+284 
+	`g‘_¿ndom
+ (),
+
+285 
+mrou‹_addr_hash_funùiÚ
+,
+
+286 
+mrou‹_addr_com·»_funùiÚ
+);
+
+293 
+m
+->
+™”
+ = 
+	`hash_š™
+ (1,
+
+294 
+	`g‘_¿ndom
+ (),
+
+295 
+mrou‹_addr_hash_funùiÚ
+,
+
+296 
+mrou‹_addr_com·»_funùiÚ
+);
+
+298 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+299 
+m
+->
+cid_hash
+ = 
+	`hash_š™
+ (
+t
+->
+ÝtiÚs
+.
+»®_hash_size
+,
+
+301 
+cid_hash_funùiÚ
+,
+
+302 
+cid_com·»_funùiÚ
+);
+
+309 
+m
+->
+scheduË
+ = 
+	`scheduË_š™
+ ();
+
+315 
+m
+->
+Ãw_cÚÃùiÚ_lim™”
+ = 
+	`äequ’cy_lim™_š™
+ (
+t
+->
+ÝtiÚs
+.
+cf_max
+,
+
+316 
+t
+->
+ÝtiÚs
+.
+cf_³r
+);
+
+321 
+m
+->
+mbuf
+ = 
+	`mbuf_š™
+ (
+t
+->
+ÝtiÚs
+.
+n_bÿ¡_buf
+);
+
+326 
+m
+->
+¡©us_fže_v”siÚ
+ = 
+t
+->
+ÝtiÚs
+.status_file_version;
+
+333 ià(
+t
+->
+ÝtiÚs
+.
+ifcÚfig_poÞ_defšed
+)
+
+335 
+poÞ_ty³
+ = 
+IFCONFIG_POOL_INDIV
+;
+
+337 iàÐ
+dev
+ =ð
+DEV_TYPE_TUN
+ && 
+t
+->
+ÝtiÚs
+.
+tÝÞogy
+ =ð
+TOP_NET30
+ )
+
+338 
+poÞ_ty³
+ = 
+IFCONFIG_POOL_30NET
+;
+
+340 
+m
+->
+ifcÚfig_poÞ
+ = 
+	`ifcÚfig_poÞ_š™
+ (
+poÞ_ty³
+,
+
+341 
+t
+->
+ÝtiÚs
+.
+ifcÚfig_poÞ_¡¬t
+,
+
+342 
+t
+->
+ÝtiÚs
+.
+ifcÚfig_poÞ_’d
+,
+
+343 
+t
+->
+ÝtiÚs
+.
+du¶iÿ‹_ú
+,
+
+344 
+t
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_defšed
+,
+
+345 
+t
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_ba£
+,
+
+346 
+t
+->
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_Ãtb™s
+ );
+
+349 ià(
+t
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+)
+
+350 
+	`ifcÚfig_poÞ_»ad
+ (
+t
+->
+c1
+.
+ifcÚfig_poÞ_³rsi¡
+, 
+m
+->
+ifcÚfig_poÞ
+);
+
+356 
+m
+->
+rou‹_h–³r
+ = 
+	`mrou‹_h–³r_š™
+ (
+MULTI_CACHE_ROUTE_TTL
+);
+
+361 
+m
+->
+»­”
+ = 
+	`muÉi_»­_Ãw
+ (
+	`»­_buck‘s_³r_·ss
+ (
+t
+->
+ÝtiÚs
+.
+vœtu®_hash_size
+));
+
+366 
+	`CLEAR
+ (
+m
+->
+loÿl
+);
+
+367 
+	`ASSERT
+ (
+t
+->
+c1
+.
+tuÁ­
+);
+
+368 
+	`mrou‹_exŒaù_š_addr_t
+ (&
+m
+->
+loÿl
+, 
+t
+->
+c1
+.
+tuÁ­
+->local);
+
+373 
+m
+->
+max_þ›Ás
+ = 
+t
+->
+ÝtiÚs
+.max_clients;
+
+378 ià(
+tý_mode
+)
+
+379 
+m
+->
+mtý
+ = 
+	`muÉi_tý_š™
+ (
+t
+->
+ÝtiÚs
+.
+max_þ›Ás
+, &m->max_clients);
+
+380 
+m
+->
+tý_queue_lim™
+ = 
+t
+->
+ÝtiÚs
+.tcp_queue_limit;
+
+386 
+m
+->
+’abË_c2c
+ = 
+t
+->
+ÝtiÚs
+.enable_c2c;
+
+389 ià(
+t
+->
+ÝtiÚs
+.
+¡®e_rou‹s_check_š‹rv®
+ > 0)
+
+391 
+	`msg
+ (
+M_INFO
+, "Initializing stale„oute check�imer�o„unƒvery %i seconds‡nd�o„emoving„outes with‡ctivity�imeout older�han %i seconds",
+
+392 
+t
+->
+ÝtiÚs
+.
+¡®e_rou‹s_check_š‹rv®
+,�->ÝtiÚs.
+¡®e_rou‹s_agešg_time
+);
+
+393 
+	`ev’t_timeout_š™
+ (&
+m
+->
+¡®e_rou‹s_check_‘
+, 
+t
+->
+ÝtiÚs
+.
+¡®e_rou‹s_check_š‹rv®
+, 0);
+
+395 
+	}
+}
+
+398 
+	$muÉi_š¡ªû_¡ršg
+ (cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+, 
+boÞ
+ 
+nuÎ
+, 
+gc_¬’a
+ *
+gc
+)
+
+400 ià(
+mi
+)
+
+402 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+403 cÚ¡ *
+ú
+ = 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+Œue
+);
+
+405 ià(
+ú
+)
+
+406 
+	`buf_´štf
+ (&
+out
+, "%s/", 
+ú
+);
+
+407 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, 
+gc
+));
+
+408  
+	`BSTR
+ (&
+out
+);
+
+410 ià(
+nuÎ
+)
+
+411  
+NULL
+;
+
+414 
+	}
+}
+
+417 
+	$g’”©e_´efix
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+419 
+mi
+->
+msg_´efix
+ = 
+	`muÉi_š¡ªû_¡ršg
+ (mi, 
+Œue
+, &mi->
+gc
+);
+
+420 
+	`£t_´efix
+ (
+mi
+);
+
+421 
+	}
+}
+
+424 
+	$ung’”©e_´efix
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+426 
+mi
+->
+msg_´efix
+ = 
+NULL
+;
+
+427 
+	`£t_´efix
+ (
+mi
+);
+
+428 
+	}
+}
+
+431 
+	$mi_´efix
+ (cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+)
+
+433 ià(
+mi
+ && mi->
+msg_´efix
+)
+
+434  
+mi
+->
+msg_´efix
+;
+
+437 
+	}
+}
+
+445 
+	$muÉi_d–_œou‹s
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+446 
+muÉi_š¡ªû
+ *
+mi
+)
+
+448 cÚ¡ 
+œou‹
+ *
+œ
+;
+
+449 cÚ¡ 
+œou‹_�v6
+ *
+œ6
+;
+
+450 ià(
+	`TUNNEL_TYPE
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+è=ð
+DEV_TYPE_TUN
+)
+
+452 
+œ
+ = 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+œou‹s
+; i¸!ð
+NULL
+; i¸ðœ->
+Ãxt
+)
+
+453 
+	`mrou‹_h–³r_d–_œou‹
+ (
+m
+->
+rou‹_h–³r
+, 
+œ
+);
+
+455  
+œ6
+ = 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+œou‹s_�v6
+; ir6 !ð
+NULL
+; ir6 = ir6->
+Ãxt
+ )
+
+456 
+	`mrou‹_h–³r_d–_œou‹6
+ (
+m
+->
+rou‹_h–³r
+, 
+œ6
+);
+
+458 
+	}
+}
+
+461 
+	$£‹nv_¡©s
+ (
+cÚ‹xt
+ *
+c
+)
+
+463 
+	`£‹nv_couÁ”
+ (
+c
+->
+c2
+.
+es
+, "by‹s_»ûived", c->c2.
+lšk_»ad_by‹s
+);
+
+464 
+	`£‹nv_couÁ”
+ (
+c
+->
+c2
+.
+es
+, "by‹s_£Á", c->c2.
+lšk_wr™e_by‹s
+);
+
+465 
+	}
+}
+
+468 
+	$muÉi_þ›Á_discÚÃù_£‹nv
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+469 
+muÉi_š¡ªû
+ *
+mi
+)
+
+472 
+	`£‹nv_Œu¡ed
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, 
+	`g‘_lšk_sock‘_šfo
+ (&mi->context));
+
+475 
+	`£‹nv_¡©s
+ (&
+mi
+->
+cÚ‹xt
+);
+
+479 cÚ¡ 
+du¿tiÚ
+ = (è
+now
+ - 
+mi
+->
+ü—‹d
+;
+
+480 
+	`£‹nv_unsigÃd
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "time_du¿tiÚ", 
+du¿tiÚ
+);
+
+482 
+	}
+}
+
+485 
+	$muÉi_þ›Á_discÚÃù_sü�t
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+486 
+muÉi_š¡ªû
+ *
+mi
+)
+
+488 ià((
+mi
+->
+cÚ‹xt
+.
+c2
+.
+cÚ‹xt_auth
+ =ð
+CAS_SUCCEEDED
+ && mi->
+cÚÃùiÚ_e¡ablished_æag
+)
+
+489 || 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+cÚ‹xt_auth
+ =ð
+CAS_PARTIAL
+)
+
+491 
+	`muÉi_þ›Á_discÚÃù_£‹nv
+ (
+m
+, 
+mi
+);
+
+493 ià(
+	`¶ugš_defšed
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_DISCONNECT
+))
+
+495 ià(
+	`¶ugš_ÿÎ
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_DISCONNECT
+, 
+NULL
+, NULL, mi->cÚ‹xt.
+c2
+.
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+496 
+	`msg
+ (
+M_WARN
+, "WARNING: client-disconnect…lugin call failed");
+
+499 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_discÚÃù_sü�t
+)
+
+501 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+502 
+	`£‹nv_¡r
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "script_type", "client-disconnect");
+
+503 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sc", 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_discÚÃù_sü�t
+);
+
+504 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, 0, "--client-disconnect");
+
+505 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+507 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+508 ià(
+mªagem’t
+)
+
+509 
+	`mªagem’t_nÙify_þ›Á_þo£
+ (
+mªagem’t
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+, mi->cÚ‹xt.c2.
+es
+);
+
+513 
+	}
+}
+
+516 
+	$muÉi_þo£_š¡ªû
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+517 
+muÉi_š¡ªû
+ *
+mi
+,
+
+518 
+boÞ
+ 
+shutdown
+)
+
+520 
+	`³rf_push
+ (
+PERF_MULTI_CLOSE_INSTANCE
+);
+
+522 
+	`ASSERT
+ (!
+mi
+->
+h®t
+);
+
+523 
+mi
+->
+h®t
+ = 
+Œue
+;
+
+525 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: multi_close_instance called");
+
+528 
+m
+->
+n_þ›Ás
+ +ð
+mi
+->
+n_þ›Ás_d–�
+;
+
+529 
+	`upd©e_m¡©_n_þ›Ás
+(
+m
+->
+n_þ›Ás
+);
+
+530 
+mi
+->
+n_þ›Ás_d–�
+ = 0;
+
+533 ià(
+m
+->
+³ndšg
+ =ð
+mi
+)
+
+534 
+	`muÉi_£t_³ndšg
+ (
+m
+, 
+NULL
+);
+
+535 ià(
+m
+->
+—¾›¡_wakeup
+ =ð
+mi
+)
+
+536 
+m
+->
+—¾›¡_wakeup
+ = 
+NULL
+;
+
+538 ià(!
+shutdown
+)
+
+540 ià(
+mi
+->
+did_»®_hash
+)
+
+542 
+	`ASSERT
+ (
+	`hash_»move
+ (
+m
+->
+hash
+, &
+mi
+->
+»®
+));
+
+544 ià(
+mi
+->
+did_™”
+)
+
+546 
+	`ASSERT
+ (
+	`hash_»move
+ (
+m
+->
+™”
+, &
+mi
+->
+»®
+));
+
+548 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+549 ià(
+mi
+->
+did_cid_hash
+)
+
+551 
+	`ASSERT
+ (
+	`hash_»move
+ (
+m
+->
+cid_hash
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+.
+cid
+));
+
+555 
+	`scheduË_»move_’Œy
+ (
+m
+->
+scheduË
+, (
+scheduË_’Œy
+ *è
+mi
+);
+
+557 
+	`ifcÚfig_poÞ_»Ëa£
+ (
+m
+->
+ifcÚfig_poÞ
+, 
+mi
+->
+vaddr_hªdË
+, 
+çl£
+);
+
+559 ià(
+mi
+->
+did_œou‹s
+)
+
+561 
+	`muÉi_d–_œou‹s
+ (
+m
+, 
+mi
+);
+
+562 
+mi
+->
+did_œou‹s
+ = 
+çl£
+;
+
+565 ià(
+m
+->
+mtý
+)
+
+566 
+	`muÉi_tý_d”eã»nû_š¡ªû
+ (
+m
+->
+mtý
+, 
+mi
+);
+
+568 
+	`mbuf_d”eã»nû_š¡ªû
+ (
+m
+->
+mbuf
+, 
+mi
+);
+
+571 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+572 
+	`£t_cc_cÚfig
+ (
+mi
+, 
+NULL
+);
+
+575 
+	`muÉi_þ›Á_discÚÃù_sü�t
+ (
+m
+, 
+mi
+);
+
+577 ià(
+mi
+->
+did_Ý’_cÚ‹xt
+)
+
+578 
+	`þo£_cÚ‹xt
+ (&
+mi
+->
+cÚ‹xt
+, 
+SIGTERM
+, 
+CC_GC_FREE
+);
+
+580 
+	`muÉi_tý_š¡ªû_¥ecific_ä“
+ (
+mi
+);
+
+582 
+	`ung’”©e_´efix
+ (
+mi
+);
+
+589 
+	`muÉi_š¡ªû_dec_»fcouÁ
+ (
+mi
+);
+
+591 
+	`³rf_pÝ
+ ();
+
+592 
+	}
+}
+
+598 
+	$muÉi_unš™
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+600 ià(
+m
+->
+th»ad_mode
+ & 
+MC_WORK_THREAD
+)
+
+602 
+	`muÉi_tÝ_ä“
+ (
+m
+);
+
+603 
+m
+->
+th»ad_mode
+ = 
+MC_UNDEF
+;
+
+605 ià(
+m
+->
+th»ad_mode
+)
+
+607 ià(
+m
+->
+hash
+)
+
+609 
+hash_™”©Ü
+ 
+hi
+;
+
+610 
+hash_–em’t
+ *
+he
+;
+
+612 
+	`hash_™”©Ü_š™
+ (
+m
+->
+™”
+, &
+hi
+);
+
+613 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+615 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+616 
+mi
+->
+did_™”
+ = 
+çl£
+;
+
+617 
+	`muÉi_þo£_š¡ªû
+ (
+m
+, 
+mi
+, 
+Œue
+);
+
+619 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+621 
+	`muÉi_»­_®l
+ (
+m
+);
+
+623 
+	`hash_ä“
+ (
+m
+->
+hash
+);
+
+624 
+	`hash_ä“
+ (
+m
+->
+vhash
+);
+
+625 
+	`hash_ä“
+ (
+m
+->
+™”
+);
+
+626 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+627 
+	`hash_ä“
+ (
+m
+->
+cid_hash
+);
+
+629 
+m
+->
+hash
+ = 
+NULL
+;
+
+631 
+	`scheduË_ä“
+ (
+m
+->
+scheduË
+);
+
+632 
+	`mbuf_ä“
+ (
+m
+->
+mbuf
+);
+
+633 
+	`ifcÚfig_poÞ_ä“
+ (
+m
+->
+ifcÚfig_poÞ
+);
+
+634 
+	`äequ’cy_lim™_ä“
+ (
+m
+->
+Ãw_cÚÃùiÚ_lim™”
+);
+
+635 
+	`muÉi_»­_ä“
+ (
+m
+->
+»­”
+);
+
+636 
+	`mrou‹_h–³r_ä“
+ (
+m
+->
+rou‹_h–³r
+);
+
+637 
+	`muÉi_tý_ä“
+ (
+m
+->
+mtý
+);
+
+638 
+m
+->
+th»ad_mode
+ = 
+MC_UNDEF
+;
+
+641 
+	}
+}
+
+646 
+muÉi_š¡ªû
+ *
+
+647 
+	$muÉi_ü—‹_š¡ªû
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mrou‹_addr
+ *
+»®
+)
+
+649 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+650 
+muÉi_š¡ªû
+ *
+mi
+;
+
+652 
+	`³rf_push
+ (
+PERF_MULTI_CREATE_INSTANCE
+);
+
+654 
+	`msg
+ (
+D_MULTI_MEDIUM
+, "MULTI: multi_create_instance called");
+
+656 
+	`ALLOC_OBJ_CLEAR
+ (
+mi
+, 
+muÉi_š¡ªû
+);
+
+658 
+mi
+->
+gc
+ = 
+	`gc_Ãw
+ ();
+
+659 
+	`muÉi_š¡ªû_šc_»fcouÁ
+ (
+mi
+);
+
+660 
+mi
+->
+vaddr_hªdË
+ = -1;
+
+661 
+mi
+->
+ü—‹d
+ = 
+now
+;
+
+662 
+	`mrou‹_addr_š™
+ (&
+mi
+->
+»®
+);
+
+664 ià(
+»®
+)
+
+666 
+mi
+->
+»®
+ = *real;
+
+667 
+	`g’”©e_´efix
+ (
+mi
+);
+
+670 
+mi
+->
+did_Ý’_cÚ‹xt
+ = 
+Œue
+;
+
+671 
+	`šh”™_cÚ‹xt_chžd
+ (&
+mi
+->
+cÚ‹xt
+, &
+m
+->
+tÝ
+);
+
+672 ià(
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+))
+
+673 
+”r
+;
+
+675 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+cÚ‹xt_auth
+ = 
+CAS_PENDING
+;
+
+677 ià(
+	`hash_n_–em’ts
+ (
+m
+->
+hash
+è>ðm->
+max_þ›Ás
+)
+
+679 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:‚ew incomšg cÚÃùiÚ wouldƒxûed maximum‚umb” oàþ›Á (%d)", 
+m
+->
+max_þ›Ás
+);
+
+680 
+”r
+;
+
+683 ià(!
+»®
+)
+
+685 ià(!
+	`muÉi_tý_š¡ªû_¥ecific_š™
+ (
+m
+, 
+mi
+))
+
+686 
+”r
+;
+
+687 
+	`g’”©e_´efix
+ (
+mi
+);
+
+690 ià(!
+	`hash_add
+ (
+m
+->
+™”
+, &
+mi
+->
+»®
+, mi, 
+çl£
+))
+
+692 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: unable�o‡dd„eal‡ddress [%s]�o iterator hash�able",
+
+693 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+));
+
+694 
+”r
+;
+
+696 
+mi
+->
+did_™”
+ = 
+Œue
+;
+
+698 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+700 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+.
+cid
+ = 
+m
+->
+cid_couÁ”
+++;
+
+701 } !
+	`hash_add
+ (
+m
+->
+cid_hash
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+.
+cid
+, mi, 
+çl£
+));
+
+702 
+mi
+->
+did_cid_hash
+ = 
+Œue
+;
+
+705 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_»¶y_deã¼ed
+ = 
+Œue
+;
+
+707 ià(!
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+MPP_PRE_SELECT
+))
+
+709 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI: signal occurred during client instance initialization");
+
+710 
+”r
+;
+
+713 
+	`³rf_pÝ
+ ();
+
+714 
+	`gc_ä“
+ (&
+gc
+);
+
+715  
+mi
+;
+
+717 
+”r
+:
+
+718 
+	`muÉi_þo£_š¡ªû
+ (
+m
+, 
+mi
+, 
+çl£
+);
+
+719 
+	`³rf_pÝ
+ ();
+
+720 
+	`gc_ä“
+ (&
+gc
+);
+
+721  
+NULL
+;
+
+722 
+	}
+}
+
+730 
+	$muÉi_´št_¡©us
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+¡©us_ou�ut
+ *
+so
+, cÚ¡ 
+v”siÚ
+)
+
+732 ià(
+m
+->
+hash
+)
+
+734 
+gc_¬’a
+ 
+gc_tÝ
+ = 
+	`gc_Ãw
+ ();
+
+735 
+hash_™”©Ü
+ 
+hi
+;
+
+736 cÚ¡ 
+hash_–em’t
+ *
+he
+;
+
+738 
+	`¡©us_»£t
+ (
+so
+);
+
+740 ià(
+v”siÚ
+ == 1)
+
+745 
+	`¡©us_´štf
+ (
+so
+, "OpenVPN CLIENT LIST");
+
+746 
+	`¡©us_´štf
+ (
+so
+, "Upd©ed,%s", 
+	`time_¡ršg
+ (0, 0, 
+çl£
+, &
+gc_tÝ
+));
+
+747 
+	`¡©us_´štf
+ (
+so
+, "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since");
+
+748 
+	`hash_™”©Ü_š™
+ (
+m
+->
+hash
+, &
+hi
+);
+
+749 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+751 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+752 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+754 ià(!
+mi
+->
+h®t
+)
+
+756 
+	`¡©us_´štf
+ (
+so
+, "%s,%s," 
+couÁ”_fÜm©
+ "," counter_format ",%s",
+
+757 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+758 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+),
+
+759 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_»ad_by‹s
+,
+
+760 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_wr™e_by‹s
+,
+
+761 
+	`time_¡ršg
+ (
+mi
+->
+ü—‹d
+, 0, 
+çl£
+, &
+gc
+));
+
+763 
+	`gc_ä“
+ (&
+gc
+);
+
+765 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+767 
+	`¡©us_´štf
+ (
+so
+, "ROUTING TABLE");
+
+768 
+	`¡©us_´štf
+ (
+so
+, "Virtual Address,Common Name,Real Address,Last Ref");
+
+769 
+	`hash_™”©Ü_š™
+ (
+m
+->
+vhash
+, &
+hi
+);
+
+770 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+772 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+773 cÚ¡ 
+muÉi_rou‹
+ *
+rou‹
+ = (muÉi_rou‹ *è
+he
+->
+v®ue
+;
+
+775 ià(
+	`muÉi_rou‹_defšed
+ (
+m
+, 
+rou‹
+))
+
+777 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+ = 
+rou‹
+->
+š¡ªû
+;
+
+778 cÚ¡ 
+mrou‹_addr
+ *
+ma
+ = &
+rou‹
+->
+addr
+;
+
+779 
+æags
+[2] = {0, 0};
+
+781 ià(
+rou‹
+->
+æags
+ & 
+MULTI_ROUTE_CACHE
+)
+
+782 
+æags
+[0] = 'C';
+
+783 
+	`¡©us_´štf
+ (
+so
+, "%s%s,%s,%s,%s",
+
+784 
+	`mrou‹_addr_´št
+ (
+ma
+, &
+gc
+),
+
+785 
+æags
+,
+
+786 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+787 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+),
+
+788 
+	`time_¡ršg
+ (
+rou‹
+->
+Ï¡_»ã»nû
+, 0, 
+çl£
+, &
+gc
+));
+
+790 
+	`gc_ä“
+ (&
+gc
+);
+
+792 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+794 
+	`¡©us_´štf
+ (
+so
+, "GLOBAL STATS");
+
+795 ià(
+m
+->
+mbuf
+)
+
+796 
+	`¡©us_´štf
+ (
+so
+, "Max bcast/mcast queue†ength,%d",
+
+797 
+	`mbuf_maximum_queued
+ (
+m
+->
+mbuf
+));
+
+799 
+	`¡©us_´štf
+ (
+so
+, "END");
+
+801 ià(
+v”siÚ
+ == 2 || version == 3)
+
+803 cÚ¡ 
+£p
+ = (
+v”siÚ
+ == 3) ? '\t' : ',';
+
+808 
+	`¡©us_´štf
+ (
+so
+, "TITLE%c%s", 
+£p
+, 
+t™Ë_¡ršg
+);
+
+809 
+	`¡©us_´štf
+ (
+so
+, "TIME%c%s%c%u", 
+£p
+, 
+	`time_¡ršg
+ (
+now
+, 0, 
+çl£
+, &
+gc_tÝ
+), sep, ()now);
+
+810 
+	`¡©us_´štf
+ (
+so
+, "HEADER%cCLIENT_LIST%cCommon Name%cReal Address%cVirtual Address%cBytes Received%cBytes Sent%cConnected Since%cConnected Since (time_t)%cUsername",
+
+811 
+£p
+, sep, sep, sep, sep, sep, sep, sep, sep);
+
+812 
+	`hash_™”©Ü_š™
+ (
+m
+->
+hash
+, &
+hi
+);
+
+813 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+815 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+816 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+818 ià(!
+mi
+->
+h®t
+)
+
+820 
+	`¡©us_´štf
+ (
+so
+, "CLIENT_LIST%c%s%c%s%c%s%c" 
+couÁ”_fÜm©
+ "%c" counter_format "%c%s%c%u%c%s",
+
+821 
+£p
+, 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+822 
+£p
+, 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+),
+
+823 
+£p
+, 
+	`´št_š_addr_t
+ (
+mi
+->
+»pÜtšg_addr
+, 
+IA_EMPTY_IF_UNDEF
+, &
+gc
+),
+
+824 
+£p
+, 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_»ad_by‹s
+,
+
+825 
+£p
+, 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+lšk_wr™e_by‹s
+,
+
+826 
+£p
+, 
+	`time_¡ršg
+ (
+mi
+->
+ü—‹d
+, 0, 
+çl£
+, &
+gc
+),
+
+827 
+£p
+, ()
+mi
+->
+ü—‹d
+,
+
+828 
+£p
+, 
+	`Žs_u£ºame
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+));
+
+830 
+	`gc_ä“
+ (&
+gc
+);
+
+832 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+834 
+	`¡©us_´štf
+ (
+so
+, "HEADER%cROUTING_TABLE%cVirtual Address%cCommon Name%cReal Address%cLast Ref%cLast Ref (time_t)",
+
+835 
+£p
+, sep, sep, sep, sep, sep);
+
+836 
+	`hash_™”©Ü_š™
+ (
+m
+->
+vhash
+, &
+hi
+);
+
+837 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+839 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+840 cÚ¡ 
+muÉi_rou‹
+ *
+rou‹
+ = (muÉi_rou‹ *è
+he
+->
+v®ue
+;
+
+842 ià(
+	`muÉi_rou‹_defšed
+ (
+m
+, 
+rou‹
+))
+
+844 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+ = 
+rou‹
+->
+š¡ªû
+;
+
+845 cÚ¡ 
+mrou‹_addr
+ *
+ma
+ = &
+rou‹
+->
+addr
+;
+
+846 
+æags
+[2] = {0, 0};
+
+848 ià(
+rou‹
+->
+æags
+ & 
+MULTI_ROUTE_CACHE
+)
+
+849 
+æags
+[0] = 'C';
+
+850 
+	`¡©us_´štf
+ (
+so
+, "ROUTING_TABLE%c%s%s%c%s%c%s%c%s%c%u",
+
+851 
+£p
+, 
+	`mrou‹_addr_´št
+ (
+ma
+, &
+gc
+), 
+æags
+,
+
+852 
+£p
+, 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+853 
+£p
+, 
+	`mrou‹_addr_´št
+ (&
+mi
+->
+»®
+, &
+gc
+),
+
+854 
+£p
+, 
+	`time_¡ršg
+ (
+rou‹
+->
+Ï¡_»ã»nû
+, 0, 
+çl£
+, &
+gc
+),
+
+855 
+£p
+, ()
+rou‹
+->
+Ï¡_»ã»nû
+);
+
+857 
+	`gc_ä“
+ (&
+gc
+);
+
+859 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+861 ià(
+m
+->
+mbuf
+)
+
+862 
+	`¡©us_´štf
+ (
+so
+, "GLOBAL_STATS%cMax bcast/mcast queue†ength%c%d",
+
+863 
+£p
+, s•, 
+	`mbuf_maximum_queued
+ (
+m
+->
+mbuf
+));
+
+865 
+	`¡©us_´štf
+ (
+so
+, "END");
+
+869 
+	`¡©us_´štf
+ (
+so
+, "ERROR: bad status format version‚umber");
+
+872 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+874 
+	`¡©us_´štf
+ (
+so
+, "HEADER,ERRORS,Common Name,TUN Read Trunc,TUN Write Trunc,Pre-encrypt Trunc,Post-decrypt Trunc");
+
+875 
+	`hash_™”©Ü_š™
+ (
+m
+->
+hash
+, &
+hi
+);
+
+876 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+878 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+879 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+881 ià(!
+mi
+->
+h®t
+)
+
+883 
+	`¡©us_´štf
+ (
+so
+, "ERRORS,%s," 
+couÁ”_fÜm©
+ "," counter_format "," counter_format "," counter_format,
+
+884 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+885 
+m
+->
+tÝ
+.
+c2
+.
+n_Œunc_tun_»ad
+,
+
+886 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+n_Œunc_tun_wr™e
+,
+
+887 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+n_Œunc_´e_’üy±
+,
+
+888 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+n_Œunc_po¡_deüy±
+);
+
+890 
+	`gc_ä“
+ (&
+gc
+);
+
+892 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+896 
+	`¡©us_æush
+ (
+so
+);
+
+897 
+	`gc_ä“
+ (&
+gc_tÝ
+);
+
+899 
+	}
+}
+
+909 
+muÉi_š¡ªû
+ *
+
+910 
+	$muÉi_Ë¬n_addr
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+911 
+muÉi_š¡ªû
+ *
+mi
+,
+
+912 cÚ¡ 
+mrou‹_addr
+ *
+addr
+,
+
+913 cÚ¡ 
+æags
+)
+
+915 
+hash_–em’t
+ *
+he
+;
+
+916 cÚ¡ 
+ušt32_t
+ 
+hv
+ = 
+	`hash_v®ue
+ (
+m
+->
+vhash
+, 
+addr
+);
+
+917 
+hash_buck‘
+ *
+buck‘
+ = 
+	`hash_buck‘
+ (
+m
+->
+vhash
+, 
+hv
+);
+
+918 
+muÉi_rou‹
+ *
+Þdrou‹
+ = 
+NULL
+;
+
+919 
+muÉi_š¡ªû
+ *
+owÃr
+ = 
+NULL
+;
+
+922 
+he
+ = 
+	`hash_lookup_ç¡
+ (
+m
+->
+vhash
+, 
+buck‘
+, 
+addr
+, 
+hv
+);
+
+923 ià(
+he
+)
+
+924 
+Þdrou‹
+ = (
+muÉi_rou‹
+ *è
+he
+->
+v®ue
+;
+
+925 ià(
+Þdrou‹
+ && 
+	`muÉi_rou‹_defšed
+ (
+m
+, oldroute))
+
+926 
+owÃr
+ = 
+Þdrou‹
+->
+š¡ªû
+;
+
+929 ià((!
+owÃr
+ || owÃ¸!ð
+mi
+)
+
+930 && 
+	`mrou‹_Ë¬ÇbË_add»ss
+ (
+addr
+)
+
+931 && !
+	`mrou‹_addr_equ®
+ (
+addr
+, &
+m
+->
+loÿl
+))
+
+933 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+934 
+muÉi_rou‹
+ *
+Ãwrou‹
+;
+
+935 
+boÞ
+ 
+Ë¬n_sucûeded
+ = 
+çl£
+;
+
+937 
+	`ALLOC_OBJ
+ (
+Ãwrou‹
+, 
+muÉi_rou‹
+);
+
+938 
+Ãwrou‹
+->
+addr
+ = *addr;
+
+939 
+Ãwrou‹
+->
+š¡ªû
+ = 
+mi
+;
+
+940 
+Ãwrou‹
+->
+æags
+ = flags;
+
+941 
+Ãwrou‹
+->
+Ï¡_»ã»nû
+ = 
+now
+;
+
+942 
+Ãwrou‹
+->
+ÿche_g’”©iÚ
+ = 0;
+
+945 ià(
+æags
+ & 
+MULTI_ROUTE_CACHE
+)
+
+946 
+Ãwrou‹
+->
+ÿche_g’”©iÚ
+ = 
+m
+->
+rou‹_h–³r
+->cache_generation;
+
+948 ià(
+Þdrou‹
+)
+
+950 ià(
+	`rou‹_quÙa_‹¡
+ (
+m
+, 
+mi
+è&& 
+	`Ë¬n_add»ss_sü�t
+ (m, mi, "upd©e", &
+Ãwrou‹
+->
+addr
+))
+
+952 
+Ë¬n_sucûeded
+ = 
+Œue
+;
+
+953 
+owÃr
+ = 
+mi
+;
+
+954 
+	`muÉi_š¡ªû_šc_»fcouÁ
+ (
+mi
+);
+
+955 
+	`rou‹_quÙa_šc
+ (
+mi
+);
+
+958 
+	`muÉi_rou‹_d–
+ (
+Þdrou‹
+);
+
+961 
+he
+->
+key
+ = &
+Ãwrou‹
+->
+addr
+;
+
+962 
+he
+->
+v®ue
+ = 
+Ãwrou‹
+;
+
+967 ià(
+	`rou‹_quÙa_‹¡
+ (
+m
+, 
+mi
+è&& 
+	`Ë¬n_add»ss_sü�t
+ (m, mi, "add", &
+Ãwrou‹
+->
+addr
+))
+
+969 
+Ë¬n_sucûeded
+ = 
+Œue
+;
+
+970 
+owÃr
+ = 
+mi
+;
+
+971 
+	`muÉi_š¡ªû_šc_»fcouÁ
+ (
+mi
+);
+
+972 
+	`rou‹_quÙa_šc
+ (
+mi
+);
+
+975 
+	`hash_add_ç¡
+ (
+m
+->
+vhash
+, 
+buck‘
+, &
+Ãwrou‹
+->
+addr
+, 
+hv
+,‚ewroute);
+
+979 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: Learn%s: %s -> %s",
+
+980 
+Ë¬n_sucûeded
+ ? "" : " FAILED",
+
+981 
+	`mrou‹_addr_´št
+ (&
+Ãwrou‹
+->
+addr
+, &
+gc
+),
+
+982 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+984 ià(!
+Ë¬n_sucûeded
+)
+
+985 
+	`ä“
+ (
+Ãwrou‹
+);
+
+987 
+	`gc_ä“
+ (&
+gc
+);
+
+990  
+owÃr
+;
+
+991 
+	}
+}
+
+996 
+muÉi_š¡ªû
+ *
+
+997 
+	$muÉi_g‘_š¡ªû_by_vœtu®_addr
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+998 cÚ¡ 
+mrou‹_addr
+ *
+addr
+,
+
+999 
+boÞ
+ 
+cidr_routšg
+)
+
+1001 
+muÉi_rou‹
+ *
+rou‹
+;
+
+1002 
+muÉi_š¡ªû
+ *
+»t
+ = 
+NULL
+;
+
+1005 ià(
+	`mrou‹_addr_equ®
+ (
+addr
+, &
+m
+->
+loÿl
+))
+
+1006  
+NULL
+;
+
+1008 
+rou‹
+ = (
+muÉi_rou‹
+ *è
+	`hash_lookup
+ (
+m
+->
+vhash
+, 
+addr
+);
+
+1011 ià(
+rou‹
+ && 
+	`muÉi_rou‹_defšed
+ (
+m
+,„oute))
+
+1013 
+muÉi_š¡ªû
+ *
+mi
+ = 
+rou‹
+->
+š¡ªû
+;
+
+1014 
+rou‹
+->
+Ï¡_»ã»nû
+ = 
+now
+;
+
+1015 
+»t
+ = 
+mi
+;
+
+1017 ià(
+cidr_routšg
+)
+
+1019 
+mrou‹_h–³r
+ *
+rh
+ = 
+m
+->
+rou‹_h–³r
+;
+
+1020 
+mrou‹_addr
+ 
+Œyaddr
+;
+
+1021 
+i
+;
+
+1024 
+i
+ = 0; i < 
+rh
+->
+n_Ãt_Ën
+; ++i)
+
+1026 
+Œyaddr
+ = *
+addr
+;
+
+1027 
+Œyaddr
+.
+ty³
+ |ð
+MR_WITH_NETBITS
+;
+
+1028 
+Œyaddr
+.
+Ãtb™s
+ = 
+rh
+->
+Ãt_Ën
+[
+i
+];
+
+1029 
+	`mrou‹_addr_mask_ho¡_b™s
+ (&
+Œyaddr
+);
+
+1032 
+rou‹
+ = (
+muÉi_rou‹
+ *è
+	`hash_lookup
+ (
+m
+->
+vhash
+, &
+Œyaddr
+);
+
+1034 ià(
+rou‹
+ && 
+	`muÉi_rou‹_defšed
+ (
+m
+,„oute))
+
+1037 
+muÉi_š¡ªû
+ *
+mi
+ = 
+rou‹
+->
+š¡ªû
+;
+
+1038 
+	`muÉi_Ë¬n_addr
+ (
+m
+, 
+mi
+, 
+addr
+, 
+MULTI_ROUTE_CACHE
+|
+MULTI_ROUTE_AGEABLE
+);
+
+1039 
+»t
+ = 
+mi
+;
+
+1045 #ifdeà
+ENABLE_DEBUG
+
+
+1046 ià(
+	`check_debug_Ëv–
+ (
+D_MULTI_DEBUG
+))
+
+1048 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1049 cÚ¡ *
+addr_‹xt
+ = 
+	`mrou‹_addr_´št
+ (
+addr
+, &
+gc
+);
+
+1050 ià(
+»t
+)
+
+1052 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "GET INST BY VIRT: %s -> %s via %s",
+
+1053 
+addr_‹xt
+,
+
+1054 
+	`muÉi_š¡ªû_¡ršg
+ (
+»t
+, 
+çl£
+, &
+gc
+),
+
+1055 
+	`mrou‹_addr_´št
+ (&
+rou‹
+->
+addr
+, &
+gc
+));
+
+1059 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "GET INST BY VIRT: %s [failed]",
+
+1060 
+addr_‹xt
+);
+
+1062 
+	`gc_ä“
+ (&
+gc
+);
+
+1066 
+	`ASSERT
+ (!(
+»t
+ &&„‘->
+h®t
+));
+
+1067  
+»t
+;
+
+1068 
+	}
+}
+
+1073 
+muÉi_š¡ªû
+ *
+
+1074 
+	$muÉi_Ë¬n_š_addr_t
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1075 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1076 
+š_addr_t
+ 
+a
+,
+
+1077 
+Ãtb™s
+,
+
+1078 
+boÞ
+ 
+´im¬y
+)
+
+1080 
+Ý’v²_sockaddr
+ 
+»mÙe_si
+;
+
+1081 
+mrou‹_addr
+ 
+addr
+;
+
+1083 
+	`CLEAR
+ (
+»mÙe_si
+);
+
+1084 
+»mÙe_si
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+1085 
+»mÙe_si
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (
+a
+);
+
+1086 
+	`ASSERT
+ (
+	`mrou‹_exŒaù_Ý’v²_sockaddr
+ (&
+addr
+, &
+»mÙe_si
+, 
+çl£
+));
+
+1088 ià(
+Ãtb™s
+ >= 0)
+
+1090 
+addr
+.
+ty³
+ |ð
+MR_WITH_NETBITS
+;
+
+1091 
+addr
+.
+Ãtb™s
+ = (
+ušt8_t
+)‚etbits;
+
+1095 
+muÉi_š¡ªû
+ *
+owÃr
+ = 
+	`muÉi_Ë¬n_addr
+ (
+m
+, 
+mi
+, &
+addr
+, 0);
+
+1096 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1097 ià(
+mªagem’t
+ && 
+owÃr
+)
+
+1098 
+	`mªagem’t_Ë¬n_addr
+ (
+mªagem’t
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+, &
+addr
+, 
+´im¬y
+);
+
+1100  
+owÃr
+;
+
+1102 
+	}
+}
+
+1104 
+muÉi_š¡ªû
+ *
+
+1105 
+	$muÉi_Ë¬n_š6_addr
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1106 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1107 
+š6_addr
+ 
+a6
+,
+
+1108 
+Ãtb™s
+,
+
+1109 
+boÞ
+ 
+´im¬y
+)
+
+1111 
+mrou‹_addr
+ 
+addr
+;
+
+1113 
+addr
+.
+Ën
+ = 16;
+
+1114 
+addr
+.
+ty³
+ = 
+MR_ADDR_IPV6
+;
+
+1115 
+addr
+.
+Ãtb™s
+ = 0;
+
+1116 
+	`memýy
+Ð&
+addr
+.addr, &
+a6
+, (a6) );
+
+1118 ià(
+Ãtb™s
+ >= 0)
+
+1120 
+addr
+.
+ty³
+ |ð
+MR_WITH_NETBITS
+;
+
+1121 
+addr
+.
+Ãtb™s
+ = (
+ušt8_t
+)‚etbits;
+
+1122 
+	`mrou‹_addr_mask_ho¡_b™s
+Ð&
+addr
+ );
+
+1126 
+muÉi_š¡ªû
+ *
+owÃr
+ = 
+	`muÉi_Ë¬n_addr
+ (
+m
+, 
+mi
+, &
+addr
+, 0);
+
+1127 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1128 ià(
+mªagem’t
+ && 
+owÃr
+)
+
+1129 
+	`mªagem’t_Ë¬n_addr
+ (
+mªagem’t
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+, &
+addr
+, 
+´im¬y
+);
+
+1131  
+owÃr
+;
+
+1133 
+	}
+}
+
+1140 
+	$muÉi_add_œou‹s
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1141 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1143 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1144 cÚ¡ 
+œou‹
+ *
+œ
+;
+
+1145 cÚ¡ 
+œou‹_�v6
+ *
+œ6
+;
+
+1146 ià(
+	`TUNNEL_TYPE
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+è=ð
+DEV_TYPE_TUN
+)
+
+1148 
+mi
+->
+did_œou‹s
+ = 
+Œue
+;
+
+1149 
+œ
+ = 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+œou‹s
+; i¸!ð
+NULL
+; i¸ðœ->
+Ãxt
+)
+
+1151 ià(
+œ
+->
+Ãtb™s
+ >= 0)
+
+1152 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: internal„oute %s/%d -> %s",
+
+1153 
+	`´št_š_addr_t
+ (
+œ
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+1154 
+œ
+->
+Ãtb™s
+,
+
+1155 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1157 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: internal„oute %s -> %s",
+
+1158 
+	`´št_š_addr_t
+ (
+œ
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+1159 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1161 
+	`mrou‹_h–³r_add_œou‹
+ (
+m
+->
+rou‹_h–³r
+, 
+œ
+);
+
+1163 
+	`muÉi_Ë¬n_š_addr_t
+ (
+m
+, 
+mi
+, 
+œ
+->
+ÃtwÜk
+, ir->
+Ãtb™s
+, 
+çl£
+);
+
+1165  
+œ6
+ = 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+œou‹s_�v6
+; ir6 !ð
+NULL
+; ir6 = ir6->
+Ãxt
+ )
+
+1167 ià(
+œ6
+->
+Ãtb™s
+ >= 0)
+
+1168 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: internal„oute %s/%d -> %s",
+
+1169 
+	`´št_š6_addr
+ (
+œ6
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+1170 
+œ6
+->
+Ãtb™s
+,
+
+1171 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1173 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: internal„oute %s -> %s",
+
+1174 
+	`´št_š6_addr
+ (
+œ6
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+1175 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1177 
+	`mrou‹_h–³r_add_œou‹6
+ (
+m
+->
+rou‹_h–³r
+, 
+œ6
+);
+
+1179 
+	`muÉi_Ë¬n_š6_addr
+ (
+m
+, 
+mi
+, 
+œ6
+->
+ÃtwÜk
+, ir6->
+Ãtb™s
+, 
+çl£
+);
+
+1182 
+	`gc_ä“
+ (&
+gc
+);
+
+1183 
+	}
+}
+
+1190 
+	$muÉi_d–‘e_dup
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+Ãw_mi
+)
+
+1192 ià(
+Ãw_mi
+)
+
+1194 cÚ¡ *
+Ãw_ú
+ = 
+	`Žs_commÚ_Çme
+ (
+Ãw_mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+Œue
+);
+
+1195 ià(
+Ãw_ú
+)
+
+1197 
+hash_™”©Ü
+ 
+hi
+;
+
+1198 
+hash_–em’t
+ *
+he
+;
+
+1199 
+couÁ
+ = 0;
+
+1201 
+	`hash_™”©Ü_š™
+ (
+m
+->
+™”
+, &
+hi
+);
+
+1202 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+1204 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+1205 ià(
+mi
+ !ð
+Ãw_mi
+ && !mi->
+h®t
+)
+
+1207 cÚ¡ *
+ú
+ = 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+Œue
+);
+
+1208 ià(
+ú
+ && !
+	`¡rcmp
+ (ú, 
+Ãw_ú
+))
+
+1210 
+mi
+->
+did_™”
+ = 
+çl£
+;
+
+1211 
+	`muÉi_þo£_š¡ªû
+ (
+m
+, 
+mi
+, 
+çl£
+);
+
+1212 
+	`hash_™”©Ü_d–‘e_–em’t
+ (&
+hi
+);
+
+1213 ++
+couÁ
+;
+
+1217 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+1219 ià(
+couÁ
+)
+
+1220 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI:‚ew cÚÃùiÚ by cl›Á '%s' wžÈÿu£…»viou aùiv�£ssiÚ by�hi þ›Á�Øb�drÝ³d. Rememb”�Øu£�h�--du¶iÿ‹-ú o±iÚ iàyou wªˆmuÉ�Ë cl›Á usšg�h�§m�û¹ifiÿ‹ o¸u£ºam�tØcÚcu¼’Žy cÚÃù.", 
+Ãw_ú
+);
+
+1223 
+	}
+}
+
+1226 
+	$check_¡®e_rou‹s
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+1229 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1230 
+hash_™”©Ü
+ 
+hi
+;
+
+1231 
+hash_–em’t
+ *
+he
+;
+
+1233 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: Checking stale„outes");
+
+1234 
+	`hash_™”©Ü_š™_¿nge
+ (
+m
+->
+vhash
+, &
+hi
+, 0, 
+	`hash_n_buck‘s
+ (m->vhash));
+
+1235 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)è!ð
+NULL
+)
+
+1237 
+muÉi_rou‹
+ *
+r
+ = (muÉi_rou‹ *è
+he
+->
+v®ue
+;
+
+1238 ià(
+	`muÉi_rou‹_defšed
+ (
+m
+, 
+r
+è&& 
+	`difáime
+(
+now
+,„->
+Ï¡_»ã»nû
+è>ðm->
+tÝ
+.
+ÝtiÚs
+.
+¡®e_rou‹s_agešg_time
+)
+
+1240 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: Deleting stale„oute for‡ddress '%s'",
+
+1241 
+	`mrou‹_addr_´št
+ (&
+r
+->
+addr
+, &
+gc
+));
+
+1242 
+	`Ë¬n_add»ss_sü�t
+ (
+m
+, 
+NULL
+, "d–‘e", &
+r
+->
+addr
+);
+
+1243 
+	`muÉi_rou‹_d–
+ (
+r
+);
+
+1244 
+	`hash_™”©Ü_d–‘e_–em’t
+ (&
+hi
+);
+
+1247 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+1248 
+	`gc_ä“
+ (&
+gc
+);
+
+1249 
+	}
+}
+
+1255 
+boÞ
+
+
+1256 
+	$ifcÚfig_push_cÚ¡¿št_§tisf›d
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+1258 cÚ¡ 
+ÝtiÚs
+ *
+o
+ = &
+c
+->options;
+
+1259 ià(
+o
+->
+push_ifcÚfig_cÚ¡¿št_defšed
+ && 
+c
+->
+c2
+.
+push_ifcÚfig_defšed
+)
+
+1260  (
+o
+->
+push_ifcÚfig_cÚ¡¿št_Ãtmask
+ & 
+c
+->
+c2
+.
+push_ifcÚfig_loÿl
+è=ðo->
+push_ifcÚfig_cÚ¡¿št_ÃtwÜk
+;
+
+1262  
+Œue
+;
+
+1263 
+	}
+}
+
+1271 
+	$muÉi_£Ëù_vœtu®_addr
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1273 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1279 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_defšed
+)
+
+1283 ià(
+mi
+->
+vaddr_hªdË
+ >= 0)
+
+1285 
+	`ifcÚfig_poÞ_»Ëa£
+ (
+m
+->
+ifcÚfig_poÞ
+, 
+mi
+->
+vaddr_hªdË
+, 
+Œue
+);
+
+1286 
+mi
+->
+vaddr_hªdË
+ = -1;
+
+1289 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_defšed
+ = 
+Œue
+;
+
+1290 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+ = mi->cÚ‹xt.
+ÝtiÚs
+.push_ifconfig_local;
+
+1291 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+ = mi->cÚ‹xt.
+ÝtiÚs
+.push_ifconfig_remote_netmask;
+
+1292 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+1293 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl_®Ÿs
+ = mi->cÚ‹xt.
+ÝtiÚs
+.push_ifconfig_local_alias;
+
+1300 iàÐ
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+->
+�v6
+ &&
+
+1301 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_defšed
+ &&
+
+1302 ! 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_�v6_defšed
+ )
+
+1304 
+	`msg
+Ð
+M_INFO
+, "MULTI_sva: WARNING: if --ifconfig-push is used for IPv4,‡utomatic IPv6‡ssignment from --ifconfig-ipv6-pool does‚ot work. Use --ifconfig-ipv6-push for IPv6�hen." );
+
+1307 ià(
+m
+->
+ifcÚfig_poÞ
+ && 
+mi
+->
+vaddr_hªdË
+ < 0)
+
+1309 
+š_addr_t
+ 
+loÿl
+=0, 
+»mÙe
+=0;
+
+1310 
+š6_addr
+ 
+»mÙe_�v6
+;
+
+1311 cÚ¡ *
+ú
+ = 
+NULL
+;
+
+1313 ià(!
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+du¶iÿ‹_ú
+)
+
+1314 
+ú
+ = 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+Œue
+);
+
+1316 
+	`CLEAR
+(
+»mÙe_�v6
+);
+
+1317 
+mi
+->
+vaddr_hªdË
+ = 
+	`ifcÚfig_poÞ_acquœe
+ (
+m
+->
+ifcÚfig_poÞ
+, &
+loÿl
+, &
+»mÙe
+, &
+»mÙe_�v6
+, 
+ú
+);
+
+1318 ià(
+mi
+->
+vaddr_hªdË
+ >= 0)
+
+1320 cÚ¡ 
+tuÂ–_ty³
+ = 
+	`TUNNEL_TYPE
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+);
+
+1321 cÚ¡ 
+tuÂ–_tÝÞogy
+ = 
+	`TUNNEL_TOPOLOGY
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+);
+
+1323 
+	`msg
+Ð
+M_INFO
+, "MULTI_sva:…ool„eturned IPv4=%s, IPv6=%s",
+
+1324 
+	`´št_š_addr_t
+Ð
+»mÙe
+, 0, &
+gc
+ ),
+
+1325 (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_defšed
+
+
+1326 ? 
+	`´št_š6_addr
+Ð
+»mÙe_�v6
+, 0, &
+gc
+ )
+
+1330 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+ = 
+»mÙe
+;
+
+1331 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TAP
+ || (tuÂ–_ty³ =ð
+DEV_TYPE_TUN
+ && 
+tuÂ–_tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+1333 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+ = mi->cÚ‹xt.
+ÝtiÚs
+.
+ifcÚfig_poÞ_Ãtmask
+;
+
+1334 ià(!
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+)
+
+1335 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+ = mi->cÚ‹xt.
+c1
+.
+tuÁ­
+->
+»mÙe_Ãtmask
+;
+
+1337 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1339 ià(
+tuÂ–_tÝÞogy
+ =ð
+TOP_P2P
+)
+
+1340 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+ = mi->cÚ‹xt.
+c1
+.
+tuÁ­
+->
+loÿl
+;
+
+1341 ià(
+tuÂ–_tÝÞogy
+ =ð
+TOP_NET30
+)
+
+1342 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+ = 
+loÿl
+;
+
+1345 ià(
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+)
+
+1346 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_defšed
+ = 
+Œue
+;
+
+1348 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:‚o --ifconfig-pool‚etmask…arameter is‡vailable�o…ush�o %s",
+
+1349 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1351 iàÐ
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_defšed
+ )
+
+1353 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_loÿl
+ = 
+»mÙe_�v6
+;
+
+1354 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_»mÙe
+ =
+
+1355 
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+->
+loÿl_�v6
+;
+
+1356 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_Ãtb™s
+ =
+
+1357 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+ifcÚfig_�v6_poÞ_Ãtb™s
+;
+
+1358 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_defšed
+ = 
+Œue
+;
+
+1363 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:‚o free --ifconfig-pool‡ddresses‡re‡vailable");
+
+1374 iàÐ
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+->
+�v6
+ &&
+
+1375 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_�v6_defšed
+ )
+
+1377 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_loÿl
+ =
+
+1378 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_�v6_loÿl
+;
+
+1379 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_»mÙe
+ =
+
+1380 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_�v6_»mÙe
+;
+
+1381 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_Ãtb™s
+ =
+
+1382 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_�v6_Ãtb™s
+;
+
+1383 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_defšed
+ = 
+Œue
+;
+
+1385 
+	`msg
+Ð
+M_INFO
+, "MULTI_sva:…ush_ifconfig_ipv6 %s/%d",
+
+1386 
+	`´št_š6_addr
+Ð
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_loÿl
+, 0, &
+gc
+ ),
+
+1387 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_Ãtb™s
+ );
+
+1390 
+	`gc_ä“
+ (&
+gc
+);
+
+1391 
+	}
+}
+
+1397 
+	$muÉi_£t_vœtu®_addr_’v
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1399 
+	`£‹nv_d–
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "ifconfig_pool_local_ip");
+
+1400 
+	`£‹nv_d–
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "ifconfig_pool_remote_ip");
+
+1401 
+	`£‹nv_d–
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "ifconfig_pool_netmask");
+
+1403 ià(
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_defšed
+)
+
+1405 cÚ¡ 
+tuÂ–_ty³
+ = 
+	`TUNNEL_TYPE
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+);
+
+1406 cÚ¡ 
+tuÂ–_tÝÞogy
+ = 
+	`TUNNEL_TOPOLOGY
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+);
+
+1408 
+	`£‹nv_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+,
+
+1410 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+,
+
+1411 
+SA_SET_IF_NONZERO
+);
+
+1413 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TAP
+ || (tuÂ–_ty³ =ð
+DEV_TYPE_TUN
+ && 
+tuÂ–_tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+1415 
+	`£‹nv_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+,
+
+1417 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+,
+
+1418 
+SA_SET_IF_NONZERO
+);
+
+1420 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1422 
+	`£‹nv_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+,
+
+1424 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+,
+
+1425 
+SA_SET_IF_NONZERO
+);
+
+1433 
+	}
+}
+
+1439 
+	$muÉi_þ›Á_cÚÃù_po¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1440 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1441 cÚ¡ *
+dc_fže
+,
+
+1442 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1443 *
+ÝtiÚ_ty³s_found
+)
+
+1446 ià(
+	`‹¡_fže
+ (
+dc_fže
+))
+
+1448 
+	`ÝtiÚs_£rv”_impÜt
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+,
+
+1449 
+dc_fže
+,
+
+1450 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+1451 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1452 
+ÝtiÚ_ty³s_found
+,
+
+1453 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+);
+
+1461 
+	`muÉi_£Ëù_vœtu®_addr
+ (
+m
+, 
+mi
+);
+
+1462 
+	`muÉi_£t_vœtu®_addr_’v
+ (
+m
+, 
+mi
+);
+
+1464 
+	}
+}
+
+1466 #ifdeà
+ENABLE_PLUGIN
+
+
+1472 
+	$muÉi_þ›Á_cÚÃù_po¡_¶ugš
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1473 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1474 cÚ¡ 
+¶ugš_»tuº
+ *
+´
+,
+
+1475 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1476 *
+ÝtiÚ_ty³s_found
+)
+
+1478 
+¶ugš_»tuº
+ 
+cÚfig
+;
+
+1480 
+	`¶ugš_»tuº_g‘_cÞumn
+ (
+´
+, &
+cÚfig
+, "config");
+
+1483 ià(
+	`¶ugš_»tuº_defšed
+ (&
+cÚfig
+))
+
+1485 
+i
+;
+
+1486 
+i
+ = 0; i < 
+cÚfig
+.
+n
+; ++i)
+
+1488 ià(
+cÚfig
+.
+li¡
+[
+i
+] && cÚfig.li¡[i]->
+v®ue
+)
+
+1489 
+	`ÝtiÚs_¡ršg_impÜt
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+,
+
+1490 
+cÚfig
+.
+li¡
+[
+i
+]->
+v®ue
+,
+
+1491 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+1492 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1493 
+ÝtiÚ_ty³s_found
+,
+
+1494 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+);
+
+1503 
+	`muÉi_£Ëù_vœtu®_addr
+ (
+m
+, 
+mi
+);
+
+1504 
+	`muÉi_£t_vœtu®_addr_’v
+ (
+m
+, 
+mi
+);
+
+1506 
+	}
+}
+
+1510 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1516 
+	$muÉi_þ›Á_cÚÃù_mda
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1517 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1518 cÚ¡ 
+bufãr_li¡
+ *
+cÚfig
+,
+
+1519 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1520 *
+ÝtiÚ_ty³s_found
+)
+
+1522 ià(
+cÚfig
+)
+
+1524 
+bufãr_’Œy
+ *
+be
+;
+
+1526 
+be
+ = 
+cÚfig
+->
+h—d
+; b�!ð
+NULL
+; b�ðbe->
+Ãxt
+)
+
+1528 cÚ¡ *
+Ýt
+ = 
+	`BSTR
+(&
+be
+->
+buf
+);
+
+1529 
+	`ÝtiÚs_¡ršg_impÜt
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+,
+
+1530 
+Ýt
+,
+
+1531 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+1532 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1533 
+ÝtiÚ_ty³s_found
+,
+
+1534 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+);
+
+1543 
+	`muÉi_£Ëù_vœtu®_addr
+ (
+m
+, 
+mi
+);
+
+1544 
+	`muÉi_£t_vœtu®_addr_’v
+ (
+m
+, 
+mi
+);
+
+1546 
+	}
+}
+
+1551 
+	$muÉi_þ›Á_cÚÃù_£‹nv
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1552 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1554 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1557 
+	`£‹nv_¡r
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "commÚ_Çme", 
+	`Žs_commÚ_Çme
+ (mi->cÚ‹xt.c2.
+Žs_muÉi
+, 
+Œue
+));
+
+1560 
+	`£‹nv_Œu¡ed
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, 
+	`g‘_lšk_sock‘_šfo
+ (&mi->context));
+
+1563 
+	`muÉi_£t_vœtu®_addr_’v
+ (
+m
+, 
+mi
+);
+
+1567 cÚ¡ *
+ü—‹d_ascii
+ = 
+	`time_¡ršg
+ (
+mi
+->
+ü—‹d
+, 0, 
+çl£
+, &
+gc
+);
+
+1568 
+	`£‹nv_¡r
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "time_ascii", 
+ü—‹d_ascii
+);
+
+1569 
+	`£‹nv_unsigÃd
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "time_unix", ()mi->
+ü—‹d
+);
+
+1572 
+	`gc_ä“
+ (&
+gc
+);
+
+1573 
+	}
+}
+
+1585 
+	$muÉi_cÚÃùiÚ_e¡ablished
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1587 ià(
+	`Žs_auth’tiÿtiÚ_¡©us
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 0è=ð
+TLS_AUTHENTICATION_SUCCEEDED
+)
+
+1589 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1590 
+ÝtiÚ_ty³s_found
+ = 0;
+
+1592 cÚ¡ 
+ÝtiÚ_³rmissiÚs_mask
+ =
+
+1593 
+OPT_P_INSTANCE
+
+
+1594 | 
+OPT_P_INHERIT
+
+
+1595 | 
+OPT_P_PUSH
+
+
+1596 | 
+OPT_P_TIMER
+
+
+1597 | 
+OPT_P_CONFIG
+
+
+1598 | 
+OPT_P_ECHO
+
+
+1599 | 
+OPT_P_COMP
+
+
+1600 | 
+OPT_P_SOCKFLAGS
+;
+
+1602 
+cc_sucûeded
+ = 
+Œue
+;
+
+1603 
+cc_sucûeded_couÁ
+ = 0;
+
+1605 
+	`ASSERT
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+);
+
+1608 
+	`Žs_lock_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+);
+
+1609 
+	`Žs_lock_û¹_hash_£t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+);
+
+1612 
+	`g’”©e_´efix
+ (
+mi
+);
+
+1615 ià(!
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+du¶iÿ‹_ú
+)
+
+1616 
+	`muÉi_d–‘e_dup
+ (
+m
+, 
+mi
+);
+
+1619 
+mi
+->
+vaddr_hªdË
+ = -1;
+
+1625 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_cÚfig_dœ
+)
+
+1627 cÚ¡ *
+ccd_fže
+;
+
+1629 
+ccd_fže
+ = 
+	`g’_·th
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_cÚfig_dœ
+,
+
+1630 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+1631 &
+gc
+);
+
+1634 ià(
+	`‹¡_fže
+ (
+ccd_fže
+))
+
+1636 
+	`ÝtiÚs_£rv”_impÜt
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+,
+
+1637 
+ccd_fže
+,
+
+1638 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+1639 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1640 &
+ÝtiÚ_ty³s_found
+,
+
+1641 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+);
+
+1645 
+ccd_fže
+ = 
+	`g’_·th
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_cÚfig_dœ
+,
+
+1646 
+CCD_DEFAULT
+,
+
+1647 &
+gc
+);
+
+1649 ià(
+	`‹¡_fže
+ (
+ccd_fže
+))
+
+1651 
+	`ÝtiÚs_£rv”_impÜt
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+,
+
+1652 
+ccd_fže
+,
+
+1653 
+D_IMPORT_ERRORS
+|
+M_OPTERR
+,
+
+1654 
+ÝtiÚ_³rmissiÚs_mask
+,
+
+1655 &
+ÝtiÚ_ty³s_found
+,
+
+1656 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+);
+
+1665 
+	`muÉi_£Ëù_vœtu®_addr
+ (
+m
+, 
+mi
+);
+
+1668 
+	`muÉi_þ›Á_cÚÃù_£‹nv
+ (
+m
+, 
+mi
+);
+
+1670 #ifdeà
+ENABLE_PLUGIN
+
+
+1676 ià(
+	`¶ugš_defšed
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_CONNECT
+))
+
+1678 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+1679 cÚ¡ *
+dc_fže
+ = 
+	`ü—‹_‹mp_fže
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+tmp_dœ
+, "cc", &
+gc
+);
+
+1681 ifÐ!
+dc_fže
+ ) {
+
+1682 
+cc_sucûeded
+ = 
+çl£
+;
+
+1683 
+sü�t_d•r_çžed
+;
+
+1686 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s", 
+dc_fže
+);
+
+1687 ià(
+	`¶ugš_ÿÎ
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_CONNECT
+, &
+¬gv
+, 
+NULL
+, mi->cÚ‹xt.
+c2
+.
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+1689 
+	`msg
+ (
+M_WARN
+, "WARNING: client-connect…lugin call failed");
+
+1690 
+cc_sucûeded
+ = 
+çl£
+;
+
+1694 
+	`muÉi_þ›Á_cÚÃù_po¡
+ (
+m
+, 
+mi
+, 
+dc_fže
+, 
+ÝtiÚ_³rmissiÚs_mask
+, &
+ÝtiÚ_ty³s_found
+);
+
+1695 ++
+cc_sucûeded_couÁ
+;
+
+1698 ià(!
+	`¶©fÜm_uÆšk
+ (
+dc_fže
+))
+
+1699 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:…roblem deleting�emporary file: %s",
+
+1700 
+dc_fže
+);
+
+1702 
+sü�t_d•r_çžed
+:
+
+1703 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1707 ià(
+	`¶ugš_defšed
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_CONNECT_V2
+))
+
+1709 
+¶ugš_»tuº
+ 
+´
+;
+
+1711 
+	`¶ugš_»tuº_š™
+ (&
+´
+);
+
+1713 ià(
+	`¶ugš_ÿÎ
+ (
+mi
+->
+cÚ‹xt
+.
+¶ugšs
+, 
+OPENVPN_PLUGIN_CLIENT_CONNECT_V2
+, 
+NULL
+, &
+´
+, mi->cÚ‹xt.
+c2
+.
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+1715 
+	`msg
+ (
+M_WARN
+, "WARNING: client-connect-v2…lugin call failed");
+
+1716 
+cc_sucûeded
+ = 
+çl£
+;
+
+1720 
+	`muÉi_þ›Á_cÚÃù_po¡_¶ugš
+ (
+m
+, 
+mi
+, &
+´
+, 
+ÝtiÚ_³rmissiÚs_mask
+, &
+ÝtiÚ_ty³s_found
+);
+
+1721 ++
+cc_sucûeded_couÁ
+;
+
+1724 
+	`¶ugš_»tuº_ä“
+ (&
+´
+);
+
+1731 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_cÚÃù_sü�t
+ && 
+cc_sucûeded
+)
+
+1733 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+1734 cÚ¡ *
+dc_fže
+ = 
+NULL
+;
+
+1736 
+	`£‹nv_¡r
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, "script_type", "client-connect");
+
+1738 
+dc_fže
+ = 
+	`ü—‹_‹mp_fže
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+tmp_dœ
+, "cc", &
+gc
+);
+
+1739 ifÐ!
+dc_fže
+ ) {
+
+1740 
+cc_sucûeded
+ = 
+çl£
+;
+
+1741 
+sü�t_çžed
+;
+
+1744 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sc %s",
+
+1745 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+þ›Á_cÚÃù_sü�t
+,
+
+1746 
+dc_fže
+);
+
+1748 ià(
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+es
+, 0, "--client-connect"))
+
+1750 
+	`muÉi_þ›Á_cÚÃù_po¡
+ (
+m
+, 
+mi
+, 
+dc_fže
+, 
+ÝtiÚ_³rmissiÚs_mask
+, &
+ÝtiÚ_ty³s_found
+);
+
+1751 ++
+cc_sucûeded_couÁ
+;
+
+1754 
+cc_sucûeded
+ = 
+çl£
+;
+
+1756 ià(!
+	`¶©fÜm_uÆšk
+ (
+dc_fže
+))
+
+1757 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:…roblem deleting�emporary file: %s",
+
+1758 
+dc_fže
+);
+
+1760 
+sü�t_çžed
+:
+
+1761 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1767 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1768 ià(
+cc_sucûeded
+ && 
+mi
+->
+cc_cÚfig
+)
+
+1770 
+	`muÉi_þ›Á_cÚÃù_mda
+ (
+m
+, 
+mi
+, mi->
+cc_cÚfig
+, 
+ÝtiÚ_³rmissiÚs_mask
+, &
+ÝtiÚ_ty³s_found
+);
+
+1771 ++
+cc_sucûeded_couÁ
+;
+
+1779 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+di§bË
+)
+
+1781 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI: client has been„ejected due�o 'disable' directive");
+
+1782 
+cc_sucûeded
+ = 
+çl£
+;
+
+1785 ià(
+cc_sucûeded
+)
+
+1790 
+	`do_deã¼ed_ÝtiÚs
+ (&
+mi
+->
+cÚ‹xt
+, 
+ÝtiÚ_ty³s_found
+);
+
+1795 ià(!
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_defšed
+)
+
+1797 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI:‚o dynamic or static„emote --ifconfig‡ddress is‡vailable for %s",
+
+1798 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1804 ià(!
+	`ifcÚfig_push_cÚ¡¿št_§tisf›d
+ (&
+mi
+->
+cÚ‹xt
+))
+
+1807 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI ERROR:…rimary virtual IP for %s (%s) violates�unnel‚etwork/netmask constraint (%s/%s)",
+
+1808 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+),
+
+1809 
+	`´št_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+, 0, &
+gc
+),
+
+1810 
+	`´št_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_cÚ¡¿št_ÃtwÜk
+, 0, &
+gc
+),
+
+1811 
+	`´št_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+push_ifcÚfig_cÚ¡¿št_Ãtmask
+, 0, &
+gc
+));
+
+1818 ià(
+	`TUNNEL_TYPE
+ (
+mi
+->
+cÚ‹xt
+.
+c1
+.
+tuÁ­
+è=ð
+DEV_TYPE_TUN
+)
+
+1820 ià(
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_defšed
+)
+
+1822 
+	`muÉi_Ë¬n_š_addr_t
+ (
+m
+, 
+mi
+, mi->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+, -1, 
+Œue
+);
+
+1823 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI:…rimary virtual IP for %s: %s",
+
+1824 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+),
+
+1825 
+	`´št_š_addr_t
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+, 0, &
+gc
+));
+
+1828 ià(
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_defšed
+)
+
+1830 
+	`muÉi_Ë¬n_š6_addr
+ (
+m
+, 
+mi
+, mi->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_loÿl
+, -1, 
+Œue
+);
+
+1832 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI:…rimary virtual IPv6 for %s: %s",
+
+1833 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+),
+
+1834 
+	`´št_š6_addr
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_�v6_loÿl
+, 0, &
+gc
+));
+
+1839 
+	`muÉi_add_œou‹s
+ (
+m
+, 
+mi
+);
+
+1846 
+	`»move_œou‹s_äom_push_rou‹_li¡
+ (&
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+);
+
+1848 ià(
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+œou‹s
+)
+
+1850 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI: --iroute options„ejected for %s -- iroute only works with�un-style�unnels",
+
+1851 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+1855 
+mi
+->
+»pÜtšg_addr
+ = mi->
+cÚ‹xt
+.
+c2
+.
+push_ifcÚfig_loÿl
+;
+
+1858 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+cÚ‹xt_auth
+ = 
+CAS_SUCCEEDED
+;
+
+1863 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+cÚ‹xt_auth
+ = 
+cc_sucûeded_couÁ
+ ? 
+CAS_PARTIAL
+ : 
+CAS_FAILED
+;
+
+1867 
+mi
+->
+cÚÃùiÚ_e¡ablished_æag
+ = 
+Œue
+;
+
+1870 ++
+m
+->
+n_þ›Ás
+;
+
+1871 
+	`upd©e_m¡©_n_þ›Ás
+(
+m
+->
+n_þ›Ás
+);
+
+1872 --
+mi
+->
+n_þ›Ás_d–�
+;
+
+1874 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1875 ià(
+mªagem’t
+)
+
+1876 
+	`mªagem’t_cÚÃùiÚ_e¡ablished
+ (
+mªagem’t
+, &
+mi
+->
+cÚ‹xt
+.
+c2
+.
+mda_cÚ‹xt
+, mi->cÚ‹xt.c2.
+es
+);
+
+1879 
+	`gc_ä“
+ (&
+gc
+);
+
+1885 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+push_»¶y_deã¼ed
+ = 
+çl£
+;
+
+1886 
+	}
+}
+
+1893 
+	$muÉi_add_mbuf
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1894 
+muÉi_š¡ªû
+ *
+mi
+,
+
+1895 
+mbuf_bufãr
+ *
+mb
+)
+
+1897 ià(
+	`muÉi_ou�ut_queue_»ady
+ (
+m
+, 
+mi
+))
+
+1899 
+mbuf_™em
+ 
+™em
+;
+
+1900 
+™em
+.
+bufãr
+ = 
+mb
+;
+
+1901 
+™em
+.
+š¡ªû
+ = 
+mi
+;
+
+1902 
+	`mbuf_add_™em
+ (
+m
+->
+mbuf
+, &
+™em
+);
+
+1906 
+	`msg
+ (
+D_MULTI_DROPPED
+, "MULTI:…acket dropped due�o output saturation (multi_add_mbuf)");
+
+1908 
+	}
+}
+
+1913 
+šlše
+ 
+
+1914 
+	$muÉi_uniÿ¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1915 cÚ¡ 
+bufãr
+ *
+buf
+,
+
+1916 
+muÉi_š¡ªû
+ *
+mi
+)
+
+1918 
+mbuf_bufãr
+ *
+mb
+;
+
+1920 ià(
+	`BLEN
+ (
+buf
+) > 0)
+
+1922 
+mb
+ = 
+	`mbuf_®loc_buf
+ (
+buf
+);
+
+1923 
+mb
+->
+æags
+ = 
+MF_UNICAST
+;
+
+1924 
+	`muÉi_add_mbuf
+ (
+m
+, 
+mi
+, 
+mb
+);
+
+1925 
+	`mbuf_ä“_buf
+ (
+mb
+);
+
+1927 
+	}
+}
+
+1933 
+	$muÉi_bÿ¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+1934 cÚ¡ 
+bufãr
+ *
+buf
+,
+
+1935 cÚ¡ 
+muÉi_š¡ªû
+ *
+£nd”_š¡ªû
+,
+
+1936 cÚ¡ 
+mrou‹_addr
+ *
+£nd”_addr
+)
+
+1938 
+hash_™”©Ü
+ 
+hi
+;
+
+1939 
+hash_–em’t
+ *
+he
+;
+
+1940 
+muÉi_š¡ªû
+ *
+mi
+;
+
+1941 
+mbuf_bufãr
+ *
+mb
+;
+
+1943 ià(
+	`BLEN
+ (
+buf
+) > 0)
+
+1945 
+	`³rf_push
+ (
+PERF_MULTI_BCAST
+);
+
+1946 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+1947 
+	`´štf
+ ("BCAST†’=%d\n", 
+	`BLEN
+ (
+buf
+));
+
+1949 
+mb
+ = 
+	`mbuf_®loc_buf
+ (
+buf
+);
+
+1950 
+	`hash_™”©Ü_š™
+ (
+m
+->
+™”
+, &
+hi
+);
+
+1952 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+1954 
+mi
+ = (
+muÉi_š¡ªû
+ *è
+he
+->
+v®ue
+;
+
+1955 ià(
+mi
+ !ð
+£nd”_š¡ªû
+ && !mi->
+h®t
+)
+
+1957 #ifdeà
+ENABLE_PF
+
+
+1958 ià(
+£nd”_š¡ªû
+)
+
+1960 ià(!
+	`pf_c2c_‹¡
+ (&
+£nd”_š¡ªû
+->
+cÚ‹xt
+, &
+mi
+->context, "bcast_c2c"))
+
+1962 
+	`msg
+ (
+D_PF_DROPPED_BCAST
+, "PF: client[%s] -> client[%s]…acket dropped by BCAST…acket filter",
+
+1963 
+	`mi_´efix
+ (
+£nd”_š¡ªû
+),
+
+1964 
+	`mi_´efix
+ (
+mi
+));
+
+1968 ià(
+£nd”_addr
+)
+
+1970 ià(!
+	`pf_addr_‹¡
+ (&
+mi
+->
+cÚ‹xt
+, 
+£nd”_addr
+, "bcast_src_addr"))
+
+1972 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1973 
+	`msg
+ (
+D_PF_DROPPED_BCAST
+, "PF:‡ddr[%s] -> client[%s]…acket dropped by BCAST…acket filter",
+
+1974 
+	`mrou‹_addr_´št_ex
+ (
+£nd”_addr
+, 
+MAPF_SHOW_ARP
+, &
+gc
+),
+
+1975 
+	`mi_´efix
+ (
+mi
+));
+
+1976 
+	`gc_ä“
+ (&
+gc
+);
+
+1981 
+	`muÉi_add_mbuf
+ (
+m
+, 
+mi
+, 
+mb
+);
+
+1985 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+1986 
+	`mbuf_ä“_buf
+ (
+mb
+);
+
+1987 
+	`³rf_pÝ
+ ();
+
+1989 
+	}
+}
+
+2002 
+šlše
+ 
+
+2003 
+	$compu‹_wakeup_sigma
+ (cÚ¡ 
+timev®
+ *
+d–�
+)
+
+2005 ià(
+d–�
+->
+tv_£c
+ < 1)
+
+2008  
+d–�
+->
+tv_u£c
+ >> 3;
+
+2013 ià(
+d–�
+->
+tv_£c
+ < 600)
+
+2014  
+d–�
+->
+tv_£c
+ << 17;
+
+2018 
+	}
+}
+
+2021 
+	$muÉi_scheduË_cÚ‹xt_wakeup
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+2024 
+	`ASSERT
+ (!
+	`Ý’v²_g‘timeofday
+ (&
+mi
+->
+wakeup
+, 
+NULL
+));
+
+2025 
+	`tv_add
+ (&
+mi
+->
+wakeup
+, &mi->
+cÚ‹xt
+.
+c2
+.
+timev®
+);
+
+2028 
+	`scheduË_add_’Œy
+ (
+m
+->
+scheduË
+,
+
+2029 (
+scheduË_’Œy
+ *è
+mi
+,
+
+2030 &
+mi
+->
+wakeup
+,
+
+2031 
+	`compu‹_wakeup_sigma
+ (&
+mi
+->
+cÚ‹xt
+.
+c2
+.
+timev®
+));
+
+2032 
+	}
+}
+
+2041 
+boÞ
+
+
+2042 
+	$muÉi_´oûss_po¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+æags
+)
+
+2044 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+2046 ià(!
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+è&& ((
+æags
+ & 
+MPP_PRE_SELECT
+è|| ((æag & 
+MPP_CONDITIONAL_PRE_SELECT
+è&& !
+	`ANY_OUT
+ (&mi->context))))
+
+2050 
+	`´e_£Ëù
+ (&
+mi
+->
+cÚ‹xt
+);
+
+2052 ià(!
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+))
+
+2055 
+	`muÉi_scheduË_cÚ‹xt_wakeup
+(
+m
+, 
+mi
+);
+
+2059 ià(!
+mi
+->
+cÚÃùiÚ_e¡ablished_æag
+ && 
+	`CONNECTION_ESTABLISHED
+ (&mi->
+cÚ‹xt
+))
+
+2060 
+	`muÉi_cÚÃùiÚ_e¡ablished
+ (
+m
+, 
+mi
+);
+
+2064 ià(
+	`IS_SIG
+ (&
+mi
+->
+cÚ‹xt
+))
+
+2066 ià(
+æags
+ & 
+MPP_CLOSE_ON_SIGNAL
+)
+
+2068 
+	`muÉi_þo£_š¡ªû_Ú_sigÇl
+ (
+m
+, 
+mi
+);
+
+2069 
+»t
+ = 
+çl£
+;
+
+2075 
+	`muÉi_£t_³ndšg
+ (
+m
+, 
+	`ANY_OUT
+ (&
+mi
+->
+cÚ‹xt
+è? m˜: 
+NULL
+);
+
+2077 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+2078 
+	`´štf
+ ("POST %s[%d]�o=%d†o=%d/%d w=%d/%d\n",
+
+2079 
+	`id
+(
+mi
+),
+
+2080 (è(
+mi
+ =ð
+m
+->
+³ndšg
+),
+
+2081 
+mi
+ ? mi->
+cÚ‹xt
+.
+c2
+.
+to_tun
+.
+Ën
+ : -1,
+
+2082 
+mi
+ ? mi->
+cÚ‹xt
+.
+c2
+.
+to_lšk
+.
+Ën
+ : -1,
+
+2083 (
+mi
+ && mi->
+cÚ‹xt
+.
+c2
+.
+äagm’t
+è? mi->cÚ‹xt.c2.äagm’t->
+outgošg
+.
+Ën
+ : -1,
+
+2084 ()
+mi
+->
+cÚ‹xt
+.
+c2
+.
+timev®
+.
+tv_£c
+,
+
+2085 ()
+mi
+->
+cÚ‹xt
+.
+c2
+.
+timev®
+.
+tv_u£c
+);
+
+2089 ià((
+æags
+ & 
+MPP_RECORD_TOUCH
+è&& 
+m
+->
+mµ_touched
+)
+
+2090 *
+m
+->
+mµ_touched
+ = 
+mi
+;
+
+2092  
+»t
+;
+
+2093 
+	}
+}
+
+2099 
+boÞ
+
+
+2100 
+	$muÉi_´oûss_šcomšg_lšk
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+š¡ªû
+, cÚ¡ 
+mµ_æags
+)
+
+2102 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2104 
+cÚ‹xt
+ *
+c
+;
+
+2105 
+mrou‹_addr
+ 
+¤c
+, 
+de¡
+;
+
+2106 
+mrou‹_æags
+;
+
+2107 
+muÉi_š¡ªû
+ *
+mi
+;
+
+2108 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+2110 ià(
+m
+->
+³ndšg
+)
+
+2111  
+Œue
+;
+
+2113 ià(!
+š¡ªû
+)
+
+2115 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+2116 
+	`´štf
+ ("TCP/UDP -> TUN [%d]\n", 
+	`BLEN
+ (&
+m
+->
+tÝ
+.
+c2
+.
+buf
+));
+
+2118 
+	`muÉi_£t_³ndšg
+ (
+m
+, 
+	`muÉi_g‘_ü—‹_š¡ªû_udp
+ (m));
+
+2121 
+	`muÉi_£t_³ndšg
+ (
+m
+, 
+š¡ªû
+);
+
+2123 ià(
+m
+->
+³ndšg
+)
+
+2125 
+	`£t_´efix
+ (
+m
+->
+³ndšg
+);
+
+2128 
+c
+ = &
+m
+->
+³ndšg
+->
+cÚ‹xt
+;
+
+2130 ià(!
+š¡ªû
+)
+
+2133 
+c
+->
+c2
+.
+buf
+ = 
+m
+->
+tÝ
+.c2.buf;
+
+2136 
+c
+->
+c2
+.
+äom
+ = 
+m
+->
+tÝ
+.c2.from;
+
+2139 ià(
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+) > 0)
+
+2142 
+	`´oûss_šcomšg_lšk
+ (
+c
+);
+
+2144 ià(
+	`TUNNEL_TYPE
+ (
+m
+->
+tÝ
+.
+c1
+.
+tuÁ­
+è=ð
+DEV_TYPE_TUN
+)
+
+2147 
+mrou‹_æags
+ = 
+	`mrou‹_exŒaù_addr_äom_·ck‘
+ (&
+¤c
+,
+
+2148 &
+de¡
+,
+
+2149 
+NULL
+,
+
+2150 
+NULL
+,
+
+2151 &
+c
+->
+c2
+.
+to_tun
+,
+
+2152 
+DEV_TYPE_TUN
+);
+
+2155 ià(!(
+mrou‹_æags
+ & 
+MROUTE_EXTRACT_SUCCEEDED
+))
+
+2157 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2160 ià(
+	`muÉi_g‘_š¡ªû_by_vœtu®_addr
+ (
+m
+, &
+¤c
+, 
+Œue
+è!ðm->
+³ndšg
+)
+
+2163 iàÐ(
+¤c
+.
+ty³
+ & 
+MR_ADDR_MASK
+è=ð
+MR_ADDR_IPV6
+ &&
+
+2164 
+¤c
+.
+addr
+[0] == 0xfe && src.addr[1] == 0x80 )
+
+2170 
+	`msg
+ (
+D_MULTI_DROPPED
+, "MULTI: bad source‡ddress from client [%s],…acket dropped",
+
+2171 
+	`mrou‹_addr_´št
+ (&
+¤c
+, &
+gc
+));
+
+2173 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2176 ià(
+m
+->
+’abË_c2c
+)
+
+2179 ià(
+mrou‹_æags
+ & 
+MROUTE_EXTRACT_MCAST
+)
+
+2182 
+	`muÉi_bÿ¡
+ (
+m
+, &
+c
+->
+c2
+.
+to_tun
+, m->
+³ndšg
+, 
+NULL
+);
+
+2186 
+	`ASSERT
+ (!(
+mrou‹_æags
+ & 
+MROUTE_EXTRACT_BCAST
+));
+
+2187 
+mi
+ = 
+	`muÉi_g‘_š¡ªû_by_vœtu®_addr
+ (
+m
+, &
+de¡
+, 
+Œue
+);
+
+2190 ià(
+mi
+)
+
+2192 #ifdeà
+ENABLE_PF
+
+
+2193 ià(!
+	`pf_c2c_‹¡
+ (
+c
+, &
+mi
+->
+cÚ‹xt
+, "tun_c2c"))
+
+2195 
+	`msg
+ (
+D_PF_DROPPED
+, "PF: client -> client[%s]…acket dropped by TUN…acket filter",
+
+2196 
+	`mi_´efix
+ (
+mi
+));
+
+2201 
+	`muÉi_uniÿ¡
+ (
+m
+, &
+c
+->
+c2
+.
+to_tun
+, 
+mi
+);
+
+2202 
+	`»gi¡”_aùiv™y
+ (
+c
+, 
+	`BLEN
+(&c->
+c2
+.
+to_tun
+));
+
+2204 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2208 #ifdeà
+ENABLE_PF
+
+
+2209 ià(
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ && !
+	`pf_addr_‹¡
+ (c, &
+de¡
+, "tun_dest_addr"))
+
+2211 
+	`msg
+ (
+D_PF_DROPPED
+, "PF: client ->‡ddr[%s]…acket dropped by TUN…acket filter",
+
+2212 
+	`mrou‹_addr_´št_ex
+ (&
+de¡
+, 
+MAPF_SHOW_ARP
+, &
+gc
+));
+
+2213 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2217 ià(
+	`TUNNEL_TYPE
+ (
+m
+->
+tÝ
+.
+c1
+.
+tuÁ­
+è=ð
+DEV_TYPE_TAP
+)
+
+2219 #ifdeà
+ENABLE_PF
+
+
+2220 
+mrou‹_addr
+ 
+ede¡
+;
+
+2221 
+	`mrou‹_addr_»£t
+ (&
+ede¡
+);
+
+2224 
+mrou‹_æags
+ = 
+	`mrou‹_exŒaù_addr_äom_·ck‘
+ (&
+¤c
+,
+
+2225 &
+de¡
+,
+
+2226 
+NULL
+,
+
+2227 #ifdeà
+ENABLE_PF
+
+
+2228 &
+ede¡
+,
+
+2230 
+NULL
+,
+
+2232 &
+c
+->
+c2
+.
+to_tun
+,
+
+2233 
+DEV_TYPE_TAP
+);
+
+2235 ià(
+mrou‹_æags
+ & 
+MROUTE_EXTRACT_SUCCEEDED
+)
+
+2237 ià(
+	`muÉi_Ë¬n_addr
+ (
+m
+, m->
+³ndšg
+, &
+¤c
+, 0) == m->pending)
+
+2240 ià(
+m
+->
+’abË_c2c
+)
+
+2242 ià(
+mrou‹_æags
+ & (
+MROUTE_EXTRACT_BCAST
+|
+MROUTE_EXTRACT_MCAST
+))
+
+2244 
+	`muÉi_bÿ¡
+ (
+m
+, &
+c
+->
+c2
+.
+to_tun
+, m->
+³ndšg
+, 
+NULL
+);
+
+2248 
+mi
+ = 
+	`muÉi_g‘_š¡ªû_by_vœtu®_addr
+ (
+m
+, &
+de¡
+, 
+çl£
+);
+
+2251 ià(
+mi
+)
+
+2253 #ifdeà
+ENABLE_PF
+
+
+2254 ià(!
+	`pf_c2c_‹¡
+ (
+c
+, &
+mi
+->
+cÚ‹xt
+, "tap_c2c"))
+
+2256 
+	`msg
+ (
+D_PF_DROPPED
+, "PF: client -> client[%s]…acket dropped by TAP…acket filter",
+
+2257 
+	`mi_´efix
+ (
+mi
+));
+
+2262 
+	`muÉi_uniÿ¡
+ (
+m
+, &
+c
+->
+c2
+.
+to_tun
+, 
+mi
+);
+
+2263 
+	`»gi¡”_aùiv™y
+ (
+c
+, 
+	`BLEN
+(&c->
+c2
+.
+to_tun
+));
+
+2265 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2269 #ifdeà
+ENABLE_PF
+
+
+2270 ià(
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ && !
+	`pf_addr_‹¡
+ (c, &
+ede¡
+, "tap_dest_addr"))
+
+2272 
+	`msg
+ (
+D_PF_DROPPED
+, "PF: client ->‡ddr[%s]…acket dropped by TAP…acket filter",
+
+2273 
+	`mrou‹_addr_´št_ex
+ (&
+ede¡
+, 
+MAPF_SHOW_ARP
+, &
+gc
+));
+
+2274 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2280 
+	`msg
+ (
+D_MULTI_DROPPED
+, "MULTI: bad source‡ddress from client [%s],…acket dropped",
+
+2281 
+	`mrou‹_addr_´št
+ (&
+¤c
+, &
+gc
+));
+
+2282 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2287 
+c
+->
+c2
+.
+to_tun
+.
+Ën
+ = 0;
+
+2293 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, m->
+³ndšg
+, 
+mµ_æags
+);
+
+2295 
+	`þ—r_´efix
+ ();
+
+2298 
+	`gc_ä“
+ (&
+gc
+);
+
+2299  
+»t
+;
+
+2300 
+	}
+}
+
+2306 
+boÞ
+
+
+2307 
+	$muÉi_´oûss_šcomšg_tun
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+)
+
+2309 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2310 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+2312 ià(
+	`BLEN
+ (&
+m
+->
+tÝ
+.
+c2
+.
+buf
+) > 0)
+
+2314 
+mrou‹_æags
+;
+
+2315 
+mrou‹_addr
+ 
+¤c
+, 
+de¡
+;
+
+2316 cÚ¡ 
+dev_ty³
+ = 
+	`TUNNEL_TYPE
+ (
+m
+->
+tÝ
+.
+c1
+.
+tuÁ­
+);
+
+2318 #ifdeà
+ENABLE_PF
+
+
+2319 
+mrou‹_addr
+ 
+e¤c
+, *
+e1
+, *
+e2
+;
+
+2320 ià(
+dev_ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2322 
+e1
+ = 
+NULL
+;
+
+2323 
+e2
+ = &
+¤c
+;
+
+2327 
+e1
+ = 
+e2
+ = &
+e¤c
+;
+
+2328 
+	`mrou‹_addr_»£t
+ (&
+e¤c
+);
+
+2332 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+2333 
+	`´štf
+ ("TUN -> TCP/UDP [%d]\n", 
+	`BLEN
+ (&
+m
+->
+tÝ
+.
+c2
+.
+buf
+));
+
+2336 ià(
+m
+->
+³ndšg
+)
+
+2337  
+Œue
+;
+
+2344 
+mrou‹_æags
+ = 
+	`mrou‹_exŒaù_addr_äom_·ck‘
+ (&
+¤c
+,
+
+2345 &
+de¡
+,
+
+2346 #ifdeà
+ENABLE_PF
+
+
+2347 
+e1
+,
+
+2349 
+NULL
+,
+
+2351 
+NULL
+,
+
+2352 &
+m
+->
+tÝ
+.
+c2
+.
+buf
+,
+
+2353 
+dev_ty³
+);
+
+2355 ià(
+mrou‹_æags
+ & 
+MROUTE_EXTRACT_SUCCEEDED
+)
+
+2357 
+cÚ‹xt
+ *
+c
+;
+
+2360 ià(
+mrou‹_æags
+ & (
+MROUTE_EXTRACT_BCAST
+|
+MROUTE_EXTRACT_MCAST
+))
+
+2363 #ifdeà
+ENABLE_PF
+
+
+2364 
+	`muÉi_bÿ¡
+ (
+m
+, &m->
+tÝ
+.
+c2
+.
+buf
+, 
+NULL
+, 
+e2
+);
+
+2366 
+	`muÉi_bÿ¡
+ (
+m
+, &m->
+tÝ
+.
+c2
+.
+buf
+, 
+NULL
+, NULL);
+
+2371 
+	`muÉi_£t_³ndšg
+ (
+m
+, 
+	`muÉi_g‘_š¡ªû_by_vœtu®_addr
+ (m, &
+de¡
+, 
+dev_ty³
+ =ð
+DEV_TYPE_TUN
+));
+
+2373 ià(
+m
+->
+³ndšg
+)
+
+2376 
+c
+ = &
+m
+->
+³ndšg
+->
+cÚ‹xt
+;
+
+2378 
+	`£t_´efix
+ (
+m
+->
+³ndšg
+);
+
+2380 #ifdeà
+ENABLE_PF
+
+
+2381 ià(!
+	`pf_addr_‹¡
+ (
+c
+, 
+e2
+, "tun_tap_src_addr"))
+
+2383 
+	`msg
+ (
+D_PF_DROPPED
+, "PF:‡ddr[%s] -> client…acket dropped by…acket filter",
+
+2384 
+	`mrou‹_addr_´št_ex
+ (&
+¤c
+, 
+MAPF_SHOW_ARP
+, &
+gc
+));
+
+2385 
+	`buf_»£t_Ën
+ (&
+c
+->
+c2
+.
+buf
+);
+
+2390 ià(
+	`muÉi_ou�ut_queue_»ady
+ (
+m
+, m->
+³ndšg
+))
+
+2393 
+c
+->
+c2
+.
+buf
+ = 
+m
+->
+tÝ
+.c2.buf;
+
+2398 
+	`msg
+ (
+D_MULTI_DROPPED
+, "MULTI:…acket dropped due�o output saturation (multi_process_incoming_tun)");
+
+2399 
+	`buf_»£t_Ën
+ (&
+c
+->
+c2
+.
+buf
+);
+
+2404 
+	`´oûss_šcomšg_tun
+ (
+c
+);
+
+2407 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, m->
+³ndšg
+, 
+mµ_æags
+);
+
+2409 
+	`þ—r_´efix
+ ();
+
+2414 
+	`gc_ä“
+ (&
+gc
+);
+
+2415  
+»t
+;
+
+2416 
+	}
+}
+
+2422 
+muÉi_š¡ªû
+ *
+
+2423 
+	$muÉi_g‘_queue
+ (
+mbuf_£t
+ *
+ms
+)
+
+2425 
+mbuf_™em
+ 
+™em
+;
+
+2427 ià(
+	`mbuf_exŒaù_™em
+ (
+ms
+, &
+™em
+))
+
+2429 
+p�_æags
+ = 
+PIPV4_PASSTOS
+;
+
+2431 
+	`£t_´efix
+ (
+™em
+.
+š¡ªû
+);
+
+2432 
+™em
+.
+š¡ªû
+->
+cÚ‹xt
+.
+c2
+.
+buf
+ = i‹m.
+bufãr
+->buf;
+
+2433 ià(
+™em
+.
+bufãr
+->
+æags
+ & 
+MF_UNICAST
+)
+
+2434 
+p�_æags
+ |ð
+PIP_MSSFIX
+;
+
+2435 
+	`´oûss_�_h—d”
+ (&
+™em
+.
+š¡ªû
+->
+cÚ‹xt
+, 
+p�_æags
+, &™em.š¡ªû->cÚ‹xt.
+c2
+.
+buf
+);
+
+2436 
+	`’üy±_sign
+ (&
+™em
+.
+š¡ªû
+->
+cÚ‹xt
+, 
+Œue
+);
+
+2437 
+	`mbuf_ä“_buf
+ (
+™em
+.
+bufãr
+);
+
+2439 
+	`dmsg
+ (
+D_MULTI_DEBUG
+, "MULTI: C2C/MCAST/BCAST");
+
+2441 
+	`þ—r_´efix
+ ();
+
+2442  
+™em
+.
+š¡ªû
+;
+
+2446  
+NULL
+;
+
+2448 
+	}
+}
+
+2454 
+boÞ
+
+
+2455 
+	$muÉi_´oûss_timeout
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+)
+
+2457 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+2459 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+2460 
+	`´štf
+ ("% -> TIMEOUT\n", 
+	`id
+(
+m
+->
+—¾›¡_wakeup
+));
+
+2464 ià(
+m
+->
+—¾›¡_wakeup
+)
+
+2466 
+	`£t_´efix
+ (
+m
+->
+—¾›¡_wakeup
+);
+
+2467 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, m->
+—¾›¡_wakeup
+, 
+mµ_æags
+);
+
+2468 
+m
+->
+—¾›¡_wakeup
+ = 
+NULL
+;
+
+2469 
+	`þ—r_´efix
+ ();
+
+2471  
+»t
+;
+
+2472 
+	}
+}
+
+2478 
+	$muÉi_´oûss_drÝ_outgošg_tun
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+)
+
+2480 
+muÉi_š¡ªû
+ *
+mi
+ = 
+m
+->
+³ndšg
+;
+
+2482 
+	`ASSERT
+ (
+mi
+);
+
+2484 
+	`£t_´efix
+ (
+mi
+);
+
+2486 
+	`msg
+ (
+D_MULTI_ERRORS
+, "MULTI: Outgoing TUN queue full, dropped…acket†en=%d",
+
+2487 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+to_tun
+.
+Ën
+);
+
+2489 
+	`buf_»£t
+ (&
+mi
+->
+cÚ‹xt
+.
+c2
+.
+to_tun
+);
+
+2491 
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+2492 
+	`þ—r_´efix
+ ();
+
+2493 
+	}
+}
+
+2500 
+	$rou‹_quÙa_exûeded
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+)
+
+2502 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2503 
+	`msg
+ (
+D_ROUTE_QUOTA
+, "MULTI ROUTE:„oute quota (%d)ƒxceeded for %s (see --max-routes-per-client option)",
+
+2504 
+mi
+->
+cÚ‹xt
+.
+ÝtiÚs
+.
+max_rou‹s_³r_þ›Á
+,
+
+2505 
+	`muÉi_š¡ªû_¡ršg
+ (
+mi
+, 
+çl£
+, &
+gc
+));
+
+2506 
+	`gc_ä“
+ (&
+gc
+);
+
+2507 
+	}
+}
+
+2509 #ifdeà
+ENABLE_DEBUG
+
+
+2514 
+	$g»mlš_æood_þ›Ás
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2516 cÚ¡ 
+Ëv–
+ = 
+	`GREMLIN_PACKET_FLOOD_LEVEL
+ (
+m
+->
+tÝ
+.
+ÝtiÚs
+.
+g»mlš
+);
+
+2517 ià(
+Ëv–
+)
+
+2519 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2520 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf_gc
+ (
+	`BUF_SIZE
+ (&
+m
+->
+tÝ
+.
+c2
+.
+äame
+), &
+gc
+);
+
+2521 
+·ck‘_æood_·rms
+ 
+·rm
+ = 
+	`g‘_·ck‘_æood_·rms
+ (
+Ëv–
+);
+
+2522 
+i
+;
+
+2524 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+buf
+, 
+	`FRAME_HEADROOM
+ (&
+m
+->
+tÝ
+.
+c2
+.
+äame
+)));
+
+2525 
+·rm
+.
+·ck‘_size
+ = 
+	`mš_št
+ (·rm.·ck‘_size, 
+	`MAX_RW_SIZE_TUN
+ (&
+m
+->
+tÝ
+.
+c2
+.
+äame
+));
+
+2527 
+	`msg
+ (
+D_GREMLIN
+, "GREMLIN_FLOOD_CLIENTS: flooding clients with %d…ackets of size %d",
+
+2528 
+·rm
+.
+n_·ck‘s
+,
+
+2529 
+·rm
+.
+·ck‘_size
+);
+
+2531 
+i
+ = 0; i < 
+·rm
+.
+·ck‘_size
+; ++i)
+
+2532 
+	`ASSERT
+ (
+	`buf_wr™e_u8
+ (&
+buf
+, 
+	`g‘_¿ndom
+ () & 0xFF));
+
+2534 
+i
+ = 0; i < 
+·rm
+.
+n_·ck‘s
+; ++i)
+
+2535 
+	`muÉi_bÿ¡
+ (
+m
+, &
+buf
+, 
+NULL
+, NULL);
+
+2537 
+	`gc_ä“
+ (&
+gc
+);
+
+2539 
+	}
+}
+
+2542 
+boÞ
+
+
+2543 
+	$¡®e_rou‹_check_Œigg”
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2545 
+timev®
+ 
+nuÎ
+;
+
+2546 
+	`CLEAR
+ (
+nuÎ
+);
+
+2547  
+	`ev’t_timeout_Œigg”
+ (&
+m
+->
+¡®e_rou‹s_check_‘
+, &
+nuÎ
+, 
+ETT_DEFAULT
+);
+
+2548 
+	}
+}
+
+2554 
+	$muÉi_´oûss_³r_£cÚd_tim”s_dowÜk
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2557 
+	`muÉi_»­_´oûss
+ (
+m
+);
+
+2560 ià(
+m
+->
+tÝ
+.
+c1
+.
+¡©us_ou�ut
+)
+
+2562 ià(
+	`¡©us_Œigg”
+ (
+m
+->
+tÝ
+.
+c1
+.
+¡©us_ou�ut
+))
+
+2563 
+	`muÉi_´št_¡©us
+ (
+m
+, m->
+tÝ
+.
+c1
+.
+¡©us_ou�ut
+, m->
+¡©us_fže_v”siÚ
+);
+
+2567 
+	`muÉi_ifcÚfig_poÞ_³rsi¡
+ (
+m
+, 
+çl£
+);
+
+2569 #ifdeà
+ENABLE_DEBUG
+
+
+2570 
+	`g»mlš_æood_þ›Ás
+ (
+m
+);
+
+2574 ià(
+m
+->
+tÝ
+.
+ÝtiÚs
+.
+¡®e_rou‹s_check_š‹rv®
+ && 
+	`¡®e_rou‹_check_Œigg”
+ (m))
+
+2575 
+	`check_¡®e_rou‹s
+ (
+m
+);
+
+2576 
+	}
+}
+
+2579 
+	$muÉi_tÝ_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+cÚ‹xt
+ *
+tÝ
+, cÚ¡ 
+boÞ
+ 
+®loc_bufãrs
+)
+
+2581 
+	`šh”™_cÚ‹xt_tÝ
+ (&
+m
+->
+tÝ
+,�op);
+
+2582 
+m
+->
+tÝ
+.
+c2
+.
+bufãrs
+ = 
+NULL
+;
+
+2583 ià(
+®loc_bufãrs
+)
+
+2584 
+m
+->
+tÝ
+.
+c2
+.
+bufãrs
+ = 
+	`š™_cÚ‹xt_bufãrs
+ (&tÝ->c2.
+äame
+);
+
+2585 
+	}
+}
+
+2588 
+	$muÉi_tÝ_ä“
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2590 
+	`þo£_cÚ‹xt
+ (&
+m
+->
+tÝ
+, -1, 
+CC_GC_FREE
+);
+
+2591 
+	`ä“_cÚ‹xt_bufãrs
+ (
+m
+->
+tÝ
+.
+c2
+.
+bufãrs
+);
+
+2592 
+	}
+}
+
+2598 
+boÞ
+
+
+2599 
+	$muÉi_´oûss_sigÇl
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2601 ià(
+m
+->
+tÝ
+.
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR2
+)
+
+2603 
+¡©us_ou�ut
+ *
+so
+ = 
+	`¡©us_Ý’
+ (
+NULL
+, 0, 
+M_INFO
+, NULL, 0);
+
+2604 
+	`muÉi_´št_¡©us
+ (
+m
+, 
+so
+, m->
+¡©us_fže_v”siÚ
+);
+
+2605 
+	`¡©us_þo£
+ (
+so
+);
+
+2606 
+m
+->
+tÝ
+.
+sig
+->
+sigÇl_»ûived
+ = 0;
+
+2607  
+çl£
+;
+
+2609  
+Œue
+;
+
+2610 
+	}
+}
+
+2617 
+	$muÉi_þo£_š¡ªû_Ú_sigÇl
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+2619 
+	`»m­_sigÇl
+ (&
+mi
+->
+cÚ‹xt
+);
+
+2620 
+	`£t_´efix
+ (
+mi
+);
+
+2621 
+	`´št_sigÇl
+ (
+mi
+->
+cÚ‹xt
+.
+sig
+, "þ›Á-š¡ªû", 
+D_MULTI_LOW
+);
+
+2622 
+	`þ—r_´efix
+ ();
+
+2623 
+	`muÉi_þo£_š¡ªû
+ (
+m
+, 
+mi
+, 
+çl£
+);
+
+2624 
+	}
+}
+
+2627 
+	$muÉi_sigÇl_š¡ªû
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+sig
+)
+
+2629 
+mi
+->
+cÚ‹xt
+.
+sig
+->
+sigÇl_»ûived
+ = sig;
+
+2630 
+	`muÉi_þo£_š¡ªû_Ú_sigÇl
+ (
+m
+, 
+mi
+);
+
+2631 
+	}
+}
+
+2637 #ifdeà
+ENABLE_MANAGEMENT
+
+
+2640 
+	$mªagem’t_ÿÎback_¡©us
+ (*
+¬g
+, cÚ¡ 
+v”siÚ
+, 
+¡©us_ou�ut
+ *
+so
+)
+
+2642 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2644 ià(!
+v”siÚ
+)
+
+2645 
+	`muÉi_´št_¡©us
+ (
+m
+, 
+so
+, m->
+¡©us_fže_v”siÚ
+);
+
+2647 
+	`muÉi_´št_¡©us
+ (
+m
+, 
+so
+, 
+v”siÚ
+);
+
+2648 
+	}
+}
+
+2651 
+	$mªagem’t_ÿÎback_n_þ›Ás
+ (*
+¬g
+)
+
+2653 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2654  
+m
+->
+n_þ›Ás
+;
+
+2655 
+	}
+}
+
+2658 
+	$mªagem’t_ÿÎback_kžl_by_ú
+ (*
+¬g
+, cÚ¡ *
+d–_ú
+)
+
+2660 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2661 
+hash_™”©Ü
+ 
+hi
+;
+
+2662 
+hash_–em’t
+ *
+he
+;
+
+2663 
+couÁ
+ = 0;
+
+2665 
+	`hash_™”©Ü_š™
+ (
+m
+->
+™”
+, &
+hi
+);
+
+2666 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+2668 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+2669 ià(!
+mi
+->
+h®t
+)
+
+2671 cÚ¡ *
+ú
+ = 
+	`Žs_commÚ_Çme
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+çl£
+);
+
+2672 ià(
+ú
+ && !
+	`¡rcmp
+ (ú, 
+d–_ú
+))
+
+2674 
+	`muÉi_sigÇl_š¡ªû
+ (
+m
+, 
+mi
+, 
+SIGTERM
+);
+
+2675 ++
+couÁ
+;
+
+2679 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+2680  
+couÁ
+;
+
+2681 
+	}
+}
+
+2684 
+	$mªagem’t_ÿÎback_kžl_by_addr
+ (*
+¬g
+, cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+pÜt
+)
+
+2686 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2687 
+hash_™”©Ü
+ 
+hi
+;
+
+2688 
+hash_–em’t
+ *
+he
+;
+
+2689 
+Ý’v²_sockaddr
+ 
+§ddr
+;
+
+2690 
+mrou‹_addr
+ 
+maddr
+;
+
+2691 
+couÁ
+ = 0;
+
+2693 
+	`CLEAR
+ (
+§ddr
+);
+
+2694 
+§ddr
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+2695 
+§ddr
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (addr);
+
+2696 
+§ddr
+.
+addr
+.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (
+pÜt
+);
+
+2697 ià(
+	`mrou‹_exŒaù_Ý’v²_sockaddr
+ (&
+maddr
+, &
+§ddr
+, 
+Œue
+))
+
+2699 
+	`hash_™”©Ü_š™
+ (
+m
+->
+™”
+, &
+hi
+);
+
+2700 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+2702 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+he
+->
+v®ue
+;
+
+2703 ià(!
+mi
+->
+h®t
+ && 
+	`mrou‹_addr_equ®
+ (&
+maddr
+, &mi->
+»®
+))
+
+2705 
+	`muÉi_sigÇl_š¡ªû
+ (
+m
+, 
+mi
+, 
+SIGTERM
+);
+
+2706 ++
+couÁ
+;
+
+2709 
+	`hash_™”©Ü_ä“
+ (&
+hi
+);
+
+2711  
+couÁ
+;
+
+2712 
+	}
+}
+
+2715 
+	$mªagem’t_d–‘e_ev’t
+ (*
+¬g
+, 
+ev’t_t
+ 
+ev’t
+)
+
+2717 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2718 ià(
+m
+->
+mtý
+)
+
+2719 
+	`muÉi_tý_d–‘e_ev’t
+ (
+m
+->
+mtý
+, 
+ev’t
+);
+
+2720 
+	}
+}
+
+2724 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+2726 
+muÉi_š¡ªû
+ *
+
+2727 
+	$lookup_by_cid
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+cid
+)
+
+2729 ià(
+m
+)
+
+2731 
+muÉi_š¡ªû
+ *
+mi
+ = (muÉi_š¡ªû *è
+	`hash_lookup
+ (
+m
+->
+cid_hash
+, &
+cid
+);
+
+2732 ià(
+mi
+ && !mi->
+h®t
+)
+
+2733  
+mi
+;
+
+2735  
+NULL
+;
+
+2736 
+	}
+}
+
+2738 
+boÞ
+
+
+2739 
+	$mªagem’t_kžl_by_cid
+ (*
+¬g
+, cÚ¡ 
+cid
+, cÚ¡ *
+kžl_msg
+)
+
+2741 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2742 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`lookup_by_cid
+ (
+m
+, 
+cid
+);
+
+2743 ià(
+mi
+)
+
+2745 
+	`£nd_»¡¬t
+ (&
+mi
+->
+cÚ‹xt
+, 
+kžl_msg
+);
+
+2746 
+	`muÉi_scheduË_cÚ‹xt_wakeup
+(
+m
+, 
+mi
+);
+
+2747  
+Œue
+;
+
+2750  
+çl£
+;
+
+2751 
+	}
+}
+
+2753 
+boÞ
+
+
+2754 
+	$mªagem’t_þ›Á_auth
+ (*
+¬g
+,
+
+2755 cÚ¡ 
+cid
+,
+
+2756 cÚ¡ 
+mda_key_id
+,
+
+2757 cÚ¡ 
+boÞ
+ 
+auth
+,
+
+2758 cÚ¡ *
+»asÚ
+,
+
+2759 cÚ¡ *
+þ›Á_»asÚ
+,
+
+2760 
+bufãr_li¡
+ *
+cc_cÚfig
+)
+
+2762 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2763 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`lookup_by_cid
+ (
+m
+, 
+cid
+);
+
+2764 
+boÞ
+ 
+cc_cÚfig_owÃd
+ = 
+Œue
+;
+
+2765 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2767 ià(
+mi
+)
+
+2769 
+»t
+ = 
+	`Žs_auth’tiÿ‹_key
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+, 
+mda_key_id
+, 
+auth
+, 
+þ›Á_»asÚ
+);
+
+2770 ià(
+»t
+)
+
+2772 ià(
+auth
+)
+
+2774 ià(!
+mi
+->
+cÚÃùiÚ_e¡ablished_æag
+)
+
+2776 
+	`£t_cc_cÚfig
+ (
+mi
+, 
+cc_cÚfig
+);
+
+2777 
+cc_cÚfig_owÃd
+ = 
+çl£
+;
+
+2782 ià(
+»asÚ
+)
+
+2783 
+	`msg
+ (
+D_MULTI_LOW
+, "MULTI: cÚÃùiÚ„ejeùed: %s, CLI:%s", 
+»asÚ
+, 
+	`Å
+(
+þ›Á_»asÚ
+));
+
+2784 ià(
+mi
+->
+cÚÃùiÚ_e¡ablished_æag
+)
+
+2786 
+	`£nd_auth_çžed
+ (&
+mi
+->
+cÚ‹xt
+, 
+þ›Á_»asÚ
+);
+
+2787 
+	`muÉi_scheduË_cÚ‹xt_wakeup
+(
+m
+, 
+mi
+);
+
+2792 ià(
+cc_cÚfig_owÃd
+ && 
+cc_cÚfig
+)
+
+2793 
+	`bufãr_li¡_ä“
+ (
+cc_cÚfig
+);
+
+2794  
+»t
+;
+
+2795 
+	}
+}
+
+2798 
+	$mªagem’t_g‘_³”_šfo
+ (*
+¬g
+, cÚ¡ 
+cid
+)
+
+2800 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2801 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`lookup_by_cid
+ (
+m
+, 
+cid
+);
+
+2802 *
+»t
+ = 
+NULL
+;
+
+2804 ià(
+mi
+)
+
+2805 
+»t
+ = 
+	`Žs_g‘_³”_šfo
+ (
+mi
+->
+cÚ‹xt
+.
+c2
+.
+Žs_muÉi
+);
+
+2807  
+»t
+;
+
+2808 
+	}
+}
+
+2812 #ifdeà
+MANAGEMENT_PF
+
+
+2813 
+boÞ
+
+
+2814 
+	$mªagem’t_þ›Á_pf
+ (*
+¬g
+,
+
+2815 cÚ¡ 
+cid
+,
+
+2816 
+bufãr_li¡
+ *
+pf_cÚfig
+)
+
+2818 
+muÉi_cÚ‹xt
+ *
+m
+ = (muÉi_cÚ‹xˆ*è
+¬g
+;
+
+2819 
+muÉi_š¡ªû
+ *
+mi
+ = 
+	`lookup_by_cid
+ (
+m
+, 
+cid
+);
+
+2820 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2822 ià(
+mi
+ && 
+pf_cÚfig
+)
+
+2823 
+»t
+ = 
+	`pf_lßd_äom_bufãr_li¡
+ (&
+mi
+->
+cÚ‹xt
+, 
+pf_cÚfig
+);
+
+2825 ià(
+pf_cÚfig
+)
+
+2826 
+	`bufãr_li¡_ä“
+ (
+pf_cÚfig
+);
+
+2827  
+»t
+;
+
+2828 
+	}
+}
+
+2832 
+	$š™_mªagem’t_ÿÎback_muÉi
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2834 #ifdeà
+ENABLE_MANAGEMENT
+
+
+2835 ià(
+mªagem’t
+)
+
+2837 
+mªagem’t_ÿÎback
+ 
+cb
+;
+
+2838 
+	`CLEAR
+ (
+cb
+);
+
+2839 
+cb
+.
+¬g
+ = 
+m
+;
+
+2840 
+cb
+.
+æags
+ = 
+MCF_SERVER
+;
+
+2841 
+cb
+.
+¡©us
+ = 
+mªagem’t_ÿÎback_¡©us
+;
+
+2842 
+cb
+.
+show_Ãt
+ = 
+mªagem’t_show_Ãt_ÿÎback
+;
+
+2843 
+cb
+.
+kžl_by_ú
+ = 
+mªagem’t_ÿÎback_kžl_by_ú
+;
+
+2844 
+cb
+.
+kžl_by_addr
+ = 
+mªagem’t_ÿÎback_kžl_by_addr
+;
+
+2845 
+cb
+.
+d–‘e_ev’t
+ = 
+mªagem’t_d–‘e_ev’t
+;
+
+2846 
+cb
+.
+n_þ›Ás
+ = 
+mªagem’t_ÿÎback_n_þ›Ás
+;
+
+2847 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+2848 
+cb
+.
+kžl_by_cid
+ = 
+mªagem’t_kžl_by_cid
+;
+
+2849 
+cb
+.
+þ›Á_auth
+ = 
+mªagem’t_þ›Á_auth
+;
+
+2850 
+cb
+.
+g‘_³”_šfo
+ = 
+mªagem’t_g‘_³”_šfo
+;
+
+2852 #ifdeà
+MANAGEMENT_PF
+
+
+2853 
+cb
+.
+þ›Á_pf
+ = 
+mªagem’t_þ›Á_pf
+;
+
+2855 
+	`mªagem’t_£t_ÿÎback
+ (
+mªagem’t
+, &
+cb
+);
+
+2858 
+	}
+}
+
+2861 
+	$unš™_mªagem’t_ÿÎback_muÉi
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+2863 
+	`unš™_mªagem’t_ÿÎback
+ ();
+
+2864 
+	}
+}
+
+2870 
+	$tuÂ–_£rv”
+ (
+cÚ‹xt
+ *
+tÝ
+)
+
+2872 
+	`ASSERT
+ (
+tÝ
+->
+ÝtiÚs
+.
+mode
+ =ð
+MODE_SERVER
+);
+
+2874 ià(
+	`´Ùo_is_dg¿m
+(
+tÝ
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+))
+
+2875 
+	`tuÂ–_£rv”_udp
+(
+tÝ
+);
+
+2877 
+	`tuÂ–_£rv”_tý
+(
+tÝ
+);
+
+2878 
+	}
+}
+
+2881 
+	$dummy
+(è{
+	}
+}
+
+	@multi.h
+
+29 #iâdeà
+MULTI_H
+
+
+30 
+	#MULTI_H
+
+
+	)
+
+32 #ià
+P2MP_SERVER
+
+
+34 
+	~"š™.h
+"
+
+35 
+	~"fÜw¬d.h
+"
+
+36 
+	~"mrou‹.h
+"
+
+37 
+	~"mbuf.h
+"
+
+38 
+	~"li¡.h
+"
+
+39 
+	~"scheduË.h
+"
+
+40 
+	~"poÞ.h
+"
+
+41 
+	~"mudp.h
+"
+
+42 
+	~"mtý.h
+"
+
+43 
+	~"³rf.h
+"
+
+50 
+	smuÉi_»­
+
+
+52 
+	mbuck‘_ba£
+;
+
+53 
+	mbuck‘s_³r_·ss
+;
+
+54 
+time_t
+ 
+	mÏ¡_ÿÎ
+;
+
+68 
+	smuÉi_š¡ªû
+ {
+
+69 
+scheduË_’Œy
+ 
+	m£
+;
+
+70 
+gc_¬’a
+ 
+	mgc
+;
+
+71 
+boÞ
+ 
+	mdefšed
+;
+
+72 
+boÞ
+ 
+	mh®t
+;
+
+73 
+	m»fcouÁ
+;
+
+74 
+	mrou‹_couÁ
+;
+
+75 
+time_t
+ 
+	mü—‹d
+;
+
+79 
+timev®
+ 
+	mwakeup
+;
+
+80 
+mrou‹_addr
+ 
+	m»®
+;
+
+82 
+ifcÚfig_poÞ_hªdË
+ 
+	mvaddr_hªdË
+;
+
+83 cÚ¡ *
+	mmsg_´efix
+;
+
+86 
+	mtý_rwæags
+;
+
+87 
+mbuf_£t
+ *
+	mtý_lšk_out_deã¼ed
+;
+
+88 
+boÞ
+ 
+	msock‘_£t_ÿÎed
+;
+
+90 
+š_addr_t
+ 
+	m»pÜtšg_addr
+;
+
+92 
+boÞ
+ 
+	mdid_Ý’_cÚ‹xt
+;
+
+93 
+boÞ
+ 
+	mdid_»®_hash
+;
+
+94 
+boÞ
+ 
+	mdid_™”
+;
+
+95 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+96 
+boÞ
+ 
+	mdid_cid_hash
+;
+
+97 
+bufãr_li¡
+ *
+	mcc_cÚfig
+;
+
+99 
+boÞ
+ 
+	mcÚÃùiÚ_e¡ablished_æag
+;
+
+100 
+boÞ
+ 
+	mdid_œou‹s
+;
+
+101 
+	mn_þ›Ás_d–�
+;
+
+103 
+cÚ‹xt
+ 
+	mcÚ‹xt
+;
+
+118 
+	smuÉi_cÚ‹xt
+ {
+
+119 
+	#MC_UNDEF
+ 0
+
+	)
+
+120 
+	#MC_SINGLE_THREADED
+ (1<<0)
+
+	)
+
+121 
+	#MC_MULTI_THREADED_MASTER
+ (1<<1)
+
+	)
+
+122 
+	#MC_MULTI_THREADED_WORKER
+ (1<<2)
+
+	)
+
+123 
+	#MC_MULTI_THREADED_SCHEDULER
+ (1<<3)
+
+	)
+
+124 
+	#MC_WORK_THREAD
+ (
+MC_MULTI_THREADED_WORKER
+|
+MC_MULTI_THREADED_SCHEDULER
+)
+
+	)
+
+125 
+	mth»ad_mode
+;
+
+127 
+hash
+ *
+	mhash
+;
+
+129 
+hash
+ *
+	mvhash
+;
+
+131 
+hash
+ *
+	m™”
+;
+
+134 
+scheduË
+ *
+	mscheduË
+;
+
+135 
+mbuf_£t
+ *
+	mmbuf
+;
+
+138 
+muÉi_tý
+ *
+	mmtý
+;
+
+140 
+ifcÚfig_poÞ
+ *
+	mifcÚfig_poÞ
+;
+
+141 
+äequ’cy_lim™
+ *
+	mÃw_cÚÃùiÚ_lim™”
+;
+
+142 
+mrou‹_h–³r
+ *
+	mrou‹_h–³r
+;
+
+143 
+muÉi_»­
+ *
+	m»­”
+;
+
+144 
+mrou‹_addr
+ 
+	mloÿl
+;
+
+145 
+boÞ
+ 
+	m’abË_c2c
+;
+
+146 
+	mmax_þ›Ás
+;
+
+147 
+	mtý_queue_lim™
+;
+
+148 
+	m¡©us_fže_v”siÚ
+;
+
+149 
+	mn_þ›Ás
+;
+
+151 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+152 
+hash
+ *
+	mcid_hash
+;
+
+153 
+	mcid_couÁ”
+;
+
+156 
+muÉi_š¡ªû
+ *
+	m³ndšg
+;
+
+157 
+muÉi_š¡ªû
+ *
+	m—¾›¡_wakeup
+;
+
+158 
+muÉi_š¡ªû
+ **
+	mmµ_touched
+;
+
+159 
+cÚ‹xt_bufãrs
+ *
+	mcÚ‹xt_bufãrs
+;
+
+160 
+time_t
+ 
+	m³r_£cÚd_Œigg”
+;
+
+162 
+cÚ‹xt
+ 
+	mtÝ
+;
+
+168 
+ev’t_timeout
+ 
+	m¡®e_rou‹s_check_‘
+;
+
+174 
+	smuÉi_rou‹
+
+
+176 
+mrou‹_addr
+ 
+	maddr
+;
+
+177 
+muÉi_š¡ªû
+ *
+	mš¡ªû
+;
+
+179 
+	#MULTI_ROUTE_CACHE
+ (1<<0)
+
+	)
+
+180 
+	#MULTI_ROUTE_AGEABLE
+ (1<<1)
+
+	)
+
+181 
+	mæags
+;
+
+183 
+	mÿche_g’”©iÚ
+;
+
+184 
+time_t
+ 
+	mÏ¡_»ã»nû
+;
+
+200 
+tuÂ–_£rv”
+ (
+cÚ‹xt
+ *
+tÝ
+);
+
+203 cÚ¡ *
+muÉi_š¡ªû_¡ršg
+ (cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+, 
+boÞ
+ 
+nuÎ
+, 
+gc_¬’a
+ *
+gc
+);
+
+209 
+muÉi_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+cÚ‹xt
+ *
+t
+, 
+boÞ
+ 
+tý_mode
+, 
+th»ad_mode
+);
+
+210 
+muÉi_unš™
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+212 
+muÉi_tÝ_š™
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+cÚ‹xt
+ *
+tÝ
+, cÚ¡ 
+boÞ
+ 
+®loc_bufãrs
+);
+
+213 
+muÉi_tÝ_ä“
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+215 
+muÉi_š¡ªû
+ *
+muÉi_ü—‹_š¡ªû
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mrou‹_addr
+ *
+»®
+);
+
+216 
+muÉi_þo£_š¡ªû
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, 
+boÞ
+ 
+shutdown
+);
+
+218 
+boÞ
+ 
+muÉi_´oûss_timeout
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+);
+
+220 
+	#MPP_PRE_SELECT
+ (1<<0)
+
+	)
+
+221 
+	#MPP_CONDITIONAL_PRE_SELECT
+ (1<<1)
+
+	)
+
+222 
+	#MPP_CLOSE_ON_SIGNAL
+ (1<<2)
+
+	)
+
+223 
+	#MPP_RECORD_TOUCH
+ (1<<3)
+
+	)
+
+248 
+boÞ
+ 
+muÉi_´oûss_po¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+æags
+);
+
+274 
+boÞ
+ 
+muÉi_´oûss_šcomšg_lšk
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+š¡ªû
+, cÚ¡ 
+mµ_æags
+);
+
+292 
+boÞ
+ 
+muÉi_´oûss_šcomšg_tun
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+);
+
+295 
+muÉi_´oûss_drÝ_outgošg_tun
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+);
+
+297 
+muÉi_´št_¡©us
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+¡©us_ou�ut
+ *
+so
+, cÚ¡ 
+v”siÚ
+);
+
+299 
+muÉi_š¡ªû
+ *
+muÉi_g‘_queue
+ (
+mbuf_£t
+ *
+ms
+);
+
+301 
+muÉi_add_mbuf
+ (
+muÉi_cÚ‹xt
+ *
+m
+,
+
+302 
+muÉi_š¡ªû
+ *
+mi
+,
+
+303 
+mbuf_bufãr
+ *
+mb
+);
+
+305 
+muÉi_ifcÚfig_poÞ_³rsi¡
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+boÞ
+ 
+fÜû
+);
+
+307 
+boÞ
+ 
+muÉi_´oûss_sigÇl
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+309 
+muÉi_þo£_š¡ªû_Ú_sigÇl
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+);
+
+311 
+š™_mªagem’t_ÿÎback_muÉi
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+312 
+unš™_mªagem’t_ÿÎback_muÉi
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+317 
+šlše
+ 
+boÞ
+
+
+318 
+	$muÉi_ou�ut_queue_»ady
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+,
+
+319 cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+)
+
+321 ià(
+mi
+->
+tý_lšk_out_deã¼ed
+)
+
+322  
+	`mbuf_Ën
+ (
+mi
+->
+tý_lšk_out_deã¼ed
+è<ð
+m
+->
+tý_queue_lim™
+;
+
+324  
+Œue
+;
+
+325 
+	}
+}
+
+332 
+šlše
+ 
+muÉi_š¡ªû
+ *
+
+333 
+	$muÉi_´oûss_outgošg_lšk_´e
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+335 
+muÉi_š¡ªû
+ *
+mi
+ = 
+NULL
+;
+
+337 ià(
+m
+->
+³ndšg
+)
+
+338 
+mi
+ = 
+m
+->
+³ndšg
+;
+
+339 ià(
+	`mbuf_defšed
+ (
+m
+->
+mbuf
+))
+
+340 
+mi
+ = 
+	`muÉi_g‘_queue
+ (
+m
+->
+mbuf
+);
+
+341  
+mi
+;
+
+342 
+	}
+}
+
+348 
+rou‹_quÙa_exûeded
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+);
+
+350 
+šlše
+ 
+
+351 
+	$rou‹_quÙa_šc
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+353 ++
+mi
+->
+rou‹_couÁ
+;
+
+354 
+	}
+}
+
+356 
+šlše
+ 
+
+357 
+	$rou‹_quÙa_dec
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+359 --
+mi
+->
+rou‹_couÁ
+;
+
+360 
+	}
+}
+
+363 
+šlše
+ 
+boÞ
+
+
+364 
+	$rou‹_quÙa_‹¡
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+muÉi_š¡ªû
+ *
+mi
+)
+
+366 ià(
+mi
+->
+rou‹_couÁ
+ >ðmi->
+cÚ‹xt
+.
+ÝtiÚs
+.
+max_rou‹s_³r_þ›Á
+)
+
+368 
+	`rou‹_quÙa_exûeded
+ (
+m
+, 
+mi
+);
+
+369  
+çl£
+;
+
+372  
+Œue
+;
+
+373 
+	}
+}
+
+379 
+šlše
+ 
+
+380 
+	$muÉi_š¡ªû_šc_»fcouÁ
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+382 ++
+mi
+->
+»fcouÁ
+;
+
+383 
+	}
+}
+
+385 
+šlše
+ 
+
+386 
+	$muÉi_š¡ªû_dec_»fcouÁ
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+388 ià(--
+mi
+->
+»fcouÁ
+ <= 0)
+
+390 
+	`gc_ä“
+ (&
+mi
+->
+gc
+);
+
+391 
+	`ä“
+ (
+mi
+);
+
+393 
+	}
+}
+
+395 
+šlše
+ 
+
+396 
+	$muÉi_rou‹_d–
+ (
+muÉi_rou‹
+ *
+rou‹
+)
+
+398 
+muÉi_š¡ªû
+ *
+mi
+ = 
+rou‹
+->
+š¡ªû
+;
+
+399 
+	`rou‹_quÙa_dec
+ (
+mi
+);
+
+400 
+	`muÉi_š¡ªû_dec_»fcouÁ
+ (
+mi
+);
+
+401 
+	`ä“
+ (
+rou‹
+);
+
+402 
+	}
+}
+
+404 
+šlše
+ 
+boÞ
+
+
+405 
+	$muÉi_rou‹_defšed
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+,
+
+406 cÚ¡ 
+muÉi_rou‹
+ *
+r
+)
+
+408 ià(
+r
+->
+š¡ªû
+->
+h®t
+)
+
+409  
+çl£
+;
+
+410 ià((
+r
+->
+æags
+ & 
+MULTI_ROUTE_CACHE
+)
+
+411 && 
+r
+->
+ÿche_g’”©iÚ
+ !ð
+m
+->
+rou‹_h–³r
+->cache_generation)
+
+412  
+çl£
+;
+
+413 ià((
+r
+->
+æags
+ & 
+MULTI_ROUTE_AGEABLE
+)
+
+414 && 
+r
+->
+Ï¡_»ã»nû
+ + 
+m
+->
+rou‹_h–³r
+->
+ag—bË_‰l_£cs
+ < 
+now
+)
+
+415  
+çl£
+;
+
+417  
+Œue
+;
+
+418 
+	}
+}
+
+424 
+šlše
+ 
+
+425 
+	$£t_´efix
+ (
+muÉi_š¡ªû
+ *
+mi
+)
+
+427 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+428 ià(
+mi
+->
+msg_´efix
+)
+
+429 
+	`´štf
+ ("[%s]\n", 
+mi
+->
+msg_´efix
+);
+
+431 
+	`msg_£t_´efix
+ (
+mi
+->
+msg_´efix
+);
+
+432 
+	}
+}
+
+434 
+šlše
+ 
+
+435 
+	$þ—r_´efix
+ ()
+
+437 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+438 
+	`´štf
+ ("[NULL]\n");
+
+440 
+	`msg_£t_´efix
+ (
+NULL
+);
+
+441 
+	}
+}
+
+452 
+	#REAP_MAX_WAKEUP
+ 10
+
+	)
+
+453 
+	#REAP_DIVISOR
+ 256
+
+	)
+
+454 
+	#REAP_MIN
+ 16
+
+	)
+
+455 
+	#REAP_MAX
+ 1024
+
+	)
+
+461 
+	#MULTI_CACHE_ROUTE_TTL
+ 60
+
+	)
+
+463 
+šlše
+ 
+
+464 
+	$muÉi_»­_´oûss
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+)
+
+466 
+	`muÉi_»­_´oûss_dowÜk
+ (cÚ¡ 
+muÉi_cÚ‹xt
+ *
+m
+);
+
+467 ià(
+m
+->
+»­”
+->
+Ï¡_ÿÎ
+ !ð
+now
+)
+
+468 
+	`muÉi_»­_´oûss_dowÜk
+ (
+m
+);
+
+469 
+	}
+}
+
+471 
+šlše
+ 
+
+472 
+	$muÉi_´oûss_³r_£cÚd_tim”s
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+474 ià(
+m
+->
+³r_£cÚd_Œigg”
+ !ð
+now
+)
+
+476 
+	`muÉi_´oûss_³r_£cÚd_tim”s_dowÜk
+ (
+muÉi_cÚ‹xt
+ *
+m
+);
+
+477 
+	`muÉi_´oûss_³r_£cÚd_tim”s_dowÜk
+ (
+m
+);
+
+478 
+m
+->
+³r_£cÚd_Œigg”
+ = 
+now
+;
+
+480 
+	}
+}
+
+490 
+šlše
+ 
+
+491 
+	$muÉi_g‘_timeout
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+timev®
+ *
+de¡
+)
+
+493 
+timev®
+ 
+tv
+, 
+cu¼’t
+;
+
+495 
+	`CLEAR
+ (
+tv
+);
+
+496 
+m
+->
+—¾›¡_wakeup
+ = (
+muÉi_š¡ªû
+ *è
+	`scheduË_g‘_—¾›¡_wakeup
+ (m->
+scheduË
+, &
+tv
+);
+
+497 ià(
+m
+->
+—¾›¡_wakeup
+)
+
+499 
+	`ASSERT
+ (!
+	`Ý’v²_g‘timeofday
+ (&
+cu¼’t
+, 
+NULL
+));
+
+500 
+	`tv_d–�
+ (
+de¡
+, &
+cu¼’t
+, &
+tv
+);
+
+501 ià(
+de¡
+->
+tv_£c
+ >ð
+REAP_MAX_WAKEUP
+)
+
+503 
+m
+->
+—¾›¡_wakeup
+ = 
+NULL
+;
+
+504 
+de¡
+->
+tv_£c
+ = 
+REAP_MAX_WAKEUP
+;
+
+505 
+de¡
+->
+tv_u£c
+ = 0;
+
+510 
+de¡
+->
+tv_£c
+ = 
+REAP_MAX_WAKEUP
+;
+
+511 
+de¡
+->
+tv_u£c
+ = 0;
+
+513 
+	}
+}
+
+533 
+šlše
+ 
+boÞ
+
+
+534 
+	$muÉi_´oûss_outgošg_tun
+ (
+muÉi_cÚ‹xt
+ *
+m
+, cÚ¡ 
+mµ_æags
+)
+
+536 
+muÉi_š¡ªû
+ *
+mi
+ = 
+m
+->
+³ndšg
+;
+
+537 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+539 
+	`ASSERT
+ (
+mi
+);
+
+540 #ifdeà
+MULTI_DEBUG_EVENT_LOOP
+
+
+541 
+	`´štf
+ ("%s -> TUN†en=%d\n",
+
+542 
+	`id
+(
+mi
+),
+
+543 
+mi
+->
+cÚ‹xt
+.
+c2
+.
+to_tun
+.
+Ën
+);
+
+545 
+	`£t_´efix
+ (
+mi
+);
+
+546 
+	`´oûss_outgošg_tun
+ (&
+mi
+->
+cÚ‹xt
+);
+
+547 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+548 
+	`þ—r_´efix
+ ();
+
+549  
+»t
+;
+
+550 
+	}
+}
+
+554 
+šlše
+ 
+boÞ
+
+
+555 
+	$muÉi_´oûss_outgošg_lšk_dowÜk
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+, cÚ¡ 
+mµ_æags
+)
+
+557 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+558 
+	`£t_´efix
+ (
+mi
+);
+
+559 
+	`´oûss_outgošg_lšk
+ (&
+mi
+->
+cÚ‹xt
+);
+
+560 
+»t
+ = 
+	`muÉi_´oûss_po¡
+ (
+m
+, 
+mi
+, 
+mµ_æags
+);
+
+561 
+	`þ—r_´efix
+ ();
+
+562  
+»t
+;
+
+563 
+	}
+}
+
+568 
+	#MULTI_CHECK_SIG
+(
+m
+è
+	`EVENT_LOOP_CHECK_SIGNAL
+ (&(m)->
+tÝ
+, 
+muÉi_´oûss_sigÇl
+, (m))
+
+	)
+
+570 
+šlše
+ 
+
+571 
+	$muÉi_£t_³ndšg
+ (
+muÉi_cÚ‹xt
+ *
+m
+, 
+muÉi_š¡ªû
+ *
+mi
+)
+
+573 
+m
+->
+³ndšg
+ = 
+mi
+;
+
+574 
+	}
+}
+
+576 
+šlše
+ 
+
+577 
+	$muÉi_»Ëa£_io_lock
+ (
+muÉi_cÚ‹xt
+ *
+m
+)
+
+579 
+	}
+}
+
+	@ntlm.c
+
+24 #ifdeà
+HAVE_CONFIG_H
+
+
+25 
+	~"cÚfig.h
+"
+
+26 #–ià
+defšed
+(
+_MSC_VER
+)
+
+27 
+	~"cÚfig-msvc.h
+"
+
+30 
+	~"sysh—d.h
+"
+
+32 #ià
+NTLM
+
+
+34 
+	~"commÚ.h
+"
+
+35 
+	~"bufãr.h
+"
+
+36 
+	~"misc.h
+"
+
+37 
+	~"sock‘.h
+"
+
+38 
+	~"fdmisc.h
+"
+
+39 
+	~"´oxy.h
+"
+
+40 
+	~"Álm.h
+"
+
+41 
+	~"ba£64.h
+"
+
+42 
+	~"üy±o.h
+"
+
+44 
+	~"memdbg.h
+"
+
+48 #ifdeà
+_MSC_VER
+
+
+50 
+	#UINTEGER64
+ 
+__št64
+
+
+	)
+
+51 
+	#UINT64
+(
+c
+èø## 
+Ui64
+
+
+	)
+
+54 
+	#UINTEGER64
+ 
+
+	)
+
+55 
+	#UINT64
+(
+c
+èø## 
+LL
+
+
+	)
+
+62 
+	$ü—‹_des_keys
+(cÚ¡ *
+hash
+, *
+key
+)
+
+64 
+key
+[0] = 
+hash
+[0];
+
+65 
+key
+[1] = ((
+hash
+[0]&1)<<7)|(hash[1]>>1);
+
+66 
+key
+[2] = ((
+hash
+[1]&3)<<6)|(hash[2]>>2);
+
+67 
+key
+[3] = ((
+hash
+[2]&7)<<5)|(hash[3]>>3);
+
+68 
+key
+[4] = ((
+hash
+[3]&15)<<4)|(hash[4]>>4);
+
+69 
+key
+[5] = ((
+hash
+[4]&31)<<3)|(hash[5]>>5);
+
+70 
+key
+[6] = ((
+hash
+[5]&63)<<2)|(hash[6]>>6);
+
+71 
+key
+[7] = ((
+hash
+[6]&127)<<1);
+
+72 
+	`key_des_fixup
+(
+key
+, 8, 1);
+
+73 
+	}
+}
+
+76 
+	$g’_md4_hash
+ (cÚ¡ * 
+d©a
+, 
+d©a_Ën
+, *
+»suÉ
+)
+
+79 cÚ¡ 
+md_kt_t
+ *
+md4_kt
+ = 
+	`md_kt_g‘
+("MD4");
+
+80 
+md
+[
+MD4_DIGEST_LENGTH
+];
+
+82 
+	`md_fuÎ
+(
+md4_kt
+, 
+d©a
+, 
+d©a_Ën
+, 
+md
+);
+
+83 
+	`memýy
+ (
+»suÉ
+, 
+md
+, 
+MD4_DIGEST_LENGTH
+);
+
+84 
+	}
+}
+
+87 
+	$g’_hmac_md5
+ (cÚ¡ * 
+d©a
+, 
+d©a_Ën
+, cÚ¡ * 
+key
+, 
+key_Ën
+,*
+»suÉ
+)
+
+89 cÚ¡ 
+md_kt_t
+ *
+md5_kt
+ = 
+	`md_kt_g‘
+("MD5");
+
+90 
+hmac_ùx_t
+ 
+hmac_ùx
+;
+
+91 
+	`CLEAR
+(
+hmac_ùx
+);
+
+93 
+	`hmac_ùx_š™
+(&
+hmac_ùx
+, 
+key
+, 
+key_Ën
+, 
+md5_kt
+);
+
+94 
+	`hmac_ùx_upd©e
+(&
+hmac_ùx
+, (cÚ¡ *)
+d©a
+, 
+d©a_Ën
+);
+
+95 
+	`hmac_ùx_fš®
+(&
+hmac_ùx
+, (*)
+»suÉ
+);
+
+96 
+	`hmac_ùx_þ—nup
+(&
+hmac_ùx
+);
+
+97 
+	}
+}
+
+100 
+	$g’_time¡amp
+ (*
+time¡amp
+)
+
+106 
+UINTEGER64
+ 
+time¡amp_uÎ
+;
+
+108 
+time¡amp_uÎ
+ = 
+	`Ý’v²_time
+(
+NULL
+);
+
+109 
+time¡amp_uÎ
+ = (time¡amp_uÎ + 
+	`UINT64
+(11644473600)) * UINT64(10000000);
+
+112 
+time¡amp
+[0]ð
+time¡amp_uÎ
+ & 
+	`UINT64
+(0xFF);
+
+113 
+time¡amp
+[1]ð(
+time¡amp_uÎ
+ >> 8è& 
+	`UINT64
+(0xFF);
+
+114 
+time¡amp
+[2]ð(
+time¡amp_uÎ
+ >> 16è& 
+	`UINT64
+(0xFF);
+
+115 
+time¡amp
+[3]ð(
+time¡amp_uÎ
+ >> 24è& 
+	`UINT64
+(0xFF);
+
+116 
+time¡amp
+[4]ð(
+time¡amp_uÎ
+ >> 32è& 
+	`UINT64
+(0xFF);
+
+117 
+time¡amp
+[5]ð(
+time¡amp_uÎ
+ >> 40è& 
+	`UINT64
+(0xFF);
+
+118 
+time¡amp
+[6]ð(
+time¡amp_uÎ
+ >> 48è& 
+	`UINT64
+(0xFF);
+
+119 
+time¡amp
+[7]ð(
+time¡amp_uÎ
+ >> 56è& 
+	`UINT64
+(0xFF);
+
+120 
+	}
+}
+
+123 
+	$g’_nÚû
+ (*
+nÚû
+)
+
+126 
+i
+;
+
+128 
+i
+=0;i<8;i++){
+
+129 
+nÚû
+[
+i
+] = ()
+	`g‘_¿ndom
+();
+
+131 
+	}
+}
+
+133 *
+	$my_¡ru´
+(*
+¡r
+)
+
+136 *
+tmp
+ = 
+¡r
+;;
+
+138 dØ*
+¡r
+ = 
+	`touµ”
+(*str); *(++str));
+
+139  
+tmp
+;
+
+140 
+	}
+}
+
+143 
+	$unicodize
+ (*
+d¡
+, cÚ¡ *
+¤c
+)
+
+146 
+i
+ = 0;
+
+149 
+d¡
+[
+i
+++] = *
+¤c
+;
+
+150 
+d¡
+[
+i
+++] = 0;
+
+152 *
+¤c
+++);
+
+154  
+i
+;
+
+155 
+	}
+}
+
+158 
+	$add_£cur™y_bufãr
+(
+sb_off£t
+, *
+d©a
+, 
+Ëngth
+, *
+msg_buf
+, *
+msg_buåos
+)
+
+161 
+msg_buf
+[
+sb_off£t
+] = ()
+Ëngth
+;
+
+162 
+msg_buf
+[
+sb_off£t
+ + 2] = msg_buf[sb_offset];
+
+163 
+msg_buf
+[
+sb_off£t
+ + 4] = ()(*
+msg_buåos
+ & 0xff);
+
+164 
+msg_buf
+[
+sb_off£t
+ + 5] = ()((*
+msg_buåos
+ >> 8) & 0xff);
+
+165 
+	`memýy
+(&
+msg_buf
+[*
+msg_buåos
+], 
+d©a
+, msg_buf[
+sb_off£t
+]);
+
+166 *
+msg_buåos
+ +ð
+Ëngth
+;
+
+167 
+	}
+}
+
+170 
+	$Álm_pha£_1
+ (cÚ¡ 
+h‰p_´oxy_šfo
+ *
+p
+, 
+gc_¬’a
+ *
+gc
+)
+
+172 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (96, 
+gc
+);
+
+182 
+	`buf_´štf
+ (&
+out
+, "%s", "TlRMTVNTUAABAAAAAgIAAA==");
+
+183  (
+	`BSTR
+ (&
+out
+));
+
+184 
+	}
+}
+
+187 
+	$Álm_pha£_3
+ (cÚ¡ 
+h‰p_´oxy_šfo
+ *
+p
+, cÚ¡ *
+pha£_2
+, 
+gc_¬’a
+ *
+gc
+)
+
+195 
+pwbuf
+[ (
+p
+->
+up
+.
+·sswÜd
+) * 2];
+
+196 
+buf2
+[128];
+
+197 
+pha£3
+[464];
+
+199 
+md4_hash
+[
+MD4_DIGEST_LENGTH
++5];
+
+200 
+ch®Ënge
+[8], 
+Álm_»¥Ú£
+[24];
+
+201 
+i
+, 
+»t_v®
+;
+
+203 
+Álmv2_»¥Ú£
+[144];
+
+204 
+u£rdomaš_u
+[256];
+
+205 
+u£rdomaš
+[128];
+
+206 
+Álmv2_hash
+[
+MD5_DIGEST_LENGTH
+];
+
+207 
+Álmv2_hmacmd5
+[16];
+
+208 *
+Álmv2_blob
+ = 
+Álmv2_»¥Ú£
+ + 16;
+
+209 
+Álmv2_blob_size
+=0;
+
+210 
+pha£3_buåos
+ = 0x40;
+
+211 
+size_t
+ 
+Ën
+;
+
+213 
+domaš
+[128];
+
+214 
+u£ºame
+[128];
+
+215 *
+£·¿tÜ
+;
+
+217 
+boÞ
+ 
+Álmv2_’abËd
+ = (
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_NTLM2
+);
+
+219 
+	`CLEAR
+ (
+buf2
+);
+
+221 
+	`ASSERT
+ (
+	`¡¾’
+ (
+p
+->
+up
+.
+u£ºame
+) > 0);
+
+222 
+	`ASSERT
+ (
+	`¡¾’
+ (
+p
+->
+up
+.
+·sswÜd
+) > 0);
+
+225 
+£·¿tÜ
+ = 
+	`¡rchr
+(
+p
+->
+up
+.
+u£ºame
+, '\\');
+
+226 ià(
+£·¿tÜ
+ =ð
+NULL
+) {
+
+227 
+	`¡ºýy
+(
+u£ºame
+, 
+p
+->
+up
+.username, (username)-1);
+
+228 
+u£ºame
+[(username)-1]=0;
+
+229 
+domaš
+[0]=0;
+
+231 
+	`¡ºýy
+(
+u£ºame
+, 
+£·¿tÜ
++1, (username)-1);
+
+232 
+u£ºame
+[(username)-1]=0;
+
+233 
+Ën
+ = 
+£·¿tÜ
+ - 
+p
+->
+up
+.
+u£ºame
+;
+
+234 ià(
+Ën
+ > (
+domaš
+) - 1)†en = (domain) - 1;
+
+235 
+	`¡ºýy
+(
+domaš
+, 
+p
+->
+up
+.
+u£ºame
+, 
+Ën
+);
+
+236 
+domaš
+[
+Ën
+]=0;
+
+241 
+	`g’_md4_hash
+ (
+pwbuf
+, 
+	`unicodize
+ (pwbuf, 
+p
+->
+up
+.
+·sswÜd
+è- 2, 
+md4_hash
+);
+
+244 
+	`mem£t
+(
+md4_hash
+ + 
+MD4_DIGEST_LENGTH
+, 0, 5);
+
+246 
+»t_v®
+ = 
+	`Ý’v²_ba£64_decode
+Ð
+pha£_2
+, (*)
+buf2
+, -1);
+
+247 ià(
+»t_v®
+ < 0)
+
+248  
+NULL
+;
+
+254 
+i
+=0; i<8; i++)
+
+256 
+ch®Ënge
+[
+i
+] = 
+buf2
+[i+24];
+
+259 ià(
+Álmv2_’abËd
+){
+
+260 
+tib_Ën
+;
+
+263 
+	`my_¡ru´
+((*)
+	`¡rýy
+(
+u£rdomaš
+, 
+u£ºame
+));
+
+264 ià(
+	`¡¾’
+(
+u£ºame
+è+ sŒËn(
+domaš
+è< (
+u£rdomaš
+))
+
+265 
+	`¡rÿt
+(
+u£rdomaš
+, 
+domaš
+);
+
+267 
+	`msg
+ (
+M_INFO
+, "Warning: Username or domain�oo†ong");
+
+268 
+	`unicodize
+ (
+u£rdomaš_u
+, 
+u£rdomaš
+);
+
+269 
+	`g’_hmac_md5
+(
+u£rdomaš_u
+, 2 * 
+	`¡¾’
+(
+u£rdomaš
+), 
+md4_hash
+, 
+MD5_DIGEST_LENGTH
+, 
+Álmv2_hash
+);
+
+272 
+	`mem£t
+(
+Álmv2_blob
+, 0, 128);
+
+273 
+Álmv2_blob
+[0x00]=1;
+
+274 
+Álmv2_blob
+[0x01]=1;
+
+275 
+Álmv2_blob
+[0x04]=0;
+
+276 
+	`g’_time¡amp
+((*)&
+Álmv2_blob
+[0x08]);
+
+277 
+	`g’_nÚû
+((*)&
+Álmv2_blob
+[0x10]);
+
+278 
+Álmv2_blob
+[0x18]=0;
+
+281 ià(Ð*((*)&
+buf2
+[0x14]) & 0x00800000) == 0x00800000){
+
+282 
+tib_Ën
+ = 
+buf2
+[0x28];
+
+283 ià(
+tib_Ën
+ > 96)�ib_len = 96;
+
+285 *
+tib_±r
+ = 
+buf2
+ + buf2[0x2c];
+
+286 
+	`memýy
+(&
+Álmv2_blob
+[0x1c], 
+tib_±r
+, 
+tib_Ën
+);
+
+289 
+tib_Ën
+ = 0;
+
+292 
+Álmv2_blob
+[0x1ø+ 
+tib_Ën
+] = 0;
+
+295 
+Álmv2_blob_size
+ = 0x20 + 
+tib_Ën
+;
+
+298 
+	`memýy
+(&
+Álmv2_»¥Ú£
+[8], 
+ch®Ënge
+, 8);
+
+301 
+	`g’_hmac_md5
+(&
+Álmv2_»¥Ú£
+[8], 
+Álmv2_blob_size
+ + 8, 
+Álmv2_hash
+, 
+MD5_DIGEST_LENGTH
+, 
+Álmv2_hmacmd5
+);
+
+304 
+	`memýy
+(
+Álmv2_»¥Ú£
+, 
+Álmv2_hmacmd5
+, 
+MD5_DIGEST_LENGTH
+);
+
+307 
+key1
+[
+DES_KEY_LENGTH
+], 
+key2
+[DES_KEY_LENGTH], 
+key3
+[DES_KEY_LENGTH];
+
+309 
+	`ü—‹_des_keys
+ ((*)
+md4_hash
+, 
+key1
+);
+
+310 
+	`c�h”_des_’üy±_ecb
+ (
+key1
+, 
+ch®Ënge
+, 
+Álm_»¥Ú£
+);
+
+312 
+	`ü—‹_des_keys
+ ((*)&(
+md4_hash
+[
+DES_KEY_LENGTH
+-1]), 
+key2
+);
+
+313 
+	`c�h”_des_’üy±_ecb
+ (
+key2
+, 
+ch®Ënge
+, &
+Álm_»¥Ú£
+[
+DES_KEY_LENGTH
+]);
+
+315 
+	`ü—‹_des_keys
+ ((*)&(
+md4_hash
+[2*(
+DES_KEY_LENGTH
+-1)]), 
+key3
+);
+
+316 
+	`c�h”_des_’üy±_ecb
+ (
+key3
+, 
+ch®Ënge
+, &
+Álm_»¥Ú£
+[
+DES_KEY_LENGTH
+*2]);
+
+320 
+	`mem£t
+ (
+pha£3
+, 0,  (phase3));
+
+322 
+	`¡rýy
+ ((*)
+pha£3
+, "NTLMSSP\0");
+
+323 
+pha£3
+[8] = 3;
+
+325 ià(
+Álmv2_’abËd
+){
+
+326 
+	`add_£cur™y_bufãr
+(0x14, 
+Álmv2_»¥Ú£
+, 
+Álmv2_blob_size
+ + 16, 
+pha£3
+, &
+pha£3_buåos
+);
+
+328 
+	`add_£cur™y_bufãr
+(0x14, 
+Álm_»¥Ú£
+, 24, 
+pha£3
+, &
+pha£3_buåos
+);
+
+332 
+	`add_£cur™y_bufãr
+(0x24, 
+u£ºame
+, 
+	`¡¾’
+ (u£ºame), 
+pha£3
+, &
+pha£3_buåos
+);
+
+335 
+	`add_£cur™y_bufãr
+(0x1c, 
+domaš
+, 
+	`¡¾’
+ (domaš), 
+pha£3
+, &
+pha£3_buåos
+);
+
+339 
+pha£3
+[0x10] = 
+pha£3_buåos
+;
+
+340 
+pha£3
+[0x30] = 
+pha£3_buåos
+;
+
+341 
+pha£3
+[0x38] = 
+pha£3_buåos
+;
+
+344 
+pha£3
+[0x3c] = 0x02;
+
+345 
+pha£3
+[0x3d] = 0x02;
+
+347  ((cÚ¡ *)
+	`make_ba£64_¡ršg2
+ ((*)
+pha£3
+, 
+pha£3_buåos
+, 
+gc
+));
+
+348 
+	}
+}
+
+351 
+	$dummy
+(è{
+	}
+}
+
+	@ntlm.h
+
+1 #iâdeà
+NTLM_H
+
+
+2 
+	#NTLM_H
+
+
+	)
+
+4 #ià
+NTLM
+
+
+6 cÚ¡ *
+Álm_pha£_1
+ (cÚ¡ 
+h‰p_´oxy_šfo
+ *
+p
+, 
+gc_¬’a
+ *
+gc
+);
+
+7 cÚ¡ *
+Álm_pha£_3
+ (cÚ¡ 
+h‰p_´oxy_šfo
+ *
+p
+, cÚ¡ *
+pha£_2
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@occ-inline.h
+
+25 #iâdeà
+OCC_INLINE_H
+
+
+26 
+	#OCC_INLINE_H
+
+
+	)
+
+28 #ifdeà
+ENABLE_OCC
+
+
+34 
+šlše
+ 
+
+35 
+	$occ_»£t_Ý
+ ()
+
+38 
+	}
+}
+
+43 
+šlše
+ 
+
+44 
+	$check_£nd_occ_»q
+ (
+cÚ‹xt
+ *
+c
+)
+
+46 
+	`check_£nd_occ_»q_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+47 ià(
+	`ev’t_timeout_defšed
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+)
+
+48 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+,
+
+49 &
+c
+->
+c2
+.
+timev®
+,
+
+50 (!
+	`TO_LINK_DEF
+(
+c
+è&& c->
+c2
+.
+occ_Ý
+ < 0è? 
+ETT_DEFAULT
+ : 0))
+
+51 
+	`check_£nd_occ_»q_dowÜk
+ (
+c
+);
+
+52 
+	}
+}
+
+57 
+šlše
+ 
+
+58 
+	$check_£nd_occ_lßd_‹¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+60 
+	`check_£nd_occ_lßd_‹¡_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+61 ià(
+	`ev’t_timeout_defšed
+ (&
+c
+->
+c2
+.
+occ_mtu_lßd_‹¡_š‹rv®
+)
+
+62 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+occ_mtu_lßd_‹¡_š‹rv®
+,
+
+63 &
+c
+->
+c2
+.
+timev®
+,
+
+64 (!
+	`TO_LINK_DEF
+(
+c
+è&& c->
+c2
+.
+occ_Ý
+ < 0è? 
+ETT_DEFAULT
+ : 0))
+
+65 
+	`check_£nd_occ_lßd_‹¡_dowÜk
+ (
+c
+);
+
+66 
+	}
+}
+
+71 
+šlše
+ 
+
+72 
+	$check_£nd_occ_msg
+ (
+cÚ‹xt
+ *
+c
+)
+
+74 
+	`check_£nd_occ_msg_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+75 ià(
+c
+->
+c2
+.
+occ_Ý
+ >= 0)
+
+77 ià(!
+	`TO_LINK_DEF
+(
+c
+))
+
+78 
+	`check_£nd_occ_msg_dowÜk
+ (
+c
+);
+
+80 
+	`tv_þ—r
+ (&
+c
+->
+c2
+.
+timev®
+);
+
+82 
+	}
+}
+
+	@occ.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ifdeà
+ENABLE_OCC
+
+
+35 
+	~"occ.h
+"
+
+37 
+	~"memdbg.h
+"
+
+39 
+	~"fÜw¬d-šlše.h
+"
+
+40 
+	~"occ-šlše.h
+"
+
+62 cÚ¡ 
+ušt8_t
+ 
+	gocc_magic
+[] = {
+
+67 cÚ¡ 
+mtu_lßd_‹¡
+ 
+	gmtu_lßd_‹¡_£qu’û
+[] = {
+
+69 {
+OCC_MTU_LOAD_REQUEST
+, -1000},
+
+70 {
+OCC_MTU_LOAD
+, -1000},
+
+71 {
+OCC_MTU_LOAD_REQUEST
+, -1000},
+
+72 {
+OCC_MTU_LOAD
+, -1000},
+
+73 {
+OCC_MTU_LOAD_REQUEST
+, -1000},
+
+74 {
+OCC_MTU_LOAD
+, -1000},
+
+76 {
+OCC_MTU_LOAD_REQUEST
+, -750},
+
+77 {
+OCC_MTU_LOAD
+, -750},
+
+78 {
+OCC_MTU_LOAD_REQUEST
+, -750},
+
+79 {
+OCC_MTU_LOAD
+, -750},
+
+80 {
+OCC_MTU_LOAD_REQUEST
+, -750},
+
+81 {
+OCC_MTU_LOAD
+, -750},
+
+83 {
+OCC_MTU_LOAD_REQUEST
+, -500},
+
+84 {
+OCC_MTU_LOAD
+, -500},
+
+85 {
+OCC_MTU_LOAD_REQUEST
+, -500},
+
+86 {
+OCC_MTU_LOAD
+, -500},
+
+87 {
+OCC_MTU_LOAD_REQUEST
+, -500},
+
+88 {
+OCC_MTU_LOAD
+, -500},
+
+90 {
+OCC_MTU_LOAD_REQUEST
+, -400},
+
+91 {
+OCC_MTU_LOAD
+, -400},
+
+92 {
+OCC_MTU_LOAD_REQUEST
+, -400},
+
+93 {
+OCC_MTU_LOAD
+, -400},
+
+94 {
+OCC_MTU_LOAD_REQUEST
+, -400},
+
+95 {
+OCC_MTU_LOAD
+, -400},
+
+97 {
+OCC_MTU_LOAD_REQUEST
+, -300},
+
+98 {
+OCC_MTU_LOAD
+, -300},
+
+99 {
+OCC_MTU_LOAD_REQUEST
+, -300},
+
+100 {
+OCC_MTU_LOAD
+, -300},
+
+101 {
+OCC_MTU_LOAD_REQUEST
+, -300},
+
+102 {
+OCC_MTU_LOAD
+, -300},
+
+104 {
+OCC_MTU_LOAD_REQUEST
+, -200},
+
+105 {
+OCC_MTU_LOAD
+, -200},
+
+106 {
+OCC_MTU_LOAD_REQUEST
+, -200},
+
+107 {
+OCC_MTU_LOAD
+, -200},
+
+108 {
+OCC_MTU_LOAD_REQUEST
+, -200},
+
+109 {
+OCC_MTU_LOAD
+, -200},
+
+111 {
+OCC_MTU_LOAD_REQUEST
+, -150},
+
+112 {
+OCC_MTU_LOAD
+, -150},
+
+113 {
+OCC_MTU_LOAD_REQUEST
+, -150},
+
+114 {
+OCC_MTU_LOAD
+, -150},
+
+115 {
+OCC_MTU_LOAD_REQUEST
+, -150},
+
+116 {
+OCC_MTU_LOAD
+, -150},
+
+118 {
+OCC_MTU_LOAD_REQUEST
+, -100},
+
+119 {
+OCC_MTU_LOAD
+, -100},
+
+120 {
+OCC_MTU_LOAD_REQUEST
+, -100},
+
+121 {
+OCC_MTU_LOAD
+, -100},
+
+122 {
+OCC_MTU_LOAD_REQUEST
+, -100},
+
+123 {
+OCC_MTU_LOAD
+, -100},
+
+125 {
+OCC_MTU_LOAD_REQUEST
+, -50},
+
+126 {
+OCC_MTU_LOAD
+, -50},
+
+127 {
+OCC_MTU_LOAD_REQUEST
+, -50},
+
+128 {
+OCC_MTU_LOAD
+, -50},
+
+129 {
+OCC_MTU_LOAD_REQUEST
+, -50},
+
+130 {
+OCC_MTU_LOAD
+, -50},
+
+132 {
+OCC_MTU_LOAD_REQUEST
+, 0},
+
+133 {
+OCC_MTU_LOAD
+, 0},
+
+134 {
+OCC_MTU_LOAD_REQUEST
+, 0},
+
+135 {
+OCC_MTU_LOAD
+, 0},
+
+136 {
+OCC_MTU_LOAD_REQUEST
+, 0},
+
+137 {
+OCC_MTU_LOAD
+, 0},
+
+139 {
+OCC_MTU_REQUEST
+, 0},
+
+140 {
+OCC_MTU_REQUEST
+, 0},
+
+141 {
+OCC_MTU_REQUEST
+, 0},
+
+142 {
+OCC_MTU_REQUEST
+, 0},
+
+143 {
+OCC_MTU_REQUEST
+, 0},
+
+144 {
+OCC_MTU_REQUEST
+, 0},
+
+145 {
+OCC_MTU_REQUEST
+, 0},
+
+146 {
+OCC_MTU_REQUEST
+, 0},
+
+147 {
+OCC_MTU_REQUEST
+, 0},
+
+148 {
+OCC_MTU_REQUEST
+, 0},
+
+154 
+	$check_£nd_occ_»q_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+156 ià(++
+c
+->
+c2
+.
+occ_n_Œ›s
+ >ð
+OCC_N_TRIES
+)
+
+158 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+»mÙe
+)
+
+163 
+	`msg
+ (
+D_SHOW_OCC
+,
+
+166 
+PACKAGE_NAME
+
+
+168 
+PACKAGE_NAME
+
+
+169 " from„uÂšg (" 
+couÁ”_fÜm©
+ " bytes„eceived from…eer, " counter_format
+
+172 
+c
+->
+c2
+.
+lšk_»ad_by‹s
+,
+
+173 
+c
+->
+c2
+.
+lšk_»ad_by‹s_auth
+);
+
+174 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+);
+
+178 
+c
+->
+c2
+.
+occ_Ý
+ = 
+OCC_REQUEST
+;
+
+184 
+	`ev’t_timeout_»£t
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+);
+
+186 
+	}
+}
+
+189 
+	$check_£nd_occ_lßd_‹¡_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+191 ià(
+	`CONNECTION_ESTABLISHED
+ (
+c
+))
+
+193 cÚ¡ 
+mtu_lßd_‹¡
+ *
+’Œy
+;
+
+195 ià(!
+c
+->
+c2
+.
+occ_mtu_lßd_n_Œ›s
+)
+
+196 
+	`msg
+ (
+M_INFO
+,
+
+199 
+’Œy
+ = &
+mtu_lßd_‹¡_£qu’û
+[
+c
+->
+c2
+.
+occ_mtu_lßd_n_Œ›s
+++];
+
+200 ià(
+’Œy
+->
+Ý
+ >= 0)
+
+202 
+c
+->
+c2
+.
+occ_Ý
+ = 
+’Œy
+->
+Ý
+;
+
+203 
+c
+->
+c2
+.
+occ_mtu_lßd_size
+ =
+
+204 
+	`EXPANDED_SIZE
+ (&
+c
+->
+c2
+.
+äame
+è+ 
+’Œy
+->
+d–�
+;
+
+208 
+	`msg
+ (
+M_INFO
+,
+
+209 "NOTE: fažed�ØempœiÿÎy m—su» MTU (»quœe " 
+PACKAGE_NAME
+ " 1.5 or higher‡t otherƒnd of connection).");
+
+210 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+occ_mtu_lßd_‹¡_š‹rv®
+);
+
+211 
+c
+->
+c2
+.
+occ_mtu_lßd_n_Œ›s
+ = 0;
+
+214 
+	}
+}
+
+217 
+	$check_£nd_occ_msg_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+219 
+boÞ
+ 
+do™
+ = 
+çl£
+;
+
+221 
+c
+->
+c2
+.
+buf
+ = c->c2.
+bufãrs
+->
+aux_buf
+;
+
+222 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`FRAME_HEADROOM
+ (&c->c2.
+äame
+)));
+
+223 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+)));
+
+224 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+c
+->
+c2
+.
+buf
+, 
+occ_magic
+, 
+OCC_STRING_SIZE
+));
+
+226 
+c
+->
+c2
+.
+occ_Ý
+)
+
+228 
+OCC_REQUEST
+:
+
+229 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_REQUEST
+))
+
+231 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_REQUEST");
+
+232 
+do™
+ = 
+Œue
+;
+
+235 
+OCC_REPLY
+:
+
+236 ià(!
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+)
+
+238 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_REPLY
+))
+
+240 ià(!
+	`buf_wr™e
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+ÝtiÚs_¡ršg_loÿl
+,
+
+241 
+	`¡¾’
+ (
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_loÿl
+) + 1))
+
+243 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_REPLY");
+
+244 
+do™
+ = 
+Œue
+;
+
+247 
+OCC_MTU_REQUEST
+:
+
+248 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_MTU_REQUEST
+))
+
+250 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_MTU_REQUEST");
+
+251 
+do™
+ = 
+Œue
+;
+
+254 
+OCC_MTU_REPLY
+:
+
+255 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_MTU_REPLY
+))
+
+257 ià(!
+	`buf_wr™e_u16
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+max_»cv_size_loÿl
+))
+
+259 ià(!
+	`buf_wr™e_u16
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+max_£nd_size_loÿl
+))
+
+261 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_MTU_REPLY");
+
+262 
+do™
+ = 
+Œue
+;
+
+265 
+OCC_MTU_LOAD_REQUEST
+:
+
+266 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_MTU_LOAD_REQUEST
+))
+
+268 ià(!
+	`buf_wr™e_u16
+ (&
+c
+->
+c2
+.
+buf
+, c->c2.
+occ_mtu_lßd_size
+))
+
+270 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_MTU_LOAD_REQUEST");
+
+271 
+do™
+ = 
+Œue
+;
+
+274 
+OCC_MTU_LOAD
+:
+
+276 
+Ãed_to_add
+;
+
+278 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_MTU_LOAD
+))
+
+280 
+Ãed_to_add
+ = 
+	`mš_št
+ (
+c
+->
+c2
+.
+occ_mtu_lßd_size
+, 
+	`EXPANDED_SIZE
+ (&c->c2.
+äame
+))
+
+281 - 
+OCC_STRING_SIZE
+
+
+282 -  (
+ušt8_t
+)
+
+283 - 
+	`EXTRA_FRAME
+ (&
+c
+->
+c2
+.
+äame
+);
+
+285 
+Ãed_to_add
+ > 0)
+
+290 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`g‘_¿ndom
+ () & 0xFF))
+
+292 --
+Ãed_to_add
+;
+
+294 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_MTU_LOAD min_int(%d-%d-%d-%d,%d) size=%d",
+
+295 
+c
+->
+c2
+.
+occ_mtu_lßd_size
+,
+
+296 
+OCC_STRING_SIZE
+,
+
+297 (è (
+ušt8_t
+),
+
+298 
+	`EXTRA_FRAME
+ (&
+c
+->
+c2
+.
+äame
+),
+
+299 
+	`MAX_RW_SIZE_TUN
+ (&
+c
+->
+c2
+.
+äame
+),
+
+300 
+	`BLEN
+ (&
+c
+->
+c2
+.
+buf
+));
+
+301 
+do™
+ = 
+Œue
+;
+
+305 
+OCC_EXIT
+:
+
+306 ià(!
+	`buf_wr™e_u8
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_EXIT
+))
+
+308 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "SENT OCC_EXIT");
+
+309 
+do™
+ = 
+Œue
+;
+
+313 ià(
+do™
+)
+
+319 
+	`’üy±_sign
+ (
+c
+, 
+Œue
+);
+
+322 
+c
+->
+c2
+.
+occ_Ý
+ = -1;
+
+323 
+	}
+}
+
+326 
+	$´oûss_»ûived_occ_msg
+ (
+cÚ‹xt
+ *
+c
+)
+
+328 
+	`ASSERT
+ (
+	`buf_advªû
+ (&
+c
+->
+c2
+.
+buf
+, 
+OCC_STRING_SIZE
+));
+
+329 
+	`buf_»ad_u8
+ (&
+c
+->
+c2
+.
+buf
+))
+
+331 
+OCC_REQUEST
+:
+
+332 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_REQUEST");
+
+333 
+c
+->
+c2
+.
+occ_Ý
+ = 
+OCC_REPLY
+;
+
+336 
+OCC_MTU_REQUEST
+:
+
+337 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_MTU_REQUEST");
+
+338 
+c
+->
+c2
+.
+occ_Ý
+ = 
+OCC_MTU_REPLY
+;
+
+341 
+OCC_MTU_LOAD_REQUEST
+:
+
+342 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_MTU_LOAD_REQUEST");
+
+343 
+c
+->
+c2
+.
+occ_mtu_lßd_size
+ = 
+	`buf_»ad_u16
+ (&c->c2.
+buf
+);
+
+344 ià(
+c
+->
+c2
+.
+occ_mtu_lßd_size
+ >= 0)
+
+345 
+c
+->
+c2
+.
+occ_Ý
+ = 
+OCC_MTU_LOAD
+;
+
+348 
+OCC_REPLY
+:
+
+349 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_REPLY");
+
+350 ià(
+c
+->
+ÝtiÚs
+.
+occ
+ && !
+	`TLS_MODE
+ (cè&& c->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+)
+
+352 ià(!
+	`ÝtiÚs_cmp_equ®_§ã
+ ((*è
+	`BPTR
+ (&
+c
+->
+c2
+.
+buf
+),
+
+353 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+,
+
+354 
+c
+->
+c2
+.
+buf
+.
+Ën
+))
+
+356 
+	`ÝtiÚs_w¬nšg_§ã
+ ((*è
+	`BPTR
+ (&
+c
+->
+c2
+.
+buf
+),
+
+357 
+c
+->
+c2
+.
+ÝtiÚs_¡ršg_»mÙe
+,
+
+358 
+c
+->
+c2
+.
+buf
+.
+Ën
+);
+
+361 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+occ_š‹rv®
+);
+
+364 
+OCC_MTU_REPLY
+:
+
+365 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_MTU_REPLY");
+
+366 
+c
+->
+c2
+.
+max_»cv_size_»mÙe
+ = 
+	`buf_»ad_u16
+ (&c->c2.
+buf
+);
+
+367 
+c
+->
+c2
+.
+max_£nd_size_»mÙe
+ = 
+	`buf_»ad_u16
+ (&c->c2.
+buf
+);
+
+368 ià(
+c
+->
+ÝtiÚs
+.
+mtu_‹¡
+
+
+369 && 
+c
+->
+c2
+.
+max_»cv_size_»mÙe
+ > 0
+
+370 && 
+c
+->
+c2
+.
+max_£nd_size_»mÙe
+ > 0)
+
+372 
+	`msg
+ (
+M_INFO
+, "NOTE: Empirical MTU�est completed [Tried,Actual]†ocal->remote=[%d,%d]„emote->local=[%d,%d]",
+
+373 
+c
+->
+c2
+.
+max_£nd_size_loÿl
+,
+
+374 
+c
+->
+c2
+.
+max_»cv_size_»mÙe
+,
+
+375 
+c
+->
+c2
+.
+max_£nd_size_»mÙe
+,
+
+376 
+c
+->
+c2
+.
+max_»cv_size_loÿl
+);
+
+377 ià(!
+c
+->
+ÝtiÚs
+.
+û
+.
+äagm’t
+
+
+378 && (
+	`´Ùo_is_dg¿m
+(
+c
+->
+ÝtiÚs
+.
+û
+.
+´Ùo
+))
+
+379 && 
+c
+->
+c2
+.
+max_£nd_size_loÿl
+ > 
+TUN_MTU_MIN
+
+
+380 && (
+c
+->
+c2
+.
+max_»cv_size_»mÙe
+ < c->c2.
+max_£nd_size_loÿl
+
+
+381 || 
+c
+->
+c2
+.
+max_»cv_size_loÿl
+ < c->c2.
+max_£nd_size_»mÙe
+))
+
+382 
+	`msg
+ (
+M_INFO
+, "NOTE: This connection is unable�o‡ccomodate‡ UDP…acket size of %d. Consider using --fragment or --mssfix options‡s‡ workaround.",
+
+383 
+c
+->
+c2
+.
+max_£nd_size_loÿl
+);
+
+385 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+occ_mtu_lßd_‹¡_š‹rv®
+);
+
+388 
+OCC_EXIT
+:
+
+389 
+	`dmsg
+ (
+D_PACKET_CONTENT
+, "RECEIVED OCC_EXIT");
+
+390 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+391 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "remote-exit";
+
+394 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+395 
+	}
+}
+
+398 
+	$dummy
+(è{
+	}
+}
+
+	@occ.h
+
+25 #iâdeà
+OCC_H
+
+
+26 
+	#OCC_H
+
+
+	)
+
+28 #ifdeà
+ENABLE_OCC
+
+
+30 
+	~"fÜw¬d.h
+"
+
+33 
+	#OCC_STRING_SIZE
+ 16
+
+	)
+
+39 
+	#OCC_REQUEST
+ 0
+
+	)
+
+40 
+	#OCC_REPLY
+ 1
+
+	)
+
+49 
+	#OCC_INTERVAL_SECONDS
+ 10
+
+	)
+
+50 
+	#OCC_N_TRIES
+ 12
+
+	)
+
+55 
+	#OCC_MTU_LOAD_REQUEST
+ 2
+
+	)
+
+56 
+	#OCC_MTU_LOAD
+ 3
+
+	)
+
+57 
+	#OCC_MTU_REQUEST
+ 4
+
+	)
+
+59 
+	#OCC_MTU_REPLY
+ 5
+
+	)
+
+65 
+	#OCC_MTU_LOAD_INTERVAL_SECONDS
+ 3
+
+	)
+
+70 
+	#OCC_EXIT
+ 6
+
+	)
+
+76 
+	smtu_lßd_‹¡
+
+
+78 
+	mÝ
+;
+
+79 
+	md–�
+;
+
+84 
cÚ¡ 
+ušt8_t
+ 
+occ_magic
+[];
+
+86 
+šlše
+ 
+boÞ
+
+
+87 
+	$is_occ_msg
+ (cÚ¡ 
+bufãr
+* 
+buf
+)
+
+89  
+	`buf_¡ršg_m©ch_h—d
+ (
+buf
+, 
+occ_magic
+, 
+OCC_STRING_SIZE
+);
+
+90 
+	}
+}
+
+92 
+´oûss_»ûived_occ_msg
+ (
+cÚ‹xt
+ *
+c
+);
+
+	@openvpn.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"š™.h
+"
+
+34 
+	~"fÜw¬d.h
+"
+
+35 
+	~"muÉi.h
+"
+
+36 
+	~"wš32.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 
+	~"fÜw¬d-šlše.h
+"
+
+42 
+	#P2P_CHECK_SIG
+(è
+	`EVENT_LOOP_CHECK_SIGNAL
+ (
+c
+, 
+´oûss_sigÇl_p2p
+, c);
+
+	)
+
+44 
+boÞ
+
+
+45 
+	$´oûss_sigÇl_p2p
+ (
+cÚ‹xt
+ *
+c
+)
+
+47 
+	`»m­_sigÇl
+ (
+c
+);
+
+48  
+	`´oûss_sigÇl
+ (
+c
+);
+
+49 
+	}
+}
+
+62 
+	$tuÂ–_pošt_to_pošt
+ (
+cÚ‹xt
+ *
+c
+)
+
+64 
+	`cÚ‹xt_þ—r_2
+ (
+c
+);
+
+67 
+c
+->
+mode
+ = 
+CM_P2P
+;
+
+70 
+	`š™_š¡ªû_hªdË_sigÇls
+ (
+c
+, c->
+es
+, 
+CC_HARD_USR1_TO_HUP
+);
+
+71 ià(
+	`IS_SIG
+ (
+c
+))
+
+75 
+Œue
+)
+
+77 
+	`³rf_push
+ (
+PERF_EVENT_LOOP
+);
+
+80 
+	`´e_£Ëù
+ (
+c
+);
+
+81 
+	`P2P_CHECK_SIG
+();
+
+84 
+	`io_wa™
+ (
+c
+, 
+	`p2p_iow_æags
+ (c));
+
+85 
+	`P2P_CHECK_SIG
+();
+
+88 ià(
+c
+->
+c2
+.
+ev’t_£t_¡©us
+ =ð
+ES_TIMEOUT
+)
+
+90 
+	`³rf_pÝ
+ ();
+
+95 
+	`´oûss_io
+ (
+c
+);
+
+96 
+	`P2P_CHECK_SIG
+();
+
+98 
+	`³rf_pÝ
+ ();
+
+101 
+	`unš™_mªagem’t_ÿÎback
+ ();
+
+104 
+	`þo£_š¡ªû
+ (
+c
+);
+
+105 
+	}
+}
+
+107 #undeà
+PROCESS_SIGNAL_P2P
+
+
+132 
+	$Ý’v²_maš
+ (
+¬gc
+, *
+¬gv
+[])
+
+134 
+cÚ‹xt
+ 
+c
+;
+
+136 #ià
+PEDANTIC
+
+
+137 
+	`årštf
+ (
+¡d”r
+, "Sorry, I was built with --enable-pedantic‡nd I‡m incapable of doing‡ny„eal work!\n");
+
+141 #ifdeà
+WIN32
+
+
+142 
+	`S‘CÚsÞeOu�utCP
+ (
+CP_UTF8
+);
+
+145 
+	`CLEAR
+ (
+c
+);
+
+149 
+c
+.
+fœ¡_time
+ = 
+Œue
+;
+
+152 ià(
+	`š™_¡©ic
+ ())
+
+161 
+	`´e_š™_sigÇl_ÿtch
+ ();
+
+164 
+	`cÚ‹xt_þ—r_®l_exû±_fœ¡_time
+ (&
+c
+);
+
+167 
+	`CLEAR
+ (
+sigšfo_¡©ic
+);
+
+168 
+c
+.
+sig
+ = &
+sigšfo_¡©ic
+;
+
+171 
+	`gc_š™
+ (&
+c
+.
+gc
+);
+
+174 
+c
+.
+es
+ = 
+	`’v_£t_ü—‹
+ (
+NULL
+);
+
+175 #ifdeà
+WIN32
+
+
+176 
+	`£t_wš_sys_·th_vŸ_’v
+ (
+c
+.
+es
+);
+
+179 #ifdeà
+ENABLE_MANAGEMENT
+
+
+181 
+	`š™_mªagem’t
+ (&
+c
+);
+
+185 
+	`š™_ÝtiÚs
+ (&
+c
+.
+ÝtiÚs
+, 
+Œue
+);
+
+188 
+	`·r£_¬gv
+ (&
+c
+.
+ÝtiÚs
+, 
+¬gc
+, 
+¬gv
+, 
+M_USAGE
+, 
+OPT_P_DEFAULT
+, 
+NULL
+, c.
+es
+);
+
+190 #ifdeà
+ENABLE_PLUGIN
+
+
+192 
+	`š™_v”b_mu‹
+ (&
+c
+, 
+IVM_LEVEL_1
+);
+
+193 
+	`š™_¶ugšs
+ (&
+c
+);
+
+194 
+	`Ý’_¶ugšs
+ (&
+c
+, 
+Œue
+, 
+OPENVPN_PLUGIN_INIT_PRE_CONFIG_PARSE
+);
+
+198 
+	`š™_v”b_mu‹
+ (&
+c
+, 
+IVM_LEVEL_1
+);
+
+201 
+	`š™_ÝtiÚs_dev
+ (&
+c
+.
+ÝtiÚs
+);
+
+204 ià(
+	`´št_Ý’s¦_šfo
+ (&
+c
+.
+ÝtiÚs
+))
+
+208 ià(
+	`do_g’key
+ (&
+c
+.
+ÝtiÚs
+))
+
+212 ià(
+	`do_³rsi¡_tuÁ­
+ (&
+c
+.
+ÝtiÚs
+))
+
+216 
+	`ÝtiÚs_po¡´oûss
+ (&
+c
+.
+ÝtiÚs
+);
+
+219 
+	`show_£‰šgs
+ (&
+c
+.
+ÝtiÚs
+);
+
+222 
+	`msg
+ (
+M_INFO
+, "%s", 
+t™Ë_¡ršg
+);
+
+223 
+	`show_lib¿ry_v”siÚs
+(
+M_INFO
+);
+
+226 
+	`´e_£tup
+ (&
+c
+.
+ÝtiÚs
+);
+
+229 ià(
+	`do_‹¡_üy±o
+ (&
+c
+.
+ÝtiÚs
+))
+
+234 #ifdeà
+ENABLE_MANAGEMENT
+
+
+235 ià(!(
+c
+.
+ÝtiÚs
+.
+mªagem’t_æags
+ & 
+MF_QUERY_PASSWORDS
+))
+
+237 
+	`š™_qu”y_·sswÜds
+ (&
+c
+);
+
+240 ià(
+c
+.
+fœ¡_time
+)
+
+242 
+c
+.
+did_we_d«mÚize
+ = 
+	`possibly_become_d«mÚ
+ (&c.
+ÝtiÚs
+);
+
+243 
+	`wr™e_pid
+ (
+c
+.
+ÝtiÚs
+.
+wr™•id
+);
+
+246 #ifdeà
+ENABLE_MANAGEMENT
+
+
+248 ià(!
+	`Ý’_mªagem’t
+ (&
+c
+))
+
+251 ià(
+c
+.
+ÝtiÚs
+.
+mªagem’t_æags
+ & 
+MF_QUERY_PASSWORDS
+)
+
+252 
+	`š™_qu”y_·sswÜds
+ (&
+c
+);
+
+256 
+	`£‹nv_£‰šgs
+ (
+c
+.
+es
+, &c.
+ÝtiÚs
+);
+
+259 
+	`cÚ‹xt_š™_1
+ (&
+c
+);
+
+264 
+c
+.
+ÝtiÚs
+.
+mode
+)
+
+266 
+MODE_POINT_TO_POINT
+:
+
+267 
+	`tuÂ–_pošt_to_pošt
+ (&
+c
+);
+
+269 #ià
+P2MP_SERVER
+
+
+270 
+MODE_SERVER
+:
+
+271 
+	`tuÂ–_£rv”
+ (&
+c
+);
+
+275 
+	`ASSERT
+ (0);
+
+279 
+c
+.
+fœ¡_time
+ = 
+çl£
+;
+
+282 ià(
+	`IS_SIG
+ (&
+c
+))
+
+283 
+	`´št_sigÇl
+ (
+c
+.
+sig
+, 
+NULL
+, 
+M_INFO
+);
+
+286 
+	`sigÇl_»¡¬t_¡©us
+ (
+c
+.
+sig
+);
+
+288 
+c
+.
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+);
+
+290 
+	`unš™_ÝtiÚs
+ (&
+c
+.
+ÝtiÚs
+);
+
+291 
+	`gc_»£t
+ (&
+c
+.
+gc
+);
+
+293 
+c
+.
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGHUP
+);
+
+296 
+	`cÚ‹xt_gc_ä“
+ (&
+c
+);
+
+298 
+	`’v_£t_de¡roy
+ (
+c
+.
+es
+);
+
+300 #ifdeà
+ENABLE_MANAGEMENT
+
+
+302 
+	`þo£_mªagem’t
+ ();
+
+306 
+	`unš™_¡©ic
+ ();
+
+308 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+310 
+	}
+}
+
+312 #ifdeà
+WIN32
+
+
+314 
+	$wmaš
+ (
+¬gc
+, 
+wch¬_t
+ *
+w¬gv
+[]) {
+
+315 **
+¬gv
+;
+
+316 
+»t
+;
+
+317 
+i
+;
+
+319 ià((
+¬gv
+ = 
+	`ÿÎoc
+(
+¬gc
++1, (*))è=ð
+NULL
+)
+
+322 
+i
+ = 0; i < 
+¬gc
+; i++)
+
+324 
+n
+ = 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+w¬gv
+[
+i
+], -1, 
+NULL
+, 0, NULL, NULL);
+
+325 
+¬gv
+[
+i
+] = 
+	`m®loc
+ (
+n
+);
+
+326 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+w¬gv
+[
+i
+], -1, 
+¬gv
+[i], 
+n
+, 
+NULL
+, NULL);
+
+329 
+»t
+ = 
+	`Ý’v²_maš
+(
+¬gc
+, 
+¬gv
+);
+
+331 
+i
+=0; i < 
+¬gc
+; i++ )
+
+333 
+	`ä“
+ (
+¬gv
+[
+i
+]);
+
+335 
+	`ä“
+(
+¬gv
+);
+
+337  
+»t
+;
+
+338 
+	}
+}
+
+341 
+	$maš
+ (
+¬gc
+, *
+¬gv
+[]) {
+
+342  
+	`Ý’v²_maš
+(
+¬gc
+, 
+¬gv
+);
+
+343 
+	}
+}
+
+	@openvpn.h
+
+25 #iâdeà
+OPENVPN_H
+
+
+26 
+	#OPENVPN_H
+
+
+	)
+
+28 
+	~"bufãr.h
+"
+
+29 
+	~"ÝtiÚs.h
+"
+
+30 
+	~"sock‘.h
+"
+
+31 
+	~"üy±o.h
+"
+
+32 
+	~"s¦.h
+"
+
+33 
+	~"·ck‘_id.h
+"
+
+34 
+	~"lzo.h
+"
+
+35 
+	~"tun.h
+"
+
+36 
+	~"š‹rv®.h
+"
+
+37 
+	~"¡©us.h
+"
+
+38 
+	~"äagm’t.h
+"
+
+39 
+	~"sh­”.h
+"
+
+40 
+	~"rou‹.h
+"
+
+41 
+	~"´oxy.h
+"
+
+42 
+	~"socks.h
+"
+
+43 
+	~"sig.h
+"
+
+44 
+	~"misc.h
+"
+
+45 
+	~"mbuf.h
+"
+
+46 
+	~"poÞ.h
+"
+
+47 
+	~"¶ugš.h
+"
+
+48 
+	~"mªage.h
+"
+
+49 
+	~"pf.h
+"
+
+56 
+	skey_scheduË
+
+
+58 #ifdeà
+ENABLE_CRYPTO
+
+
+60 
+key_ty³
+ 
+	mkey_ty³
+;
+
+63 
+key_ùx_bi
+ 
+	m¡©ic_key
+;
+
+65 #ifdeà
+ENABLE_SSL
+
+
+67 
+Žs_roÙ_ùx
+ 
+	ms¦_ùx
+;
+
+70 
+key_ùx_bi
+ 
+	mŽs_auth_key
+;
+
+74 
+	mdummy
+;
+
+82 #iâdeà
+PACKET_ID_H
+
+
+83 
+	s·ck‘_id_³rsi¡
+
+
+85 
+	mdummy
+;
+
+87 
+šlše
+ 
+
+88 
+	$·ck‘_id_³rsi¡_š™
+ (
+·ck‘_id_³rsi¡
+ *
+p
+)
+
+90 
+	}
+}
+
+96 
+	scÚ‹xt_bufãrs
+
+
+99 
+bufãr
+ 
+	maux_buf
+;
+
+102 #ifdeà
+ENABLE_CRYPTO
+
+
+103 
+bufãr
+ 
+	m’üy±_buf
+;
+
+104 
+bufãr
+ 
+	mdeüy±_buf
+;
+
+108 #ifdeà
+ENABLE_LZO
+
+
+109 
+bufãr
+ 
+	mlzo_com´ess_buf
+;
+
+110 
+bufãr
+ 
+	mlzo_decom´ess_buf
+;
+
+117 
+bufãr
+ 
+	m»ad_lšk_buf
+;
+
+118 
+bufãr
+ 
+	m»ad_tun_buf
+;
+
+124 
+	scÚ‹xt_³rsi¡
+
+
+126 
+	m»¡¬t_¦“p_£cÚds
+;
+
+138 
+	scÚ‹xt_0
+
+
+141 
+boÞ
+ 
+	muid_gid_¥ecif›d
+;
+
+142 
+boÞ
+ 
+	muid_gid_£t
+;
+
+143 
+¶©fÜm_¡©e_u£r
+ 
+	m¶©fÜm_¡©e_u£r
+;
+
+144 
+¶©fÜm_¡©e_group
+ 
+	m¶©fÜm_¡©e_group
+;
+
+157 
+	scÚ‹xt_1
+
+
+159 
+lšk_sock‘_addr
+ 
+	mlšk_sock‘_addr
+;
+
+164 
+key_scheduË
+ 
+	mks
+;
+
+167 
+·ck‘_id_³rsi¡
+ 
+	mpid_³rsi¡
+;
+
+169 
+tuÁ­
+ *
+	mtuÁ­
+;
+
+170 
+boÞ
+ 
+	mtuÁ­_owÃd
+;
+
+174 
+rou‹_li¡
+ *
+	mrou‹_li¡
+;
+
+179 
+rou‹_�v6_li¡
+ *
+	mrou‹_�v6_li¡
+;
+
+182 
+¡©us_ou�ut
+ *
+	m¡©us_ou�ut
+;
+
+183 
+boÞ
+ 
+	m¡©us_ou�ut_owÃd
+;
+
+185 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+187 
+h‰p_´oxy_šfo
+ *
+	mh‰p_´oxy
+;
+
+188 
+boÞ
+ 
+	mh‰p_´oxy_owÃd
+;
+
+191 #ifdeà
+ENABLE_SOCKS
+
+
+193 
+socks_´oxy_šfo
+ *
+	msocks_´oxy
+;
+
+194 
+boÞ
+ 
+	msocks_´oxy_owÃd
+;
+
+197 #ià
+P2MP
+
+
+199 #ià
+P2MP_SERVER
+
+
+201 
+ifcÚfig_poÞ_³rsi¡
+ *
+	mifcÚfig_poÞ_³rsi¡
+;
+
+202 
+boÞ
+ 
+	mifcÚfig_poÞ_³rsi¡_owÃd
+;
+
+206 
+md5_dige¡
+ 
+	mpuÎed_ÝtiÚs_dige¡_§ve
+;
+
+211 
+u£r_·ss
+ *
+	mauth_u£r_·ss
+;
+
+226 
+	scÚ‹xt_2
+
+
+228 
+gc_¬’a
+ 
+	mgc
+;
+
+233 
+ev’t_£t
+ *
+	mev’t_£t
+;
+
+234 
+	mev’t_£t_max
+;
+
+235 
+boÞ
+ 
+	mev’t_£t_owÃd
+;
+
+238 
+	#SOCKET_READ
+ (1<<0)
+
+	)
+
+239 
+	#SOCKET_WRITE
+ (1<<1)
+
+	)
+
+240 
+	#TUN_READ
+ (1<<2)
+
+	)
+
+241 
+	#TUN_WRITE
+ (1<<3)
+
+	)
+
+242 
+	#ES_ERROR
+ (1<<4)
+
+	)
+
+243 
+	#ES_TIMEOUT
+ (1<<5)
+
+	)
+
+244 #ifdeà
+ENABLE_MANAGEMENT
+
+
+245 
+	#MANAGEMENT_READ
+ (1<<6)
+
+	)
+
+246 
+	#MANAGEMENT_WRITE
+ (1<<7)
+
+	)
+
+249 
+	mev’t_£t_¡©us
+;
+
+251 
+lšk_sock‘
+ *
+	mlšk_sock‘
+;
+
+252 
+boÞ
+ 
+	mlšk_sock‘_owÃd
+;
+
+253 
+lšk_sock‘_šfo
+ *
+	mlšk_sock‘_šfo
+;
+
+254 cÚ¡ 
+lšk_sock‘
+ *
+	macû±_äom
+;
+
+256 
+lšk_sock‘_aùu®
+ *
+	mto_lšk_addr
+;
+
+257 
+lšk_sock‘_aùu®
+ 
+	mäom
+;
+
+260 
+äame
+ 
+	mäame
+;
+
+262 #ifdeà
+ENABLE_FRAGMENT
+
+
+264 
+äagm’t_ma¡”
+ *
+	mäagm’t
+;
+
+265 
+äame
+ 
+	mäame_äagm’t
+;
+
+266 
+äame
+ 
+	mäame_äagm’t_om™
+;
+
+269 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+273 
+sh­”
+ 
+	msh­”
+;
+
+279 
+couÁ”_ty³
+ 
+	mtun_»ad_by‹s
+;
+
+280 
+couÁ”_ty³
+ 
+	mtun_wr™e_by‹s
+;
+
+281 
+couÁ”_ty³
+ 
+	mlšk_»ad_by‹s
+;
+
+282 
+couÁ”_ty³
+ 
+	mlšk_»ad_by‹s_auth
+;
+
+283 
+couÁ”_ty³
+ 
+	mlšk_wr™e_by‹s
+;
+
+284 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+285 
+couÁ”_ty³
+ 
+	mn_Œunc_tun_»ad
+;
+
+286 
+couÁ”_ty³
+ 
+	mn_Œunc_tun_wr™e
+;
+
+287 
+couÁ”_ty³
+ 
+	mn_Œunc_´e_’üy±
+;
+
+288 
+couÁ”_ty³
+ 
+	mn_Œunc_po¡_deüy±
+;
+
+295 
+ev’t_timeout
+ 
+	mwa™_fÜ_cÚÃù
+;
+
+296 
+ev’t_timeout
+ 
+	mpšg_£nd_š‹rv®
+;
+
+297 
+ev’t_timeout
+ 
+	mpšg_»c_š‹rv®
+;
+
+300 
+ev’t_timeout
+ 
+	mšaùiv™y_š‹rv®
+;
+
+301 
+	mšaùiv™y_by‹s
+;
+
+303 #ifdeà
+ENABLE_OCC
+
+
+305 *
+	mÝtiÚs_¡ršg_loÿl
+;
+
+306 *
+	mÝtiÚs_¡ršg_»mÙe
+;
+
+308 
+	mocc_Ý
+;
+
+309 
+	mocc_n_Œ›s
+;
+
+310 
+ev’t_timeout
+ 
+	mocc_š‹rv®
+;
+
+317 
+	mÜigš®_»cv_size
+;
+
+318 
+	mmax_»cv_size_loÿl
+;
+
+319 
+	mmax_»cv_size_»mÙe
+;
+
+320 
+	mmax_£nd_size_loÿl
+;
+
+321 
+	mmax_£nd_size_»mÙe
+;
+
+323 #ifdeà
+ENABLE_OCC
+
+
+325 
+	mocc_mtu_lßd_size
+;
+
+327 
+ev’t_timeout
+ 
+	mocc_mtu_lßd_‹¡_š‹rv®
+;
+
+328 
+	mocc_mtu_lßd_n_Œ›s
+;
+
+331 #ifdeà
+ENABLE_CRYPTO
+
+
+336 #ifdeà
+ENABLE_SSL
+
+
+338 
+Žs_muÉi
+ *
+	mŽs_muÉi
+;
+
+341 
+Žs_auth_¡ªd®Úe
+ *
+	mŽs_auth_¡ªd®Úe
+;
+
+353 
+š‹rv®
+ 
+	mtmp_št
+;
+
+356 
+	mŽs_ex™_sigÇl
+;
+
+360 
+üy±o_ÝtiÚs
+ 
+	müy±o_ÝtiÚs
+;
+
+367 
+·ck‘_id
+ 
+	m·ck‘_id
+;
+
+368 
+ev’t_timeout
+ 
+	m·ck‘_id_³rsi¡_š‹rv®
+;
+
+372 #ifdeà
+ENABLE_LZO
+
+
+373 
+lzo_com´ess_wÜk¥aû
+ 
+	mlzo_compwÜk
+;
+
+382 
+cÚ‹xt_bufãrs
+ *
+	mbufãrs
+;
+
+383 
+boÞ
+ 
+	mbufãrs_owÃd
+;
+
+390 
+bufãr
+ 
+	mbuf
+;
+
+391 
+bufãr
+ 
+	mto_tun
+;
+
+392 
+bufãr
+ 
+	mto_lšk
+;
+
+397 
+boÞ
+ 
+	m�v4_tun
+;
+
+400 
+boÞ
+ 
+	mlog_rw
+;
+
+403 
+ev’t_timeout
+ 
+	mrou‹_wakeup
+;
+
+404 
+ev’t_timeout
+ 
+	mrou‹_wakeup_expœe
+;
+
+407 
+boÞ
+ 
+	mdid_Ý’_tun
+;
+
+414 
+timev®
+ 
+	mtimev®
+;
+
+417 
+time_t
+ 
+	mcßr£_tim”_wakeup
+;
+
+421 
+time_t
+ 
+	mupd©e_timeout_¿ndom_compÚ’t
+;
+
+422 
+timev®
+ 
+	mtimeout_¿ndom_compÚ’t
+;
+
+425 
+boÞ
+ 
+	mdo_up_¿n
+;
+
+427 #ifdeà
+ENABLE_OCC
+
+
+431 
+time_t
+ 
+	mex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+;
+
+432 
+ev’t_timeout
+ 
+	mex¶ic™_ex™_nÙifiÿtiÚ_š‹rv®
+;
+
+436 
+’v_£t
+ *
+	mes
+;
+
+437 
+boÞ
+ 
+	mes_owÃd
+;
+
+440 
+boÞ
+ 
+	mç¡_io
+;
+
+442 #ià
+P2MP
+
+
+444 #ià
+P2MP_SERVER
+
+
+446 
+boÞ
+ 
+	mpush_»¶y_deã¼ed
+;
+
+447 
+boÞ
+ 
+	mpush_ifcÚfig_defšed
+;
+
+448 
+time_t
+ 
+	m£Á_push_»¶y_expœy
+;
+
+449 
+š_addr_t
+ 
+	mpush_ifcÚfig_loÿl
+;
+
+450 
+š_addr_t
+ 
+	mpush_ifcÚfig_»mÙe_Ãtmask
+;
+
+451 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+452 
+š_addr_t
+ 
+	mpush_ifcÚfig_loÿl_®Ÿs
+;
+
+455 
+boÞ
+ 
+	mpush_ifcÚfig_�v6_defšed
+;
+
+456 
+š6_addr
+ 
+	mpush_ifcÚfig_�v6_loÿl
+;
+
+457 
+	mpush_ifcÚfig_�v6_Ãtb™s
+;
+
+458 
+š6_addr
+ 
+	mpush_ifcÚfig_�v6_»mÙe
+;
+
+461 
+	#CAS_SUCCEEDED
+ 0
+
+	)
+
+462 
+	#CAS_PENDING
+ 1
+
+	)
+
+463 
+	#CAS_FAILED
+ 2
+
+	)
+
+464 
+	#CAS_PARTIAL
+ 3
+
+	)
+
+466 
+	mcÚ‹xt_auth
+;
+
+469 
+ev’t_timeout
+ 
+	mpush_»que¡_š‹rv®
+;
+
+470 
+	mn_£Á_push_»que¡s
+;
+
+471 
+boÞ
+ 
+	mdid_´e_puÎ_»¡Üe
+;
+
+474 
+boÞ
+ 
+	mpuÎed_ÝtiÚs_md5_š™_dÚe
+;
+
+475 
+md5_¡©e
+ 
+	mpuÎed_ÝtiÚs_¡©e
+;
+
+476 
+md5_dige¡
+ 
+	mpuÎed_ÝtiÚs_dige¡
+;
+
+478 
+ev’t_timeout
+ 
+	m£rv”_pÞl_š‹rv®
+;
+
+480 
+ev’t_timeout
+ 
+	mscheduËd_ex™
+;
+
+481 
+	mscheduËd_ex™_sigÇl
+;
+
+485 #ifdeà
+ENABLE_PF
+
+
+486 
+pf_cÚ‹xt
+ 
+	mpf
+;
+
+489 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+490 
+mª_def_auth_cÚ‹xt
+ 
+	mmda_cÚ‹xt
+;
+
+506 
+	scÚ‹xt
+
+
+508 
+ÝtiÚs
+ 
+	mÝtiÚs
+;
+
+511 
+boÞ
+ 
+	mfœ¡_time
+;
+
+515 
+	#CM_P2P
+ 0
+
+	)
+
+516 
+	#CM_TOP
+ 1
+
+	)
+
+517 
+	#CM_TOP_CLONE
+ 2
+
+	)
+
+518 
+	#CM_CHILD_UDP
+ 3
+
+	)
+
+519 
+	#CM_CHILD_TCP
+ 4
+
+	)
+
+520 
+	mmode
+;
+
+525 
+gc_¬’a
+ 
+	mgc
+;
+
+529 
+’v_£t
+ *
+	mes
+;
+
+531 
+sigÇl_šfo
+ *
+	msig
+;
+
+533 
+¶ugš_li¡
+ *
+	m¶ugšs
+;
+
+534 
+boÞ
+ 
+	m¶ugšs_owÃd
+;
+
+538 
+boÞ
+ 
+	mdid_we_d«mÚize
+;
+
+541 
+cÚ‹xt_³rsi¡
+ 
+	m³rsi¡
+;
+
+543 
+cÚ‹xt_0
+ *
+	mc0
+;
+
+544 
+cÚ‹xt_1
+ 
+	mc1
+;
+
+545 
+cÚ‹xt_2
+ 
+	mc2
+;
+
+551 
+	#EVENT_LOOP_CHECK_SIGNAL
+(
+c
+, 
+func
+, 
+¬g
+) \
+
+552 ià(
+	`IS_SIG
+ (
+c
+)) \
+
+554 cÚ¡ 
+brk
+ = 
+	`func
+ (
+¬g
+); \
+
+555 
+	`³rf_pÝ
+ (); \
+
+556 ià(
+brk
+) \
+
+560 }
+
+	)
+
+567 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+568 
+	#TLS_MODE
+(
+c
+è((c)->
+c2
+.
+Žs_muÉi
+ !ð
+NULL
+)
+
+	)
+
+569 
+	#PROTO_DUMP_FLAGS
+ (
+	`check_debug_Ëv–
+ (
+D_LINK_RW_VERBOSE
+è? (
+PD_SHOW_DATA
+|
+PD_VERBOSE
+è: 0)
+
+	)
+
+570 
+	#PROTO_DUMP
+(
+buf
+, 
+gc
+è
+	`´ÙocÞ_dump
+((buf), \
+
+571 
+PROTO_DUMP_FLAGS
+ | \
+
+572 (
+c
+->
+c2
+.
+Žs_muÉi
+ ? 
+PD_TLS
+ : 0) | \
+
+573 (
+c
+->
+ÝtiÚs
+.
+Žs_auth_fže
+ ? c->
+c1
+.
+ks
+.
+key_ty³
+.
+hmac_Ëngth
+ : 0), \
+
+574 
+gc
+)
+
+	)
+
+576 
+	#TLS_MODE
+(
+c
+è(
+çl£
+)
+
+	)
+
+577 
+	#PROTO_DUMP
+(
+buf
+, 
+gc
+è
+	`fÜm©_hex
+ (
+	`BPTR
+ (buf), 
+	`BLEN
+ (buf), 80, gc)
+
+	)
+
+580 #ifdeà
+ENABLE_CRYPTO
+
+
+581 
+	#MD5SUM
+(
+buf
+, 
+Ën
+, 
+gc
+è
+	`md5sum
+((buf), (Ën), 0, (gc))
+
+	)
+
+583 
+	#MD5SUM
+(
+buf
+, 
+Ën
+, 
+gc
+è"[uÇvažabË]"
+
+	)
+
+586 #ifdeà
+ENABLE_CRYPTO
+
+
+587 
+	#CIPHER_ENABLED
+(
+c
+è(c->
+c1
+.
+ks
+.
+key_ty³
+.
+c�h”
+ !ð
+NULL
+)
+
+	)
+
+589 
+	#CIPHER_ENABLED
+(
+c
+è(
+çl£
+)
+
+	)
+
+	@options.c
+
+31 #ifdeà
+HAVE_CONFIG_H
+
+
+32 
+	~"cÚfig.h
+"
+
+33 #–ià
+defšed
+(
+_MSC_VER
+)
+
+34 
+	~"cÚfig-msvc.h
+"
+
+36 #ifdeà
+HAVE_CONFIG_VERSION_H
+
+
+37 
+	~"cÚfig-v”siÚ.h
+"
+
+40 
+	~"sysh—d.h
+"
+
+42 
+	~"bufãr.h
+"
+
+43 
+	~"”rÜ.h
+"
+
+44 
+	~"commÚ.h
+"
+
+45 
+	~"sh­”.h
+"
+
+46 
+	~"üy±o.h
+"
+
+47 
+	~"s¦.h
+"
+
+48 
+	~"ÝtiÚs.h
+"
+
+49 
+	~"misc.h
+"
+
+50 
+	~"sock‘.h
+"
+
+51 
+	~"·ck‘_id.h
+"
+
+52 
+	~"pkcs11.h
+"
+
+53 
+	~"wš32.h
+"
+
+54 
+	~"push.h
+"
+
+55 
+	~"poÞ.h
+"
+
+56 
+	~"h–³r.h
+"
+
+57 
+	~"mªage.h
+"
+
+58 
+	~"fÜw¬d.h
+"
+
+59 
+	~<ùy³.h
+>
+
+61 
+	~"memdbg.h
+"
+
+63 cÚ¡ 
+	gt™Ë_¡ršg
+[] =
+
+64 
+PACKAGE_STRING
+
+
+65 " " 
+TARGET_ALIAS
+
+
+66 #ifdeà
+ENABLE_CRYPTO
+
+
+67 #ifdeà
+ENABLE_SSL
+
+
+68 #ià
+defšed
+(
+ENABLE_CRYPTO_POLARSSL
+)
+
+70 #–ià
+defšed
+(
+ENABLE_CRYPTO_OPENSSL
+)
+
+76 #ià
+defšed
+(
+ENABLE_CRYPTO_POLARSSL
+)
+
+78 #–ià
+defšed
+(
+ENABLE_CRYPTO_OPENSSL
+)
+
+85 #ifdeà
+ENABLE_LZO
+
+
+86 #ifdeà
+ENABLE_LZO_STUB
+
+
+92 #ià
+EPOLL
+
+
+95 #ifdeà
+PRODUCT_TAP_DEBUG
+
+
+98 #ifdeà
+ENABLE_PKCS11
+
+
+101 #ià
+ENABLE_IP_PKTINFO
+
+
+105 " bužˆÚ " 
+__DATE__
+
+
+108 #iâdeà
+ENABLE_SMALL
+
+
+110 cÚ¡ 
+	gu§ge_mes§ge
+[] =
+
+132 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+149 #ifdeà
+ENABLE_SOCKS
+
+
+169 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+172 #ifdeà
+ENABLE_SOCKS
+
+
+186 #ifdeà
+ENABLE_IPROUTE
+
+
+187 "--�rou‹ cmd : U£�hi commªd in¡—d oàdeçuÉ " 
+IPROUTE_PATH
+ ".\n"
+
+229 " VPN. Add 'loÿl' fÏg iàbÙh " 
+PACKAGE_NAME
+ " servers‡re directly\n"
+
+237 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+240 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+264 #ià
+ENABLE_IP_PKTINFO
+
+
+273 #ià
+PASSTOS_CAPABILITY
+
+
+287 #ifdeà
+ENABLE_OCC
+
+
+290 #ifdeà
+ENABLE_FRAGMENT
+
+
+299 #ià
+defšed
+(
+TARGET_LINUX
+è&& 
+HAVE_DECL_SO_MARK
+
+
+304 #ifdeà
+ENABLE_MEMSTATS
+
+
+324 #ifdeà
+ENABLE_SELINUX
+
+
+356 #ifdeà
+ENABLE_OCC
+
+
+359 #ifdeà
+ENABLE_DEBUG
+
+
+362 #ifdeà
+ENABLE_LZO
+
+
+368 #ifdeà
+ENABLE_MANAGEMENT
+
+
+372 #ià
+UNIX_SOCK_SUPPORT
+
+
+382 "--mªagem’t-hÞd : S�¹ " 
+PACKAGE_NAME
+ " in‡ hibernating state, until‡ client\n"
+
+390 #ià
+UNIX_SOCK_SUPPORT
+
+
+396 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+401 #ifdeà
+MANAGEMENT_PF
+
+
+406 #ifdeà
+ENABLE_PLUGIN
+
+
+410 #ià
+P2MP
+
+
+411 #ià
+P2MP_SERVER
+
+
+479 #ià
+PORT_SHARE
+
+
+502 #ifdeà
+ENABLE_OCC
+
+
+506 #ifdeà
+ENABLE_CRYPTO
+
+
+525 #ifdeà
+HAVE_EVP_CIPHER_CTX_SET_KEY_LENGTH
+
+
+529 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+542 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+546 #ifdeà
+ENABLE_SSL
+
+
+556 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+558 #ià
+OPENSSL_VERSION_NUMBER
+ >= 0x00907000L
+
+576 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+580 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+585 #ifdeà
+WIN32
+
+
+623 #ifdeà
+ENABLE_X509_TRACK
+
+
+627 #ià
+OPENSSL_VERSION_NUMBER
+ >ð0x00907000L || 
+ENABLE_CRYPTO_POLARSSL
+
+
+639 #ifdeà
+ENABLE_PKCS11
+
+
+663 #ifdeà
+ENABLE_SSL
+
+
+666 #ifdeà
+WIN32
+
+
+709 "--£rviûƒx [0|1] : FÜ u£ wh’ " 
+PACKAGE_NAME
+ " is being instantiated by‡\n"
+
+712 " sigÇËd, wžÈÿu£ " 
+PACKAGE_NAME
+ "�oƒxit. A second\n"
+
+714 "--show-Ãt-u° : Show " 
+PACKAGE_NAME
+ "'s view of„outing�able‡nd‚et‡dapter†ist\n"
+
+719 "--show-Ãˆ : Show " 
+PACKAGE_NAME
+ "'s view of„outing�able‡nd‚et‡dapter†ist.\n"
+
+721 "--®low-nÚadmš [TAP-ad­‹r] : AÎow " 
+PACKAGE_NAME
+ "„unning without‡dmin…rivileges\n"
+
+730 #ifdeà
+ENABLE_FEATURE_TUN_PERSIST
+
+
+740 #ifdeà
+ENABLE_PKCS11
+
+
+743 #ifdeà
+DEFAULT_PKCS11_MODULE
+
+
+752 #ifdeà
+ENABLE_DEBUG
+
+
+765 
+	$š™_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+, cÚ¡ 
+boÞ
+ 
+š™_gc
+)
+
+767 
+	`CLEAR
+ (*
+o
+);
+
+768 ià(
+š™_gc
+)
+
+770 
+	`gc_š™
+ (&
+o
+->
+gc
+);
+
+771 
+o
+->
+gc_owÃd
+ = 
+Œue
+;
+
+773 
+o
+->
+mode
+ = 
+MODE_POINT_TO_POINT
+;
+
+774 
+o
+->
+tÝÞogy
+ = 
+TOP_NET30
+;
+
+775 
+o
+->
+û
+.
+´Ùo
+ = 
+PROTO_UDPv4
+;
+
+776 
+o
+->
+û
+.
+cÚÃù_»Œy_£cÚds
+ = 5;
+
+777 
+o
+->
+û
+.
+cÚÃù_timeout
+ = 10;
+
+778 
+o
+->
+û
+.
+cÚÃù_»Œy_max
+ = 0;
+
+779 
+o
+->
+û
+.
+loÿl_pÜt
+ = o->û.
+»mÙe_pÜt
+ = 
+OPENVPN_PORT
+;
+
+780 
+o
+->
+v”bos™y
+ = 1;
+
+781 
+o
+->
+¡©us_fže_upd©e_äeq
+ = 60;
+
+782 
+o
+->
+¡©us_fže_v”siÚ
+ = 1;
+
+783 
+o
+->
+û
+.
+bšd_loÿl
+ = 
+Œue
+;
+
+784 
+o
+->
+û
+.
+tun_mtu
+ = 
+TUN_MTU_DEFAULT
+;
+
+785 
+o
+->
+û
+.
+lšk_mtu
+ = 
+LINK_MTU_DEFAULT
+;
+
+786 
+o
+->
+û
+.
+mtu_discov”_ty³
+ = -1;
+
+787 
+o
+->
+û
+.
+mssfix
+ = 
+MSSFIX_DEFAULT
+;
+
+788 
+o
+->
+rou‹_d–ay_wšdow
+ = 30;
+
+789 
+o
+->
+max_rou‹s
+ = 
+MAX_ROUTES_DEFAULT
+;
+
+790 
+o
+->
+»sÞve_»Œy_£cÚds
+ = 
+RESOLV_RETRY_INFINITE
+;
+
+791 
+o
+->
+´Ùo_fÜû
+ = -1;
+
+792 #ifdeà
+ENABLE_OCC
+
+
+793 
+o
+->
+occ
+ = 
+Œue
+;
+
+795 #ifdeà
+ENABLE_MANAGEMENT
+
+
+796 
+o
+->
+mªagem’t_log_hi¡Üy_ÿche
+ = 250;
+
+797 
+o
+->
+mªagem’t_echo_bufãr_size
+ = 100;
+
+798 
+o
+->
+mªagem’t_¡©e_bufãr_size
+ = 100;
+
+800 #ifdeà
+ENABLE_FEATURE_TUN_PERSIST
+
+
+801 
+o
+->
+³rsi¡_mode
+ = 1;
+
+803 #iâdeà
+WIN32
+
+
+804 
+o
+->
+rcvbuf
+ = 65536;
+
+805 
+o
+->
+¢dbuf
+ = 65536;
+
+807 #ifdeà
+TARGET_LINUX
+
+
+808 
+o
+->
+tuÁ­_ÝtiÚs
+.
+txqueu–’
+ = 100;
+
+810 #ifdeà
+WIN32
+
+
+812 
+o
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_ty³
+ = 
+IPW32_SET_ADAPTIVE
+;
+
+814 
+o
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_ty³
+ = 
+IPW32_SET_DHCP_MASQ
+;
+
+816 
+o
+->
+tuÁ­_ÝtiÚs
+.
+dhý_Ëa£_time
+ = 31536000;
+
+817 
+o
+->
+tuÁ­_ÝtiÚs
+.
+dhý_masq_off£t
+ = 0;
+
+818 
+o
+->
+rou‹_m‘hod
+ = 
+ROUTE_METHOD_ADAPTIVE
+;
+
+820 #ià
+P2MP_SERVER
+
+
+821 
+o
+->
+»®_hash_size
+ = 256;
+
+822 
+o
+->
+vœtu®_hash_size
+ = 256;
+
+823 
+o
+->
+n_bÿ¡_buf
+ = 256;
+
+824 
+o
+->
+tý_queue_lim™
+ = 64;
+
+825 
+o
+->
+max_þ›Ás
+ = 1024;
+
+826 
+o
+->
+max_rou‹s_³r_þ›Á
+ = 256;
+
+827 
+o
+->
+¡®e_rou‹s_check_š‹rv®
+ = 0;
+
+828 
+o
+->
+ifcÚfig_poÞ_³rsi¡_»äesh_äeq
+ = 600;
+
+830 #ià
+P2MP
+
+
+831 
+o
+->
+scheduËd_ex™_š‹rv®
+ = 5;
+
+832 
+o
+->
+£rv”_pÞl_timeout
+ = 0;
+
+834 #ifdeà
+ENABLE_CRYPTO
+
+
+835 
+o
+->
+c�h”Çme
+ = "BF-CBC";
+
+836 
+o
+->
+c�h”Çme_defšed
+ = 
+Œue
+;
+
+837 
+o
+->
+authÇme
+ = "SHA1";
+
+838 
+o
+->
+authÇme_defšed
+ = 
+Œue
+;
+
+839 
+o
+->
+´ng_hash
+ = "SHA1";
+
+840 
+o
+->
+´ng_nÚû_£ü‘_Ën
+ = 16;
+
+841 
+o
+->
+»¶ay
+ = 
+Œue
+;
+
+842 
+o
+->
+»¶ay_wšdow
+ = 
+DEFAULT_SEQ_BACKTRACK
+;
+
+843 
+o
+->
+»¶ay_time
+ = 
+DEFAULT_TIME_BACKTRACK
+;
+
+844 
+o
+->
+u£_iv
+ = 
+Œue
+;
+
+845 
+o
+->
+key_dœeùiÚ
+ = 
+KEY_DIRECTION_BIDIRECTIONAL
+;
+
+846 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+847 
+o
+->
+u£_´ediùiÚ_»si¡ªû
+ = 
+çl£
+;
+
+849 #ifdeà
+ENABLE_SSL
+
+
+850 
+o
+->
+key_m‘hod
+ = 2;
+
+851 
+o
+->
+Žs_timeout
+ = 2;
+
+852 
+o
+->
+»ÃgÙŸ‹_£cÚds
+ = 3600;
+
+853 
+o
+->
+hªdshake_wšdow
+ = 60;
+
+854 
+o
+->
+Œªs™iÚ_wšdow
+ = 3600;
+
+855 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+856 
+o
+->
+x509_u£ºame_f›ld
+ = 
+X509_USERNAME_FIELD_DEFAULT
+;
+
+860 #ifdeà
+ENABLE_PKCS11
+
+
+861 
+o
+->
+pkcs11_pš_ÿche_³riod
+ = -1;
+
+865 #ià
+P2MP_SERVER
+
+
+867 #ifdeà
+WIN32
+
+
+869 
+o
+->
+tmp_dœ
+ = 
+	`wš_g‘_‹mpdœ
+();
+
+872 
+o
+->
+tmp_dœ
+ = 
+	`g‘’v
+("TMPDIR");
+
+873 ifÐ!
+o
+->
+tmp_dœ
+ ) {
+
+874 
+o
+->
+tmp_dœ
+ = "/tmp";
+
+878 
+	}
+}
+
+881 
+	$unš™_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+)
+
+883 ià(
+o
+->
+gc_owÃd
+)
+
+885 
+	`gc_ä“
+ (&
+o
+->
+gc
+);
+
+887 
+	}
+}
+
+889 #iâdeà
+ENABLE_SMALL
+
+
+891 
+	#SHOW_PARM
+(
+Çme
+, 
+v®ue
+, 
+fÜm©
+è
+	`msg
+(
+D_SHOW_PARMS
+, " " #Çm�" = " fÜm©, (v®ue))
+
+	)
+
+892 
+	#SHOW_STR
+(
+v¬
+è
+	`SHOW_PARM
+(v¬, (
+o
+->v¬ ? o->v¬ : "[UNDEF]"), "'%s'")
+
+	)
+
+893 
+	#SHOW_INT
+(
+v¬
+è
+	`SHOW_PARM
+(v¬, 
+o
+->v¬, "%d")
+
+	)
+
+894 
+	#SHOW_UINT
+(
+v¬
+è
+	`SHOW_PARM
+(v¬, 
+o
+->v¬, "%u")
+
+	)
+
+895 
+	#SHOW_UNSIGNED
+(
+v¬
+è
+	`SHOW_PARM
+(v¬, 
+o
+->v¬, "0x%08x")
+
+	)
+
+896 
+	#SHOW_BOOL
+(
+v¬
+è
+	`SHOW_PARM
+(v¬, (
+o
+->v¬ ? "ENABLED" : "DISABLED"), "%s");
+
+	)
+
+901 
+	$£‹nv_cÚÃùiÚ_’Œy
+ (
+’v_£t
+ *
+es
+,
+
+902 cÚ¡ 
+cÚÃùiÚ_’Œy
+ *
+e
+,
+
+903 cÚ¡ 
+i
+)
+
+905 
+	`£‹nv_¡r_i
+ (
+es
+, "´Ùo", 
+	`´Ùo2ascii
+ (
+e
+->
+´Ùo
+, 
+çl£
+), 
+i
+);
+
+906 
+	`£‹nv_¡r_i
+ (
+es
+, "loÿl", 
+e
+->
+loÿl
+, 
+i
+);
+
+907 
+	`£‹nv_št_i
+ (
+es
+, "loÿl_pÜt", 
+e
+->
+loÿl_pÜt
+, 
+i
+);
+
+908 
+	`£‹nv_¡r_i
+ (
+es
+, "»mÙe", 
+e
+->
+»mÙe
+, 
+i
+);
+
+909 
+	`£‹nv_št_i
+ (
+es
+, "»mÙe_pÜt", 
+e
+->
+»mÙe_pÜt
+, 
+i
+);
+
+911 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+912 ià(
+e
+->
+h‰p_´oxy_ÝtiÚs
+)
+
+914 
+	`£‹nv_¡r_i
+ (
+es
+, "h‰p_´oxy_£rv”", 
+e
+->
+h‰p_´oxy_ÝtiÚs
+->
+£rv”
+, 
+i
+);
+
+915 
+	`£‹nv_št_i
+ (
+es
+, "h‰p_´oxy_pÜt", 
+e
+->
+h‰p_´oxy_ÝtiÚs
+->
+pÜt
+, 
+i
+);
+
+918 #ifdeà
+ENABLE_SOCKS
+
+
+919 ià(
+e
+->
+socks_´oxy_£rv”
+)
+
+921 
+	`£‹nv_¡r_i
+ (
+es
+, "socks_´oxy_£rv”", 
+e
+->
+socks_´oxy_£rv”
+, 
+i
+);
+
+922 
+	`£‹nv_št_i
+ (
+es
+, "socks_´oxy_pÜt", 
+e
+->
+socks_´oxy_pÜt
+, 
+i
+);
+
+925 
+	}
+}
+
+928 
+	$£‹nv_£‰šgs
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+930 
+	`£‹nv_¡r
+ (
+es
+, "cÚfig", 
+o
+->
+cÚfig
+);
+
+931 
+	`£‹nv_št
+ (
+es
+, "v”b", 
+o
+->
+v”bos™y
+);
+
+932 
+	`£‹nv_št
+ (
+es
+, "d«mÚ", 
+o
+->
+d«mÚ
+);
+
+933 
+	`£‹nv_št
+ (
+es
+, "d«mÚ_log_»dœeù", 
+o
+->
+log
+);
+
+934 
+	`£‹nv_unsigÃd
+ (
+es
+, "d«mÚ_¡¬t_time", 
+	`time
+(
+NULL
+));
+
+935 
+	`£‹nv_št
+ (
+es
+, "d«mÚ_pid", 
+	`¶©fÜm_g‘pid
+());
+
+937 ià(
+o
+->
+cÚÃùiÚ_li¡
+)
+
+939 
+i
+;
+
+940 
+i
+ = 0; i < 
+o
+->
+cÚÃùiÚ_li¡
+->
+Ën
+; ++i)
+
+941 
+	`£‹nv_cÚÃùiÚ_’Œy
+ (
+es
+, 
+o
+->
+cÚÃùiÚ_li¡
+->
+¬¿y
+[
+i
+], i+1);
+
+944 
+	`£‹nv_cÚÃùiÚ_’Œy
+ (
+es
+, &
+o
+->
+û
+, 1);
+
+945 
+	}
+}
+
+947 
+š_addr_t
+
+
+948 
+	$g‘_�_addr
+ (cÚ¡ *
+�_¡ršg
+, 
+msgËv–
+, 
+boÞ
+ *
+”rÜ
+)
+
+950 
+æags
+ = 
+GETADDR_HOST_ORDER
+;
+
+951 
+boÞ
+ 
+sucûeded
+ = 
+çl£
+;
+
+952 
+š_addr_t
+ 
+»t
+;
+
+954 ià(
+msgËv–
+ & 
+M_FATAL
+)
+
+955 
+æags
+ |ð
+GETADDR_FATAL
+;
+
+957 
+»t
+ = 
+	`g‘addr
+ (
+æags
+, 
+�_¡ršg
+, 0, &
+sucûeded
+, 
+NULL
+);
+
+958 ià(!
+sucûeded
+ && 
+”rÜ
+)
+
+959 *
+”rÜ
+ = 
+Œue
+;
+
+960  
+»t
+;
+
+961 
+	}
+}
+
+970 
+boÞ
+
+
+971 
+	$g‘_�v6_addr
+ÐcÚ¡ * 
+´efix_¡r
+, 
+š6_addr
+ *
+ÃtwÜk
+,
+
+972 * 
+Ãtb™s
+, ** 
+´š�bË_�v6
+, 
+msgËv–
+ )
+
+974 
+rc
+;
+
+975 * 
+£p
+, * 
+’dp
+;
+
+976 
+b™s
+;
+
+977 
+š6_addr
+ 
+t_ÃtwÜk
+;
+
+979 
+£p
+ = 
+	`¡rchr
+Ð
+´efix_¡r
+, '/' );
+
+980 iàÐ
+£p
+ =ð
+NULL
+ )
+
+982 
+b™s
+ = 64;
+
+986 
+b™s
+ = 
+	`¡¹Þ
+Ð
+£p
++1, &
+’dp
+, 10 );
+
+987 iàÐ*
+’dp
+ !ð'\0' || 
+b™s
+ < 0 || bits > 128 )
+
+989 
+	`msg
+ (
+msgËv–
+, "IPv6…»fix '%s': inv®id '/b™s' s³c", 
+´efix_¡r
+);
+
+990  
+çl£
+;
+
+999 iàÐ
+£p
+ !ð
+NULL
+ ) *sep = '\0';
+
+1001 
+rc
+ = 
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+´efix_¡r
+, &
+t_ÃtwÜk
+ );
+
+1003 iàÐ
+rc
+ =ð1 && 
+´š�bË_�v6
+ !ð
+NULL
+ )
+
+1005 *
+´š�bË_�v6
+ = 
+	`¡ršg_®loc
+Ð
+´efix_¡r
+, 
+NULL
+ );
+
+1008 iàÐ
+£p
+ !ð
+NULL
+ ) *sep = '/';
+
+1010 iàÐ
+rc
+ != 1 )
+
+1012 
+	`msg
+ (
+msgËv–
+, "IPv6…»fix '%s': inv®id IPv6‡dd»ss", 
+´efix_¡r
+);
+
+1013  
+çl£
+;
+
+1016 iàÐ
+Ãtb™s
+ !ð
+NULL
+ )
+
+1018 *
+Ãtb™s
+ = 
+b™s
+;
+
+1020 iàÐ
+ÃtwÜk
+ !ð
+NULL
+ )
+
+1022 *
+ÃtwÜk
+ = 
+t_ÃtwÜk
+;
+
+1024  
+Œue
+;
+
+1025 
+	}
+}
+
+1027 
+boÞ
+ 
+	$�v6_addr_§ã_hex¶usb™s
+ÐcÚ¡ * 
+�v6_´efix_¥ec
+ )
+
+1029 
+š6_addr
+ 
+t_addr
+;
+
+1030 
+t_b™s
+;
+
+1032  
+	`g‘_�v6_addr
+Ð
+�v6_´efix_¥ec
+, &
+t_addr
+, &
+t_b™s
+, 
+NULL
+, 
+M_WARN
+ );
+
+1033 
+	}
+}
+
+1036 
+	$¡ršg_sub¡™u‹
+ (cÚ¡ *
+¤c
+, 
+äom
+, 
+to
+, 
+gc_¬’a
+ *
+gc
+)
+
+1038 *
+»t
+ = (*è
+	`gc_m®loc
+ (
+	`¡¾’
+ (
+¤c
+è+ 1, 
+Œue
+, 
+gc
+);
+
+1039 *
+de¡
+ = 
+»t
+;
+
+1040 
+c
+;
+
+1044 
+c
+ = *
+¤c
+++;
+
+1045 ià(
+c
+ =ð
+äom
+)
+
+1046 
+c
+ = 
+to
+;
+
+1047 *
+de¡
+++ = 
+c
+;
+
+1049 
+c
+);
+
+1050  
+»t
+;
+
+1051 
+	}
+}
+
+1053 #ifdeà
+ENABLE_SSL
+
+
+1054 
+ušt8_t
+ *
+
+1055 
+	$·r£_hash_fšg”´št
+(cÚ¡ *
+¡r
+, 
+nby‹s
+, 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+)
+
+1057 
+i
+;
+
+1058 cÚ¡ *
+ý
+ = 
+¡r
+;
+
+1059 
+ušt8_t
+ *
+»t
+ = (ušt8_ˆ*è
+	`gc_m®loc
+ (
+nby‹s
+, 
+Œue
+, 
+gc
+);
+
+1060 
+‹rm
+ = 1;
+
+1061 
+by‹
+;
+
+1062 
+bs
+[3];
+
+1064 
+i
+ = 0; i < 
+nby‹s
+; ++i)
+
+1066 ià(
+	`¡¾’
+(
+ý
+) < 2)
+
+1067 
+	`msg
+ (
+msgËv–
+, "fÜm©ƒ¼Ü iÀhash fšg”´št: %s", 
+¡r
+);
+
+1068 
+bs
+[0] = *
+ý
+++;
+
+1069 
+bs
+[1] = *
+ý
+++;
+
+1070 
+bs
+[2] = 0;
+
+1071 
+by‹
+ = 0;
+
+1072 ià(
+	`ssÿnf
+(
+bs
+, "%x", &
+by‹
+) != 1)
+
+1073 
+	`msg
+ (
+msgËv–
+, "fÜm©ƒ¼Ü iÀhash fšg”´šˆhex by‹: %s", 
+¡r
+);
+
+1074 
+»t
+[
+i
+] = (
+ušt8_t
+)
+by‹
+;
+
+1075 
+‹rm
+ = *
+ý
+++;
+
+1076 ià(
+‹rm
+ != ':' &&�erm != 0)
+
+1077 
+	`msg
+ (
+msgËv–
+, "fÜm©ƒ¼Ü iÀhash fšg”´šˆd–im™”: %s", 
+¡r
+);
+
+1078 ià(
+‹rm
+ == 0)
+
+1081 ià(
+‹rm
+ !ð0 || 
+i
+ !ð
+nby‹s
+-1)
+
+1082 
+	`msg
+ (
+msgËv–
+, "hash fšg”´šˆi difã»Á†’gth�hªƒx³ùed (%d by‹s): %s", 
+nby‹s
+, 
+¡r
+);
+
+1083  
+»t
+;
+
+1084 
+	}
+}
+
+1087 #ifdeà
+WIN32
+
+
+1089 #iâdeà
+ENABLE_SMALL
+
+
+1092 
+	$show_dhý_ÝtiÚ_addrs
+ (cÚ¡ *
+Çme
+, cÚ¡ 
+š_addr_t
+ *
+¬¿y
+, 
+Ën
+)
+
+1094 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1095 
+i
+;
+
+1096 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+1098 
+	`msg
+ (
+D_SHOW_PARMS
+, " %s[%d] = %s",
+
+1099 
+Çme
+,
+
+1100 
+i
+,
+
+1101 
+	`´št_š_addr_t
+ (
+¬¿y
+[
+i
+], 0, &
+gc
+));
+
+1103 
+	`gc_ä“
+ (&
+gc
+);
+
+1104 
+	}
+}
+
+1107 
+	$show_tuÁ­_ÝtiÚs
+ (cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+o
+)
+
+1109 
+	`SHOW_BOOL
+ (
+�_wš32_defšed
+);
+
+1110 
+	`SHOW_INT
+ (
+�_wš32_ty³
+);
+
+1111 
+	`SHOW_INT
+ (
+dhý_masq_off£t
+);
+
+1112 
+	`SHOW_INT
+ (
+dhý_Ëa£_time
+);
+
+1113 
+	`SHOW_INT
+ (
+�p_¦“p
+);
+
+1114 
+	`SHOW_BOOL
+ (
+dhý_ÝtiÚs
+);
+
+1115 
+	`SHOW_BOOL
+ (
+dhý_»Ãw
+);
+
+1116 
+	`SHOW_BOOL
+ (
+dhý_´e_»Ëa£
+);
+
+1117 
+	`SHOW_BOOL
+ (
+dhý_»Ëa£
+);
+
+1118 
+	`SHOW_STR
+ (
+domaš
+);
+
+1119 
+	`SHOW_STR
+ (
+Ãtbios_scÝe
+);
+
+1120 
+	`SHOW_INT
+ (
+Ãtbios_node_ty³
+);
+
+1121 
+	`SHOW_BOOL
+ (
+di§bË_nbt
+);
+
+1123 
+	`show_dhý_ÝtiÚ_addrs
+ ("DNS", 
+o
+->
+dns
+, o->
+dns_Ën
+);
+
+1124 
+	`show_dhý_ÝtiÚ_addrs
+ ("WINS", 
+o
+->
+wšs
+, o->
+wšs_Ën
+);
+
+1125 
+	`show_dhý_ÝtiÚ_addrs
+ ("NTP", 
+o
+->
+Áp
+, o->
+Áp_Ën
+);
+
+1126 
+	`show_dhý_ÝtiÚ_addrs
+ ("NBDD", 
+o
+->
+nbdd
+, o->
+nbdd_Ën
+);
+
+1127 
+	}
+}
+
+1132 
+	$dhý_ÝtiÚ_add»ss_·r£
+ (cÚ¡ *
+Çme
+, cÚ¡ *
+·rm
+, 
+š_addr_t
+ *
+¬¿y
+, *
+Ën
+, 
+msgËv–
+)
+
+1134 ià(*
+Ën
+ >ð
+N_DHCP_ADDR
+)
+
+1136 
+	`msg
+ (
+msgËv–
+, "--dhcp-option %s: maximum of %d %s servers can be specified",
+
+1137 
+Çme
+,
+
+1138 
+N_DHCP_ADDR
+,
+
+1139 
+Çme
+);
+
+1143 ià(
+	`�_addr_dÙ‹d_quad_§ã
+ (
+·rm
+))
+
+1145 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+1146 cÚ¡ 
+š_addr_t
+ 
+addr
+ = 
+	`g‘_�_addr
+ (
+·rm
+, 
+msgËv–
+, &
+”rÜ
+);
+
+1147 ià(!
+”rÜ
+)
+
+1148 
+¬¿y
+[(*
+Ën
+)++] = 
+addr
+;
+
+1152 
+	`msg
+ (
+msgËv–
+, "dhý-ÝtiÚ…¬am‘” % '%s' mu¡ b�ª IP‡dd»ss", 
+Çme
+, 
+·rm
+);
+
+1155 
+	}
+}
+
+1159 #ià
+P2MP
+
+
+1161 #iâdeà
+ENABLE_SMALL
+
+
+1164 
+	$show_p2mp_·rms
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+1166 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1168 #ià
+P2MP_SERVER
+
+
+1169 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_ÃtwÜk = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_ÃtwÜk
+, 0, &
+gc
+));
+
+1170 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_Ãtmask = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_Ãtmask
+, 0, &
+gc
+));
+
+1171 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_ÃtwÜk_�v6 = %s", 
+	`´št_š6_addr
+ (
+o
+->
+£rv”_ÃtwÜk_�v6
+, 0, &
+gc
+) );
+
+1172 
+	`SHOW_INT
+ (
+£rv”_Ãtb™s_�v6
+);
+
+1173 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_bridge_� = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_bridge_�
+, 0, &
+gc
+));
+
+1174 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_bridge_Ãtmask = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_bridge_Ãtmask
+, 0, &
+gc
+));
+
+1175 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_bridge_poÞ_¡¬ˆð%s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_bridge_poÞ_¡¬t
+, 0, &
+gc
+));
+
+1176 
+	`msg
+ (
+D_SHOW_PARMS
+, " s”v”_bridge_poÞ_’d = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+£rv”_bridge_poÞ_’d
+, 0, &
+gc
+));
+
+1177 ià(
+o
+->
+push_li¡
+.
+h—d
+)
+
+1179 cÚ¡ 
+push_’Œy
+ *
+e
+ = 
+o
+->
+push_li¡
+.
+h—d
+;
+
+1180 
+e
+)
+
+1182 ià(
+e
+->
+’abË
+)
+
+1183 
+	`msg
+ (
+D_SHOW_PARMS
+, "…ush_’Œy = '%s'", 
+e
+->
+ÝtiÚ
+);
+
+1184 
+e
+ =ƒ->
+Ãxt
+;
+
+1187 
+	`SHOW_BOOL
+ (
+ifcÚfig_poÞ_defšed
+);
+
+1188 
+	`msg
+ (
+D_SHOW_PARMS
+, " ifcÚfig_poÞ_¡¬ˆð%s", 
+	`´št_š_addr_t
+ (
+o
+->
+ifcÚfig_poÞ_¡¬t
+, 0, &
+gc
+));
+
+1189 
+	`msg
+ (
+D_SHOW_PARMS
+, " ifcÚfig_poÞ_’d = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+ifcÚfig_poÞ_’d
+, 0, &
+gc
+));
+
+1190 
+	`msg
+ (
+D_SHOW_PARMS
+, " ifcÚfig_poÞ_Ãtmask = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+ifcÚfig_poÞ_Ãtmask
+, 0, &
+gc
+));
+
+1191 
+	`SHOW_STR
+ (
+ifcÚfig_poÞ_³rsi¡_fž’ame
+);
+
+1192 
+	`SHOW_INT
+ (
+ifcÚfig_poÞ_³rsi¡_»äesh_äeq
+);
+
+1193 
+	`SHOW_BOOL
+ (
+ifcÚfig_�v6_poÞ_defšed
+);
+
+1194 
+	`msg
+ (
+D_SHOW_PARMS
+, " ifcÚfig_�v6_poÞ_ba£ = %s", 
+	`´št_š6_addr
+ (
+o
+->
+ifcÚfig_�v6_poÞ_ba£
+, 0, &
+gc
+));
+
+1195 
+	`SHOW_INT
+ (
+ifcÚfig_�v6_poÞ_Ãtb™s
+);
+
+1196 
+	`SHOW_INT
+ (
+n_bÿ¡_buf
+);
+
+1197 
+	`SHOW_INT
+ (
+tý_queue_lim™
+);
+
+1198 
+	`SHOW_INT
+ (
+»®_hash_size
+);
+
+1199 
+	`SHOW_INT
+ (
+vœtu®_hash_size
+);
+
+1200 
+	`SHOW_STR
+ (
+þ›Á_cÚÃù_sü�t
+);
+
+1201 
+	`SHOW_STR
+ (
+Ë¬n_add»ss_sü�t
+);
+
+1202 
+	`SHOW_STR
+ (
+þ›Á_discÚÃù_sü�t
+);
+
+1203 
+	`SHOW_STR
+ (
+þ›Á_cÚfig_dœ
+);
+
+1204 
+	`SHOW_BOOL
+ (
+ccd_exþusive
+);
+
+1205 
+	`SHOW_STR
+ (
+tmp_dœ
+);
+
+1206 
+	`SHOW_BOOL
+ (
+push_ifcÚfig_defšed
+);
+
+1207 
+	`msg
+ (
+D_SHOW_PARMS
+, "…ush_ifcÚfig_loÿÈð%s", 
+	`´št_š_addr_t
+ (
+o
+->
+push_ifcÚfig_loÿl
+, 0, &
+gc
+));
+
+1208 
+	`msg
+ (
+D_SHOW_PARMS
+, "…ush_ifcÚfig_»mÙe_Ãtmask = %s", 
+	`´št_š_addr_t
+ (
+o
+->
+push_ifcÚfig_»mÙe_Ãtmask
+, 0, &
+gc
+));
+
+1209 
+	`SHOW_BOOL
+ (
+push_ifcÚfig_�v6_defšed
+);
+
+1210 
+	`msg
+ (
+D_SHOW_PARMS
+, "…ush_ifcÚfig_�v6_loÿÈð%s/%d", 
+	`´št_š6_addr
+ (
+o
+->
+push_ifcÚfig_�v6_loÿl
+, 0, &
+gc
+), o->
+push_ifcÚfig_�v6_Ãtb™s
+ );
+
+1211 
+	`msg
+ (
+D_SHOW_PARMS
+, "…ush_ifcÚfig_�v6_»mÙ�ð%s", 
+	`´št_š6_addr
+ (
+o
+->
+push_ifcÚfig_�v6_»mÙe
+, 0, &
+gc
+));
+
+1212 
+	`SHOW_BOOL
+ (
+’abË_c2c
+);
+
+1213 
+	`SHOW_BOOL
+ (
+du¶iÿ‹_ú
+);
+
+1214 
+	`SHOW_INT
+ (
+cf_max
+);
+
+1215 
+	`SHOW_INT
+ (
+cf_³r
+);
+
+1216 
+	`SHOW_INT
+ (
+max_þ›Ás
+);
+
+1217 
+	`SHOW_INT
+ (
+max_rou‹s_³r_þ›Á
+);
+
+1218 
+	`SHOW_STR
+ (
+auth_u£r_·ss_v”ify_sü�t
+);
+
+1219 
+	`SHOW_BOOL
+ (
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+);
+
+1220 #ià
+PORT_SHARE
+
+
+1221 
+	`SHOW_STR
+ (
+pÜt_sh¬e_ho¡
+);
+
+1222 
+	`SHOW_INT
+ (
+pÜt_sh¬e_pÜt
+);
+
+1226 
+	`SHOW_BOOL
+ (
+þ›Á
+);
+
+1227 
+	`SHOW_BOOL
+ (
+puÎ
+);
+
+1228 
+	`SHOW_STR
+ (
+auth_u£r_·ss_fže
+);
+
+1230 
+	`gc_ä“
+ (&
+gc
+);
+
+1231 
+	}
+}
+
+1235 #ià
+P2MP_SERVER
+
+
+1238 
+	$ÝtiÚ_œou‹
+ (
+ÝtiÚs
+ *
+o
+,
+
+1239 cÚ¡ *
+ÃtwÜk_¡r
+,
+
+1240 cÚ¡ *
+Ãtmask_¡r
+,
+
+1241 
+msgËv–
+)
+
+1243 
+œou‹
+ *
+œ
+;
+
+1245 
+	`ALLOC_OBJ_GC
+ (
+œ
+, 
+œou‹
+, &
+o
+->
+gc
+);
+
+1246 
+œ
+->
+ÃtwÜk
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+ÃtwÜk_¡r
+, 0, 
+NULL
+, NULL);
+
+1247 
+œ
+->
+Ãtb™s
+ = -1;
+
+1249 ià(
+Ãtmask_¡r
+)
+
+1251 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+Ãtmask_¡r
+, 0, 
+NULL
+, NULL);
+
+1252 ià(!
+	`Ãtmask_to_Ãtb™s
+ (
+œ
+->
+ÃtwÜk
+, 
+Ãtmask
+, &œ->
+Ãtb™s
+))
+
+1254 
+	`msg
+ (
+msgËv–
+, "in --iroute %s %s : Bad‚etwork/subnet specification",
+
+1255 
+ÃtwÜk_¡r
+,
+
+1256 
+Ãtmask_¡r
+);
+
+1261 
+œ
+->
+Ãxt
+ = 
+o
+->
+œou‹s
+;
+
+1262 
+o
+->
+œou‹s
+ = 
+œ
+;
+
+1263 
+	}
+}
+
+1266 
+	$ÝtiÚ_œou‹_�v6
+ (
+ÝtiÚs
+ *
+o
+,
+
+1267 cÚ¡ *
+´efix_¡r
+,
+
+1268 
+msgËv–
+)
+
+1270 
+œou‹_�v6
+ *
+œ
+;
+
+1272 
+	`ALLOC_OBJ_GC
+ (
+œ
+, 
+œou‹_�v6
+, &
+o
+->
+gc
+);
+
+1274 iàÐ!
+	`g‘_�v6_addr
+ (
+´efix_¡r
+, &
+œ
+->
+ÃtwÜk
+, &œ->
+Ãtb™s
+, 
+NULL
+, 
+msgËv–
+ ))
+
+1276 
+	`msg
+ (
+msgËv–
+, "in --iroute-ipv6 %s: Bad IPv6…refix specification",
+
+1277 
+´efix_¡r
+);
+
+1281 
+œ
+->
+Ãxt
+ = 
+o
+->
+œou‹s_�v6
+;
+
+1282 
+o
+->
+œou‹s_�v6
+ = 
+œ
+;
+
+1283 
+	}
+}
+
+1287 #ià
+defšed
+(
+ENABLE_HTTP_PROXY
+è&& !defšed(
+ENABLE_SMALL
+)
+
+1289 
+	$show_h‰p_´oxy_ÝtiÚs
+ (cÚ¡ 
+h‰p_´oxy_ÝtiÚs
+ *
+o
+)
+
+1291 
+	`msg
+ (
+D_SHOW_PARMS
+, "BEGIN http_proxy");
+
+1292 
+	`SHOW_STR
+ (
+£rv”
+);
+
+1293 
+	`SHOW_INT
+ (
+pÜt
+);
+
+1294 
+	`SHOW_STR
+ (
+auth_m‘hod_¡ršg
+);
+
+1295 
+	`SHOW_STR
+ (
+auth_fže
+);
+
+1296 
+	`SHOW_BOOL
+ (
+»Œy
+);
+
+1297 
+	`SHOW_INT
+ (
+timeout
+);
+
+1298 
+	`SHOW_STR
+ (
+h‰p_v”siÚ
+);
+
+1299 
+	`SHOW_STR
+ (
+u£r_ag’t
+);
+
+1300 
+	`msg
+ (
+D_SHOW_PARMS
+, "END http_proxy");
+
+1301 
+	}
+}
+
+1305 
+	$ÝtiÚs_d‘ach
+ (
+ÝtiÚs
+ *
+o
+)
+
+1307 
+	`gc_d‘ach
+ (&
+o
+->
+gc
+);
+
+1308 
+o
+->
+rou‹s
+ = 
+NULL
+;
+
+1309 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+1310 
+o
+->
+þ›Á_Çt
+ = 
+NULL
+;
+
+1312 #ià
+P2MP_SERVER
+
+
+1313 
+	`þÚe_push_li¡
+(
+o
+);
+
+1315 
+	}
+}
+
+1318 
+	$rÞ_check_®loc
+ (
+ÝtiÚs
+ *options)
+
+1320 ià(!
+ÝtiÚs
+->
+rou‹s
+)
+
+1321 
+ÝtiÚs
+->
+rou‹s
+ = 
+	`Ãw_rou‹_ÝtiÚ_li¡
+ (ÝtiÚs->
+max_rou‹s
+, &ÝtiÚs->
+gc
+);
+
+1322 
+	}
+}
+
+1325 
+	$rÞ6_check_®loc
+ (
+ÝtiÚs
+ *options)
+
+1327 ià(!
+ÝtiÚs
+->
+rou‹s_�v6
+)
+
+1328 
+ÝtiÚs
+->
+rou‹s_�v6
+ = 
+	`Ãw_rou‹_�v6_ÝtiÚ_li¡
+ (ÝtiÚs->
+max_rou‹s
+, &ÝtiÚs->
+gc
+);
+
+1329 
+	}
+}
+
+1331 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+1333 
+	$úÞ_check_®loc
+ (
+ÝtiÚs
+ *options)
+
+1335 ià(!
+ÝtiÚs
+->
+þ›Á_Çt
+)
+
+1336 
+ÝtiÚs
+->
+þ›Á_Çt
+ = 
+	`Ãw_þ›Á_Çt_li¡
+ (&ÝtiÚs->
+gc
+);
+
+1337 
+	}
+}
+
+1340 #iâdeà
+ENABLE_SMALL
+
+
+1342 
+	$show_cÚÃùiÚ_’Œy
+ (cÚ¡ 
+cÚÃùiÚ_’Œy
+ *
+o
+)
+
+1344 
+	`msg
+ (
+D_SHOW_PARMS
+, "…rÙØð%s", 
+	`´Ùo2ascii
+ (
+o
+->
+´Ùo
+, 
+çl£
+));
+
+1345 
+	`SHOW_STR
+ (
+loÿl
+);
+
+1346 
+	`SHOW_INT
+ (
+loÿl_pÜt
+);
+
+1347 
+	`SHOW_STR
+ (
+»mÙe
+);
+
+1348 
+	`SHOW_INT
+ (
+»mÙe_pÜt
+);
+
+1349 
+	`SHOW_BOOL
+ (
+»mÙe_æßt
+);
+
+1350 
+	`SHOW_BOOL
+ (
+bšd_defšed
+);
+
+1351 
+	`SHOW_BOOL
+ (
+bšd_loÿl
+);
+
+1352 
+	`SHOW_INT
+ (
+cÚÃù_»Œy_£cÚds
+);
+
+1353 
+	`SHOW_INT
+ (
+cÚÃù_timeout
+);
+
+1354 
+	`SHOW_INT
+ (
+cÚÃù_»Œy_max
+);
+
+1356 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1357 ià(
+o
+->
+h‰p_´oxy_ÝtiÚs
+)
+
+1358 
+	`show_h‰p_´oxy_ÝtiÚs
+ (
+o
+->
+h‰p_´oxy_ÝtiÚs
+);
+
+1360 #ifdeà
+ENABLE_SOCKS
+
+
+1361 
+	`SHOW_STR
+ (
+socks_´oxy_£rv”
+);
+
+1362 
+	`SHOW_INT
+ (
+socks_´oxy_pÜt
+);
+
+1363 
+	`SHOW_BOOL
+ (
+socks_´oxy_»Œy
+);
+
+1365 
+	`SHOW_INT
+ (
+tun_mtu
+);
+
+1366 
+	`SHOW_BOOL
+ (
+tun_mtu_defšed
+);
+
+1367 
+	`SHOW_INT
+ (
+lšk_mtu
+);
+
+1368 
+	`SHOW_BOOL
+ (
+lšk_mtu_defšed
+);
+
+1369 
+	`SHOW_INT
+ (
+tun_mtu_exŒa
+);
+
+1370 
+	`SHOW_BOOL
+ (
+tun_mtu_exŒa_defšed
+);
+
+1372 
+	`SHOW_INT
+ (
+mtu_discov”_ty³
+);
+
+1374 #ifdeà
+ENABLE_FRAGMENT
+
+
+1375 
+	`SHOW_INT
+ (
+äagm’t
+);
+
+1377 
+	`SHOW_INT
+ (
+mssfix
+);
+
+1379 #ifdeà
+ENABLE_OCC
+
+
+1380 
+	`SHOW_INT
+ (
+ex¶ic™_ex™_nÙifiÿtiÚ
+);
+
+1382 
+	}
+}
+
+1386 
+	$show_cÚÃùiÚ_’Œ›s
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+1388 
+	`msg
+ (
+D_SHOW_PARMS
+, "Connection…rofiles [default]:");
+
+1389 
+	`show_cÚÃùiÚ_’Œy
+ (&
+o
+->
+û
+);
+
+1390 ià(
+o
+->
+cÚÃùiÚ_li¡
+)
+
+1392 cÚ¡ 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+o
+->connection_list;
+
+1393 
+i
+;
+
+1394 
+i
+ = 0; i < 
+l
+->
+Ën
+; ++i)
+
+1396 
+	`msg
+ (
+D_SHOW_PARMS
+, "CÚÃùiÚ…rofže [%d]:", 
+i
+);
+
+1397 
+	`show_cÚÃùiÚ_’Œy
+ (
+l
+->
+¬¿y
+[
+i
+]);
+
+1400 
+	`msg
+ (
+D_SHOW_PARMS
+, "Connection…rofiles END");
+
+1401 
+	}
+}
+
+1406 
+	$show_£‰šgs
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+1408 #iâdeà
+ENABLE_SMALL
+
+
+1409 
+	`msg
+ (
+D_SHOW_PARMS
+, "Current Parameter Settings:");
+
+1411 
+	`SHOW_STR
+ (
+cÚfig
+);
+
+1413 
+	`SHOW_INT
+ (
+mode
+);
+
+1415 #ifdeà
+ENABLE_FEATURE_TUN_PERSIST
+
+
+1416 
+	`SHOW_BOOL
+ (
+³rsi¡_cÚfig
+);
+
+1417 
+	`SHOW_INT
+ (
+³rsi¡_mode
+);
+
+1420 #ifdeà
+ENABLE_CRYPTO
+
+
+1421 
+	`SHOW_BOOL
+ (
+show_c�h”s
+);
+
+1422 
+	`SHOW_BOOL
+ (
+show_dige¡s
+);
+
+1423 
+	`SHOW_BOOL
+ (
+show_’gšes
+);
+
+1424 
+	`SHOW_BOOL
+ (
+g’key
+);
+
+1425 #ifdeà
+ENABLE_SSL
+
+
+1426 
+	`SHOW_STR
+ (
+key_·ss_fže
+);
+
+1427 
+	`SHOW_BOOL
+ (
+show_Žs_c�h”s
+);
+
+1431 
+	`show_cÚÃùiÚ_’Œ›s
+ (
+o
+);
+
+1433 
+	`SHOW_BOOL
+ (
+»mÙe_¿ndom
+);
+
+1435 
+	`SHOW_STR
+ (
+�chªge
+);
+
+1436 
+	`SHOW_STR
+ (
+dev
+);
+
+1437 
+	`SHOW_STR
+ (
+dev_ty³
+);
+
+1438 
+	`SHOW_STR
+ (
+dev_node
+);
+
+1439 
+	`SHOW_STR
+ (
+Îaddr
+);
+
+1440 
+	`SHOW_INT
+ (
+tÝÞogy
+);
+
+1441 
+	`SHOW_BOOL
+ (
+tun_�v6
+);
+
+1442 
+	`SHOW_STR
+ (
+ifcÚfig_loÿl
+);
+
+1443 
+	`SHOW_STR
+ (
+ifcÚfig_»mÙe_Ãtmask
+);
+
+1444 
+	`SHOW_BOOL
+ (
+ifcÚfig_nÛxec
+);
+
+1445 
+	`SHOW_BOOL
+ (
+ifcÚfig_now¬n
+);
+
+1446 
+	`SHOW_STR
+ (
+ifcÚfig_�v6_loÿl
+);
+
+1447 
+	`SHOW_INT
+ (
+ifcÚfig_�v6_Ãtb™s
+);
+
+1448 
+	`SHOW_STR
+ (
+ifcÚfig_�v6_»mÙe
+);
+
+1450 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+1451 
+	`SHOW_INT
+ (
+sh­”
+);
+
+1453 #ifdeà
+ENABLE_OCC
+
+
+1454 
+	`SHOW_INT
+ (
+mtu_‹¡
+);
+
+1457 
+	`SHOW_BOOL
+ (
+mlock
+);
+
+1459 
+	`SHOW_INT
+ (
+k“·live_pšg
+);
+
+1460 
+	`SHOW_INT
+ (
+k“·live_timeout
+);
+
+1461 
+	`SHOW_INT
+ (
+šaùiv™y_timeout
+);
+
+1462 
+	`SHOW_INT
+ (
+pšg_£nd_timeout
+);
+
+1463 
+	`SHOW_INT
+ (
+pšg_»c_timeout
+);
+
+1464 
+	`SHOW_INT
+ (
+pšg_»c_timeout_aùiÚ
+);
+
+1465 
+	`SHOW_BOOL
+ (
+pšg_tim”_»mÙe
+);
+
+1466 
+	`SHOW_INT
+ (
+»m­_sigu¤1
+);
+
+1467 
+	`SHOW_BOOL
+ (
+³rsi¡_tun
+);
+
+1468 
+	`SHOW_BOOL
+ (
+³rsi¡_loÿl_�
+);
+
+1469 
+	`SHOW_BOOL
+ (
+³rsi¡_»mÙe_�
+);
+
+1470 
+	`SHOW_BOOL
+ (
+³rsi¡_key
+);
+
+1472 #ià
+PASSTOS_CAPABILITY
+
+
+1473 
+	`SHOW_BOOL
+ (
+·s¡os
+);
+
+1476 
+	`SHOW_INT
+ (
+»sÞve_»Œy_£cÚds
+);
+
+1478 
+	`SHOW_STR
+ (
+u£ºame
+);
+
+1479 
+	`SHOW_STR
+ (
+grou²ame
+);
+
+1480 
+	`SHOW_STR
+ (
+chroÙ_dœ
+);
+
+1481 
+	`SHOW_STR
+ (
+cd_dœ
+);
+
+1482 #ifdeà
+ENABLE_SELINUX
+
+
+1483 
+	`SHOW_STR
+ (
+£lšux_cÚ‹xt
+);
+
+1485 
+	`SHOW_STR
+ (
+wr™•id
+);
+
+1486 
+	`SHOW_STR
+ (
+up_sü�t
+);
+
+1487 
+	`SHOW_STR
+ (
+down_sü�t
+);
+
+1488 
+	`SHOW_BOOL
+ (
+down_´e
+);
+
+1489 
+	`SHOW_BOOL
+ (
+up_»¡¬t
+);
+
+1490 
+	`SHOW_BOOL
+ (
+up_d–ay
+);
+
+1491 
+	`SHOW_BOOL
+ (
+d«mÚ
+);
+
+1492 
+	`SHOW_INT
+ (
+š‘d
+);
+
+1493 
+	`SHOW_BOOL
+ (
+log
+);
+
+1494 
+	`SHOW_BOOL
+ (
+suµ»ss_time¡amps
+);
+
+1495 
+	`SHOW_INT
+ (
+niû
+);
+
+1496 
+	`SHOW_INT
+ (
+v”bos™y
+);
+
+1497 
+	`SHOW_INT
+ (
+mu‹
+);
+
+1498 #ifdeà
+ENABLE_DEBUG
+
+
+1499 
+	`SHOW_INT
+ (
+g»mlš
+);
+
+1501 
+	`SHOW_STR
+ (
+¡©us_fže
+);
+
+1502 
+	`SHOW_INT
+ (
+¡©us_fže_v”siÚ
+);
+
+1503 
+	`SHOW_INT
+ (
+¡©us_fže_upd©e_äeq
+);
+
+1505 #ifdeà
+ENABLE_OCC
+
+
+1506 
+	`SHOW_BOOL
+ (
+occ
+);
+
+1508 
+	`SHOW_INT
+ (
+rcvbuf
+);
+
+1509 
+	`SHOW_INT
+ (
+¢dbuf
+);
+
+1510 #ià
+	`defšed
+(
+TARGET_LINUX
+è&& 
+HAVE_DECL_SO_MARK
+
+
+1511 
+	`SHOW_INT
+ (
+m¬k
+);
+
+1513 
+	`SHOW_INT
+ (
+sockæags
+);
+
+1515 
+	`SHOW_BOOL
+ (
+ç¡_io
+);
+
+1517 #ifdeà
+ENABLE_LZO
+
+
+1518 
+	`SHOW_INT
+ (
+lzo
+);
+
+1521 
+	`SHOW_STR
+ (
+rou‹_sü�t
+);
+
+1522 
+	`SHOW_STR
+ (
+rou‹_deçuÉ_g©eway
+);
+
+1523 
+	`SHOW_INT
+ (
+rou‹_deçuÉ_m‘ric
+);
+
+1524 
+	`SHOW_BOOL
+ (
+rou‹_nÛxec
+);
+
+1525 
+	`SHOW_INT
+ (
+rou‹_d–ay
+);
+
+1526 
+	`SHOW_INT
+ (
+rou‹_d–ay_wšdow
+);
+
+1527 
+	`SHOW_BOOL
+ (
+rou‹_d–ay_defšed
+);
+
+1528 
+	`SHOW_BOOL
+ (
+rou‹_nÝuÎ
+);
+
+1529 
+	`SHOW_BOOL
+ (
+rou‹_g©eway_vŸ_dhý
+);
+
+1530 
+	`SHOW_INT
+ (
+max_rou‹s
+);
+
+1531 
+	`SHOW_BOOL
+ (
+®low_puÎ_fqdn
+);
+
+1532 ià(
+o
+->
+rou‹s
+)
+
+1533 
+	`´št_rou‹_ÝtiÚs
+ (
+o
+->
+rou‹s
+, 
+D_SHOW_PARMS
+);
+
+1535 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+1536 ià(
+o
+->
+þ›Á_Çt
+)
+
+1537 
+	`´št_þ›Á_Çt_li¡
+(
+o
+->
+þ›Á_Çt
+, 
+D_SHOW_PARMS
+);
+
+1540 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1541 
+	`SHOW_STR
+ (
+mªagem’t_addr
+);
+
+1542 
+	`SHOW_INT
+ (
+mªagem’t_pÜt
+);
+
+1543 
+	`SHOW_STR
+ (
+mªagem’t_u£r_·ss
+);
+
+1544 
+	`SHOW_INT
+ (
+mªagem’t_log_hi¡Üy_ÿche
+);
+
+1545 
+	`SHOW_INT
+ (
+mªagem’t_echo_bufãr_size
+);
+
+1546 
+	`SHOW_STR
+ (
+mªagem’t_wr™e_³”_šfo_fže
+);
+
+1547 
+	`SHOW_STR
+ (
+mªagem’t_þ›Á_u£r
+);
+
+1548 
+	`SHOW_STR
+ (
+mªagem’t_þ›Á_group
+);
+
+1549 
+	`SHOW_INT
+ (
+mªagem’t_æags
+);
+
+1551 #ifdeà
+ENABLE_PLUGIN
+
+
+1552 ià(
+o
+->
+¶ugš_li¡
+)
+
+1553 
+	`¶ugš_ÝtiÚ_li¡_´št
+ (
+o
+->
+¶ugš_li¡
+, 
+D_SHOW_PARMS
+);
+
+1556 #ifdeà
+ENABLE_CRYPTO
+
+
+1557 
+	`SHOW_STR
+ (
+sh¬ed_£ü‘_fže
+);
+
+1558 
+	`SHOW_INT
+ (
+key_dœeùiÚ
+);
+
+1559 
+	`SHOW_BOOL
+ (
+c�h”Çme_defšed
+);
+
+1560 
+	`SHOW_STR
+ (
+c�h”Çme
+);
+
+1561 
+	`SHOW_BOOL
+ (
+authÇme_defšed
+);
+
+1562 
+	`SHOW_STR
+ (
+authÇme
+);
+
+1563 
+	`SHOW_STR
+ (
+´ng_hash
+);
+
+1564 
+	`SHOW_INT
+ (
+´ng_nÚû_£ü‘_Ën
+);
+
+1565 
+	`SHOW_INT
+ (
+keysize
+);
+
+1566 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+1567 
+	`SHOW_BOOL
+ (
+’gše
+);
+
+1569 
+	`SHOW_BOOL
+ (
+»¶ay
+);
+
+1570 
+	`SHOW_BOOL
+ (
+mu‹_»¶ay_w¬nšgs
+);
+
+1571 
+	`SHOW_INT
+ (
+»¶ay_wšdow
+);
+
+1572 
+	`SHOW_INT
+ (
+»¶ay_time
+);
+
+1573 
+	`SHOW_STR
+ (
+·ck‘_id_fže
+);
+
+1574 
+	`SHOW_BOOL
+ (
+u£_iv
+);
+
+1575 
+	`SHOW_BOOL
+ (
+‹¡_üy±o
+);
+
+1576 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+1577 
+	`SHOW_BOOL
+ (
+u£_´ediùiÚ_»si¡ªû
+);
+
+1580 #ifdeà
+ENABLE_SSL
+
+
+1581 
+	`SHOW_BOOL
+ (
+Žs_£rv”
+);
+
+1582 
+	`SHOW_BOOL
+ (
+Žs_þ›Á
+);
+
+1583 
+	`SHOW_INT
+ (
+key_m‘hod
+);
+
+1584 
+	`SHOW_STR
+ (
+ÿ_fže
+);
+
+1585 
+	`SHOW_STR
+ (
+ÿ_·th
+);
+
+1586 
+	`SHOW_STR
+ (
+dh_fže
+);
+
+1587 
+	`SHOW_STR
+ (
+û¹_fže
+);
+
+1589 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+1590 if((
+o
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+))
+
+1591 
+	`SHOW_PARM
+ ("priv_key_file","EXTERNAL_PRIVATE_KEY","%s");
+
+1594 
+	`SHOW_STR
+ (
+´iv_key_fže
+);
+
+1595 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+1596 
+	`SHOW_STR
+ (
+pkcs12_fže
+);
+
+1598 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+1599 
+	`SHOW_STR
+ (
+üy±ßpi_û¹
+);
+
+1601 
+	`SHOW_STR
+ (
+c�h”_li¡
+);
+
+1602 
+	`SHOW_STR
+ (
+Žs_v”ify
+);
+
+1603 
+	`SHOW_STR
+ (
+Žs_expÜt_û¹
+);
+
+1604 
+	`SHOW_INT
+ (
+v”ify_x509_ty³
+);
+
+1605 
+	`SHOW_STR
+ (
+v”ify_x509_Çme
+);
+
+1606 
+	`SHOW_STR
+ (
+ül_fže
+);
+
+1607 
+	`SHOW_INT
+ (
+ns_û¹_ty³
+);
+
+1609 
+i
+;
+
+1610 
+i
+=0;i<
+MAX_PARMS
+;i++)
+
+1611 
+	`SHOW_INT
+ (
+»mÙe_û¹_ku
+[
+i
+]);
+
+1613 
+	`SHOW_STR
+ (
+»mÙe_û¹_eku
+);
+
+1614 
+	`SHOW_INT
+ (
+s¦_æags
+);
+
+1616 
+	`SHOW_INT
+ (
+Žs_timeout
+);
+
+1618 
+	`SHOW_INT
+ (
+»ÃgÙŸ‹_by‹s
+);
+
+1619 
+	`SHOW_INT
+ (
+»ÃgÙŸ‹_·ck‘s
+);
+
+1620 
+	`SHOW_INT
+ (
+»ÃgÙŸ‹_£cÚds
+);
+
+1622 
+	`SHOW_INT
+ (
+hªdshake_wšdow
+);
+
+1623 
+	`SHOW_INT
+ (
+Œªs™iÚ_wšdow
+);
+
+1625 
+	`SHOW_BOOL
+ (
+sšgË_£ssiÚ
+);
+
+1626 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+1627 
+	`SHOW_BOOL
+ (
+push_³”_šfo
+);
+
+1629 
+	`SHOW_BOOL
+ (
+Žs_ex™
+);
+
+1631 
+	`SHOW_STR
+ (
+Žs_auth_fže
+);
+
+1635 #ifdeà
+ENABLE_PKCS11
+
+
+1637 
+i
+;
+
+1638 
+i
+=0;i<
+MAX_PARMS
+ && 
+o
+->
+pkcs11_´ovid”s
+[i] !ð
+NULL
+;i++)
+
+1639 
+	`SHOW_PARM
+ (
+pkcs11_´ovid”s
+, 
+o
+->pkcs11_´ovid”s[
+i
+], "%s");
+
+1642 
+i
+;
+
+1643 
+i
+=0;i<
+MAX_PARMS
+;i++)
+
+1644 
+	`SHOW_PARM
+ (
+pkcs11_´Ùeùed_auth’tiÿtiÚ
+, 
+o
+->pkcs11_´Ùeùed_auth’tiÿtiÚ[
+i
+] ? "ENABLED" : "DISABLED", "%s");
+
+1647 
+i
+;
+
+1648 
+i
+=0;i<
+MAX_PARMS
+;i++)
+
+1649 
+	`SHOW_PARM
+ (
+pkcs11_´iv©e_mode
+, 
+o
+->pkcs11_´iv©e_mode[
+i
+], "%08x");
+
+1652 
+i
+;
+
+1653 
+i
+=0;i<
+MAX_PARMS
+;i++)
+
+1654 
+	`SHOW_PARM
+ (
+pkcs11_û¹_´iv©e
+, 
+o
+->pkcs11_û¹_´iv©e[
+i
+] ? "ENABLED" : "DISABLED", "%s");
+
+1656 
+	`SHOW_INT
+ (
+pkcs11_pš_ÿche_³riod
+);
+
+1657 
+	`SHOW_STR
+ (
+pkcs11_id
+);
+
+1658 
+	`SHOW_BOOL
+ (
+pkcs11_id_mªagem’t
+);
+
+1661 #ià
+P2MP
+
+
+1662 
+	`show_p2mp_·rms
+ (
+o
+);
+
+1665 #ifdeà
+WIN32
+
+
+1666 
+	`SHOW_BOOL
+ (
+show_Ãt_up
+);
+
+1667 
+	`SHOW_INT
+ (
+rou‹_m‘hod
+);
+
+1668 
+	`show_tuÁ­_ÝtiÚs
+ (&
+o
+->
+tuÁ­_ÝtiÚs
+);
+
+1671 
+	}
+}
+
+1673 #undeà
+SHOW_PARM
+
+
+1674 #undeà
+SHOW_STR
+
+
+1675 #undeà
+SHOW_INT
+
+
+1676 #undeà
+SHOW_BOOL
+
+
+1678 #ià
+HTTP_PROXY_OVERRIDE
+
+
+1680 
+h‰p_´oxy_ÝtiÚs
+ *
+
+1681 
+	$·r£_h‰p_´oxy_ov”ride
+ (cÚ¡ *
+£rv”
+,
+
+1682 cÚ¡ *
+pÜt
+,
+
+1683 cÚ¡ *
+æags
+,
+
+1684 cÚ¡ 
+msgËv–
+,
+
+1685 
+gc_¬’a
+ *
+gc
+)
+
+1687 ià(
+£rv”
+ && 
+pÜt
+)
+
+1689 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+1690 cÚ¡ 
+št_pÜt
+ = 
+	`©oi
+(
+pÜt
+);
+
+1692 ià(!
+	`Ëg®_�v4_pÜt
+ (
+št_pÜt
+))
+
+1694 
+	`msg
+ (
+msgËv–
+, "Bad h‰p-´oxy…Üˆnumb”: %s", 
+pÜt
+);
+
+1695  
+NULL
+;
+
+1698 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+ho
+, 
+h‰p_´oxy_ÝtiÚs
+, 
+gc
+);
+
+1699 
+ho
+->
+£rv”
+ = 
+	`¡ršg_®loc
+(£rv”, 
+gc
+);
+
+1700 
+ho
+->
+pÜt
+ = 
+št_pÜt
+;
+
+1701 
+ho
+->
+»Œy
+ = 
+Œue
+;
+
+1702 
+ho
+->
+timeout
+ = 5;
+
+1703 ià(
+æags
+ && !
+	`¡rcmp
+(flags, "nct"))
+
+1704 
+ho
+->
+auth_»Œy
+ = 
+PAR_NCT
+;
+
+1706 
+ho
+->
+auth_»Œy
+ = 
+PAR_ALL
+;
+
+1707 
+ho
+->
+h‰p_v”siÚ
+ = "1.0";
+
+1708 
+ho
+->
+u£r_ag’t
+ = "OpenVPN-Autoproxy/1.0";
+
+1709  
+ho
+;
+
+1712  
+NULL
+;
+
+1713 
+	}
+}
+
+1716 
+	$ÝtiÚs_po¡´oûss_h‰p_´oxy_ov”ride
+ (
+ÝtiÚs
+ *
+o
+)
+
+1718 cÚ¡ 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+o
+->connection_list;
+
+1719 ià(
+l
+)
+
+1721 
+i
+;
+
+1722 
+boÞ
+ 
+sucûed
+ = 
+çl£
+;
+
+1723 
+i
+ = 0; i < 
+l
+->
+Ën
+; ++i)
+
+1725 
+cÚÃùiÚ_’Œy
+ *
+û
+ = 
+l
+->
+¬¿y
+[
+i
+];
+
+1726 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+ || ce->´ÙØ=ð
+PROTO_TCPv4
+)
+
+1728 
+û
+->
+h‰p_´oxy_ÝtiÚs
+ = 
+o
+->
+h‰p_´oxy_ov”ride
+;
+
+1729 
+sucûed
+ = 
+Œue
+;
+
+1732 ià(
+sucûed
+)
+
+1734 
+i
+ = 0; i < 
+l
+->
+Ën
+; ++i)
+
+1736 
+cÚÃùiÚ_’Œy
+ *
+û
+ = 
+l
+->
+¬¿y
+[
+i
+];
+
+1737 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+1739 
+û
+->
+æags
+ |ð
+CE_DISABLED
+;
+
+1744 
+	`msg
+ (
+M_WARN
+, "Note: option http-proxy-override ignored because‚o TCP-based connection…rofiles‡re defined");
+
+1746 
+	}
+}
+
+1750 
+cÚÃùiÚ_li¡
+ *
+
+1751 
+	$®loc_cÚÃùiÚ_li¡_if_undef
+ (
+ÝtiÚs
+ *options)
+
+1753 ià(!
+ÝtiÚs
+->
+cÚÃùiÚ_li¡
+)
+
+1754 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+ÝtiÚs
+->
+cÚÃùiÚ_li¡
+, cÚÃùiÚ_li¡, &ÝtiÚs->
+gc
+);
+
+1755  
+ÝtiÚs
+->
+cÚÃùiÚ_li¡
+;
+
+1756 
+	}
+}
+
+1758 
+cÚÃùiÚ_’Œy
+ *
+
+1759 
+	$®loc_cÚÃùiÚ_’Œy
+ (
+ÝtiÚs
+ *ÝtiÚs, cÚ¡ 
+msgËv–
+)
+
+1761 
+cÚÃùiÚ_li¡
+ *
+l
+ = 
+	`®loc_cÚÃùiÚ_li¡_if_undef
+ (
+ÝtiÚs
+);
+
+1762 
+cÚÃùiÚ_’Œy
+ *
+e
+;
+
+1764 ià(
+l
+->
+Ën
+ >ð
+CONNECTION_LIST_SIZE
+)
+
+1766 
+	`msg
+ (
+msgËv–
+, "Maximum‚umb” oà'cÚÃùiÚ' o±iÚ (%dèexûeded", 
+CONNECTION_LIST_SIZE
+);
+
+1767  
+NULL
+;
+
+1769 
+	`ALLOC_OBJ_GC
+ (
+e
+, 
+cÚÃùiÚ_’Œy
+, &
+ÝtiÚs
+->
+gc
+);
+
+1770 
+l
+->
+¬¿y
+[l->
+Ën
+++] = 
+e
+;
+
+1771  
+e
+;
+
+1772 
+	}
+}
+
+1774 
+»mÙe_li¡
+ *
+
+1775 
+	$®loc_»mÙe_li¡_if_undef
+ (
+ÝtiÚs
+ *options)
+
+1777 ià(!
+ÝtiÚs
+->
+»mÙe_li¡
+)
+
+1778 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+ÝtiÚs
+->
+»mÙe_li¡
+, »mÙe_li¡, &ÝtiÚs->
+gc
+);
+
+1779  
+ÝtiÚs
+->
+»mÙe_li¡
+;
+
+1780 
+	}
+}
+
+1782 
+»mÙe_’Œy
+ *
+
+1783 
+	$®loc_»mÙe_’Œy
+ (
+ÝtiÚs
+ *ÝtiÚs, cÚ¡ 
+msgËv–
+)
+
+1785 
+»mÙe_li¡
+ *
+l
+ = 
+	`®loc_»mÙe_li¡_if_undef
+ (
+ÝtiÚs
+);
+
+1786 
+»mÙe_’Œy
+ *
+e
+;
+
+1788 ià(
+l
+->
+Ën
+ >ð
+CONNECTION_LIST_SIZE
+)
+
+1790 
+	`msg
+ (
+msgËv–
+, "Maximum‚umb” oà'»mÙe' o±iÚ (%dèexûeded", 
+CONNECTION_LIST_SIZE
+);
+
+1791  
+NULL
+;
+
+1793 
+	`ALLOC_OBJ_GC
+ (
+e
+, 
+»mÙe_’Œy
+, &
+ÝtiÚs
+->
+gc
+);
+
+1794 
+l
+->
+¬¿y
+[l->
+Ën
+++] = 
+e
+;
+
+1795  
+e
+;
+
+1796 
+	}
+}
+
+1799 
+	$cÚÃùiÚ_’Œy_lßd_»
+ (
+cÚÃùiÚ_’Œy
+ *
+û
+, cÚ¡ 
+»mÙe_’Œy
+ *
+»
+)
+
+1801 ià(
+»
+->
+»mÙe
+)
+
+1802 
+û
+->
+»mÙe
+ = 
+»
+->remote;
+
+1803 ià(
+»
+->
+»mÙe_pÜt
+ >= 0)
+
+1804 
+û
+->
+»mÙe_pÜt
+ = 
+»
+->remote_port;
+
+1805 ià(
+»
+->
+´Ùo
+ >= 0)
+
+1806 
+û
+->
+´Ùo
+ = 
+»
+->proto;
+
+1807 
+	}
+}
+
+1810 
+	$ÝtiÚs_po¡´oûss_v”ify_û
+ (cÚ¡ 
+ÝtiÚs
+ *ÝtiÚs, cÚ¡ 
+cÚÃùiÚ_’Œy
+ *
+û
+)
+
+1812 
+ÝtiÚs
+ 
+deçuÉs
+;
+
+1813 
+dev
+ = 
+DEV_TYPE_UNDEF
+;
+
+1814 
+boÞ
+ 
+puÎ
+ = 
+çl£
+;
+
+1816 
+	`š™_ÝtiÚs
+ (&
+deçuÉs
+, 
+Œue
+);
+
+1818 #ifdeà
+ENABLE_CRYPTO
+
+
+1819 ià(
+ÝtiÚs
+->
+‹¡_üy±o
+)
+
+1821 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+, "key file (--secret)");
+
+1825 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+dev
+, "TUN/TAP device (--dev)");
+
+1830 
+dev
+ = 
+	`dev_ty³_’um
+ (
+ÝtiÚs
+->dev, o±iÚs->
+dev_ty³
+);
+
+1836 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4
+)
+
+1837 
+	`msg
+ (
+M_USAGE
+, "--proto�cp is‡mbiguous in�his context. Please specify --proto�cp-server or --proto�cp-client");
+
+1838 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6
+)
+
+1839 
+	`msg
+ (
+M_USAGE
+, "--proto�cp6 is‡mbiguous in�his context. Please specify --proto�cp6-server or --proto�cp6-client");
+
+1845 ià(
+ÝtiÚs
+->
+d«mÚ
+ && o±iÚs->
+š‘d
+)
+
+1846 
+	`msg
+ (
+M_USAGE
+, "only one of --daemon or --inetd may be specified");
+
+1848 ià(
+ÝtiÚs
+->
+š‘d
+ && (
+û
+->
+loÿl
+ || ce->
+»mÙe
+))
+
+1849 
+	`msg
+ (
+M_USAGE
+, "--local or --remote cannot be used with --inetd");
+
+1851 ià(
+ÝtiÚs
+->
+š‘d
+ && 
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+)
+
+1852 
+	`msg
+ (
+M_USAGE
+, "--proto�cp-client cannot be used with --inetd");
+
+1854 ià(
+ÝtiÚs
+->
+š‘d
+ =ð
+INETD_NOWAIT
+ && 
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv4_SERVER
+)
+
+1855 
+	`msg
+ (
+M_USAGE
+, "--inetd‚owait can only be used with --proto�cp-server");
+
+1857 ià(
+ÝtiÚs
+->
+š‘d
+ =ð
+INETD_NOWAIT
+
+
+1858 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+1859 && !(
+ÝtiÚs
+->
+Žs_£rv”
+ || o±iÚs->
+Žs_þ›Á
+)
+
+1862 
+	`msg
+ (
+M_USAGE
+, "--inetd‚owait can only be used in TLS mode");
+
+1864 ià(
+ÝtiÚs
+->
+š‘d
+ =ð
+INETD_NOWAIT
+ && 
+dev
+ !ð
+DEV_TYPE_TAP
+)
+
+1865 
+	`msg
+ (
+M_USAGE
+, "--inetd‚owait only makes sense in --dev�ap mode");
+
+1868 ià(
+ÝtiÚs
+->
+Îaddr
+ && 
+dev
+ !ð
+DEV_TYPE_TAP
+)
+
+1869 
+	`msg
+ (
+M_USAGE
+, "--lladdr can only be used in --dev�ap mode");
+
+1875 ià(
+û
+->
+cÚÃù_»Œy_defšed
+ && ce->
+´Ùo
+ !ð
+PROTO_TCPv4_CLIENT
+
+
+1876 && 
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv6_CLIENT
+)
+
+1877 
+	`msg
+ (
+M_USAGE
+, "--connect-retry doesn't make sense unless‡lso used with "
+
+1880 ià(
+û
+->
+cÚÃù_timeout_defšed
+ && ce->
+´Ùo
+ !ð
+PROTO_TCPv4_CLIENT
+
+
+1881 && 
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv6_CLIENT
+)
+
+1882 
+	`msg
+ (
+M_USAGE
+, "--connect-timeout doesn't make sense unless‡lso used with "
+
+1888 ià(
+ÝtiÚs
+->
+û
+.
+tun_mtu_defšed
+ && o±iÚs->û.
+lšk_mtu_defšed
+)
+
+1889 
+	`msg
+ (
+M_USAGE
+, "Úly oÃ oà--tun-mtu o¸--lšk-mtu may b�defšed (nÙ�th© --ifcÚfig im¶› --lšk-mtu %d)", 
+LINK_MTU_DEFAULT
+);
+
+1891 #ifdeà
+ENABLE_OCC
+
+
+1892 ià(!
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+è&& 
+ÝtiÚs
+->
+mtu_‹¡
+)
+
+1893 
+	`msg
+ (
+M_USAGE
+, "--mtu-test only makes sense with --proto udp");
+
+1897 #ià
+P2MP
+
+
+1898 
+puÎ
+ = 
+ÝtiÚs
+->pull;
+
+1905 ià(
+	`´Ùo_is_Ãt
+(
+û
+->
+´Ùo
+)
+
+1906 && 
+	`¡ršg_defšed_equ®
+ (
+û
+->
+loÿl
+, ce->
+»mÙe
+)
+
+1907 && 
+û
+->
+loÿl_pÜt
+ =ðû->
+»mÙe_pÜt
+)
+
+1908 
+	`msg
+ (
+M_USAGE
+, "--remote‡nd --local‡ddresses‡re�he same");
+
+1910 ià(
+	`¡ršg_defšed_equ®
+ (
+û
+->
+»mÙe
+, 
+ÝtiÚs
+->
+ifcÚfig_loÿl
+)
+
+1911 || 
+	`¡ršg_defšed_equ®
+ (
+û
+->
+»mÙe
+, 
+ÝtiÚs
+->
+ifcÚfig_»mÙe_Ãtmask
+))
+
+1912 
+	`msg
+ (
+M_USAGE
+, "--local‡nd --remote‡ddresses must be distinct from --ifconfig‡ddresses");
+
+1914 ià(
+	`¡ršg_defšed_equ®
+ (
+û
+->
+loÿl
+, 
+ÝtiÚs
+->
+ifcÚfig_loÿl
+)
+
+1915 || 
+	`¡ršg_defšed_equ®
+ (
+û
+->
+loÿl
+, 
+ÝtiÚs
+->
+ifcÚfig_»mÙe_Ãtmask
+))
+
+1916 
+	`msg
+ (
+M_USAGE
+, "--local‡ddresses must be distinct from --ifconfig‡ddresses");
+
+1918 ià(
+	`¡ršg_defšed_equ®
+ (
+ÝtiÚs
+->
+ifcÚfig_loÿl
+, o±iÚs->
+ifcÚfig_»mÙe_Ãtmask
+))
+
+1919 
+	`msg
+ (
+M_USAGE
+, "local‡nd„emote/netmask --ifconfig‡ddresses must be different");
+
+1921 ià(
+û
+->
+bšd_defšed
+ && !û->
+bšd_loÿl
+)
+
+1922 
+	`msg
+ (
+M_USAGE
+, "--bind‡nd --nobind can't be used�ogether");
+
+1924 ià(
+û
+->
+loÿl
+ && !û->
+bšd_loÿl
+)
+
+1925 
+	`msg
+ (
+M_USAGE
+, "--local‡nd --nobind don't make sense when used�ogether");
+
+1927 ià(
+û
+->
+loÿl_pÜt_defšed
+ && !û->
+bšd_loÿl
+)
+
+1928 
+	`msg
+ (
+M_USAGE
+, "--lport‡nd --nobind don't make sense when used�ogether");
+
+1930 ià(!
+û
+->
+»mÙe
+ && !û->
+bšd_loÿl
+)
+
+1931 
+	`msg
+ (
+M_USAGE
+, "--nobind doesn't make sense unless used with --remote");
+
+1936 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1937 ià(!
+ÝtiÚs
+->
+mªagem’t_addr
+ &&
+
+1938 (
+ÝtiÚs
+->
+mªagem’t_æags
+
+
+1939 || 
+ÝtiÚs
+->
+mªagem’t_wr™e_³”_šfo_fže
+
+
+1940 || 
+ÝtiÚs
+->
+mªagem’t_log_hi¡Üy_ÿche
+ !ð
+deçuÉs
+.management_log_history_cache))
+
+1941 
+	`msg
+ (
+M_USAGE
+, "--management is‚ot specified, however one or more options which modify�he behavior of --management were specified");
+
+1943 ià((
+ÝtiÚs
+->
+mªagem’t_þ›Á_u£r
+ || o±iÚs->
+mªagem’t_þ›Á_group
+)
+
+1944 && !(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_UNIX_SOCK
+))
+
+1945 
+	`msg
+ (
+M_USAGE
+, "--management-client-(user|group) can only be used on unix domain sockets");
+
+1952 #ifdeà
+WIN32
+
+
+1953 ià(
+dev
+ =ð
+DEV_TYPE_TUN
+ && !(
+puÎ
+ || (
+ÝtiÚs
+->
+ifcÚfig_loÿl
+ && o±iÚs->
+ifcÚfig_»mÙe_Ãtmask
+)))
+
+1954 
+	`msg
+ (
+M_USAGE
+, "On Windows, --ifconfig is„equired when --dev�un is used");
+
+1956 ià((
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_defšed
+)
+
+1957 && !(
+puÎ
+ || (
+ÝtiÚs
+->
+ifcÚfig_loÿl
+ && o±iÚs->
+ifcÚfig_»mÙe_Ãtmask
+)))
+
+1958 
+	`msg
+ (
+M_USAGE
+, "On Windows, --ip-win32 doesn't make sense unless --ifconfig is‡lso used");
+
+1960 ià(
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_ÝtiÚs
+
+
+1961 && 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_ty³
+ !ð
+IPW32_SET_DHCP_MASQ
+
+
+1962 && 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_ty³
+ !ð
+IPW32_SET_ADAPTIVE
+)
+
+1963 
+	`msg
+ (
+M_USAGE
+, "--dhcp-options„equires --ip-win32 dynamic or‡daptive");
+
+1970 #ifdeà
+ENABLE_FRAGMENT
+
+
+1971 ià(!
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+è&& ce->
+äagm’t
+)
+
+1972 
+	`msg
+ (
+M_USAGE
+, "--fragment can only be used with --proto udp");
+
+1975 #ifdeà
+ENABLE_OCC
+
+
+1976 ià(!
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+è&& ce->
+ex¶ic™_ex™_nÙifiÿtiÚ
+)
+
+1977 
+	`msg
+ (
+M_USAGE
+, "--explicit-exit-notify can only be used with --proto udp");
+
+1980 ià(!
+û
+->
+»mÙe
+ && (û->
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+
+
+1981 || 
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6_CLIENT
+))
+
+1982 
+	`msg
+ (
+M_USAGE
+, "--remote MUST be used in TCP Client mode");
+
+1984 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1985 ià((
+û
+->
+h‰p_´oxy_ÝtiÚs
+è&& ce->
+´Ùo
+ !ð
+PROTO_TCPv4_CLIENT
+)
+
+1986 
+	`msg
+ (
+M_USAGE
+, "--http-proxy MUST be used in TCP Client mode (i.e. --proto�cp-client)");
+
+1987 ià((
+û
+->
+h‰p_´oxy_ÝtiÚs
+è&& !û->h‰p_´oxy_ÝtiÚs->
+£rv”
+)
+
+1988 
+	`msg
+ (
+M_USAGE
+, "--http-proxy‚ot specified but other http…roxy options…resent");
+
+1991 #ià
+	`defšed
+(
+ENABLE_HTTP_PROXY
+è&& defšed(
+ENABLE_SOCKS
+)
+
+1992 ià(
+û
+->
+h‰p_´oxy_ÝtiÚs
+ && ce->
+socks_´oxy_£rv”
+)
+
+1993 
+	`msg
+ (
+M_USAGE
+, "--http-proxy can‚ot be used�ogether with --socks-proxy");
+
+1996 #ifdeà
+ENABLE_SOCKS
+
+
+1997 ià(
+û
+->
+socks_´oxy_£rv”
+ && ce->
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+)
+
+1998 
+	`msg
+ (
+M_USAGE
+, "--socks-proxy can‚ot be used in TCP Server mode");
+
+2001 ià((
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+ || ce->´ÙØ=ð
+PROTO_TCPv6_SERVER
+)
+
+2002 && 
+	`cÚÃùiÚ_li¡_defšed
+ (
+ÝtiÚs
+))
+
+2003 
+	`msg
+ (
+M_USAGE
+, "TCP server mode‡llows‡t most one --remote‡ddress");
+
+2005 #ià
+P2MP_SERVER
+
+
+2010 ià(
+ÝtiÚs
+->
+mode
+ =ð
+MODE_SERVER
+)
+
+2012 ià(!(
+dev
+ =ð
+DEV_TYPE_TUN
+ || dev =ð
+DEV_TYPE_TAP
+))
+
+2013 
+	`msg
+ (
+M_USAGE
+, "--mode server only works with --dev�un or --dev�ap");
+
+2014 ià(
+ÝtiÚs
+->
+puÎ
+)
+
+2015 
+	`msg
+ (
+M_USAGE
+, "--pull cannot be used with --mode server");
+
+2016 ià(!(
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+è|| ce->´ÙØ=ð
+PROTO_TCPv4_SERVER
+
+
+2017 || 
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+))
+
+2018 
+	`msg
+ (
+M_USAGE
+, "--mode server currently only supports "
+
+2020 #ià
+PORT_SHARE
+
+
+2021 ià((
+ÝtiÚs
+->
+pÜt_sh¬e_ho¡
+ || o±iÚs->
+pÜt_sh¬e_pÜt
+) &&
+
+2022 (
+û
+->
+´Ùo
+ !ð
+PROTO_TCPv4_SERVER
+ && ce->´ÙØ!ð
+PROTO_TCPv6_SERVER
+))
+
+2023 
+	`msg
+ (
+M_USAGE
+, "--port-share only works in TCP server mode "
+
+2026 ià(!
+ÝtiÚs
+->
+Žs_£rv”
+)
+
+2027 
+	`msg
+ (
+M_USAGE
+, "--mode server„equires --tls-server");
+
+2028 ià(
+û
+->
+»mÙe
+)
+
+2029 
+	`msg
+ (
+M_USAGE
+, "--remote cannot be used with --mode server");
+
+2030 ià(!
+û
+->
+bšd_loÿl
+)
+
+2031 
+	`msg
+ (
+M_USAGE
+, "--nobind cannot be used with --mode server");
+
+2032 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+2033 ià(
+û
+->
+h‰p_´oxy_ÝtiÚs
+)
+
+2034 
+	`msg
+ (
+M_USAGE
+, "--http-proxy cannot be used with --mode server");
+
+2036 #ifdeà
+ENABLE_SOCKS
+
+
+2037 ià(
+û
+->
+socks_´oxy_£rv”
+)
+
+2038 
+	`msg
+ (
+M_USAGE
+, "--socks-proxy cannot be used with --mode server");
+
+2040 ià(
+ÝtiÚs
+->
+cÚÃùiÚ_li¡
+)
+
+2041 
+	`msg
+ (
+M_USAGE
+, "<connection> cannot be used with --mode server");
+
+2043 ià(
+ÝtiÚs
+->
+tun_�v6
+)
+
+2044 
+	`msg
+ (
+M_USAGE
+, "--tun-ipv6 cannot be used with --mode server");
+
+2046 ià(
+ÝtiÚs
+->
+sh­”
+)
+
+2047 
+	`msg
+ (
+M_USAGE
+, "--shaper cannot be used with --mode server");
+
+2048 ià(
+ÝtiÚs
+->
+š‘d
+)
+
+2049 
+	`msg
+ (
+M_USAGE
+, "--inetd cannot be used with --mode server");
+
+2050 ià(
+ÝtiÚs
+->
+�chªge
+)
+
+2051 
+	`msg
+ (
+M_USAGE
+, "--ipchange cannot be used with --mode server (use --client-connect instead)");
+
+2052 ià(!(
+	`´Ùo_is_dg¿m
+(
+û
+->
+´Ùo
+è|| ce->´ÙØ=ð
+PROTO_TCPv4_SERVER
+
+
+2053 || 
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+))
+
+2054 
+	`msg
+ (
+M_USAGE
+, "--mode server currently only supports "
+
+2056 ià(!
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+è&& (
+ÝtiÚs
+->
+cf_max
+ || o±iÚs->
+cf_³r
+))
+
+2057 
+	`msg
+ (
+M_USAGE
+, "--connect-freq only works with --mode server --proto udp. Try --max-clients instead.");
+
+2058 ià(!(
+dev
+ =ð
+DEV_TYPE_TAP
+ || (dev =ð
+DEV_TYPE_TUN
+ && 
+ÝtiÚs
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)è&& o±iÚs->
+ifcÚfig_poÞ_Ãtmask
+)
+
+2059 
+	`msg
+ (
+M_USAGE
+, "The�hird…arameter�o --ifconfig-pool (netmask) is only valid in --dev�ap mode");
+
+2060 #ifdeà
+ENABLE_OCC
+
+
+2061 ià(
+û
+->
+ex¶ic™_ex™_nÙifiÿtiÚ
+)
+
+2062 
+	`msg
+ (
+M_USAGE
+, "--explicit-exit-notify cannot be used with --mode server");
+
+2064 ià(
+ÝtiÚs
+->
+rou‹s
+ && (ÝtiÚs->rou‹s->
+æags
+ & 
+RG_ENABLE
+))
+
+2065 
+	`msg
+ (
+M_USAGE
+, "--redirect-gateway cannot be used with --mode server (however --push \"redirect-gateway\" is fine)");
+
+2066 ià(
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+)
+
+2067 
+	`msg
+ (
+M_USAGE
+, "--route-delay cannot be used with --mode server");
+
+2068 ià(
+ÝtiÚs
+->
+up_d–ay
+)
+
+2069 
+	`msg
+ (
+M_USAGE
+, "--up-delay cannot be used with --mode server");
+
+2070 ià(!
+ÝtiÚs
+->
+ifcÚfig_poÞ_defšed
+ && o±iÚs->
+ifcÚfig_poÞ_³rsi¡_fž’ame
+)
+
+2071 
+	`msg
+ (
+M_USAGE
+, "--ifconfig-pool-persist must be used with --ifconfig-pool");
+
+2072 ià(
+ÝtiÚs
+->
+ifcÚfig_�v6_poÞ_defšed
+ && !ÝtiÚs->
+ifcÚfig_�v6_loÿl
+ )
+
+2073 
+	`msg
+ (
+M_USAGE
+, "--ifconfig-ipv6-pool‚eeds --ifconfig-ipv6");
+
+2074 ià(
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+ && !ÝtiÚs->
+tun_�v6
+ )
+
+2075 
+	`msg
+ (
+M_INFO
+, "Warning: --ifconfig-ipv6 without --tun-ipv6 will‚ot do IPv6");
+
+2077 ià(
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+)
+
+2078 
+	`msg
+ (
+M_USAGE
+, "--auth-user-pass cannot be used with --mode server (it should be used on�he client side only)");
+
+2079 ià(
+ÝtiÚs
+->
+ccd_exþusive
+ && !ÝtiÚs->
+þ›Á_cÚfig_dœ
+)
+
+2080 
+	`msg
+ (
+M_USAGE
+, "--ccd-exclusive must be used with --client-config-dir");
+
+2081 ià(
+ÝtiÚs
+->
+key_m‘hod
+ != 2)
+
+2082 
+	`msg
+ (
+M_USAGE
+, "--mode server„equires --key-method 2");
+
+2085 cÚ¡ 
+boÞ
+ 
+cúr
+ = (
+ÝtiÚs
+->
+auth_u£r_·ss_v”ify_sü�t
+
+
+2086 || 
+	`PLUGIN_OPTION_LIST
+ (
+ÝtiÚs
+)
+
+2087 || 
+	`MAN_CLIENT_AUTH_ENABLED
+ (
+ÝtiÚs
+));
+
+2088 cÚ¡ *
+po¡fix
+ = "must be used with --management-client-auth,‡n --auth-user-pass-verify script, or…lugin";
+
+2089 ià((
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_CLIENT_CERT_NOT_REQUIRED
+è&& !
+cúr
+)
+
+2090 
+	`msg
+ (
+M_USAGE
+, "--þ›Á-û¹-nÙ-»quœed %s", 
+po¡fix
+);
+
+2091 ià((
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+è&& !
+cúr
+)
+
+2092 
+	`msg
+ (
+M_USAGE
+, "--u£ºame-as-commÚ-Çm�%s", 
+po¡fix
+);
+
+2093 ià((
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+è&& !
+cúr
+)
+
+2094 
+	`msg
+ (
+M_USAGE
+, "--auth-u£r-·ss-ÝtiÚ® %s", 
+po¡fix
+);
+
+2103 ià(
+ÝtiÚs
+->
+ifcÚfig_poÞ_defšed
+ || o±iÚs->
+ifcÚfig_poÞ_³rsi¡_fž’ame
+)
+
+2104 
+	`msg
+ (
+M_USAGE
+, "--ifconfig-pool/--ifconfig-pool-persist„equires --mode server");
+
+2105 ià(
+ÝtiÚs
+->
+ifcÚfig_�v6_poÞ_defšed
+)
+
+2106 
+	`msg
+ (
+M_USAGE
+, "--ifconfig-ipv6-pool„equires --mode server");
+
+2107 ià(
+ÝtiÚs
+->
+»®_hash_size
+ !ð
+deçuÉs
+.real_hash_size
+
+2108 || 
+ÝtiÚs
+->
+vœtu®_hash_size
+ !ð
+deçuÉs
+.virtual_hash_size)
+
+2109 
+	`msg
+ (
+M_USAGE
+, "--hash-size„equires --mode server");
+
+2110 ià(
+ÝtiÚs
+->
+Ë¬n_add»ss_sü�t
+)
+
+2111 
+	`msg
+ (
+M_USAGE
+, "--learn-address„equires --mode server");
+
+2112 ià(
+ÝtiÚs
+->
+þ›Á_cÚÃù_sü�t
+)
+
+2113 
+	`msg
+ (
+M_USAGE
+, "--client-connect„equires --mode server");
+
+2114 ià(
+ÝtiÚs
+->
+þ›Á_discÚÃù_sü�t
+)
+
+2115 
+	`msg
+ (
+M_USAGE
+, "--client-disconnect„equires --mode server");
+
+2116 ià(
+ÝtiÚs
+->
+þ›Á_cÚfig_dœ
+ || o±iÚs->
+ccd_exþusive
+)
+
+2117 
+	`msg
+ (
+M_USAGE
+, "--client-config-dir/--ccd-exclusive„equires --mode server");
+
+2118 ià(
+ÝtiÚs
+->
+’abË_c2c
+)
+
+2119 
+	`msg
+ (
+M_USAGE
+, "--client-to-client„equires --mode server");
+
+2120 ià(
+ÝtiÚs
+->
+du¶iÿ‹_ú
+)
+
+2121 
+	`msg
+ (
+M_USAGE
+, "--duplicate-cn„equires --mode server");
+
+2122 ià(
+ÝtiÚs
+->
+cf_max
+ || o±iÚs->
+cf_³r
+)
+
+2123 
+	`msg
+ (
+M_USAGE
+, "--connect-freq„equires --mode server");
+
+2124 ià(
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_CLIENT_CERT_NOT_REQUIRED
+)
+
+2125 
+	`msg
+ (
+M_USAGE
+, "--client-cert-not-required„equires --mode server");
+
+2126 ià(
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+)
+
+2127 
+	`msg
+ (
+M_USAGE
+, "--username-as-common-name„equires --mode server");
+
+2128 ià(
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+)
+
+2129 
+	`msg
+ (
+M_USAGE
+, "--auth-user-pass-optional„equires --mode server");
+
+2130 ià(
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_OPT_VERIFY
+)
+
+2131 
+	`msg
+ (
+M_USAGE
+, "--opt-verify„equires --mode server");
+
+2132 ià(
+ÝtiÚs
+->
+£rv”_æags
+ & 
+SF_TCP_NODELAY_HELPER
+)
+
+2133 
+	`msg
+ (
+M_WARN
+, "WARNING: setting�cp-nodelay on�he client side will‚ot "
+
+2136 ià(
+ÝtiÚs
+->
+auth_u£r_·ss_v”ify_sü�t
+)
+
+2137 
+	`msg
+ (
+M_USAGE
+, "--auth-user-pass-verify„equires --mode server");
+
+2138 #ià
+PORT_SHARE
+
+
+2139 ià(
+ÝtiÚs
+->
+pÜt_sh¬e_ho¡
+ || o±iÚs->
+pÜt_sh¬e_pÜt
+)
+
+2140 
+	`msg
+ (
+M_USAGE
+, "--port-share„equires TCP server mode (--mode server --proto�cp-server)");
+
+2143 ià(
+ÝtiÚs
+->
+¡®e_rou‹s_check_š‹rv®
+)
+
+2144 
+	`msg
+ (
+M_USAGE
+, "--stale-routes-check„equires --mode server");
+
+2145 ià(
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NO_NAME_REMAPPING
+))
+
+2146 
+	`msg
+ (
+M_USAGE
+, "--compat-x509-names‚o-remapping„equires --mode server");
+
+2150 #ifdeà
+ENABLE_CRYPTO
+
+
+2155 ià((!
+	`´Ùo_is_udp
+(
+û
+->
+´Ùo
+))
+
+2156 && (
+ÝtiÚs
+->
+»¶ay_wšdow
+ !ð
+deçuÉs
+.replay_window
+
+2157 || 
+ÝtiÚs
+->
+»¶ay_time
+ !ð
+deçuÉs
+.replay_time))
+
+2158 
+	`msg
+ (
+M_USAGE
+, "--replay-window only makes sense with --proto udp");
+
+2160 ià(!
+ÝtiÚs
+->
+»¶ay
+
+
+2161 && (
+ÝtiÚs
+->
+»¶ay_wšdow
+ !ð
+deçuÉs
+.replay_window
+
+2162 || 
+ÝtiÚs
+->
+»¶ay_time
+ !ð
+deçuÉs
+.replay_time))
+
+2163 
+	`msg
+ (
+M_USAGE
+, "--replay-window doesn't make sense when„eplay…rotection is disabled with --no-replay");
+
+2169 #ifdeà
+ENABLE_SSL
+
+
+2170 ià(
+ÝtiÚs
+->
+Žs_£rv”
+ + o±iÚs->
+Žs_þ›Á
+ +
+
+2171 (
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+ !ð
+NULL
+) > 1)
+
+2172 
+	`msg
+ (
+M_USAGE
+, "specify only one of --tls-server, --tls-client, or --secret");
+
+2174 ià(
+ÝtiÚs
+->
+Žs_£rv”
+)
+
+2176 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+dh_fže
+, "DH file (--dh)");
+
+2178 ià(
+ÝtiÚs
+->
+Žs_£rv”
+ || o±iÚs->
+Žs_þ›Á
+)
+
+2180 #ifdeà
+ENABLE_PKCS11
+
+
+2181 ià(
+ÝtiÚs
+->
+pkcs11_´ovid”s
+[0])
+
+2183 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+ÿ_fže
+, "CA file (--ca)");
+
+2185 ià(
+ÝtiÚs
+->
+pkcs11_id_mªagem’t
+ && o±iÚs->
+pkcs11_id
+ !ð
+NULL
+)
+
+2186 
+	`msg
+(
+M_USAGE
+, "Parameter --pkcs11-id cannot be used when --pkcs11-id-management is‡lso specified.");
+
+2187 ià(!
+ÝtiÚs
+->
+pkcs11_id_mªagem’t
+ && o±iÚs->
+pkcs11_id
+ =ð
+NULL
+)
+
+2188 
+	`msg
+(
+M_USAGE
+, "Parameter --pkcs11-id or --pkcs11-id-management should be specified.");
+
+2189 ià(
+ÝtiÚs
+->
+û¹_fže
+)
+
+2190 
+	`msg
+(
+M_USAGE
+, "Parameter --cert cannot be used when --pkcs11-provider is‡lso specified.");
+
+2191 ià(
+ÝtiÚs
+->
+´iv_key_fže
+)
+
+2192 
+	`msg
+(
+M_USAGE
+, "Parameter --key cannot be used when --pkcs11-provider is‡lso specified.");
+
+2193 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2194 ià(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+)
+
+2195 
+	`msg
+(
+M_USAGE
+, "Parameter --management-external-key cannot be used when --pkcs11-provider is‡lso specified.");
+
+2197 ià(
+ÝtiÚs
+->
+pkcs12_fže
+)
+
+2198 
+	`msg
+(
+M_USAGE
+, "Parameter --pkcs12 cannot be used when --pkcs11-provider is‡lso specified.");
+
+2199 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+2200 ià(
+ÝtiÚs
+->
+üy±ßpi_û¹
+)
+
+2201 
+	`msg
+(
+M_USAGE
+, "Parameter --cryptoapicert cannot be used when --pkcs11-provider is‡lso specified.");
+
+2206 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2207 if((
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+è&& o±iÚs->
+´iv_key_fže
+)
+
+2209 
+	`msg
+ (
+M_USAGE
+, "--key‡nd --management-external-key‡re mutuallyƒxclusive");
+
+2213 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+2214 ià(
+ÝtiÚs
+->
+üy±ßpi_û¹
+)
+
+2216 ià((!(
+ÝtiÚs
+->
+ÿ_fže
+)è&& (!(ÝtiÚs->
+ÿ_·th
+)))
+
+2217 
+	`msg
+(
+M_USAGE
+, "You must define CA file (--ca) or CA…ath (--capath)");
+
+2218 ià(
+ÝtiÚs
+->
+û¹_fže
+)
+
+2219 
+	`msg
+(
+M_USAGE
+, "Parameter --cert cannot be used when --cryptoapicert is‡lso specified.");
+
+2220 ià(
+ÝtiÚs
+->
+´iv_key_fže
+)
+
+2221 
+	`msg
+(
+M_USAGE
+, "Parameter --key cannot be used when --cryptoapicert is‡lso specified.");
+
+2222 ià(
+ÝtiÚs
+->
+pkcs12_fže
+)
+
+2223 
+	`msg
+(
+M_USAGE
+, "Parameter --pkcs12 cannot be used when --cryptoapicert is‡lso specified.");
+
+2224 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2225 ià(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+)
+
+2226 
+	`msg
+(
+M_USAGE
+, "Parameter --management-external-key cannot be used when --cryptoapicert is‡lso specified.");
+
+2231 ià(
+ÝtiÚs
+->
+pkcs12_fže
+)
+
+2233 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+2234 
+	`msg
+(
+M_USAGE
+, "Parameter --pkcs12 cannot be used with�he PolarSSL version version of OpenVPN.");
+
+2236 ià(
+ÝtiÚs
+->
+ÿ_·th
+)
+
+2237 
+	`msg
+(
+M_USAGE
+, "Parameter --capath cannot be used when --pkcs12 is‡lso specified.");
+
+2238 ià(
+ÝtiÚs
+->
+û¹_fže
+)
+
+2239 
+	`msg
+(
+M_USAGE
+, "Parameter --cert cannot be used when --pkcs12 is‡lso specified.");
+
+2240 ià(
+ÝtiÚs
+->
+´iv_key_fže
+)
+
+2241 
+	`msg
+(
+M_USAGE
+, "Parameter --key cannot be used when --pkcs12 is‡lso specified.");
+
+2242 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2243 ià(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+)
+
+2244 
+	`msg
+(
+M_USAGE
+, "Parameter --external-management-key cannot be used when --pkcs12 is‡lso specified.");
+
+2250 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+2251 ià(!(
+ÝtiÚs
+->
+ÿ_fže
+))
+
+2252 
+	`msg
+(
+M_USAGE
+, "You must define CA file (--ca)");
+
+2253 ià(
+ÝtiÚs
+->
+ÿ_·th
+)
+
+2254 
+	`msg
+(
+M_USAGE
+, "Parameter --capath cannot be used with�he PolarSSL version version of OpenVPN.");
+
+2256 ià((!(
+ÝtiÚs
+->
+ÿ_fže
+)è&& (!(ÝtiÚs->
+ÿ_·th
+)))
+
+2257 
+	`msg
+(
+M_USAGE
+, "You must define CA file (--ca) or CA…ath (--capath)");
+
+2259 ià(
+puÎ
+)
+
+2262 cÚ¡ 
+sum
+ = (
+ÝtiÚs
+->
+û¹_fže
+ !ð
+NULL
+) +
+
+2263 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2264 ((
+ÝtiÚs
+->
+´iv_key_fže
+ !ð
+NULL
+è|| (ÝtiÚs->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+));
+
+2266 (
+ÝtiÚs
+->
+´iv_key_fže
+ !ð
+NULL
+);
+
+2270 ià(
+sum
+ == 0)
+
+2272 #ià
+P2MP
+
+
+2273 ià(!
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+)
+
+2275 
+	`msg
+ (
+M_USAGE
+, "No client-side‡uthentication method is specified. You must useƒither --cert/--key, --pkcs12, or --auth-user-pass");
+
+2277 ià(
+sum
+ == 2)
+
+2281 
+	`msg
+ (
+M_USAGE
+, "If you use one of --cert or --key, you must use�hem both");
+
+2286 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+û¹_fže
+, "certificate file (--cert) or PKCS#12 file (--pkcs12)");
+
+2287 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2288 ià(!(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+))
+
+2290 
+	`nÙnuÎ
+ (
+ÝtiÚs
+->
+´iv_key_fže
+, "private key file (--key) or PKCS#12 file (--pkcs12)");
+
+2301 
+	#MUST_BE_UNDEF
+(
+·rm
+èià(
+ÝtiÚs
+->·rm !ð
+deçuÉs
+.·rmè
+	`msg
+ (
+M_USAGE
+, 
+”r
+, #·rm);
+
+	)
+
+2303 cÚ¡ 
+”r
+[] = "Parameter %s can only be specified in TLS-mode, i.e. where --tls-server or --tls-client is‡lso specified.";
+
+2305 
+	`MUST_BE_UNDEF
+ (
+ÿ_fže
+);
+
+2306 
+	`MUST_BE_UNDEF
+ (
+ÿ_·th
+);
+
+2307 
+	`MUST_BE_UNDEF
+ (
+dh_fže
+);
+
+2308 
+	`MUST_BE_UNDEF
+ (
+û¹_fže
+);
+
+2309 
+	`MUST_BE_UNDEF
+ (
+´iv_key_fže
+);
+
+2310 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+2311 
+	`MUST_BE_UNDEF
+ (
+pkcs12_fže
+);
+
+2313 
+	`MUST_BE_UNDEF
+ (
+c�h”_li¡
+);
+
+2314 
+	`MUST_BE_UNDEF
+ (
+Žs_v”ify
+);
+
+2315 
+	`MUST_BE_UNDEF
+ (
+Žs_expÜt_û¹
+);
+
+2316 
+	`MUST_BE_UNDEF
+ (
+v”ify_x509_Çme
+);
+
+2317 
+	`MUST_BE_UNDEF
+ (
+Žs_timeout
+);
+
+2318 
+	`MUST_BE_UNDEF
+ (
+»ÃgÙŸ‹_by‹s
+);
+
+2319 
+	`MUST_BE_UNDEF
+ (
+»ÃgÙŸ‹_·ck‘s
+);
+
+2320 
+	`MUST_BE_UNDEF
+ (
+»ÃgÙŸ‹_£cÚds
+);
+
+2321 
+	`MUST_BE_UNDEF
+ (
+hªdshake_wšdow
+);
+
+2322 
+	`MUST_BE_UNDEF
+ (
+Œªs™iÚ_wšdow
+);
+
+2323 
+	`MUST_BE_UNDEF
+ (
+Žs_auth_fže
+);
+
+2324 
+	`MUST_BE_UNDEF
+ (
+sšgË_£ssiÚ
+);
+
+2325 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+2326 
+	`MUST_BE_UNDEF
+ (
+push_³”_šfo
+);
+
+2328 
+	`MUST_BE_UNDEF
+ (
+Žs_ex™
+);
+
+2329 
+	`MUST_BE_UNDEF
+ (
+ül_fže
+);
+
+2330 
+	`MUST_BE_UNDEF
+ (
+key_m‘hod
+);
+
+2331 
+	`MUST_BE_UNDEF
+ (
+ns_û¹_ty³
+);
+
+2332 
+	`MUST_BE_UNDEF
+ (
+»mÙe_û¹_ku
+[0]);
+
+2333 
+	`MUST_BE_UNDEF
+ (
+»mÙe_û¹_eku
+);
+
+2334 #ifdeà
+ENABLE_PKCS11
+
+
+2335 
+	`MUST_BE_UNDEF
+ (
+pkcs11_´ovid”s
+[0]);
+
+2336 
+	`MUST_BE_UNDEF
+ (
+pkcs11_´iv©e_mode
+[0]);
+
+2337 
+	`MUST_BE_UNDEF
+ (
+pkcs11_id
+);
+
+2338 
+	`MUST_BE_UNDEF
+ (
+pkcs11_id_mªagem’t
+);
+
+2340 #ià
+P2MP
+
+
+2341 
+	`MUST_BE_UNDEF
+ (
+£rv”_pÞl_timeout
+);
+
+2344 ià(
+puÎ
+)
+
+2345 
+	`msg
+ (
+M_USAGE
+, 
+”r
+, "--pull");
+
+2347 #undeà
+MUST_BE_UNDEF
+
+
+2351 #ià
+P2MP
+
+
+2352 ià(
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+ && !ÝtiÚs->
+puÎ
+)
+
+2353 
+	`msg
+ (
+M_USAGE
+, "--auth-user-pass„equires --pull");
+
+2356 
+	`unš™_ÝtiÚs
+ (&
+deçuÉs
+);
+
+2357 
+	}
+}
+
+2360 
+	$ÝtiÚs_po¡´oûss_mu�‹_û
+ (
+ÝtiÚs
+ *
+o
+, 
+cÚÃùiÚ_’Œy
+ *
+û
+)
+
+2362 cÚ¡ 
+dev
+ = 
+	`dev_ty³_’um
+ (
+o
+->dev, o->
+dev_ty³
+);
+
+2364 #ià
+P2MP_SERVER
+
+
+2365 ià(
+o
+->
+£rv”_defšed
+ || o->
+£rv”_bridge_defšed
+ || o->
+£rv”_bridge_´oxy_dhý
+)
+
+2367 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4
+)
+
+2368 
+û
+->
+´Ùo
+ = 
+PROTO_TCPv4_SERVER
+;
+
+2369 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6
+)
+
+2370 
+û
+->
+´Ùo
+ = 
+PROTO_TCPv6_SERVER
+;
+
+2373 #ià
+P2MP
+
+
+2374 ià(
+o
+->
+þ›Á
+)
+
+2376 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4
+)
+
+2377 
+û
+->
+´Ùo
+ = 
+PROTO_TCPv4_CLIENT
+;
+
+2378 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv6
+)
+
+2379 
+û
+->
+´Ùo
+ = 
+PROTO_TCPv6_CLIENT
+;
+
+2383 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+ && !û->
+loÿl
+ && !û->
+loÿl_pÜt_defšed
+ && !û->
+bšd_defšed
+)
+
+2384 
+û
+->
+bšd_loÿl
+ = 
+çl£
+;
+
+2386 #ifdeà
+ENABLE_SOCKS
+
+
+2387 ià(
+û
+->
+´Ùo
+ =ð
+PROTO_UDPv4
+ && ce->
+socks_´oxy_£rv”
+ && !û->
+loÿl
+ && !û->
+loÿl_pÜt_defšed
+ && !û->
+bšd_defšed
+)
+
+2388 
+û
+->
+bšd_loÿl
+ = 
+çl£
+;
+
+2391 ià(!
+û
+->
+bšd_loÿl
+)
+
+2392 
+û
+->
+loÿl_pÜt
+ = 0;
+
+2395 ià(
+o
+->
+´Ùo_fÜû
+ >ð0 && 
+	`´Ùo_is_tý
+(o->´Ùo_fÜûè!ð´Ùo_is_tý(
+û
+->
+´Ùo
+))
+
+2396 
+û
+->
+æags
+ |ð
+CE_DISABLED
+;
+
+2402 ià(
+o
+->
+û
+.
+mssfix_deçuÉ
+)
+
+2404 #ifdeà
+ENABLE_FRAGMENT
+
+
+2405 ià(
+û
+->
+äagm’t
+)
+
+2406 
+û
+->
+mssfix
+ = ce->
+äagm’t
+;
+
+2408 
+	`msg
+ (
+M_USAGE
+, "--mssfix must specify‡…arameter");
+
+2416 ià(!
+û
+->
+tun_mtu_defšed
+ && !û->
+lšk_mtu_defšed
+)
+
+2418 
+û
+->
+tun_mtu_defšed
+ = 
+Œue
+;
+
+2420 ià((
+dev
+ =ð
+DEV_TYPE_TAP
+è&& !
+û
+->
+tun_mtu_exŒa_defšed
+)
+
+2422 
+û
+->
+tun_mtu_exŒa_defšed
+ = 
+Œue
+;
+
+2423 
+û
+->
+tun_mtu_exŒa
+ = 
+TAP_MTU_EXTRA_DEFAULT
+;
+
+2427 
+	}
+}
+
+2430 
+	$ÝtiÚs_po¡´oûss_mu�‹_šv¬ŸÁ
+ (
+ÝtiÚs
+ *options)
+
+2432 cÚ¡ 
+dev
+ = 
+	`dev_ty³_’um
+ (
+ÝtiÚs
+->dev, o±iÚs->
+dev_ty³
+);
+
+2438 ià(
+ÝtiÚs
+->
+š‘d
+ =ð
+INETD_NOWAIT
+)
+
+2439 
+ÝtiÚs
+->
+ifcÚfig_nÛxec
+ = 
+Œue
+;
+
+2441 #ifdeà
+WIN32
+
+
+2442 ià((
+dev
+ =ð
+DEV_TYPE_TUN
+ || dev =ð
+DEV_TYPE_TAP
+è&& !
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+)
+
+2444 ià(
+ÝtiÚs
+->
+mode
+ =ð
+MODE_POINT_TO_POINT
+)
+
+2446 
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+ = 
+Œue
+;
+
+2447 
+ÝtiÚs
+->
+rou‹_d–ay
+ = 5;
+
+2451 ià(
+ÝtiÚs
+->
+ifcÚfig_nÛxec
+)
+
+2453 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�_wš32_ty³
+ = 
+IPW32_SET_MANUAL
+;
+
+2454 
+ÝtiÚs
+->
+ifcÚfig_nÛxec
+ = 
+çl£
+;
+
+2458 #ià
+P2MP_SERVER
+
+
+2462 ià(
+ÝtiÚs
+->
+mode
+ =ð
+MODE_SERVER
+)
+
+2464 #ifdeà
+WIN32
+
+
+2469 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�p_¦“p
+ = 10;
+
+2470 ià(
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+ && o±iÚs->
+rou‹_d–ay
+)
+
+2471 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�p_¦“p
+ = o±iÚs->
+rou‹_d–ay
+;
+
+2472 
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+ = 
+çl£
+;
+
+2477 #ifdeà
+DEFAULT_PKCS11_MODULE
+
+
+2481 ià(!
+ÝtiÚs
+->
+pkcs11_´ovid”s
+[0] &&
+
+2482 (
+ÝtiÚs
+->
+pkcs11_id
+ || o±iÚs->
+pkcs11_id_mªagem’t
+))
+
+2483 
+ÝtiÚs
+->
+pkcs11_´ovid”s
+[0] = 
+DEFAULT_PKCS11_MODULE
+;
+
+2485 
+	}
+}
+
+2488 
+	$ÝtiÚs_po¡´oûss_v”ify
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+2490 ià(
+o
+->
+cÚÃùiÚ_li¡
+)
+
+2492 
+i
+;
+
+2493 
+i
+ = 0; i < 
+o
+->
+cÚÃùiÚ_li¡
+->
+Ën
+; ++i)
+
+2494 
+	`ÝtiÚs_po¡´oûss_v”ify_û
+ (
+o
+, o->
+cÚÃùiÚ_li¡
+->
+¬¿y
+[
+i
+]);
+
+2497 
+	`ÝtiÚs_po¡´oûss_v”ify_û
+ (
+o
+, &o->
+û
+);
+
+2498 
+	}
+}
+
+2501 
+	$ÝtiÚs_po¡´oûss_mu�‹
+ (
+ÝtiÚs
+ *
+o
+)
+
+2507 
+	`h–³r_þ›Á_£rv”
+ (
+o
+);
+
+2508 
+	`h–³r_k“·live
+ (
+o
+);
+
+2509 
+	`h–³r_tý_nod–ay
+ (
+o
+);
+
+2511 
+	`ÝtiÚs_po¡´oûss_mu�‹_šv¬ŸÁ
+ (
+o
+);
+
+2513 ià(
+o
+->
+»mÙe_li¡
+ && !o->
+cÚÃùiÚ_li¡
+)
+
+2519 ià(
+o
+->
+»mÙe_li¡
+->
+Ën
+ > 1 || o->
+fÜû_cÚÃùiÚ_li¡
+)
+
+2521 cÚ¡ 
+»mÙe_li¡
+ *
+¾
+ = 
+o
+->remote_list;
+
+2522 
+i
+;
+
+2523 
+i
+ = 0; i < 
+¾
+->
+Ën
+; ++i)
+
+2525 cÚ¡ 
+»mÙe_’Œy
+ *
+»
+ = 
+¾
+->
+¬¿y
+[
+i
+];
+
+2526 
+cÚÃùiÚ_’Œy
+ 
+û
+ = 
+o
+->ce;
+
+2527 
+cÚÃùiÚ_’Œy
+ *
+aû
+;
+
+2529 
+	`ASSERT
+ (
+»
+->
+»mÙe
+);
+
+2530 
+	`cÚÃùiÚ_’Œy_lßd_»
+ (&
+û
+, 
+»
+);
+
+2531 
+aû
+ = 
+	`®loc_cÚÃùiÚ_’Œy
+ (
+o
+, 
+M_USAGE
+);
+
+2532 
+	`ASSERT
+ (
+aû
+);
+
+2533 *
+aû
+ = 
+û
+;
+
+2536 ià(
+o
+->
+»mÙe_li¡
+->
+Ën
+ == 1)
+
+2538 
+	`cÚÃùiÚ_’Œy_lßd_»
+ (&
+o
+->
+û
+, o->
+»mÙe_li¡
+->
+¬¿y
+[0]);
+
+2542 
+	`ASSERT
+ (0);
+
+2545 ià(
+o
+->
+cÚÃùiÚ_li¡
+)
+
+2547 
+i
+;
+
+2548 
+i
+ = 0; i < 
+o
+->
+cÚÃùiÚ_li¡
+->
+Ën
+; ++i)
+
+2549 
+	`ÝtiÚs_po¡´oûss_mu�‹_û
+ (
+o
+, o->
+cÚÃùiÚ_li¡
+->
+¬¿y
+[
+i
+]);
+
+2551 #ià
+HTTP_PROXY_OVERRIDE
+
+
+2552 ià(
+o
+->
+h‰p_´oxy_ov”ride
+)
+
+2553 
+	`ÝtiÚs_po¡´oûss_h‰p_´oxy_ov”ride
+(
+o
+);
+
+2557 
+	`ÝtiÚs_po¡´oûss_mu�‹_û
+ (
+o
+, &o->
+û
+);
+
+2559 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+2560 ià(
+o
+->
+üy±ßpi_û¹
+)
+
+2562 cÚ¡ 
+Žs_v”siÚ_max
+ =
+
+2563 (
+o
+->
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MAX_SHIFT
+) &
+
+2564 
+SSLF_TLS_VERSION_MAX_MASK
+;
+
+2566 ià(
+Žs_v”siÚ_max
+ =ð
+TLS_VER_UNSPEC
+ ||�ls_v”siÚ_max > 
+TLS_VER_1_1
+)
+
+2568 
+	`msg
+(
+M_WARN
+, "Warning: cryptapicert used, setting maximum TLS "
+
+2570 
+o
+->
+s¦_æags
+ &ð~(
+SSLF_TLS_VERSION_MAX_MASK
+ <<
+
+2571 
+SSLF_TLS_VERSION_MAX_SHIFT
+);
+
+2572 
+o
+->
+s¦_æags
+ |ð(
+TLS_VER_1_1
+ << 
+SSLF_TLS_VERSION_MAX_SHIFT
+);
+
+2577 #ià
+P2MP
+
+
+2581 
+	`´e_puÎ_§ve
+ (
+o
+);
+
+2583 
+	}
+}
+
+2589 #iâdeà
+ENABLE_SMALL
+
+
+2591 
+	#CHKACC_FILE
+ (1<<0è
+
+	)
+
+2592 
+	#CHKACC_DIRPATH
+ (1<<1è
+
+	)
+
+2593 
+	#CHKACC_FILEXSTWR
+ (1<<2è
+
+	)
+
+2594 
+	#CHKACC_INLINE
+ (1<<3è
+
+	)
+
+2595 
+	#CHKACC_ACPTSTDIN
+ (1<<4è
+
+	)
+
+2597 
+boÞ
+
+
+2598 
+	$check_fže_acûss
+(cÚ¡ 
+ty³
+, cÚ¡ *
+fže
+, cÚ¡ 
+mode
+, cÚ¡ *
+Ýt
+)
+
+2600 
+”rcode
+ = 0;
+
+2603 ià(!
+fže
+)
+
+2604  
+çl£
+;
+
+2607 ià((
+ty³
+ & 
+CHKACC_INLINE
+è&& 
+	`¡»q
+(
+fže
+, 
+INLINE_FILE_TAG
+) )
+
+2608  
+çl£
+;
+
+2613 ifÐ(
+ty³
+ & 
+CHKACC_ACPTSTDIN
+è&& 
+	`¡»q
+(
+fže
+, "stdin") )
+
+2614  
+çl£
+;
+
+2617 ià(
+ty³
+ & 
+CHKACC_DIRPATH
+)
+
+2619 *
+fuÎ·th
+ = 
+	`¡rdup
+(
+fže
+);
+
+2620 *
+dœ·th
+ = 
+	`dœÇme
+(
+fuÎ·th
+);
+
+2622 ià(
+	`¶©fÜm_acûss
+ (
+dœ·th
+, 
+mode
+|
+X_OK
+) != 0)
+
+2623 
+”rcode
+ = 
+”ºo
+;
+
+2624 
+	`ä“
+(
+fuÎ·th
+);
+
+2628 ià(!
+”rcode
+ && (
+ty³
+ & 
+CHKACC_FILE
+è&& (
+	`¶©fÜm_acûss
+ (
+fže
+, 
+mode
+) != 0) )
+
+2629 
+”rcode
+ = 
+”ºo
+;
+
+2632 ià(!
+”rcode
+ && (
+ty³
+ & 
+CHKACC_FILEXSTWR
+è&& (
+	`¶©fÜm_acûss
+ (
+fže
+, 
+F_OK
+) == 0) )
+
+2633 ià(
+	`¶©fÜm_acûss
+ (
+fže
+, 
+W_OK
+) != 0)
+
+2634 
+”rcode
+ = 
+”ºo
+;
+
+2637 ifÐ
+”rcode
+ > 0 )
+
+2638 
+	`msg
+ (
+M_NOPREFIX
+|
+M_OPTERR
+, "%s fails with '%s': %s",
+
+2639 
+Ýt
+, 
+fže
+, 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2642  (
+”rcode
+ !ð0 ? 
+Œue
+ : 
+çl£
+);
+
+2643 
+	}
+}
+
+2649 
+boÞ
+
+
+2650 
+	$check_fže_acûss_chroÙ
+(cÚ¡ *
+chroÙ
+, cÚ¡ 
+ty³
+, cÚ¡ *
+fže
+, cÚ¡ 
+mode
+, cÚ¡ *
+Ýt
+)
+
+2652 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2655 ià(!
+fže
+)
+
+2656  
+çl£
+;
+
+2659 ifÐ
+chroÙ
+ )
+
+2661 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+2662 
+bufãr
+ 
+chroÙ_fže
+;
+
+2663 
+Ën
+ = 0;
+
+2666 
+Ën
+ = 
+	`¡¾’
+(
+chroÙ
+è+ sŒËn(
+PATH_SEPARATOR_STR
+è+ sŒËn(
+fže
+) + 1;
+
+2667 
+chroÙ_fže
+ = 
+	`®loc_buf_gc
+(
+Ën
+, &
+gc
+);
+
+2668 
+	`buf_´štf
+(&
+chroÙ_fže
+, "%s%s%s", 
+chroÙ
+, 
+PATH_SEPARATOR_STR
+, 
+fže
+);
+
+2669 
+	`ASSERT
+ (
+chroÙ_fže
+.
+Ën
+ > 0);
+
+2671 
+»t
+ = 
+	`check_fže_acûss
+(
+ty³
+, 
+	`BSTR
+(&
+chroÙ_fže
+), 
+mode
+, 
+Ýt
+);
+
+2672 
+	`gc_ä“
+(&
+gc
+);
+
+2677 
+»t
+ = 
+	`check_fže_acûss
+(
+ty³
+, 
+fže
+, 
+mode
+, 
+Ýt
+);
+
+2679  
+»t
+;
+
+2680 
+	}
+}
+
+2699 
+boÞ
+
+
+2700 
+	$check_cmd_acûss
+(cÚ¡ *
+commªd
+, cÚ¡ *
+Ýt
+, cÚ¡ *
+chroÙ
+)
+
+2702 
+¬gv
+‡rgv;
+
+2703 
+boÞ
+ 
+»tuº_code
+;
+
+2706 ià(! 
+commªd
+)
+
+2707  
+çl£
+;
+
+2710 
+¬gv
+ = 
+	`¬gv_Ãw
+ ();
+
+2711 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sc", 
+commªd
+);
+
+2714 ià(
+¬gv
+.argv[0])
+
+2719 
+»tuº_code
+ = 
+	`check_fže_acûss_chroÙ
+(
+chroÙ
+, 
+CHKACC_FILE
+, 
+¬gv
+.¬gv[0], 
+X_OK
+, 
+Ýt
+);
+
+2722 
+	`msg
+ (
+M_NOPREFIX
+|
+M_OPTERR
+, "%s fails with '%s': No…ath�oƒxecutable.",
+
+2723 
+Ýt
+, 
+commªd
+);
+
+2724 
+»tuº_code
+ = 
+Œue
+;
+
+2727 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+2729  
+»tuº_code
+;
+
+2730 
+	}
+}
+
+2737 
+	$ÝtiÚs_po¡´oûss_fžechecks
+ (
+ÝtiÚs
+ *options)
+
+2739 
+boÞ
+ 
+”rs
+ = 
+çl£
+;
+
+2742 #ifdeà
+ENABLE_SSL
+
+
+2743 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+dh_fže
+, 
+R_OK
+, "--dh");
+
+2744 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+ÿ_fže
+, 
+R_OK
+, "--ca");
+
+2745 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+ÿ_·th
+, 
+R_OK
+, "--capath");
+
+2746 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+û¹_fže
+, 
+R_OK
+, "--cert");
+
+2747 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+exŒa_û¹s_fže
+, 
+R_OK
+,
+
+2749 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+2750 if(!(
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+))
+
+2752 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+´iv_key_fže
+, 
+R_OK
+,
+
+2754 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+pkcs12_fže
+, 
+R_OK
+,
+
+2757 ià(
+ÝtiÚs
+->
+s¦_æags
+ & 
+SSLF_CRL_VERIFY_DIR
+)
+
+2758 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+ül_fže
+, 
+R_OK
+|
+X_OK
+,
+
+2761 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+ül_fže
+, 
+R_OK
+,
+
+2764 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+Žs_auth_fže
+, 
+R_OK
+,
+
+2767 #ifdeà
+ENABLE_CRYPTO
+
+
+2768 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_INLINE
+, 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+, 
+R_OK
+,
+
+2770 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_DIRPATH
+|
+CHKACC_FILEXSTWR
+,
+
+2771 
+ÝtiÚs
+->
+·ck‘_id_fže
+, 
+R_OK
+|
+W_OK
+, "--replay-persist");
+
+2776 #ifdeà
+ENABLE_SSL
+
+
+2777 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_ACPTSTDIN
+,
+
+2778 
+ÝtiÚs
+->
+key_·ss_fže
+, 
+R_OK
+, "--askpass");
+
+2780 #ifdeà
+ENABLE_MANAGEMENT
+
+
+2781 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_ACPTSTDIN
+,
+
+2782 
+ÝtiÚs
+->
+mªagem’t_u£r_·ss
+, 
+R_OK
+,
+
+2785 #ià
+P2MP
+
+
+2786 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+|
+CHKACC_ACPTSTDIN
+,
+
+2787 
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+, 
+R_OK
+,
+
+2792 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_FILE
+, 
+ÝtiÚs
+->
+chroÙ_dœ
+,
+
+2793 
+R_OK
+|
+X_OK
+, "--chroot directory");
+
+2794 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_DIRPATH
+|
+CHKACC_FILEXSTWR
+, 
+ÝtiÚs
+->
+wr™•id
+,
+
+2795 
+R_OK
+|
+W_OK
+, "--writepid");
+
+2798 
+”rs
+ |ð
+	`check_fže_acûss
+ (
+CHKACC_DIRPATH
+|
+CHKACC_FILEXSTWR
+, 
+ÝtiÚs
+->
+¡©us_fže
+,
+
+2799 
+R_OK
+|
+W_OK
+, "--status");
+
+2802 #ifdeà
+ENABLE_SSL
+
+
+2803 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+Žs_expÜt_û¹
+,
+
+2804 
+R_OK
+|
+W_OK
+|
+X_OK
+, "--tls-export-cert");
+
+2806 #ià
+P2MP_SERVER
+
+
+2807 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+þ›Á_cÚfig_dœ
+,
+
+2808 
+R_OK
+|
+X_OK
+, "--client-config-dir");
+
+2809 
+”rs
+ |ð
+	`check_fže_acûss_chroÙ
+ (
+ÝtiÚs
+->
+chroÙ_dœ
+, 
+CHKACC_FILE
+, o±iÚs->
+tmp_dœ
+,
+
+2810 
+R_OK
+|
+W_OK
+|
+X_OK
+, "Temporary directory (--tmp-dir)");
+
+2814 ià(
+”rs
+)
+
+2815 
+	`msg
+ (
+M_USAGE
+, "Please correct�heseƒrrors.");
+
+2816 
+	}
+}
+
+2825 
+	$ÝtiÚs_po¡´oûss
+ (
+ÝtiÚs
+ *options)
+
+2827 
+	`ÝtiÚs_po¡´oûss_mu�‹
+ (
+ÝtiÚs
+);
+
+2828 
+	`ÝtiÚs_po¡´oûss_v”ify
+ (
+ÝtiÚs
+);
+
+2829 #iâdeà
+ENABLE_SMALL
+
+
+2830 
+	`ÝtiÚs_po¡´oûss_fžechecks
+ (
+ÝtiÚs
+);
+
+2832 
+	}
+}
+
+2834 #ià
+P2MP
+
+
+2841 
+	$´e_puÎ_§ve
+ (
+ÝtiÚs
+ *
+o
+)
+
+2843 ià(
+o
+->
+puÎ
+)
+
+2845 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+o
+->
+´e_puÎ
+, 
+ÝtiÚs_´e_puÎ
+, &o->
+gc
+);
+
+2846 
+o
+->
+´e_puÎ
+->
+tuÁ­_ÝtiÚs
+ = o->tuntap_options;
+
+2847 
+o
+->
+´e_puÎ
+->
+tuÁ­_ÝtiÚs_defšed
+ = 
+Œue
+;
+
+2848 
+o
+->
+´e_puÎ
+->
+fÜeign_ÝtiÚ_šdex
+ = o->foreign_option_index;
+
+2849 ià(
+o
+->
+rou‹s
+)
+
+2851 
+o
+->
+´e_puÎ
+->
+rou‹s
+ = 
+	`þÚe_rou‹_ÝtiÚ_li¡
+(o->rou‹s, &o->
+gc
+);
+
+2852 
+o
+->
+´e_puÎ
+->
+rou‹s_defšed
+ = 
+Œue
+;
+
+2854 ià(
+o
+->
+rou‹s_�v6
+)
+
+2856 
+o
+->
+´e_puÎ
+->
+rou‹s_�v6
+ = 
+	`þÚe_rou‹_�v6_ÝtiÚ_li¡
+(o->rou‹s_�v6, &o->
+gc
+);
+
+2857 
+o
+->
+´e_puÎ
+->
+rou‹s_�v6_defšed
+ = 
+Œue
+;
+
+2859 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+2860 ià(
+o
+->
+þ›Á_Çt
+)
+
+2862 
+o
+->
+´e_puÎ
+->
+þ›Á_Çt
+ = 
+	`þÚe_þ›Á_Çt_ÝtiÚ_li¡
+(o->þ›Á_Çt, &o->
+gc
+);
+
+2863 
+o
+->
+´e_puÎ
+->
+þ›Á_Çt_defšed
+ = 
+Œue
+;
+
+2867 
+	}
+}
+
+2870 
+	$´e_puÎ_»¡Üe
+ (
+ÝtiÚs
+ *
+o
+)
+
+2872 cÚ¡ 
+ÝtiÚs_´e_puÎ
+ *
+µ
+ = 
+o
+->
+´e_puÎ
+;
+
+2873 ià(
+µ
+)
+
+2875 
+	`CLEAR
+ (
+o
+->
+tuÁ­_ÝtiÚs
+);
+
+2876 ià(
+µ
+->
+tuÁ­_ÝtiÚs_defšed
+)
+
+2877 
+o
+->
+tuÁ­_ÝtiÚs
+ = 
+µ
+->tuntap_options;
+
+2879 ià(
+µ
+->
+rou‹s_defšed
+)
+
+2881 
+	`rÞ_check_®loc
+ (
+o
+);
+
+2882 
+	`cÝy_rou‹_ÝtiÚ_li¡
+ (
+o
+->
+rou‹s
+, 
+µ
+->routes);
+
+2885 
+o
+->
+rou‹s
+ = 
+NULL
+;
+
+2887 ià(
+µ
+->
+rou‹s_�v6_defšed
+)
+
+2889 
+	`rÞ6_check_®loc
+ (
+o
+);
+
+2890 
+	`cÝy_rou‹_�v6_ÝtiÚ_li¡
+ (
+o
+->
+rou‹s_�v6
+, 
+µ
+->routes_ipv6);
+
+2893 
+o
+->
+rou‹s_�v6
+ = 
+NULL
+;
+
+2895 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+2896 ià(
+µ
+->
+þ›Á_Çt_defšed
+)
+
+2898 
+	`úÞ_check_®loc
+ (
+o
+);
+
+2899 
+	`cÝy_þ›Á_Çt_ÝtiÚ_li¡
+ (
+o
+->
+þ›Á_Çt
+, 
+µ
+->client_nat);
+
+2902 
+o
+->
+þ›Á_Çt
+ = 
+NULL
+;
+
+2905 
+o
+->
+fÜeign_ÝtiÚ_šdex
+ = 
+µ
+->foreign_option_index;
+
+2908 
+o
+->
+push_cÚtšu©iÚ
+ = 0;
+
+2909 
+o
+->
+push_ÝtiÚ_ty³s_found
+ = 0;
+
+2910 
+	}
+}
+
+2914 #ifdeà
+ENABLE_OCC
+
+
+2961 
+	$ÝtiÚs_¡ršg
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+,
+
+2962 cÚ¡ 
+äame
+ *frame,
+
+2963 
+tuÁ­
+ *
+‰
+,
+
+2964 
+boÞ
+ 
+»mÙe
+,
+
+2965 
+gc_¬’a
+ *
+gc
+)
+
+2967 
+bufãr
+ 
+out
+ = 
+	`®loc_buf
+ (
+OPTION_LINE_SIZE
+);
+
+2968 
+boÞ
+ 
+‰_loÿl
+ = 
+çl£
+;
+
+2970 
+	`buf_´štf
+ (&
+out
+, "V4");
+
+2976 
+	`buf_´štf
+ (&
+out
+, ",dev-ty³ %s", 
+	`dev_ty³_¡ršg
+ (
+o
+->
+dev
+, o->
+dev_ty³
+));
+
+2977 
+	`buf_´štf
+ (&
+out
+, ",lšk-mtu %d", 
+	`EXPANDED_SIZE
+ (
+äame
+));
+
+2978 
+	`buf_´štf
+ (&
+out
+, ",tun-mtu %d", 
+	`PAYLOAD_SIZE
+ (
+äame
+));
+
+2979 
+	`buf_´štf
+ (&
+out
+, ",´ÙØ%s", 
+	`´Ùo2ascii
+ (
+	`´Ùo_»mÙe
+ (
+o
+->
+û
+.
+´Ùo
+, 
+»mÙe
+), 
+Œue
+));
+
+2984 ià(
+o
+->
+tun_�v6
+ && o->
+mode
+ =ð
+MODE_POINT_TO_POINT
+ && !
+	`PULL_DEFINED
+(o))
+
+2985 
+	`buf_´štf
+ (&
+out
+, ",tun-ipv6");
+
+2991 ià(!
+‰
+)
+
+2993 
+‰
+ = 
+	`š™_tun
+ (
+o
+->
+dev
+,
+
+2994 
+o
+->
+dev_ty³
+,
+
+2995 
+o
+->
+tÝÞogy
+,
+
+2996 
+o
+->
+ifcÚfig_loÿl
+,
+
+2997 
+o
+->
+ifcÚfig_»mÙe_Ãtmask
+,
+
+2998 
+o
+->
+ifcÚfig_�v6_loÿl
+,
+
+2999 
+o
+->
+ifcÚfig_�v6_Ãtb™s
+,
+
+3000 
+o
+->
+ifcÚfig_�v6_»mÙe
+,
+
+3001 (
+š_addr_t
+)0,
+
+3002 (
+š_addr_t
+)0,
+
+3003 
+çl£
+,
+
+3004 
+NULL
+);
+
+3005 ià(
+‰
+)
+
+3006 
+‰_loÿl
+ = 
+Œue
+;
+
+3009 ià(
+‰
+ && 
+o
+->
+mode
+ =ð
+MODE_POINT_TO_POINT
+ && !
+	`PULL_DEFINED
+(o))
+
+3011 cÚ¡ *
+ios
+ = 
+	`ifcÚfig_ÝtiÚs_¡ršg
+ (
+‰
+, 
+»mÙe
+, 
+o
+->
+ifcÚfig_now¬n
+, 
+gc
+);
+
+3012 ià(
+ios
+ && 
+	`¡¾’
+ (ios))
+
+3013 
+	`buf_´štf
+ (&
+out
+, ",ifcÚfig %s", 
+ios
+);
+
+3015 ià(
+‰_loÿl
+)
+
+3017 
+	`ä“
+ (
+‰
+);
+
+3018 
+‰
+ = 
+NULL
+;
+
+3021 #ifdeà
+ENABLE_LZO
+
+
+3022 ià(
+o
+->
+lzo
+ & 
+LZO_SELECTED
+)
+
+3023 
+	`buf_´štf
+ (&
+out
+, ",comp-lzo");
+
+3026 #ifdeà
+ENABLE_FRAGMENT
+
+
+3027 ià(
+o
+->
+û
+.
+äagm’t
+)
+
+3028 
+	`buf_´štf
+ (&
+out
+, ",mtu-dynamic");
+
+3031 #ifdeà
+ENABLE_CRYPTO
+
+
+3033 #ifdeà
+ENABLE_SSL
+
+
+3034 
+	#TLS_CLIENT
+ (
+o
+->
+Žs_þ›Á
+)
+
+	)
+
+3035 
+	#TLS_SERVER
+ (
+o
+->
+Žs_£rv”
+)
+
+	)
+
+3037 
+	#TLS_CLIENT
+ (
+çl£
+)
+
+	)
+
+3038 
+	#TLS_SERVER
+ (
+çl£
+)
+
+	)
+
+3045 cÚ¡ *
+kd
+ = 
+	`keydœeùiÚ2ascii
+ (
+o
+->
+key_dœeùiÚ
+, 
+»mÙe
+);
+
+3046 ià(
+kd
+)
+
+3047 
+	`buf_´štf
+ (&
+out
+, ",keydœ %s", 
+kd
+);
+
+3053 ià(
+o
+->
+sh¬ed_£ü‘_fže
+ || 
+TLS_CLIENT
+ || 
+TLS_SERVER
+)
+
+3055 
+key_ty³
+ 
+kt
+;
+
+3057 
+	`ASSERT
+ ((
+o
+->
+sh¬ed_£ü‘_fže
+ !ð
+NULL
+)
+
+3058 + (
+TLS_CLIENT
+ =ð
+Œue
+)
+
+3059 + (
+TLS_SERVER
+ =ð
+Œue
+)
+
+3062 
+	`š™_key_ty³
+ (&
+kt
+, 
+o
+->
+c�h”Çme
+, o->
+c�h”Çme_defšed
+,
+
+3063 
+o
+->
+authÇme
+, o->
+authÇme_defšed
+,
+
+3064 
+o
+->
+keysize
+, 
+Œue
+, 
+çl£
+);
+
+3066 
+	`buf_´štf
+ (&
+out
+, ",c�h” %s", 
+	`c�h”_kt_Çme
+ (
+kt
+.
+c�h”
+));
+
+3067 
+	`buf_´štf
+ (&
+out
+, ",auth %s", 
+	`md_kt_Çme
+ (
+kt
+.
+dige¡
+));
+
+3068 
+	`buf_´štf
+ (&
+out
+, ",keysiz�%d", 
+kt
+.
+c�h”_Ëngth
+ * 8);
+
+3069 ià(
+o
+->
+sh¬ed_£ü‘_fže
+)
+
+3070 
+	`buf_´štf
+ (&
+out
+, ",secret");
+
+3071 ià(!
+o
+->
+»¶ay
+)
+
+3072 
+	`buf_´štf
+ (&
+out
+, ",no-replay");
+
+3073 ià(!
+o
+->
+u£_iv
+)
+
+3074 
+	`buf_´štf
+ (&
+out
+, ",no-iv");
+
+3076 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+3077 ià(
+o
+->
+u£_´ediùiÚ_»si¡ªû
+)
+
+3078 
+	`buf_´štf
+ (&
+out
+, ",use-prediction-resistance");
+
+3082 #ifdeà
+ENABLE_SSL
+
+
+3087 ià(
+TLS_CLIENT
+ || 
+TLS_SERVER
+)
+
+3089 ià(
+o
+->
+Žs_auth_fže
+)
+
+3090 
+	`buf_´štf
+ (&
+out
+, ",tls-auth");
+
+3092 ià(
+o
+->
+key_m‘hod
+ > 1)
+
+3093 
+	`buf_´štf
+ (&
+out
+, ",key-m‘hod %d", 
+o
+->
+key_m‘hod
+);
+
+3096 ià(
+»mÙe
+)
+
+3098 ià(
+TLS_CLIENT
+)
+
+3099 
+	`buf_´štf
+ (&
+out
+, ",tls-server");
+
+3100 ià(
+TLS_SERVER
+)
+
+3101 
+	`buf_´štf
+ (&
+out
+, ",tls-client");
+
+3105 ià(
+TLS_CLIENT
+)
+
+3106 
+	`buf_´štf
+ (&
+out
+, ",tls-client");
+
+3107 ià(
+TLS_SERVER
+)
+
+3108 
+	`buf_´štf
+ (&
+out
+, ",tls-server");
+
+3113 #undeà
+TLS_CLIENT
+
+
+3114 #undeà
+TLS_SERVER
+
+
+3118  
+	`BSTR
+ (&
+out
+);
+
+3119 
+	}
+}
+
+3128 
+boÞ
+
+
+3129 
+	$ÝtiÚs_cmp_equ®
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+)
+
+3131  
+	`ÝtiÚs_cmp_equ®_§ã
+ (
+aùu®
+, 
+ex³ùed
+, 
+	`¡¾’
+ (actual) + 1);
+
+3132 
+	}
+}
+
+3135 
+	$ÝtiÚs_w¬nšg
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+)
+
+3137 
+	`ÝtiÚs_w¬nšg_§ã
+ (
+aùu®
+, 
+ex³ùed
+, 
+	`¡¾’
+ (actual) + 1);
+
+3138 
+	}
+}
+
+3141 
+	$ÝtiÚs_w¬nšg_exŒaù_·rm1
+ (cÚ¡ *
+ÝtiÚ_¡ršg
+,
+
+3142 
+gc_¬’a
+ *
+gc_»t
+)
+
+3144 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3145 
+bufãr
+ 
+b
+ = 
+	`¡ršg_®loc_buf
+ (
+ÝtiÚ_¡ršg
+, &
+gc
+);
+
+3146 *
+p
+ = 
+	`gc_m®loc
+ (
+OPTION_PARM_SIZE
+, 
+çl£
+, &
+gc
+);
+
+3147 cÚ¡ *
+»t
+;
+
+3149 
+	`buf_·r£
+ (&
+b
+, ' ', 
+p
+, 
+OPTION_PARM_SIZE
+);
+
+3150 
+»t
+ = 
+	`¡ršg_®loc
+ (
+p
+, 
+gc_»t
+);
+
+3151 
+	`gc_ä“
+ (&
+gc
+);
+
+3152  
+»t
+;
+
+3153 
+	}
+}
+
+3156 
+	$ÝtiÚs_w¬nšg_§ã_sÿn2
+ (cÚ¡ 
+msgËv–
+,
+
+3157 cÚ¡ 
+d–im
+,
+
+3158 cÚ¡ 
+boÞ
+ 
+»pÜt_šcÚsi¡’t
+,
+
+3159 cÚ¡ *
+p1
+,
+
+3160 cÚ¡ 
+bufãr
+ *
+b2_¤c
+,
+
+3161 cÚ¡ *
+b1_Çme
+,
+
+3162 cÚ¡ *
+b2_Çme
+)
+
+3168 ià(
+	`¡ºcmp
+(
+p1
+, "proto ", 6) == 0 )
+
+3173 ià(
+	`¡¾’
+ (
+p1
+) > 0)
+
+3175 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3176 
+bufãr
+ 
+b2
+ = *
+b2_¤c
+;
+
+3177 cÚ¡ *
+p1_´efix
+ = 
+	`ÝtiÚs_w¬nšg_exŒaù_·rm1
+ (
+p1
+, &
+gc
+);
+
+3178 *
+p2
+ = 
+	`gc_m®loc
+ (
+OPTION_PARM_SIZE
+, 
+çl£
+, &
+gc
+);
+
+3180 
+	`buf_·r£
+ (&
+b2
+, 
+d–im
+, 
+p2
+, 
+OPTION_PARM_SIZE
+))
+
+3182 ià(
+	`¡¾’
+ (
+p2
+))
+
+3184 cÚ¡ *
+p2_´efix
+ = 
+	`ÝtiÚs_w¬nšg_exŒaù_·rm1
+ (
+p2
+, &
+gc
+);
+
+3186 ià(!
+	`¡rcmp
+ (
+p1
+, 
+p2
+))
+
+3187 
+dÚe
+;
+
+3188 ià(!
+	`¡rcmp
+ (
+p1_´efix
+, 
+p2_´efix
+))
+
+3190 ià(
+»pÜt_šcÚsi¡’t
+)
+
+3191 
+	`msg
+ (
+msgËv–
+, "WARNING: '%s' is used inconsistently, %s='%s', %s='%s'",
+
+3192 
+	`§ã_´št
+ (
+p1_´efix
+, &
+gc
+),
+
+3193 
+b1_Çme
+,
+
+3194 
+	`§ã_´št
+ (
+p1
+, &
+gc
+),
+
+3195 
+b2_Çme
+,
+
+3196 
+	`§ã_´št
+ (
+p2
+, &
+gc
+));
+
+3197 
+dÚe
+;
+
+3202 
+	`msg
+ (
+msgËv–
+, "WARNING: '%s' is…resent in %s config but missing in %s config, %s='%s'",
+
+3203 
+	`§ã_´št
+ (
+p1_´efix
+, &
+gc
+),
+
+3204 
+b1_Çme
+,
+
+3205 
+b2_Çme
+,
+
+3206 
+b1_Çme
+,
+
+3207 
+	`§ã_´št
+ (
+p1
+, &
+gc
+));
+
+3209 
+dÚe
+:
+
+3210 
+	`gc_ä“
+ (&
+gc
+);
+
+3212 
+	}
+}
+
+3215 
+	$ÝtiÚs_w¬nšg_§ã_sÿn1
+ (cÚ¡ 
+msgËv–
+,
+
+3216 cÚ¡ 
+d–im
+,
+
+3217 cÚ¡ 
+boÞ
+ 
+»pÜt_šcÚsi¡’t
+,
+
+3218 cÚ¡ 
+bufãr
+ *
+b1_¤c
+,
+
+3219 cÚ¡ 
+bufãr
+ *
+b2_¤c
+,
+
+3220 cÚ¡ *
+b1_Çme
+,
+
+3221 cÚ¡ *
+b2_Çme
+)
+
+3223 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3224 
+bufãr
+ 
+b
+ = *
+b1_¤c
+;
+
+3225 *
+p
+ = 
+	`gc_m®loc
+ (
+OPTION_PARM_SIZE
+, 
+Œue
+, &
+gc
+);
+
+3227 
+	`buf_·r£
+ (&
+b
+, 
+d–im
+, 
+p
+, 
+OPTION_PARM_SIZE
+))
+
+3228 
+	`ÝtiÚs_w¬nšg_§ã_sÿn2
+ (
+msgËv–
+, 
+d–im
+, 
+»pÜt_šcÚsi¡’t
+, 
+p
+, 
+b2_¤c
+, 
+b1_Çme
+, 
+b2_Çme
+);
+
+3230 
+	`gc_ä“
+ (&
+gc
+);
+
+3231 
+	}
+}
+
+3234 
+	$ÝtiÚs_w¬nšg_§ã_ml
+ (cÚ¡ 
+msgËv–
+, *
+aùu®
+, cÚ¡ *
+ex³ùed
+, 
+size_t
+ 
+aùu®_n
+)
+
+3236 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3238 ià(
+aùu®_n
+ > 0)
+
+3240 
+bufãr
+ 
+loÿl
+ = 
+	`®loc_buf_gc
+ (
+OPTION_PARM_SIZE
+ + 16, &
+gc
+);
+
+3241 
+bufãr
+ 
+»mÙe
+ = 
+	`®loc_buf_gc
+ (
+OPTION_PARM_SIZE
+ + 16, &
+gc
+);
+
+3242 
+aùu®
+[
+aùu®_n
+ - 1] = 0;
+
+3244 
+	`buf_´štf
+ (&
+loÿl
+, "v”siÚ %s", 
+ex³ùed
+);
+
+3245 
+	`buf_´štf
+ (&
+»mÙe
+, "v”siÚ %s", 
+aùu®
+);
+
+3247 
+	`ÝtiÚs_w¬nšg_§ã_sÿn1
+ (
+msgËv–
+, ',', 
+Œue
+,
+
+3248 &
+loÿl
+, &
+»mÙe
+,
+
+3251 
+	`ÝtiÚs_w¬nšg_§ã_sÿn1
+ (
+msgËv–
+, ',', 
+çl£
+,
+
+3252 &
+»mÙe
+, &
+loÿl
+,
+
+3256 
+	`gc_ä“
+ (&
+gc
+);
+
+3257 
+	}
+}
+
+3259 
+boÞ
+
+
+3260 
+	$ÝtiÚs_cmp_equ®_§ã
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+, 
+size_t
+ 
+aùu®_n
+)
+
+3262 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3263 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+3265 ià(
+aùu®_n
+ > 0)
+
+3267 
+aùu®
+[
+aùu®_n
+ - 1] = 0;
+
+3268 #iâdeà
+ENABLE_STRICT_OPTIONS_CHECK
+
+
+3269 ià(
+	`¡ºcmp
+ (
+aùu®
+, 
+ex³ùed
+, 2))
+
+3271 
+	`msg
+ (
+D_SHOW_OCC
+, "NOTE: Options consistency check may be skewed by version differences");
+
+3272 
+	`ÝtiÚs_w¬nšg_§ã_ml
+ (
+D_SHOW_OCC
+, 
+aùu®
+, 
+ex³ùed
+, 
+aùu®_n
+);
+
+3276 
+»t
+ = !
+	`¡rcmp
+ (
+aùu®
+, 
+ex³ùed
+);
+
+3278 
+	`gc_ä“
+ (&
+gc
+);
+
+3279  
+»t
+;
+
+3280 
+	}
+}
+
+3283 
+	$ÝtiÚs_w¬nšg_§ã
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+, 
+size_t
+ 
+aùu®_n
+)
+
+3285 
+	`ÝtiÚs_w¬nšg_§ã_ml
+ (
+M_WARN
+, 
+aùu®
+, 
+ex³ùed
+, 
+aùu®_n
+);
+
+3286 
+	}
+}
+
+3289 
+	$ÝtiÚs_¡ršg_v”siÚ
+ (cÚ¡ * 
+s
+, 
+gc_¬’a
+ *
+gc
+)
+
+3291 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (4, 
+gc
+);
+
+3292 
+	`¡ºýyÁ
+ ((*è
+	`BPTR
+ (&
+out
+), 
+s
+, 3);
+
+3293  
+	`BSTR
+ (&
+out
+);
+
+3294 
+	}
+}
+
+3299 
+	$fÜeign_ÝtiÚ
+ (
+ÝtiÚs
+ *
+o
+, *
+¬gv
+[], 
+Ën
+, 
+’v_£t
+ *
+es
+)
+
+3301 ià(
+Ën
+ > 0)
+
+3303 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+3304 
+bufãr
+ 
+Çme
+ = 
+	`®loc_buf_gc
+ (
+OPTION_PARM_SIZE
+, &
+gc
+);
+
+3305 
+bufãr
+ 
+v®ue
+ = 
+	`®loc_buf_gc
+ (
+OPTION_PARM_SIZE
+, &
+gc
+);
+
+3306 
+i
+;
+
+3307 
+boÞ
+ 
+fœ¡
+ = 
+Œue
+;
+
+3308 
+boÞ
+ 
+good
+ = 
+Œue
+;
+
+3310 
+good
+ &ð
+	`buf_´štf
+ (&
+Çme
+, "fÜeign_ÝtiÚ_%d", 
+o
+->
+fÜeign_ÝtiÚ_šdex
+ + 1);
+
+3311 ++
+o
+->
+fÜeign_ÝtiÚ_šdex
+;
+
+3312 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+3314 ià(
+¬gv
+[
+i
+])
+
+3316 ià(!
+fœ¡
+)
+
+3317 
+good
+ &ð
+	`buf_´štf
+ (&
+v®ue
+, " ");
+
+3318 
+good
+ &ð
+	`buf_´štf
+ (&
+v®ue
+, "%s", 
+¬gv
+[
+i
+]);
+
+3319 
+fœ¡
+ = 
+çl£
+;
+
+3322 ià(
+good
+)
+
+3323 
+	`£‹nv_¡r
+ (
+es
+, 
+	`BSTR
+(&
+Çme
+), BSTR(&
+v®ue
+));
+
+3325 
+	`msg
+ (
+M_WARN
+, "foreign_option:‚ame/value overflow");
+
+3326 
+	`gc_ä“
+ (&
+gc
+);
+
+3328 
+	}
+}
+
+3335 
+	$·r£_tÝÞogy
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+msgËv–
+)
+
+3337 ià(
+	`¡»q
+ (
+¡r
+, "net30"))
+
+3338  
+TOP_NET30
+;
+
+3339 ià(
+	`¡»q
+ (
+¡r
+, "p2p"))
+
+3340  
+TOP_P2P
+;
+
+3341 ià(
+	`¡»q
+ (
+¡r
+, "subnet"))
+
+3342  
+TOP_SUBNET
+;
+
+3345 
+	`msg
+ (
+msgËv–
+, "--topology must be‚et30,…2p, or subnet");
+
+3346  
+TOP_UNDEF
+;
+
+3348 
+	}
+}
+
+3351 
+	$´št_tÝÞogy
+ (cÚ¡ 
+tÝÞogy
+)
+
+3353 
+tÝÞogy
+)
+
+3355 
+TOP_UNDEF
+:
+
+3357 
+TOP_NET30
+:
+
+3359 
+TOP_P2P
+:
+
+3361 
+TOP_SUBNET
+:
+
+3366 
+	}
+}
+
+3368 #ià
+P2MP
+
+
+3374 
+	gglob®_auth_»Œy
+;
+
+3377 
+	$auth_»Œy_g‘
+ ()
+
+3379  
+glob®_auth_»Œy
+;
+
+3380 
+	}
+}
+
+3382 
+boÞ
+
+
+3383 
+	$auth_»Œy_£t
+ (cÚ¡ 
+msgËv–
+, cÚ¡ *
+ÝtiÚ
+)
+
+3385 ià(
+	`¡»q
+ (
+ÝtiÚ
+, "interact"))
+
+3386 
+glob®_auth_»Œy
+ = 
+AR_INTERACT
+;
+
+3387 ià(
+	`¡»q
+ (
+ÝtiÚ
+, "nointeract"))
+
+3388 
+glob®_auth_»Œy
+ = 
+AR_NOINTERACT
+;
+
+3389 ià(
+	`¡»q
+ (
+ÝtiÚ
+, "none"))
+
+3390 
+glob®_auth_»Œy
+ = 
+AR_NONE
+;
+
+3393 
+	`msg
+ (
+msgËv–
+, "--auth-retry method must be 'interact', 'nointeract', or 'none'");
+
+3394  
+çl£
+;
+
+3396  
+Œue
+;
+
+3397 
+	}
+}
+
+3400 
+	$auth_»Œy_´št
+ ()
+
+3402 
+glob®_auth_»Œy
+)
+
+3404 
+AR_NONE
+:
+
+3406 
+AR_NOINTERACT
+:
+
+3408 
+AR_INTERACT
+:
+
+3413 
+	}
+}
+
+3421 
+	$u§ge
+ ()
+
+3423 
+FILE
+ *
+å
+ = 
+	`msg_å
+(0);
+
+3425 #ifdeà
+ENABLE_SMALL
+
+
+3427 
+	`årštf
+ (
+å
+, "Usage message‚ot‡vailable\n");
+
+3431 
+ÝtiÚs
+ 
+o
+;
+
+3432 
+	`š™_ÝtiÚs
+ (&
+o
+, 
+Œue
+);
+
+3434 #ià
+	`defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+3435 
+	`årštf
+ (
+å
+, 
+u§ge_mes§ge
+,
+
+3436 
+t™Ë_¡ršg
+,
+
+3437 
+o
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+,
+
+3438 
+o
+.
+û
+.
+loÿl_pÜt
+, o.û.
+»mÙe_pÜt
+,
+
+3439 
+TUN_MTU_DEFAULT
+, 
+TAP_MTU_EXTRA_DEFAULT
+,
+
+3440 
+o
+.
+v”bos™y
+,
+
+3441 
+o
+.
+authÇme
+, o.
+c�h”Çme
+,
+
+3442 
+o
+.
+»¶ay_wšdow
+, o.
+»¶ay_time
+,
+
+3443 
+o
+.
+Žs_timeout
+, o.
+»ÃgÙŸ‹_£cÚds
+,
+
+3444 
+o
+.
+hªdshake_wšdow
+, o.
+Œªs™iÚ_wšdow
+);
+
+3445 #–ià
+	`defšed
+(
+ENABLE_CRYPTO
+)
+
+3446 
+	`årštf
+ (
+å
+, 
+u§ge_mes§ge
+,
+
+3447 
+t™Ë_¡ršg
+,
+
+3448 
+o
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+,
+
+3449 
+o
+.
+û
+.
+loÿl_pÜt
+, o.û.
+»mÙe_pÜt
+,
+
+3450 
+TUN_MTU_DEFAULT
+, 
+TAP_MTU_EXTRA_DEFAULT
+,
+
+3451 
+o
+.
+v”bos™y
+,
+
+3452 
+o
+.
+authÇme
+, o.
+c�h”Çme
+,
+
+3453 
+o
+.
+»¶ay_wšdow
+, o.
+»¶ay_time
+);
+
+3455 
+	`årštf
+ (
+å
+, 
+u§ge_mes§ge
+,
+
+3456 
+t™Ë_¡ršg
+,
+
+3457 
+o
+.
+û
+.
+cÚÃù_»Œy_£cÚds
+,
+
+3458 
+o
+.
+û
+.
+loÿl_pÜt
+, o.û.
+»mÙe_pÜt
+,
+
+3459 
+TUN_MTU_DEFAULT
+, 
+TAP_MTU_EXTRA_DEFAULT
+,
+
+3460 
+o
+.
+v”bos™y
+);
+
+3462 
+	`fæush
+(
+å
+);
+
+3466 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_USAGE
+);
+
+3467 
+	}
+}
+
+3470 
+	$u§ge_sm®l
+ ()
+
+3472 
+	`msg
+ (
+M_WARN
+|
+M_NOPREFIX
+, "Use --help for more information.");
+
+3473 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_USAGE
+);
+
+3474 
+	}
+}
+
+3477 
+	$show_lib¿ry_v”siÚs
+(cÚ¡ 
+æags
+)
+
+3479 #ifdeà
+ENABLE_SSL
+
+
+3480 
+	#SSL_LIB_VER_STR
+ 
+	`g‘_s¦_lib¿ry_v”siÚ
+()
+
+	)
+
+3482 
+	#SSL_LIB_VER_STR
+ ""
+
+	)
+
+3484 #ifdeà
+ENABLE_LZO
+
+
+3485 
+	#LZO_LIB_VER_STR
+ ", LZO ", 
+	`lzo_v”siÚ_¡ršg
+()
+
+	)
+
+3487 
+	#LZO_LIB_VER_STR
+ "", ""
+
+	)
+
+3490 
+	`msg
+ (
+æags
+, "lib¿ry v”siÚs: %s%s%s", 
+SSL_LIB_VER_STR
+, 
+LZO_LIB_VER_STR
+);
+
+3492 #undeà
+SSL_LIB_VER_STR
+
+
+3493 #undeà
+LZO_LIB_VER_STR
+
+
+3494 
+	}
+}
+
+3497 
+	$u§ge_v”siÚ
+ ()
+
+3499 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "%s", 
+t™Ë_¡ršg
+);
+
+3500 
+	`show_lib¿ry_v”siÚs
+Ð
+M_INFO
+|
+M_NOPREFIX
+ );
+
+3501 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "Originally developed by James Yonan");
+
+3502 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>");
+
+3503 #iâdeà
+ENABLE_SMALL
+
+
+3504 #ifdeà
+CONFIGURE_DEFINES
+
+
+3505 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "Compž�tim�defšes: %s", 
+CONFIGURE_DEFINES
+);
+
+3507 #ifdeà
+CONFIGURE_SPECIAL_BUILD
+
+
+3508 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "¥ecŸÈbužd: %s", 
+CONFIGURE_SPECIAL_BUILD
+);
+
+3510 #ifdeà
+CONFIGURE_GIT_REVISION
+
+
+3511 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "g™„evisiÚ: %s", 
+CONFIGURE_GIT_REVISION
+);
+
+3514 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_USAGE
+);
+
+3515 
+	}
+}
+
+3518 
+	$nÙnuÎ
+ (cÚ¡ *
+¬g
+, cÚ¡ *
+desü�tiÚ
+)
+
+3520 ià(!
+¬g
+)
+
+3521 
+	`msg
+ (
+M_USAGE
+, "You mu¡ defš�%s", 
+desü�tiÚ
+);
+
+3522 
+	}
+}
+
+3524 
+boÞ
+
+
+3525 
+	$¡ršg_defšed_equ®
+ (cÚ¡ *
+s1
+, cÚ¡ *
+s2
+)
+
+3527 ià(
+s1
+ && 
+s2
+)
+
+3528  !
+	`¡rcmp
+ (
+s1
+, 
+s2
+);
+
+3530  
+çl£
+;
+
+3531 
+	}
+}
+
+3535 
+	$pšg_»c_”r
+ (
+msgËv–
+)
+
+3537 
+	`msg
+ (
+msgËv–
+, "only one of --ping-exit or --ping-restart options may be specified");
+
+3538 
+	}
+}
+
+3542 
+	$pos™ive_©oi
+ (cÚ¡ *
+¡r
+)
+
+3544 cÚ¡ 
+i
+ = 
+	`©oi
+ (
+¡r
+);
+
+3545  
+i
+ < 0 ? 0 : i;
+
+3546 
+	}
+}
+
+3548 #ifdeà
+WIN32
+
+
+3550 
+	$©ou
+ (cÚ¡ *
+¡r
+)
+
+3552 
+v®
+ = 0;
+
+3553 
+	`ssÿnf
+ (
+¡r
+, "%u", &
+v®
+);
+
+3554  
+v®
+;
+
+3555 
+	}
+}
+
+3558 
+šlše
+ 
+boÞ
+
+
+3559 
+	$¥aû
+ (
+c
+)
+
+3561  
+c
+ =ð'\0' || 
+	`is¥aû
+ (c);
+
+3562 
+	}
+}
+
+3565 
+	$·r£_lše
+ (cÚ¡ *
+lše
+,
+
+3566 *
+p
+[],
+
+3567 cÚ¡ 
+n
+,
+
+3568 cÚ¡ *
+fže
+,
+
+3569 cÚ¡ 
+lše_num
+,
+
+3570 
+msgËv–
+,
+
+3571 
+gc_¬’a
+ *
+gc
+)
+
+3573 cÚ¡ 
+STATE_INITIAL
+ = 0;
+
+3574 cÚ¡ 
+STATE_READING_QUOTED_PARM
+ = 1;
+
+3575 cÚ¡ 
+STATE_READING_UNQUOTED_PARM
+ = 2;
+
+3576 cÚ¡ 
+STATE_DONE
+ = 3;
+
+3577 cÚ¡ 
+STATE_READING_SQUOTED_PARM
+ = 4;
+
+3579 cÚ¡ *
+”rÜ_´efix
+ = "";
+
+3581 
+»t
+ = 0;
+
+3582 cÚ¡ *
+c
+ = 
+lše
+;
+
+3583 
+¡©e
+ = 
+STATE_INITIAL
+;
+
+3584 
+boÞ
+ 
+back¦ash
+ = 
+çl£
+;
+
+3585 
+š
+, 
+out
+;
+
+3587 
+·rm
+[
+OPTION_PARM_SIZE
+];
+
+3588 
+·rm_Ën
+ = 0;
+
+3590 
+msgËv–
+ &ð~
+M_OPTERR
+;
+
+3592 ià(
+msgËv–
+ & 
+M_MSG_VIRT_OUT
+)
+
+3593 
+”rÜ_´efix
+ = "ERROR: ";
+
+3597 
+š
+ = *
+c
+;
+
+3598 
+out
+ = 0;
+
+3600 ià(!
+back¦ash
+ && 
+š
+ =ð'\\' && 
+¡©e
+ !ð
+STATE_READING_SQUOTED_PARM
+)
+
+3602 
+back¦ash
+ = 
+Œue
+;
+
+3606 ià(
+¡©e
+ =ð
+STATE_INITIAL
+)
+
+3608 ià(!
+	`¥aû
+ (
+š
+))
+
+3610 ià(
+š
+ == ';' || in == '#')
+
+3612 ià(!
+back¦ash
+ && 
+š
+ == '\"')
+
+3613 
+¡©e
+ = 
+STATE_READING_QUOTED_PARM
+;
+
+3614 ià(!
+back¦ash
+ && 
+š
+ == '\'')
+
+3615 
+¡©e
+ = 
+STATE_READING_SQUOTED_PARM
+;
+
+3618 
+out
+ = 
+š
+;
+
+3619 
+¡©e
+ = 
+STATE_READING_UNQUOTED_PARM
+;
+
+3623 ià(
+¡©e
+ =ð
+STATE_READING_UNQUOTED_PARM
+)
+
+3625 ià(!
+back¦ash
+ && 
+	`¥aû
+ (
+š
+))
+
+3626 
+¡©e
+ = 
+STATE_DONE
+;
+
+3628 
+out
+ = 
+š
+;
+
+3630 ià(
+¡©e
+ =ð
+STATE_READING_QUOTED_PARM
+)
+
+3632 ià(!
+back¦ash
+ && 
+š
+ == '\"')
+
+3633 
+¡©e
+ = 
+STATE_DONE
+;
+
+3635 
+out
+ = 
+š
+;
+
+3637 ià(
+¡©e
+ =ð
+STATE_READING_SQUOTED_PARM
+)
+
+3639 ià(
+š
+ == '\'')
+
+3640 
+¡©e
+ = 
+STATE_DONE
+;
+
+3642 
+out
+ = 
+š
+;
+
+3644 ià(
+¡©e
+ =ð
+STATE_DONE
+)
+
+3647 
+p
+[
+»t
+] = 
+	`gc_m®loc
+ (
+·rm_Ën
+ + 1, 
+Œue
+, 
+gc
+);
+
+3648 
+	`memýy
+ (
+p
+[
+»t
+], 
+·rm
+, 
+·rm_Ën
+);
+
+3649 
+p
+[
+»t
+][
+·rm_Ën
+] = '\0';
+
+3650 
+¡©e
+ = 
+STATE_INITIAL
+;
+
+3651 
+·rm_Ën
+ = 0;
+
+3652 ++
+»t
+;
+
+3655 ià(
+back¦ash
+ && 
+out
+)
+
+3657 ià(!(
+out
+ =ð'\\' || ouˆ=ð'\"' || 
+	`¥aû
+ (out)))
+
+3659 #ifdeà
+ENABLE_SMALL
+
+
+3660 
+	`msg
+ (
+msgËv–
+, "%sO±iÚ w¬nšg: Bad back¦ash ('\\'èu§g�š %s:%d", 
+”rÜ_´efix
+, 
+fže
+, 
+lše_num
+);
+
+3662 
+	`msg
+ (
+msgËv–
+, "%sO±iÚ w¬nšg: Bad back¦ash ('\\'èu§g�š %s:%d:„ememb”�h© back¦ashe ¬�Œ—‹d‡ sh–l-esÿ³ ªd iàyou‚“d�Ø·s back¦ash ch¬aù” a ·¹ oà¨Wšdow fž’ame, you should u£ doubË back¦ashe such‡ \"c:\\\\" 
+PACKAGE
+ "\\\\¡©ic.key\"", 
+”rÜ_´efix
+, 
+fže
+, 
+lše_num
+);
+
+3667 
+back¦ash
+ = 
+çl£
+;
+
+3671 ià(
+out
+)
+
+3673 ià(
+·rm_Ën
+ >ð
+	`SIZE
+ (
+·rm
+))
+
+3675 
+·rm
+[
+	`SIZE
+ (parm) - 1] = 0;
+
+3676 
+	`msg
+ (
+msgËv–
+, "%sOptionsƒrror: Parameter‡t %s:%d is�oo†ong (%d chars max): %s",
+
+3677 
+”rÜ_´efix
+, 
+fže
+, 
+lše_num
+, (è
+	`SIZE
+ (
+·rm
+),…arm);
+
+3680 
+·rm
+[
+·rm_Ën
+++] = 
+out
+;
+
+3684 ià(
+»t
+ >ð
+n
+)
+
+3687 } *
+c
+++ != '\0');
+
+3689 ià(
+¡©e
+ =ð
+STATE_READING_QUOTED_PARM
+)
+
+3691 
+	`msg
+ (
+msgËv–
+, "%sO±iÚ ”rÜ: NØþosšg quÙ©iÚ (\"èš %s:%d", 
+”rÜ_´efix
+, 
+fže
+, 
+lše_num
+);
+
+3694 ià(
+¡©e
+ =ð
+STATE_READING_SQUOTED_PARM
+)
+
+3696 
+	`msg
+ (
+msgËv–
+, "%sO±iÚ ”rÜ: NØþosšg sšgË quÙ©iÚ (\'èš %s:%d", 
+”rÜ_´efix
+, 
+fže
+, 
+lše_num
+);
+
+3699 ià(
+¡©e
+ !ð
+STATE_INITIAL
+)
+
+3701 
+	`msg
+ (
+msgËv–
+, "%sO±iÚ ”rÜ: Residu®…¬£ s�‹ (%dèš %s:%d", 
+”rÜ_´efix
+, 
+¡©e
+, 
+fže
+, 
+lše_num
+);
+
+3706 
+i
+;
+
+3707 
+i
+ = 0; i < 
+»t
+; ++i)
+
+3709 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "%s:%d ARG[%d] '%s'", 
+fže
+, 
+lše_num
+, 
+i
+, 
+p
+[i]);
+
+3713  
+»t
+;
+
+3714 
+	}
+}
+
+3717 
+	$by·ss_doubËdash
+ (**
+p
+)
+
+3719 ià(
+	`¡¾’
+ (*
+p
+è>ð3 && !
+	`¡ºcmp
+ (*p, "--", 2))
+
+3720 *
+p
+ += 2;
+
+3721 
+	}
+}
+
+3723 
+	sš_¤c
+ {
+
+3724 
+	#IS_TYPE_FP
+ 1
+
+	)
+
+3725 
+	#IS_TYPE_BUF
+ 2
+
+	)
+
+3726 
+	mty³
+;
+
+3728 
+FILE
+ *
+	må
+;
+
+3729 
+bufãr
+ *
+	mmuÉžše
+;
+
+3730 } 
+	mu
+;
+
+3733 
+boÞ
+
+
+3734 
+	$š_¤c_g‘
+ (cÚ¡ 
+š_¤c
+ *
+is
+, *
+lše
+, cÚ¡ 
+size
+)
+
+3736 ià(
+is
+->
+ty³
+ =ð
+IS_TYPE_FP
+)
+
+3738  
+	`BOOL_CAST
+ (
+	`fg‘s
+ (
+lše
+, 
+size
+, 
+is
+->
+u
+.
+å
+));
+
+3740 ià(
+is
+->
+ty³
+ =ð
+IS_TYPE_BUF
+)
+
+3742 
+boÞ
+ 
+¡©us
+ = 
+	`buf_·r£
+ (
+is
+->
+u
+.
+muÉžše
+, '\n', 
+lše
+, 
+size
+);
+
+3743 ià((è
+	`¡¾’
+ (
+lše
+è+ 1 < 
+size
+)
+
+3744 
+	`¡rÿt
+ (
+lše
+, "\n");
+
+3745  
+¡©us
+;
+
+3749 
+	`ASSERT
+ (0);
+
+3750  
+çl£
+;
+
+3752 
+	}
+}
+
+3755 
+	$»ad_šlše_fže
+ (
+š_¤c
+ *
+is
+, cÚ¡ *
+þo£_�g
+, 
+gc_¬’a
+ *
+gc
+)
+
+3757 
+lše
+[
+OPTION_LINE_SIZE
+];
+
+3758 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf
+ (8*
+OPTION_LINE_SIZE
+);
+
+3759 *
+»t
+;
+
+3760 
+boÞ
+ 
+’d�gfound
+ = 
+çl£
+;
+
+3762 
+	`š_¤c_g‘
+ (
+is
+, 
+lše
+,  (line)))
+
+3764 ià(!
+	`¡ºcmp
+ (
+lše
+, 
+þo£_�g
+, 
+	`¡¾’
+ (close_tag)))
+
+3766 
+’d�gfound
+ = 
+Œue
+;
+
+3769 ià(!
+	`buf_§ã
+ (&
+buf
+, 
+	`¡¾’
+(
+lše
+)+1))
+
+3772 
+bufãr
+ 
+buf2
+ = 
+	`®loc_buf
+ (
+buf
+.
+ÿ·c™y
+ * 2);
+
+3773 
+	`ASSERT
+ (
+	`buf_cÝy
+ (&
+buf2
+, &
+buf
+));
+
+3774 
+	`buf_þ—r
+ (&
+buf
+);
+
+3775 
+	`ä“_buf
+ (&
+buf
+);
+
+3776 
+buf
+ = 
+buf2
+;
+
+3778 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+lše
+);
+
+3780 ià(!
+’d�gfound
+)
+
+3781 
+	`msg
+ (
+M_WARN
+, "WARNING: End�g % missšg", 
+þo£_�g
+);
+
+3782 
+»t
+ = 
+	`¡ršg_®loc
+ (
+	`BSTR
+ (&
+buf
+), 
+gc
+);
+
+3783 
+	`buf_þ—r
+ (&
+buf
+);
+
+3784 
+	`ä“_buf
+ (&
+buf
+);
+
+3785 
+	`CLEAR
+ (
+lše
+);
+
+3786  
+»t
+;
+
+3787 
+	}
+}
+
+3789 
+boÞ
+
+
+3790 
+	$check_šlše_fže
+ (
+š_¤c
+ *
+is
+, *
+p
+[], 
+gc_¬’a
+ *
+gc
+)
+
+3792 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3793 ià(
+p
+[0] && !p[1])
+
+3795 *
+¬g
+ = 
+p
+[0];
+
+3796 ià(
+¬g
+[0] =ð'<' &&‡rg[
+	`¡¾’
+(arg)-1] == '>')
+
+3798 
+bufãr
+ 
+þo£_�g
+;
+
+3799 
+¬g
+[
+	`¡¾’
+(arg)-1] = '\0';
+
+3800 
+p
+[0] = 
+	`¡ršg_®loc
+ (
+¬g
++1, 
+gc
+);
+
+3801 
+p
+[1] = 
+	`¡ršg_®loc
+ (
+INLINE_FILE_TAG
+, 
+gc
+);
+
+3802 
+þo£_�g
+ = 
+	`®loc_buf
+ (
+	`¡¾’
+(
+p
+[0]) + 4);
+
+3803 
+	`buf_´štf
+ (&
+þo£_�g
+, "</%s>", 
+p
+[0]);
+
+3804 
+p
+[2] = 
+	`»ad_šlše_fže
+ (
+is
+, 
+	`BSTR
+ (&
+þo£_�g
+), 
+gc
+);
+
+3805 
+p
+[3] = 
+NULL
+;
+
+3806 
+	`ä“_buf
+ (&
+þo£_�g
+);
+
+3807 
+»t
+ = 
+Œue
+;
+
+3810  
+»t
+;
+
+3811 
+	}
+}
+
+3813 
+boÞ
+
+
+3814 
+	$check_šlše_fže_vŸ_å
+ (
+FILE
+ *
+å
+, *
+p
+[], 
+gc_¬’a
+ *
+gc
+)
+
+3816 
+š_¤c
+ 
+is
+;
+
+3817 
+is
+.
+ty³
+ = 
+IS_TYPE_FP
+;
+
+3818 
+is
+.
+u
+.
+å
+ = fp;
+
+3819  
+	`check_šlše_fže
+ (&
+is
+, 
+p
+, 
+gc
+);
+
+3820 
+	}
+}
+
+3822 
+boÞ
+
+
+3823 
+	$check_šlše_fže_vŸ_buf
+ (
+bufãr
+ *
+muÉžše
+, *
+p
+[], 
+gc_¬’a
+ *
+gc
+)
+
+3825 
+š_¤c
+ 
+is
+;
+
+3826 
+is
+.
+ty³
+ = 
+IS_TYPE_BUF
+;
+
+3827 
+is
+.
+u
+.
+muÉžše
+ = multiline;
+
+3828  
+	`check_šlše_fže
+ (&
+is
+, 
+p
+, 
+gc
+);
+
+3829 
+	}
+}
+
+3832 
+add_ÝtiÚ
+ (
+ÝtiÚs
+ *options,
+
+3833 *
+p
+[],
+
+3834 cÚ¡ *
+fže
+,
+
+3835 
+lše
+,
+
+3836 cÚ¡ 
+Ëv–
+,
+
+3837 cÚ¡ 
+msgËv–
+,
+
+3838 cÚ¡ 
+³rmissiÚ_mask
+,
+
+3839 *
+ÝtiÚ_ty³s_found
+,
+
+3840 
+’v_£t
+ *
+es
+);
+
+3843 
+	$»ad_cÚfig_fže
+ (
+ÝtiÚs
+ *options,
+
+3844 cÚ¡ *
+fže
+,
+
+3845 
+Ëv–
+,
+
+3846 cÚ¡ *
+tÝ_fže
+,
+
+3847 cÚ¡ 
+tÝ_lše
+,
+
+3848 cÚ¡ 
+msgËv–
+,
+
+3849 cÚ¡ 
+³rmissiÚ_mask
+,
+
+3850 *
+ÝtiÚ_ty³s_found
+,
+
+3851 
+’v_£t
+ *
+es
+)
+
+3853 cÚ¡ 
+max_»cursive_Ëv–s
+ = 10;
+
+3854 
+FILE
+ *
+å
+;
+
+3855 
+lše_num
+;
+
+3856 
+lše
+[
+OPTION_LINE_SIZE
+];
+
+3857 *
+p
+[
+MAX_PARMS
+];
+
+3859 ++
+Ëv–
+;
+
+3860 ià(
+Ëv–
+ <ð
+max_»cursive_Ëv–s
+)
+
+3862 ià(
+	`¡»q
+ (
+fže
+, "stdin"))
+
+3863 
+å
+ = 
+¡dš
+;
+
+3865 
+å
+ = 
+	`¶©fÜm_fÝ’
+ (
+fže
+, "r");
+
+3866 ià(
+å
+)
+
+3868 
+lše_num
+ = 0;
+
+3869 
+	`fg‘s
+(
+lše
+,  (lše), 
+å
+))
+
+3871 
+off£t
+ = 0;
+
+3872 
+	`CLEAR
+ (
+p
+);
+
+3873 ++
+lše_num
+;
+
+3875 ià(
+lše_num
+ =ð1 && 
+	`¡ºcmp
+ (
+lše
+, "\xEF\xBB\xBF", 3) == 0)
+
+3876 
+off£t
+ = 3;
+
+3877 ià(
+	`·r£_lše
+ (
+lše
+ + 
+off£t
+, 
+p
+, 
+	`SIZE
+ (p), 
+fže
+, 
+lše_num
+, 
+msgËv–
+, &
+ÝtiÚs
+->
+gc
+))
+
+3879 
+	`by·ss_doubËdash
+ (&
+p
+[0]);
+
+3880 
+	`check_šlše_fže_vŸ_å
+ (
+å
+, 
+p
+, &
+ÝtiÚs
+->
+gc
+);
+
+3881 
+	`add_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 
+fže
+, 
+lše_num
+, 
+Ëv–
+, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+3884 ià(
+å
+ !ð
+¡dš
+)
+
+3885 
+	`fþo£
+ (
+å
+);
+
+3889 
+	`msg
+ (
+msgËv–
+, "IÀ%s:%d: E¼Ü o³nšg cÚfigu¿tiÚ fže: %s", 
+tÝ_fže
+, 
+tÝ_lše
+, 
+fže
+);
+
+3894 
+	`msg
+ (
+msgËv–
+, "IÀ%s:%d: Maximum„ecursiv�šþud�Ëv– exûeded iÀšþud�©‹m± oàfž�% --…robably you hav�¨cÚfigu¿tiÚ fž�th©�r› tØšþud�™£lf.", 
+tÝ_fže
+, 
+tÝ_lše
+, 
+fže
+);
+
+3896 
+	`CLEAR
+ (
+lše
+);
+
+3897 
+	`CLEAR
+ (
+p
+);
+
+3898 
+	}
+}
+
+3901 
+	$»ad_cÚfig_¡ršg
+ (cÚ¡ *
+´efix
+,
+
+3902 
+ÝtiÚs
+ *options,
+
+3903 cÚ¡ *
+cÚfig
+,
+
+3904 cÚ¡ 
+msgËv–
+,
+
+3905 cÚ¡ 
+³rmissiÚ_mask
+,
+
+3906 *
+ÝtiÚ_ty³s_found
+,
+
+3907 
+’v_£t
+ *
+es
+)
+
+3909 
+lše
+[
+OPTION_LINE_SIZE
+];
+
+3910 
+bufãr
+ 
+muÉžše
+;
+
+3911 
+lše_num
+ = 0;
+
+3913 
+	`buf_£t_»ad
+ (&
+muÉžše
+, (
+ušt8_t
+*)
+cÚfig
+, 
+	`¡¾’
+ (config));
+
+3915 
+	`buf_·r£
+ (&
+muÉžše
+, '\n', 
+lše
+,  (line)))
+
+3917 *
+p
+[
+MAX_PARMS
+];
+
+3918 
+	`CLEAR
+ (
+p
+);
+
+3919 ++
+lše_num
+;
+
+3920 ià(
+	`·r£_lše
+ (
+lše
+, 
+p
+, 
+	`SIZE
+ (p), 
+´efix
+, 
+lše_num
+, 
+msgËv–
+, &
+ÝtiÚs
+->
+gc
+))
+
+3922 
+	`by·ss_doubËdash
+ (&
+p
+[0]);
+
+3923 
+	`check_šlše_fže_vŸ_buf
+ (&
+muÉžše
+, 
+p
+, &
+ÝtiÚs
+->
+gc
+);
+
+3924 
+	`add_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 
+´efix
+, 
+lše_num
+, 0, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+3926 
+	`CLEAR
+ (
+p
+);
+
+3928 
+	`CLEAR
+ (
+lše
+);
+
+3929 
+	}
+}
+
+3932 
+	$·r£_¬gv
+ (
+ÝtiÚs
+ *options,
+
+3933 cÚ¡ 
+¬gc
+,
+
+3934 *
+¬gv
+[],
+
+3935 cÚ¡ 
+msgËv–
+,
+
+3936 cÚ¡ 
+³rmissiÚ_mask
+,
+
+3937 *
+ÝtiÚ_ty³s_found
+,
+
+3938 
+’v_£t
+ *
+es
+)
+
+3940 
+i
+, 
+j
+;
+
+3943 ià(
+¬gc
+ <= 1)
+
+3944 
+	`u§ge
+ ();
+
+3947 ià(
+¬gc
+ =ð2 && 
+	`¡ºcmp
+ (
+¬gv
+[1], "--", 2))
+
+3949 *
+p
+[
+MAX_PARMS
+];
+
+3950 
+	`CLEAR
+ (
+p
+);
+
+3951 
+p
+[0] = "config";
+
+3952 
+p
+[1] = 
+¬gv
+[1];
+
+3953 
+	`add_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 
+NULL
+, 0, 0, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+3958 
+i
+ = 1; i < 
+¬gc
+; ++i)
+
+3960 *
+p
+[
+MAX_PARMS
+];
+
+3961 
+	`CLEAR
+ (
+p
+);
+
+3962 
+p
+[0] = 
+¬gv
+[
+i
+];
+
+3963 ià(
+	`¡ºcmp
+(
+p
+[0], "--", 2))
+
+3965 
+	`msg
+ (
+msgËv–
+, "I'm�ryšg�Ø·r£ \"%s\"‡ ª --ÝtiÚ…¬am‘” buˆI dÚ'ˆ£�¨Ëadšg '--'", 
+p
+[0]);
+
+3968 
+p
+[0] += 2;
+
+3970 
+j
+ = 1; j < 
+MAX_PARMS
+; ++j)
+
+3972 ià(
+i
+ + 
+j
+ < 
+¬gc
+)
+
+3974 *
+¬g
+ = 
+¬gv
+[
+i
+ + 
+j
+];
+
+3975 ià(
+	`¡ºcmp
+ (
+¬g
+, "--", 2))
+
+3976 
+p
+[
+j
+] = 
+¬g
+;
+
+3981 
+	`add_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 
+NULL
+, 0, 0, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+3982 
+i
+ +ð
+j
+ - 1;
+
+3985 
+	}
+}
+
+3987 
+boÞ
+
+
+3988 
+	$­¶y_push_ÝtiÚs
+ (
+ÝtiÚs
+ *options,
+
+3989 
+bufãr
+ *
+buf
+,
+
+3990 
+³rmissiÚ_mask
+,
+
+3991 *
+ÝtiÚ_ty³s_found
+,
+
+3992 
+’v_£t
+ *
+es
+)
+
+3994 
+lše
+[
+OPTION_PARM_SIZE
+];
+
+3995 
+lše_num
+ = 0;
+
+3996 cÚ¡ *
+fže
+ = "[PUSH-OPTIONS]";
+
+3997 cÚ¡ 
+msgËv–
+ = 
+D_PUSH_ERRORS
+|
+M_OPTERR
+;
+
+3999 
+	`buf_·r£
+ (
+buf
+, ',', 
+lše
+,  (line)))
+
+4001 *
+p
+[
+MAX_PARMS
+];
+
+4002 
+	`CLEAR
+ (
+p
+);
+
+4003 ++
+lše_num
+;
+
+4004 ià(
+	`·r£_lše
+ (
+lše
+, 
+p
+, 
+	`SIZE
+ (p), 
+fže
+, 
+lše_num
+, 
+msgËv–
+, &
+ÝtiÚs
+->
+gc
+))
+
+4006 
+	`add_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 
+fže
+, 
+lše_num
+, 0, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+4009  
+Œue
+;
+
+4010 
+	}
+}
+
+4013 
+	$ÝtiÚs_£rv”_impÜt
+ (
+ÝtiÚs
+ *
+o
+,
+
+4014 cÚ¡ *
+fž’ame
+,
+
+4015 
+msgËv–
+,
+
+4016 
+³rmissiÚ_mask
+,
+
+4017 *
+ÝtiÚ_ty³s_found
+,
+
+4018 
+’v_£t
+ *
+es
+)
+
+4020 
+	`msg
+ (
+D_PUSH
+, "OPTIONS IMPORT:„—dšg cl›Á s³cifiøÝtiÚ äom: %s", 
+fž’ame
+);
+
+4021 
+	`»ad_cÚfig_fže
+ (
+o
+,
+
+4022 
+fž’ame
+,
+
+4024 
+fž’ame
+,
+
+4026 
+msgËv–
+,
+
+4027 
+³rmissiÚ_mask
+,
+
+4028 
+ÝtiÚ_ty³s_found
+,
+
+4029 
+es
+);
+
+4030 
+	}
+}
+
+4032 
+	$ÝtiÚs_¡ršg_impÜt
+ (
+ÝtiÚs
+ *options,
+
+4033 cÚ¡ *
+cÚfig
+,
+
+4034 cÚ¡ 
+msgËv–
+,
+
+4035 cÚ¡ 
+³rmissiÚ_mask
+,
+
+4036 *
+ÝtiÚ_ty³s_found
+,
+
+4037 
+’v_£t
+ *
+es
+)
+
+4039 
+	`»ad_cÚfig_¡ršg
+ ("[CONFIG-STRING]", 
+ÝtiÚs
+, 
+cÚfig
+, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+4040 
+	}
+}
+
+4042 #ià
+P2MP
+
+
+4044 
+	#VERIFY_PERMISSION
+(
+mask
+è{ ià(!
+	`v”ify_³rmissiÚ
+(
+p
+[0], 
+fže
+, 
+lše
+, (mask), 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+msgËv–
+, 
+ÝtiÚs
+)è
+”r
+; }
+
+	)
+
+4046 
+boÞ
+
+
+4047 
+	$v”ify_³rmissiÚ
+ (cÚ¡ *
+Çme
+,
+
+4048 cÚ¡ * 
+fže
+,
+
+4049 
+lše
+,
+
+4050 cÚ¡ 
+ty³
+,
+
+4051 cÚ¡ 
+®lowed
+,
+
+4052 *
+found
+,
+
+4053 cÚ¡ 
+msgËv–
+,
+
+4054 
+ÝtiÚs
+* options)
+
+4056 ià(!(
+ty³
+ & 
+®lowed
+))
+
+4058 
+	`msg
+ (
+msgËv–
+, "ÝtiÚ '%s' cªnÙ b�u£d iÀthi cÚ‹xˆ(%s)", 
+Çme
+, 
+fže
+);
+
+4059  
+çl£
+;
+
+4062 ià(
+found
+)
+
+4063 *
+found
+ |ð
+ty³
+;
+
+4065 #iâdeà
+ENABLE_SMALL
+
+
+4072 ià((
+ty³
+ & 
+OPT_P_CONNECTION
+è&& 
+ÝtiÚs
+->
+cÚÃùiÚ_li¡
+)
+
+4074 ià(
+fže
+)
+
+4075 
+	`msg
+ (
+M_WARN
+, "O±iÚ '%s' iÀ%s:%d i ignÜed by…»viou <cÚÃùiÚ> block ", 
+Çme
+, 
+fže
+, 
+lše
+);
+
+4077 
+	`msg
+ (
+M_WARN
+, "O±iÚ '%s' i ignÜed by…»viou <cÚÃùiÚ> blocks", 
+Çme
+);
+
+4080  
+Œue
+;
+
+4081 
+	}
+}
+
+4085 
+	#VERIFY_PERMISSION
+(
+mask
+)
+
+	)
+
+4094 
+	#NM_QUOTE_HINT
+ (1<<0)
+
+	)
+
+4096 
+boÞ
+
+
+4097 
+	$no_mÜe_thª_n_¬gs
+ (cÚ¡ 
+msgËv–
+,
+
+4098 *
+p
+[],
+
+4099 cÚ¡ 
+max
+,
+
+4100 cÚ¡ 
+æags
+)
+
+4102 cÚ¡ 
+Ën
+ = 
+	`¡ršg_¬¿y_Ën
+ ((cÚ¡ **)
+p
+);
+
+4104 ià(!
+Ën
+)
+
+4105  
+çl£
+;
+
+4107 ià(
+Ën
+ > 
+max
+)
+
+4109 
+	`msg
+ (
+msgËv–
+, "the --%s directive should have‡t most %d…arameter%s.%s",
+
+4110 
+p
+[0],
+
+4111 
+max
+ - 1,
+
+4112 
+max
+ >= 3 ? "s" : "",
+
+4113 (
+æags
+ & 
+NM_QUOTE_HINT
+) ? " To…ass‡†ist of‡rguments‡s one of�he…arameters,�ryƒnclosing�hem in double quotes (\"\")." : "");
+
+4114  
+çl£
+;
+
+4117  
+Œue
+;
+
+4118 
+	}
+}
+
+4120 
+šlše
+ 
+
+4121 
+	$msgËv–_fÜw¬d_com·tibË
+ (
+ÝtiÚs
+ *ÝtiÚs, cÚ¡ 
+msgËv–
+)
+
+4123  
+ÝtiÚs
+->
+fÜw¬d_com·tibË
+ ? 
+M_WARN
+ : 
+msgËv–
+;
+
+4124 
+	}
+}
+
+4127 
+	$£t_u£r_sü�t
+ (
+ÝtiÚs
+ *options,
+
+4128 cÚ¡ **
+sü�t
+,
+
+4129 cÚ¡ *
+Ãw_sü�t
+,
+
+4130 cÚ¡ *
+ty³
+,
+
+4131 
+boÞ
+ 
+š_chroÙ
+)
+
+4133 ià(*
+sü�t
+) {
+
+4134 
+	`msg
+ (
+M_WARN
+, "Multiple --%s scripts defined. "
+
+4135 "Th�´eviou¦y cÚfigu»d sü�ˆi ov”ridd’.", 
+ty³
+);
+
+4137 *
+sü�t
+ = 
+Ãw_sü�t
+;
+
+4138 
+ÝtiÚs
+->
+u£r_sü�t_u£d
+ = 
+Œue
+;
+
+4140 #iâdeà
+ENABLE_SMALL
+
+
+4142 
+sü�t_Çme
+[100];
+
+4143 
+	`Ý’v²_¢´štf
+ (
+sü�t_Çme
+, (script_name),
+
+4144 "--% sü�t", 
+ty³
+);
+
+4146 ià(
+	`check_cmd_acûss
+ (*
+sü�t
+, 
+sü�t_Çme
+, (
+š_chroÙ
+ ? 
+ÝtiÚs
+->
+chroÙ_dœ
+ : 
+NULL
+)))
+
+4147 
+	`msg
+ (
+M_USAGE
+, "Please correct�hisƒrror.");
+
+4151 
+	}
+}
+
+4155 
+	$add_ÝtiÚ
+ (
+ÝtiÚs
+ *options,
+
+4156 *
+p
+[],
+
+4157 cÚ¡ *
+fže
+,
+
+4158 
+lše
+,
+
+4159 cÚ¡ 
+Ëv–
+,
+
+4160 cÚ¡ 
+msgËv–
+,
+
+4161 cÚ¡ 
+³rmissiÚ_mask
+,
+
+4162 *
+ÝtiÚ_ty³s_found
+,
+
+4163 
+’v_£t
+ *
+es
+)
+
+4165 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4166 cÚ¡ 
+boÞ
+ 
+puÎ_mode
+ = 
+	`BOOL_CAST
+ (
+³rmissiÚ_mask
+ & 
+OPT_P_PULL_MODE
+);
+
+4167 
+msgËv–_fc
+ = 
+	`msgËv–_fÜw¬d_com·tibË
+ (
+ÝtiÚs
+, 
+msgËv–
+);
+
+4169 
+	`ASSERT
+ (
+MAX_PARMS
+ >= 7);
+
+4175 ià(
+	`¡»q
+ (
+p
+[0], "£‹nv"è&&…[1] && sŒeq (p[1], "Ýt"è&& !(
+³rmissiÚ_mask
+ & 
+OPT_P_PULL_MODE
+))
+
+4177 
+p
+ += 2;
+
+4178 
+msgËv–_fc
+ = 
+M_WARN
+;
+
+4181 ià(!
+fže
+)
+
+4183 
+fže
+ = "[CMD-LINE]";
+
+4184 
+lše
+ = 1;
+
+4186 ià(
+	`¡»q
+ (
+p
+[0], "help"))
+
+4188 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4189 
+	`u§ge
+ ();
+
+4191 ià(
+	`¡»q
+ (
+p
+[0], "version"))
+
+4193 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4194 
+	`u§ge_v”siÚ
+ ();
+
+4196 ià(
+	`¡»q
+ (
+p
+[0], "config") &&…[1])
+
+4198 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CONFIG
+);
+
+4201 ià(!
+ÝtiÚs
+->
+cÚfig
+)
+
+4202 
+ÝtiÚs
+->
+cÚfig
+ = 
+p
+[1];
+
+4204 
+	`»ad_cÚfig_fže
+ (
+ÝtiÚs
+, 
+p
+[1], 
+Ëv–
+, 
+fže
+, 
+lše
+, 
+msgËv–
+, 
+³rmissiÚ_mask
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+4206 #ià
+	`defšed
+(
+ENABLE_DEBUG
+è&& !defšed(
+ENABLE_SMALL
+)
+
+4207 ià(
+	`¡»q
+ (
+p
+[0], "show-gateway"))
+
+4209 
+rou‹_g©eway_šfo
+ 
+rgi
+;
+
+4210 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4211 
+	`g‘_deçuÉ_g©eway
+(&
+rgi
+);
+
+4212 
+	`´št_deçuÉ_g©eway
+(
+M_INFO
+, &
+rgi
+);
+
+4213 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+4217 ià(
+	`¡»q
+ (
+p
+[0], "foreign-option") &&…[1])
+
+4219 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+4220 
+	`fÜeign_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 3, 
+es
+);
+
+4223 ià(
+	`¡»q
+ (
+p
+[0], "echo") || streq (p[0], "parameter"))
+
+4225 
+bufãr
+ 
+¡ršg
+ = 
+	`®loc_buf_gc
+ (
+OPTION_PARM_SIZE
+, &
+gc
+);
+
+4226 
+j
+;
+
+4227 
+boÞ
+ 
+good
+ = 
+Œue
+;
+
+4229 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ECHO
+);
+
+4231 
+j
+ = 1; j < 
+MAX_PARMS
+; ++j)
+
+4233 ià(!
+p
+[
+j
+])
+
+4235 ià(
+j
+ > 1)
+
+4236 
+good
+ &ð
+	`buf_´štf
+ (&
+¡ršg
+, " ");
+
+4237 
+good
+ &ð
+	`buf_´štf
+ (&
+¡ršg
+, "%s", 
+p
+[
+j
+]);
+
+4239 ià(
+good
+)
+
+4244 
+	`msg
+ (
+M_INFO
+, "%s:%s",
+
+4245 
+puÎ_mode
+ ? "ECHO-PULL" : "ECHO",
+
+4246 
+	`BSTR
+ (&
+¡ršg
+));
+
+4248 #ifdeà
+ENABLE_MANAGEMENT
+
+
+4249 ià(
+mªagem’t
+)
+
+4250 
+	`mªagem’t_echo
+ (
+mªagem’t
+, 
+	`BSTR
+ (&
+¡ršg
+), 
+puÎ_mode
+);
+
+4254 
+	`msg
+ (
+M_WARN
+, "echo/parameter option overflow");
+
+4256 #ifdeà
+ENABLE_MANAGEMENT
+
+
+4257 ià(
+	`¡»q
+ (
+p
+[0], "management") &&…[1] &&…[2])
+
+4259 
+pÜt
+ = 0;
+
+4261 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4262 ià(
+	`¡»q
+ (
+p
+[2], "unix"))
+
+4264 #ià
+UNIX_SOCK_SUPPORT
+
+
+4265 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_UNIX_SOCK
+;
+
+4267 
+	`msg
+ (
+msgËv–
+, "MANAGEMENT:�his…latform does‚ot support unix domain sockets");
+
+4268 
+”r
+;
+
+4273 
+pÜt
+ = 
+	`©oi
+ (
+p
+[2]);
+
+4274 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+4276 
+	`msg
+ (
+msgËv–
+, "port‚umber‡ssociated with --management directive is out of„ange");
+
+4277 
+”r
+;
+
+4281 
+ÝtiÚs
+->
+mªagem’t_addr
+ = 
+p
+[1];
+
+4282 
+ÝtiÚs
+->
+mªagem’t_pÜt
+ = 
+pÜt
+;
+
+4283 ià(
+p
+[3])
+
+4285 
+ÝtiÚs
+->
+mªagem’t_u£r_·ss
+ = 
+p
+[3];
+
+4288 ià(
+	`¡»q
+ (
+p
+[0], "management-client-user") &&…[1])
+
+4290 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4291 
+ÝtiÚs
+->
+mªagem’t_þ›Á_u£r
+ = 
+p
+[1];
+
+4293 ià(
+	`¡»q
+ (
+p
+[0], "management-client-group") &&…[1])
+
+4295 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4296 
+ÝtiÚs
+->
+mªagem’t_þ›Á_group
+ = 
+p
+[1];
+
+4298 ià(
+	`¡»q
+ (
+p
+[0], "management-query-passwords"))
+
+4300 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4301 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_QUERY_PASSWORDS
+;
+
+4303 ià(
+	`¡»q
+ (
+p
+[0], "management-query-remote"))
+
+4305 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4306 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_QUERY_REMOTE
+;
+
+4308 ià(
+	`¡»q
+ (
+p
+[0], "management-query-proxy"))
+
+4310 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4311 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_QUERY_PROXY
+;
+
+4312 
+ÝtiÚs
+->
+fÜû_cÚÃùiÚ_li¡
+ = 
+Œue
+;
+
+4314 ià(
+	`¡»q
+ (
+p
+[0], "management-hold"))
+
+4316 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4317 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_HOLD
+;
+
+4319 ià(
+	`¡»q
+ (
+p
+[0], "management-signal"))
+
+4321 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4322 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_SIGNAL
+;
+
+4324 ià(
+	`¡»q
+ (
+p
+[0], "management-forget-disconnect"))
+
+4326 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4327 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_FORGET_DISCONNECT
+;
+
+4329 ià(
+	`¡»q
+ (
+p
+[0], "management-up-down"))
+
+4331 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4332 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_UP_DOWN
+;
+
+4334 ià(
+	`¡»q
+ (
+p
+[0], "management-client"))
+
+4336 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4337 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_CONNECT_AS_CLIENT
+;
+
+4338 
+ÝtiÚs
+->
+mªagem’t_wr™e_³”_šfo_fže
+ = 
+p
+[1];
+
+4340 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+4341 ià(
+	`¡»q
+ (
+p
+[0], "management-external-key"))
+
+4343 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4344 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_EXTERNAL_KEY
+;
+
+4347 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+4348 ià(
+	`¡»q
+ (
+p
+[0], "management-client-auth"))
+
+4350 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4351 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð
+MF_CLIENT_AUTH
+;
+
+4354 #ifdeà
+ENABLE_X509_TRACK
+
+
+4355 ià(
+	`¡»q
+ (
+p
+[0], "x509-track") &&…[1])
+
+4357 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4358 
+	`x509_Œack_add
+ (&
+ÝtiÚs
+->
+x509_Œack
+, 
+p
+[1], 
+msgËv–
+, &ÝtiÚs->
+gc
+);
+
+4361 #ifdeà
+MANAGEMENT_PF
+
+
+4362 ià(
+	`¡»q
+ (
+p
+[0], "management-client-pf"))
+
+4364 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4365 
+ÝtiÚs
+->
+mªagem’t_æags
+ |ð(
+MF_CLIENT_PF
+ | 
+MF_CLIENT_AUTH
+);
+
+4368 ià(
+	`¡»q
+ (
+p
+[0], "management-log-cache") &&…[1])
+
+4370 
+ÿche
+;
+
+4372 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4373 
+ÿche
+ = 
+	`©oi
+ (
+p
+[1]);
+
+4374 ià(
+ÿche
+ < 1)
+
+4376 
+	`msg
+ (
+msgËv–
+, "--management-log-cache…arameter is out of„ange");
+
+4377 
+”r
+;
+
+4379 
+ÝtiÚs
+->
+mªagem’t_log_hi¡Üy_ÿche
+ = 
+ÿche
+;
+
+4382 #ifdeà
+ENABLE_PLUGIN
+
+
+4383 ià(
+	`¡»q
+ (
+p
+[0], "plugin") &&…[1])
+
+4385 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PLUGIN
+);
+
+4386 ià(!
+ÝtiÚs
+->
+¶ugš_li¡
+)
+
+4387 
+ÝtiÚs
+->
+¶ugš_li¡
+ = 
+	`¶ugš_ÝtiÚ_li¡_Ãw
+ (&ÝtiÚs->
+gc
+);
+
+4388 ià(!
+	`¶ugš_ÝtiÚ_li¡_add
+ (
+ÝtiÚs
+->
+¶ugš_li¡
+, &
+p
+[1], &ÝtiÚs->
+gc
+))
+
+4390 
+	`msg
+ (
+msgËv–
+, "¶ugš‡dd fažed: %s", 
+p
+[1]);
+
+4391 
+”r
+;
+
+4395 ià(
+	`¡»q
+ (
+p
+[0], "mode") &&…[1])
+
+4397 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4398 ià(
+	`¡»q
+ (
+p
+[1], "p2p"))
+
+4399 
+ÝtiÚs
+->
+mode
+ = 
+MODE_POINT_TO_POINT
+;
+
+4400 #ià
+P2MP_SERVER
+
+
+4401 ià(
+	`¡»q
+ (
+p
+[1], "server"))
+
+4402 
+ÝtiÚs
+->
+mode
+ = 
+MODE_SERVER
+;
+
+4406 
+	`msg
+ (
+msgËv–
+, "Bad --mod�·¿m‘”: %s", 
+p
+[1]);
+
+4407 
+”r
+;
+
+4410 ià(
+	`¡»q
+ (
+p
+[0], "dev") &&…[1])
+
+4412 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4413 
+ÝtiÚs
+->
+dev
+ = 
+p
+[1];
+
+4415 ià(
+	`¡»q
+ (
+p
+[0], "dev-type") &&…[1])
+
+4417 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4418 
+ÝtiÚs
+->
+dev_ty³
+ = 
+p
+[1];
+
+4420 ià(
+	`¡»q
+ (
+p
+[0], "dev-node") &&…[1])
+
+4422 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4423 
+ÝtiÚs
+->
+dev_node
+ = 
+p
+[1];
+
+4425 ià(
+	`¡»q
+ (
+p
+[0], "lladdr") &&…[1])
+
+4427 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4428 ià(
+	`mac_addr_§ã
+ (
+p
+[1]))
+
+4429 
+ÝtiÚs
+->
+Îaddr
+ = 
+p
+[1];
+
+4432 
+	`msg
+ (
+msgËv–
+, "Îadd¸·rm '%s' mu¡ b�¨MAC‡dd»ss", 
+p
+[1]);
+
+4433 
+”r
+;
+
+4436 ià(
+	`¡»q
+ (
+p
+[0], "topology") &&…[1])
+
+4438 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4439 
+ÝtiÚs
+->
+tÝÞogy
+ = 
+	`·r£_tÝÞogy
+ (
+p
+[1], 
+msgËv–
+);
+
+4441 ià(
+	`¡»q
+ (
+p
+[0], "tun-ipv6"))
+
+4443 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4444 
+ÝtiÚs
+->
+tun_�v6
+ = 
+Œue
+;
+
+4446 #ifdeà
+ENABLE_IPROUTE
+
+
+4447 ià(
+	`¡»q
+ (
+p
+[0], "iproute") &&…[1])
+
+4449 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4450 
+�rou‹_·th
+ = 
+p
+[1];
+
+4453 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig") &&…[1] &&…[2])
+
+4455 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4456 ià(
+	`�_Ü_dns_addr_§ã
+ (
+p
+[1], 
+ÝtiÚs
+->
+®low_puÎ_fqdn
+) && ip_or_dns_addr_safe (p[2], options->allow_pull_fqdn))
+
+4458 
+ÝtiÚs
+->
+ifcÚfig_loÿl
+ = 
+p
+[1];
+
+4459 
+ÝtiÚs
+->
+ifcÚfig_»mÙe_Ãtmask
+ = 
+p
+[2];
+
+4463 
+	`msg
+ (
+msgËv–
+, "ifcÚfig…¬m '%s'‡nd '%s' mu¡ b�v®id‡dd»s£s", 
+p
+[1],…[2]);
+
+4464 
+”r
+;
+
+4467 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-ipv6") &&…[1] &&…[2] )
+
+4469 
+Ãtb™s
+;
+
+4470 * 
+�v6_loÿl
+;
+
+4472 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4473 iàÐ
+	`g‘_�v6_addr
+Ð
+p
+[1], 
+NULL
+, &
+Ãtb™s
+, &
+�v6_loÿl
+, 
+msgËv–
+ ) &&
+
+4474 
+	`�v6_addr_§ã
+Ð
+p
+[2] ) )
+
+4476 iàÐ
+Ãtb™s
+ < 64 ||‚etbits > 124 )
+
+4478 
+	`msg
+Ð
+msgËv–
+, "ifcÚfig-�v6: /Ãtb™ mu¡ b�b‘w“À64‡nd 124,‚Ù '/%d'", 
+Ãtb™s
+ );
+
+4479 
+”r
+;
+
+4482 ià(
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+)
+
+4484 
+	`ä“
+ ((*è
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+);
+
+4486 
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+ = 
+�v6_loÿl
+;
+
+4487 
+ÝtiÚs
+->
+ifcÚfig_�v6_Ãtb™s
+ = 
+Ãtb™s
+;
+
+4488 
+ÝtiÚs
+->
+ifcÚfig_�v6_»mÙe
+ = 
+p
+[2];
+
+4492 
+	`msg
+ (
+msgËv–
+, "ifcÚfig-�v6…¬m '%s'‡nd '%s' mu¡ b�v®id‡dd»s£s", 
+p
+[1],…[2]);
+
+4493 
+”r
+;
+
+4496 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-noexec"))
+
+4498 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4499 
+ÝtiÚs
+->
+ifcÚfig_nÛxec
+ = 
+Œue
+;
+
+4501 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-nowarn"))
+
+4503 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+4504 
+ÝtiÚs
+->
+ifcÚfig_now¬n
+ = 
+Œue
+;
+
+4506 ià(
+	`¡»q
+ (
+p
+[0], "local") &&…[1])
+
+4508 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4509 
+ÝtiÚs
+->
+û
+.
+loÿl
+ = 
+p
+[1];
+
+4511 ià(
+	`¡»q
+ (
+p
+[0], "remote-random"))
+
+4513 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4514 
+ÝtiÚs
+->
+»mÙe_¿ndom
+ = 
+Œue
+;
+
+4516 ià(
+	`¡»q
+ (
+p
+[0], "connection") &&…[1])
+
+4518 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4519 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+4521 
+ÝtiÚs
+ 
+sub
+;
+
+4522 
+cÚÃùiÚ_’Œy
+ *
+e
+;
+
+4524 
+	`š™_ÝtiÚs
+ (&
+sub
+, 
+Œue
+);
+
+4525 
+sub
+.
+û
+ = 
+ÝtiÚs
+->ce;
+
+4526 
+	`»ad_cÚfig_¡ršg
+ ("[CONNECTION-OPTIONS]", &
+sub
+, 
+p
+[2], 
+msgËv–
+, 
+OPT_P_CONNECTION
+, 
+ÝtiÚ_ty³s_found
+, 
+es
+);
+
+4527 ià(!
+sub
+.
+û
+.
+»mÙe
+)
+
+4529 
+	`msg
+ (
+msgËv–
+, "Each 'connection' block must containƒxactly one 'remote' directive");
+
+4530 
+”r
+;
+
+4533 
+e
+ = 
+	`®loc_cÚÃùiÚ_’Œy
+ (
+ÝtiÚs
+, 
+msgËv–
+);
+
+4534 ià(!
+e
+)
+
+4535 
+”r
+;
+
+4536 *
+e
+ = 
+sub
+.
+û
+;
+
+4537 
+	`gc_Œªsãr
+ (&
+ÝtiÚs
+->
+gc
+, &
+sub
+.gc);
+
+4538 
+	`unš™_ÝtiÚs
+ (&
+sub
+);
+
+4541 ià(
+	`¡»q
+ (
+p
+[0], "ignore-unknown-option") &&…[1])
+
+4543 
+i
+;
+
+4544 
+j
+;
+
+4545 
+numignÜed
+=0;
+
+4546 cÚ¡ **
+ignÜe
+;
+
+4548 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4550 
+i
+=1;
+p
+[i];i++)
+
+4551 
+numignÜed
+++;
+
+4554 
+i
+=0;
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+ &&
+
+4555 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+]; i++)
+
+4556 
+numignÜed
+++;
+
+4559 
+	`ALLOC_ARRAY_GC
+ (
+ignÜe
+, cÚ¡ *, 
+numignÜed
++1, &
+ÝtiÚs
+->
+gc
+);
+
+4560 
+i
+=0;
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+ &&
+
+4561 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+]; i++)
+
+4562 
+ignÜe
+[
+i
+]=
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[i];
+
+4564 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+=
+ignÜe
+;
+
+4566 
+j
+=1;
+p
+[j];j++)
+
+4569 ià(
+p
+[
+j
+][0]=='-' &&…[j][1]=='-')
+
+4570 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+] = (
+p
+[
+j
+]+2);
+
+4572 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+] = 
+p
+[
+j
+];
+
+4573 
+i
+++;
+
+4576 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+] = 
+NULL
+;
+
+4578 ià(
+	`¡»q
+ (
+p
+[0], "remote-ip-hint") &&…[1])
+
+4580 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4581 
+ÝtiÚs
+->
+»mÙe_�_hšt
+ = 
+p
+[1];
+
+4583 #ià
+HTTP_PROXY_OVERRIDE
+
+
+4584 ià(
+	`¡»q
+ (
+p
+[0], "http-proxy-override") &&…[1] &&…[2])
+
+4586 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4587 
+ÝtiÚs
+->
+h‰p_´oxy_ov”ride
+ = 
+	`·r£_h‰p_´oxy_ov”ride
+(
+p
+[1],…[2],…[3], 
+msgËv–
+, &ÝtiÚs->
+gc
+);
+
+4588 ià(!
+ÝtiÚs
+->
+h‰p_´oxy_ov”ride
+)
+
+4589 
+”r
+;
+
+4590 
+ÝtiÚs
+->
+fÜû_cÚÃùiÚ_li¡
+ = 
+Œue
+;
+
+4593 ià(
+	`¡»q
+ (
+p
+[0], "remote") &&…[1])
+
+4595 
+»mÙe_’Œy
+ 
+»
+;
+
+4596 
+»
+.
+»mÙe
+ = 
+NULL
+;
+
+4597 
+»
+.
+»mÙe_pÜt
+ =„e.
+´Ùo
+ = -1;
+
+4599 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4600 
+»
+.
+»mÙe
+ = 
+p
+[1];
+
+4601 ià(
+p
+[2])
+
+4603 cÚ¡ 
+pÜt
+ = 
+	`©oi
+ (
+p
+[2]);
+
+4604 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+4606 
+	`msg
+ (
+msgËv–
+, "»mÙe:…Üˆnumb”‡ssocŸ‹d w™h ho¡ % i ouˆoà¿nge", 
+p
+[1]);
+
+4607 
+”r
+;
+
+4609 
+»
+.
+»mÙe_pÜt
+ = 
+pÜt
+;
+
+4610 ià(
+p
+[3])
+
+4612 cÚ¡ 
+´Ùo
+ = 
+	`ascii2´Ùo
+ (
+p
+[3]);
+
+4613 ià(
+´Ùo
+ < 0)
+
+4615 
+	`msg
+ (
+msgËv–
+, "»mÙe: bad…rÙocÞ‡ssocŸ‹d w™h ho¡ %s: '%s'", 
+p
+[1],…[3]);
+
+4616 
+”r
+;
+
+4618 
+»
+.
+´Ùo
+ =…roto;
+
+4621 ià(
+³rmissiÚ_mask
+ & 
+OPT_P_GENERAL
+)
+
+4623 
+»mÙe_’Œy
+ *
+e
+ = 
+	`®loc_»mÙe_’Œy
+ (
+ÝtiÚs
+, 
+msgËv–
+);
+
+4624 ià(!
+e
+)
+
+4625 
+”r
+;
+
+4626 *
+e
+ = 
+»
+;
+
+4628 ià(
+³rmissiÚ_mask
+ & 
+OPT_P_CONNECTION
+)
+
+4630 
+	`cÚÃùiÚ_’Œy_lßd_»
+ (&
+ÝtiÚs
+->
+û
+, &
+»
+);
+
+4633 ià(
+	`¡»q
+ (
+p
+[0], "resolv-retry") &&…[1])
+
+4635 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4636 ià(
+	`¡»q
+ (
+p
+[1], "infinite"))
+
+4637 
+ÝtiÚs
+->
+»sÞve_»Œy_£cÚds
+ = 
+RESOLV_RETRY_INFINITE
+;
+
+4639 
+ÝtiÚs
+->
+»sÞve_»Œy_£cÚds
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4641 ià(
+	`¡»q
+ (
+p
+[0], "connect-retry") &&…[1])
+
+4643 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4644 
+ÝtiÚs
+->
+û
+.
+cÚÃù_»Œy_£cÚds
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4645 
+ÝtiÚs
+->
+û
+.
+cÚÃù_»Œy_defšed
+ = 
+Œue
+;
+
+4647 ià(
+	`¡»q
+ (
+p
+[0], "connect-timeout") &&…[1])
+
+4649 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4650 
+ÝtiÚs
+->
+û
+.
+cÚÃù_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4651 
+ÝtiÚs
+->
+û
+.
+cÚÃù_timeout_defšed
+ = 
+Œue
+;
+
+4653 ià(
+	`¡»q
+ (
+p
+[0], "connect-retry-max") &&…[1])
+
+4655 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4656 
+ÝtiÚs
+->
+û
+.
+cÚÃù_»Œy_max
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4658 ià(
+	`¡»q
+ (
+p
+[0], "ipchange") &&…[1])
+
+4660 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+4661 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+4662 
+”r
+;
+
+4663 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+,
+
+4664 &
+ÝtiÚs
+->
+�chªge
+,
+
+4665 
+	`¡ršg_sub¡™u‹
+ (
+p
+[1], ',', ' ', &
+ÝtiÚs
+->
+gc
+),
+
+4666 "�chªge", 
+Œue
+);
+
+4668 ià(
+	`¡»q
+ (
+p
+[0], "float"))
+
+4670 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+4671 
+ÝtiÚs
+->
+û
+.
+»mÙe_æßt
+ = 
+Œue
+;
+
+4673 #ifdeà
+ENABLE_DEBUG
+
+
+4674 ià(
+	`¡»q
+ (
+p
+[0], "gremlin") &&…[1])
+
+4676 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4677 
+ÝtiÚs
+->
+g»mlš
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4680 ià(
+	`¡»q
+ (
+p
+[0], "chroot") &&…[1])
+
+4682 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4683 
+ÝtiÚs
+->
+chroÙ_dœ
+ = 
+p
+[1];
+
+4685 ià(
+	`¡»q
+ (
+p
+[0], "cd") &&…[1])
+
+4687 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4688 ià(
+	`¶©fÜm_chdœ
+ (
+p
+[1]))
+
+4690 
+	`msg
+ (
+M_ERR
+, "cd�Ø'%s' fažed", 
+p
+[1]);
+
+4691 
+”r
+;
+
+4693 
+ÝtiÚs
+->
+cd_dœ
+ = 
+p
+[1];
+
+4695 #ifdeà
+ENABLE_SELINUX
+
+
+4696 ià(
+	`¡»q
+ (
+p
+[0], "setcon") &&…[1])
+
+4698 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4699 
+ÝtiÚs
+->
+£lšux_cÚ‹xt
+ = 
+p
+[1];
+
+4702 ià(
+	`¡»q
+ (
+p
+[0], "writepid") &&…[1])
+
+4704 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4705 
+ÝtiÚs
+->
+wr™•id
+ = 
+p
+[1];
+
+4707 ià(
+	`¡»q
+ (
+p
+[0], "up") &&…[1])
+
+4709 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+4710 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+4711 
+”r
+;
+
+4712 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+up_sü�t
+, 
+p
+[1], "up", 
+çl£
+);
+
+4714 ià(
+	`¡»q
+ (
+p
+[0], "down") &&…[1])
+
+4716 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+4717 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+4718 
+”r
+;
+
+4719 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+down_sü�t
+, 
+p
+[1], "down", 
+Œue
+);
+
+4721 ià(
+	`¡»q
+ (
+p
+[0], "down-pre"))
+
+4723 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4724 
+ÝtiÚs
+->
+down_´e
+ = 
+Œue
+;
+
+4726 ià(
+	`¡»q
+ (
+p
+[0], "up-delay"))
+
+4728 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4729 
+ÝtiÚs
+->
+up_d–ay
+ = 
+Œue
+;
+
+4731 ià(
+	`¡»q
+ (
+p
+[0], "up-restart"))
+
+4733 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4734 
+ÝtiÚs
+->
+up_»¡¬t
+ = 
+Œue
+;
+
+4736 ià(
+	`¡»q
+ (
+p
+[0], "syslog"))
+
+4738 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4739 
+	`Ý’_sy¦og
+ (
+p
+[1], 
+çl£
+);
+
+4741 ià(
+	`¡»q
+ (
+p
+[0], "daemon"))
+
+4743 
+boÞ
+ 
+did™
+ = 
+çl£
+;
+
+4744 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4745 ià(!
+ÝtiÚs
+->
+d«mÚ
+)
+
+4747 
+ÝtiÚs
+->
+d«mÚ
+ = 
+did™
+ = 
+Œue
+;
+
+4748 
+	`Ý’_sy¦og
+ (
+p
+[1], 
+çl£
+);
+
+4750 ià(
+p
+[1])
+
+4752 ià(!
+did™
+)
+
+4754 
+	`msg
+ (
+M_WARN
+, "WARNING: MuÉ�Ë --d«mÚ dœeùive ¥ecif›d, ignÜšg --d«mÚ %s. (NÙ�th© in™sü�t som‘ime add�heœ owÀ--d«mÚ dœeùive.)", 
+p
+[1]);
+
+4755 
+”r
+;
+
+4759 ià(
+	`¡»q
+ (
+p
+[0], "inetd"))
+
+4761 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4762 ià(!
+ÝtiÚs
+->
+š‘d
+)
+
+4764 
+z
+;
+
+4765 cÚ¡ *
+Çme
+ = 
+NULL
+;
+
+4766 cÚ¡ *
+Ý‹¼
+ = "when --inetd is used with�wo…arameters, one of�hem must be 'wait' or 'nowait'‡nd�he other must be‡ daemon‚ame�o use for system†ogging";
+
+4768 
+ÝtiÚs
+->
+š‘d
+ = -1;
+
+4770 
+z
+ = 1; z <= 2; ++z)
+
+4772 ià(
+p
+[
+z
+])
+
+4774 ià(
+	`¡»q
+ (
+p
+[
+z
+], "wait"))
+
+4776 ià(
+ÝtiÚs
+->
+š‘d
+ != -1)
+
+4778 
+	`msg
+ (
+msgËv–
+, "%s", 
+Ý‹¼
+);
+
+4779 
+”r
+;
+
+4782 
+ÝtiÚs
+->
+š‘d
+ = 
+INETD_WAIT
+;
+
+4784 ià(
+	`¡»q
+ (
+p
+[
+z
+], "nowait"))
+
+4786 ià(
+ÝtiÚs
+->
+š‘d
+ != -1)
+
+4788 
+	`msg
+ (
+msgËv–
+, "%s", 
+Ý‹¼
+);
+
+4789 
+”r
+;
+
+4792 
+ÝtiÚs
+->
+š‘d
+ = 
+INETD_NOWAIT
+;
+
+4796 ià(
+Çme
+ !ð
+NULL
+)
+
+4798 
+	`msg
+ (
+msgËv–
+, "%s", 
+Ý‹¼
+);
+
+4799 
+”r
+;
+
+4801 
+Çme
+ = 
+p
+[
+z
+];
+
+4807 ià(
+ÝtiÚs
+->
+š‘d
+ == -1)
+
+4808 
+ÝtiÚs
+->
+š‘d
+ = 
+INETD_WAIT
+;
+
+4810 
+	`§ve_š‘d_sock‘_desü�tÜ
+ ();
+
+4811 
+	`Ý’_sy¦og
+ (
+Çme
+, 
+Œue
+);
+
+4814 ià(
+	`¡»q
+ (
+p
+[0], "log") &&…[1])
+
+4816 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4817 
+ÝtiÚs
+->
+log
+ = 
+Œue
+;
+
+4818 
+	`»dœeù_¡dout_¡d”r
+ (
+p
+[1], 
+çl£
+);
+
+4820 ià(
+	`¡»q
+ (
+p
+[0], "suppress-timestamps"))
+
+4822 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4823 
+ÝtiÚs
+->
+suµ»ss_time¡amps
+ = 
+Œue
+;
+
+4824 
+	`£t_suµ»ss_time¡amps
+(
+Œue
+);
+
+4826 ià(
+	`¡»q
+ (
+p
+[0], "log-append") &&…[1])
+
+4828 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4829 
+ÝtiÚs
+->
+log
+ = 
+Œue
+;
+
+4830 
+	`»dœeù_¡dout_¡d”r
+ (
+p
+[1], 
+Œue
+);
+
+4832 #ifdeà
+ENABLE_MEMSTATS
+
+
+4833 ià(
+	`¡»q
+ (
+p
+[0], "memstats") &&…[1])
+
+4835 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4836 
+ÝtiÚs
+->
+mem¡©s_â
+ = 
+p
+[1];
+
+4839 ià(
+	`¡»q
+ (
+p
+[0], "mlock"))
+
+4841 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4842 
+ÝtiÚs
+->
+mlock
+ = 
+Œue
+;
+
+4844 #ià
+ENABLE_IP_PKTINFO
+
+
+4845 ià(
+	`¡»q
+ (
+p
+[0], "multihome"))
+
+4847 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4848 
+ÝtiÚs
+->
+sockæags
+ |ð
+SF_USE_IP_PKTINFO
+;
+
+4851 ià(
+	`¡»q
+ (
+p
+[0], "verb") &&…[1])
+
+4853 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MESSAGES
+);
+
+4854 
+ÝtiÚs
+->
+v”bos™y
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4855 #ià!
+	`defšed
+(
+ENABLE_DEBUG
+è&& !defšed(
+ENABLE_SMALL
+)
+
+4857 ià(
+ÝtiÚs
+->
+v”bos™y
+ >= 7)
+
+4858 
+	`msg
+ (
+M_WARN
+, "NOTE: debug verbosity (--verb %d) isƒnabled but�his build†acks debug support.",
+
+4859 
+ÝtiÚs
+->
+v”bos™y
+);
+
+4862 ià(
+	`¡»q
+ (
+p
+[0], "mute") &&…[1])
+
+4864 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MESSAGES
+);
+
+4865 
+ÝtiÚs
+->
+mu‹
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4867 ià(
+	`¡»q
+ (
+p
+[0], "errors-to-stderr"))
+
+4869 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MESSAGES
+);
+
+4870 
+	`”rÜs_to_¡d”r
+();
+
+4872 ià(
+	`¡»q
+ (
+p
+[0], "status") &&…[1])
+
+4874 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4875 
+ÝtiÚs
+->
+¡©us_fže
+ = 
+p
+[1];
+
+4876 ià(
+p
+[2])
+
+4878 
+ÝtiÚs
+->
+¡©us_fže_upd©e_äeq
+ = 
+	`pos™ive_©oi
+ (
+p
+[2]);
+
+4881 ià(
+	`¡»q
+ (
+p
+[0], "status-version") &&…[1])
+
+4883 
+v”siÚ
+;
+
+4885 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4886 
+v”siÚ
+ = 
+	`©oi
+ (
+p
+[1]);
+
+4887 ià(
+v”siÚ
+ < 1 || version > 3)
+
+4889 
+	`msg
+ (
+msgËv–
+, "--status-version must be 1�o 3");
+
+4890 
+”r
+;
+
+4892 
+ÝtiÚs
+->
+¡©us_fže_v”siÚ
+ = 
+v”siÚ
+;
+
+4894 ià(
+	`¡»q
+ (
+p
+[0], "remap-usr1") &&…[1])
+
+4896 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4897 ià(
+	`¡»q
+ (
+p
+[1], "SIGHUP"))
+
+4898 
+ÝtiÚs
+->
+»m­_sigu¤1
+ = 
+SIGHUP
+;
+
+4899 ià(
+	`¡»q
+ (
+p
+[1], "SIGTERM"))
+
+4900 
+ÝtiÚs
+->
+»m­_sigu¤1
+ = 
+SIGTERM
+;
+
+4903 
+	`msg
+ (
+msgËv–
+, "--remap-usr1…arm must be 'SIGHUP' or 'SIGTERM'");
+
+4904 
+”r
+;
+
+4907 ià((
+	`¡»q
+ (
+p
+[0], "link-mtu") || streq (p[0], "udp-mtu")) &&…[1])
+
+4909 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4910 
+ÝtiÚs
+->
+û
+.
+lšk_mtu
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4911 
+ÝtiÚs
+->
+û
+.
+lšk_mtu_defšed
+ = 
+Œue
+;
+
+4913 ià(
+	`¡»q
+ (
+p
+[0], "tun-mtu") &&…[1])
+
+4915 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4916 
+ÝtiÚs
+->
+û
+.
+tun_mtu
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4917 
+ÝtiÚs
+->
+û
+.
+tun_mtu_defšed
+ = 
+Œue
+;
+
+4919 ià(
+	`¡»q
+ (
+p
+[0], "tun-mtu-extra") &&…[1])
+
+4921 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4922 
+ÝtiÚs
+->
+û
+.
+tun_mtu_exŒa
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4923 
+ÝtiÚs
+->
+û
+.
+tun_mtu_exŒa_defšed
+ = 
+Œue
+;
+
+4925 #ifdeà
+ENABLE_FRAGMENT
+
+
+4926 ià(
+	`¡»q
+ (
+p
+[0], "mtu-dynamic"))
+
+4928 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4929 
+	`msg
+ (
+msgËv–
+, "--mtu-dynamic has been„eplaced by --fragment");
+
+4930 
+”r
+;
+
+4932 ià(
+	`¡»q
+ (
+p
+[0], "fragment") &&…[1])
+
+4935 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4936 
+ÝtiÚs
+->
+û
+.
+äagm’t
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4939 ià(
+	`¡»q
+ (
+p
+[0], "mtu-disc") &&…[1])
+
+4941 
+	`VERIFY_PERMISSION
+ (
+OPT_P_MTU
+|
+OPT_P_CONNECTION
+);
+
+4942 
+ÝtiÚs
+->
+û
+.
+mtu_discov”_ty³
+ = 
+	`Œª¦©e_mtu_discov”_ty³_Çme
+ (
+p
+[1]);
+
+4944 #ifdeà
+ENABLE_OCC
+
+
+4945 ià(
+	`¡»q
+ (
+p
+[0], "mtu-test"))
+
+4947 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4948 
+ÝtiÚs
+->
+mtu_‹¡
+ = 
+Œue
+;
+
+4951 ià(
+	`¡»q
+ (
+p
+[0], "nice") &&…[1])
+
+4953 
+	`VERIFY_PERMISSION
+ (
+OPT_P_NICE
+);
+
+4954 
+ÝtiÚs
+->
+niû
+ = 
+	`©oi
+ (
+p
+[1]);
+
+4956 ià(
+	`¡»q
+ (
+p
+[0], "rcvbuf") &&…[1])
+
+4958 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SOCKBUF
+);
+
+4959 
+ÝtiÚs
+->
+rcvbuf
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4961 ià(
+	`¡»q
+ (
+p
+[0], "sndbuf") &&…[1])
+
+4963 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SOCKBUF
+);
+
+4964 
+ÝtiÚs
+->
+¢dbuf
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4966 ià(
+	`¡»q
+ (
+p
+[0], "mark") &&…[1])
+
+4968 #ià
+	`defšed
+(
+TARGET_LINUX
+è&& 
+HAVE_DECL_SO_MARK
+
+
+4969 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4970 
+ÝtiÚs
+->
+m¬k
+ = 
+	`©oi
+(
+p
+[1]);
+
+4973 ià(
+	`¡»q
+ (
+p
+[0], "socket-flags"))
+
+4975 
+j
+;
+
+4976 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SOCKFLAGS
+);
+
+4977 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j]; ++j)
+
+4979 ià(
+	`¡»q
+ (
+p
+[
+j
+], "TCP_NODELAY"))
+
+4980 
+ÝtiÚs
+->
+sockæags
+ |ð
+SF_TCP_NODELAY
+;
+
+4982 
+	`msg
+ (
+msgËv–
+, "unknowÀsock‘ fÏg: %s", 
+p
+[
+j
+]);
+
+4985 ià(
+	`¡»q
+ (
+p
+[0], "txqueuelen") &&…[1])
+
+4987 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+4988 #ifdeà
+TARGET_LINUX
+
+
+4989 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+txqueu–’
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+4991 
+	`msg
+ (
+msgËv–
+, "--txqueuelen‚ot supported on�his OS");
+
+4992 
+”r
+;
+
+4995 ià(
+	`¡»q
+ (
+p
+[0], "shaper") &&…[1])
+
+4997 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+4998 
+sh­”
+;
+
+5000 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SHAPER
+);
+
+5001 
+sh­”
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5002 ià(
+sh­”
+ < 
+SHAPER_MIN
+ || sh­” > 
+SHAPER_MAX
+)
+
+5004 
+	`msg
+ (
+msgËv–
+, "Bad shaper value, must be between %d‡nd %d",
+
+5005 
+SHAPER_MIN
+, 
+SHAPER_MAX
+);
+
+5006 
+”r
+;
+
+5008 
+ÝtiÚs
+->
+sh­”
+ = shaper;
+
+5010 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5011 
+	`msg
+ (
+msgËv–
+, "--shaper„equires�he gettimeofday() function which is missing");
+
+5012 
+”r
+;
+
+5015 ià(
+	`¡»q
+ (
+p
+[0], "port") &&…[1])
+
+5017 
+pÜt
+;
+
+5019 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5020 
+pÜt
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5021 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+5023 
+	`msg
+ (
+msgËv–
+, "Bad…Üˆnumb”: %s", 
+p
+[1]);
+
+5024 
+”r
+;
+
+5026 
+ÝtiÚs
+->
+û
+.
+loÿl_pÜt
+ = o±iÚs->û.
+»mÙe_pÜt
+ = 
+pÜt
+;
+
+5028 ià(
+	`¡»q
+ (
+p
+[0], "lport") &&…[1])
+
+5030 
+pÜt
+;
+
+5032 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5033 
+pÜt
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5034 ià((
+pÜt
+ !ð0è&& !
+	`Ëg®_�v4_pÜt
+ (port))
+
+5036 
+	`msg
+ (
+msgËv–
+, "Bad†oÿÈpÜˆnumb”: %s", 
+p
+[1]);
+
+5037 
+”r
+;
+
+5039 
+ÝtiÚs
+->
+û
+.
+loÿl_pÜt_defšed
+ = 
+Œue
+;
+
+5040 
+ÝtiÚs
+->
+û
+.
+loÿl_pÜt
+ = 
+pÜt
+;
+
+5042 ià(
+	`¡»q
+ (
+p
+[0], "rport") &&…[1])
+
+5044 
+pÜt
+;
+
+5046 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5047 
+pÜt
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5048 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+5050 
+	`msg
+ (
+msgËv–
+, "Bad„emÙ�pÜˆnumb”: %s", 
+p
+[1]);
+
+5051 
+”r
+;
+
+5053 
+ÝtiÚs
+->
+û
+.
+»mÙe_pÜt
+ = 
+pÜt
+;
+
+5055 ià(
+	`¡»q
+ (
+p
+[0], "bind"))
+
+5057 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5058 
+ÝtiÚs
+->
+û
+.
+bšd_defšed
+ = 
+Œue
+;
+
+5060 ià(
+	`¡»q
+ (
+p
+[0], "nobind"))
+
+5062 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5063 
+ÝtiÚs
+->
+û
+.
+bšd_loÿl
+ = 
+çl£
+;
+
+5065 ià(
+	`¡»q
+ (
+p
+[0], "fast-io"))
+
+5067 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5068 
+ÝtiÚs
+->
+ç¡_io
+ = 
+Œue
+;
+
+5070 ià(
+	`¡»q
+ (
+p
+[0], "inactive") &&…[1])
+
+5072 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TIMER
+);
+
+5073 
+ÝtiÚs
+->
+šaùiv™y_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5074 ià(
+p
+[2])
+
+5075 
+ÝtiÚs
+->
+šaùiv™y_mšimum_by‹s
+ = 
+	`pos™ive_©oi
+ (
+p
+[2]);
+
+5077 ià(
+	`¡»q
+ (
+p
+[0], "proto") &&…[1])
+
+5079 
+´Ùo
+;
+
+5080 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5081 
+´Ùo
+ = 
+	`ascii2´Ùo
+ (
+p
+[1]);
+
+5082 ià(
+´Ùo
+ < 0)
+
+5084 
+	`msg
+ (
+msgËv–
+, "Bad…rotocol: '%s'. Allowed…rotocols with --proto option: %s",
+
+5085 
+p
+[1],
+
+5086 
+	`´Ùo2ascii_®l
+ (&
+gc
+));
+
+5087 
+”r
+;
+
+5089 
+ÝtiÚs
+->
+û
+.
+´Ùo
+ =…roto;
+
+5091 ià(
+	`¡»q
+ (
+p
+[0], "proto-force") &&…[1])
+
+5093 
+´Ùo_fÜû
+;
+
+5094 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5095 
+´Ùo_fÜû
+ = 
+	`ascii2´Ùo
+ (
+p
+[1]);
+
+5096 ià(
+´Ùo_fÜû
+ < 0)
+
+5098 
+	`msg
+ (
+msgËv–
+, "Bad --´Ùo-fÜû…rÙocÞ: '%s'", 
+p
+[1]);
+
+5099 
+”r
+;
+
+5101 
+ÝtiÚs
+->
+´Ùo_fÜû
+ =…roto_force;
+
+5102 
+ÝtiÚs
+->
+fÜû_cÚÃùiÚ_li¡
+ = 
+Œue
+;
+
+5104 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+5105 ià(
+	`¡»q
+ (
+p
+[0], "http-proxy") &&…[1])
+
+5107 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+5109 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5112 
+pÜt
+;
+
+5113 ià(!
+p
+[2])
+
+5115 
+	`msg
+ (
+msgËv–
+, "http-proxy…ort‚umber‚ot defined");
+
+5116 
+”r
+;
+
+5118 
+pÜt
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5119 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+5121 
+	`msg
+ (
+msgËv–
+, "Bad h‰p-´oxy…Üˆnumb”: %s", 
+p
+[2]);
+
+5122 
+”r
+;
+
+5125 
+ho
+ = 
+	`š™_h‰p_´oxy_ÝtiÚs_Úû
+ (&
+ÝtiÚs
+->
+û
+.
+h‰p_´oxy_ÝtiÚs
+, &ÝtiÚs->
+gc
+);
+
+5127 
+ho
+->
+£rv”
+ = 
+p
+[1];
+
+5128 
+ho
+->
+pÜt
+ =…ort;
+
+5131 ià(
+p
+[3])
+
+5136 ià(
+	`¡»q
+ (
+p
+[3], "auto"))
+
+5137 
+ho
+->
+auth_»Œy
+ = 
+PAR_ALL
+;
+
+5138 ià(
+	`¡»q
+ (
+p
+[3], "auto-nct"))
+
+5139 
+ho
+->
+auth_»Œy
+ = 
+PAR_NCT
+;
+
+5142 
+ho
+->
+auth_m‘hod_¡ršg
+ = "basic";
+
+5143 
+ho
+->
+auth_fže
+ = 
+p
+[3];
+
+5145 ià(
+p
+[4])
+
+5147 
+ho
+->
+auth_m‘hod_¡ršg
+ = 
+p
+[4];
+
+5153 
+ho
+->
+auth_m‘hod_¡ršg
+ = "none";
+
+5156 ià(
+	`¡»q
+ (
+p
+[0], "http-proxy-retry"))
+
+5158 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+5159 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5160 
+ho
+ = 
+	`š™_h‰p_´oxy_ÝtiÚs_Úû
+ (&
+ÝtiÚs
+->
+û
+.
+h‰p_´oxy_ÝtiÚs
+, &ÝtiÚs->
+gc
+);
+
+5161 
+ho
+->
+»Œy
+ = 
+Œue
+;
+
+5163 ià(
+	`¡»q
+ (
+p
+[0], "http-proxy-timeout") &&…[1])
+
+5165 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+5167 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5168 
+ho
+ = 
+	`š™_h‰p_´oxy_ÝtiÚs_Úû
+ (&
+ÝtiÚs
+->
+û
+.
+h‰p_´oxy_ÝtiÚs
+, &ÝtiÚs->
+gc
+);
+
+5169 
+ho
+->
+timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5171 ià(
+	`¡»q
+ (
+p
+[0], "http-proxy-option") &&…[1])
+
+5173 
+h‰p_´oxy_ÝtiÚs
+ *
+ho
+;
+
+5175 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5176 
+ho
+ = 
+	`š™_h‰p_´oxy_ÝtiÚs_Úû
+ (&
+ÝtiÚs
+->
+û
+.
+h‰p_´oxy_ÝtiÚs
+, &ÝtiÚs->
+gc
+);
+
+5178 ià(
+	`¡»q
+ (
+p
+[1], "VERSION") &&…[2])
+
+5180 
+ho
+->
+h‰p_v”siÚ
+ = 
+p
+[2];
+
+5182 ià(
+	`¡»q
+ (
+p
+[1], "AGENT") &&…[2])
+
+5184 
+ho
+->
+u£r_ag’t
+ = 
+p
+[2];
+
+5188 
+	`msg
+ (
+msgËv–
+, "Bad h‰p-´oxy-ÝtiÚ o¸missšg…¬am‘”: '%s'", 
+p
+[1]);
+
+5192 #ifdeà
+ENABLE_SOCKS
+
+
+5193 ià(
+	`¡»q
+ (
+p
+[0], "socks-proxy") &&…[1])
+
+5195 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5197 ià(
+p
+[2])
+
+5199 
+pÜt
+;
+
+5200 
+pÜt
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5201 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+5203 
+	`msg
+ (
+msgËv–
+, "Bad socks-´oxy…Üˆnumb”: %s", 
+p
+[2]);
+
+5204 
+”r
+;
+
+5206 
+ÝtiÚs
+->
+û
+.
+socks_´oxy_pÜt
+ = 
+pÜt
+;
+
+5210 
+ÝtiÚs
+->
+û
+.
+socks_´oxy_pÜt
+ = 1080;
+
+5212 
+ÝtiÚs
+->
+û
+.
+socks_´oxy_£rv”
+ = 
+p
+[1];
+
+5213 
+ÝtiÚs
+->
+û
+.
+socks_´oxy_authfže
+ = 
+p
+[3];
+
+5215 ià(
+	`¡»q
+ (
+p
+[0], "socks-proxy-retry"))
+
+5217 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5218 
+ÝtiÚs
+->
+û
+.
+socks_´oxy_»Œy
+ = 
+Œue
+;
+
+5221 ià(
+	`¡»q
+ (
+p
+[0], "keepalive") &&…[1] &&…[2])
+
+5223 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5224 
+ÝtiÚs
+->
+k“·live_pšg
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5225 
+ÝtiÚs
+->
+k“·live_timeout
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5227 ià(
+	`¡»q
+ (
+p
+[0], "ping") &&…[1])
+
+5229 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TIMER
+);
+
+5230 
+ÝtiÚs
+->
+pšg_£nd_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5232 ià(
+	`¡»q
+ (
+p
+[0], "ping-exit") &&…[1])
+
+5234 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TIMER
+);
+
+5235 
+ÝtiÚs
+->
+pšg_»c_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5236 
+ÝtiÚs
+->
+pšg_»c_timeout_aùiÚ
+ = 
+PING_EXIT
+;
+
+5238 ià(
+	`¡»q
+ (
+p
+[0], "ping-restart") &&…[1])
+
+5240 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TIMER
+);
+
+5241 
+ÝtiÚs
+->
+pšg_»c_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5242 
+ÝtiÚs
+->
+pšg_»c_timeout_aùiÚ
+ = 
+PING_RESTART
+;
+
+5244 ià(
+	`¡»q
+ (
+p
+[0], "ping-timer-rem"))
+
+5246 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TIMER
+);
+
+5247 
+ÝtiÚs
+->
+pšg_tim”_»mÙe
+ = 
+Œue
+;
+
+5249 #ifdeà
+ENABLE_OCC
+
+
+5250 ià(
+	`¡»q
+ (
+p
+[0], "explicit-exit-notify"))
+
+5252 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+|
+OPT_P_EXPLICIT_NOTIFY
+);
+
+5253 ià(
+p
+[1])
+
+5255 
+ÝtiÚs
+->
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5259 
+ÝtiÚs
+->
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+ = 1;
+
+5263 ià(
+	`¡»q
+ (
+p
+[0], "persist-tun"))
+
+5265 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PERSIST
+);
+
+5266 
+ÝtiÚs
+->
+³rsi¡_tun
+ = 
+Œue
+;
+
+5268 ià(
+	`¡»q
+ (
+p
+[0], "persist-key"))
+
+5270 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PERSIST
+);
+
+5271 
+ÝtiÚs
+->
+³rsi¡_key
+ = 
+Œue
+;
+
+5273 ià(
+	`¡»q
+ (
+p
+[0], "persist-local-ip"))
+
+5275 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PERSIST_IP
+);
+
+5276 
+ÝtiÚs
+->
+³rsi¡_loÿl_�
+ = 
+Œue
+;
+
+5278 ià(
+	`¡»q
+ (
+p
+[0], "persist-remote-ip"))
+
+5280 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PERSIST_IP
+);
+
+5281 
+ÝtiÚs
+->
+³rsi¡_»mÙe_�
+ = 
+Œue
+;
+
+5283 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+5284 ià(
+	`¡»q
+ (
+p
+[0], "client-nat") &&…[1] &&…[2] &&…[3] &&…[4])
+
+5286 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE
+);
+
+5287 
+	`úÞ_check_®loc
+ (
+ÝtiÚs
+);
+
+5288 
+	`add_þ›Á_Çt_to_ÝtiÚ_li¡
+(
+ÝtiÚs
+->
+þ›Á_Çt
+, 
+p
+[1],…[2],…[3],…[4], 
+msgËv–
+);
+
+5291 ià(
+	`¡»q
+ (
+p
+[0], "route") &&…[1])
+
+5293 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE
+);
+
+5294 
+	`rÞ_check_®loc
+ (
+ÝtiÚs
+);
+
+5295 ià(
+puÎ_mode
+)
+
+5297 ià(!
+	`�_Ü_dns_addr_§ã
+ (
+p
+[1], 
+ÝtiÚs
+->
+®low_puÎ_fqdn
+è&& !
+	`is_¥ecŸl_addr
+ (p[1]))
+
+5299 
+	`msg
+ (
+msgËv–
+, "rou‹…¬am‘”‚‘wÜk/IP '%s' mu¡ b�¨v®id‡dd»ss", 
+p
+[1]);
+
+5300 
+”r
+;
+
+5302 ià(
+p
+[2] && !
+	`�_addr_dÙ‹d_quad_§ã
+ (p[2]))
+
+5304 
+	`msg
+ (
+msgËv–
+, "rou‹…¬am‘”‚‘mask '%s' mu¡ b�ª IP‡dd»ss", 
+p
+[2]);
+
+5305 
+”r
+;
+
+5307 ià(
+p
+[3] && !
+	`�_Ü_dns_addr_§ã
+ (p[3], 
+ÝtiÚs
+->
+®low_puÎ_fqdn
+è&& !
+	`is_¥ecŸl_addr
+ (p[3]))
+
+5309 
+	`msg
+ (
+msgËv–
+, "rou‹…¬am‘” g©eway '%s' mu¡ b�¨v®id‡dd»ss", 
+p
+[3]);
+
+5310 
+”r
+;
+
+5313 
+	`add_rou‹_to_ÝtiÚ_li¡
+ (
+ÝtiÚs
+->
+rou‹s
+, 
+p
+[1],…[2],…[3],…[4]);
+
+5315 ià(
+	`¡»q
+ (
+p
+[0], "route-ipv6") &&…[1])
+
+5317 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE
+);
+
+5318 
+	`rÞ6_check_®loc
+ (
+ÝtiÚs
+);
+
+5319 ià(
+puÎ_mode
+)
+
+5321 ià(!
+	`�v6_addr_§ã_hex¶usb™s
+ (
+p
+[1]))
+
+5323 
+	`msg
+ (
+msgËv–
+, "rou‹-�v6…¬am‘”‚‘wÜk/IP '%s' mu¡ b�¨v®id‡dd»ss", 
+p
+[1]);
+
+5324 
+”r
+;
+
+5326 ià(
+p
+[2] && !
+	`�v6_addr_§ã
+ (p[2]))
+
+5328 
+	`msg
+ (
+msgËv–
+, "rou‹-�v6…¬am‘” g©eway '%s' mu¡ b�¨v®id‡dd»ss", 
+p
+[2]);
+
+5329 
+”r
+;
+
+5333 
+	`add_rou‹_�v6_to_ÝtiÚ_li¡
+ (
+ÝtiÚs
+->
+rou‹s_�v6
+, 
+p
+[1],…[2],…[3]);
+
+5335 ià(
+	`¡»q
+ (
+p
+[0], "max-routes") &&…[1])
+
+5337 
+max_rou‹s
+;
+
+5339 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5340 
+max_rou‹s
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5341 ià(
+max_rou‹s
+ < 0 || max_routes > 100000000)
+
+5343 
+	`msg
+ (
+msgËv–
+, "--max-routes…arameter is out of„ange");
+
+5344 
+”r
+;
+
+5346 ià(
+ÝtiÚs
+->
+rou‹s
+ || o±iÚs->
+rou‹s_�v6
+)
+
+5348 
+	`msg
+ (
+msgËv–
+, "--max-routes must�o be specifed before‡ny„oute/route-ipv6/redirect-gateway option");
+
+5349 
+”r
+;
+
+5351 
+ÝtiÚs
+->
+max_rou‹s
+ = max_routes;
+
+5353 ià(
+	`¡»q
+ (
+p
+[0], "route-gateway") &&…[1])
+
+5355 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE_EXTRAS
+);
+
+5356 ià(
+	`¡»q
+ (
+p
+[1], "dhcp"))
+
+5358 
+ÝtiÚs
+->
+rou‹_g©eway_vŸ_dhý
+ = 
+Œue
+;
+
+5362 ià(
+	`�_Ü_dns_addr_§ã
+ (
+p
+[1], 
+ÝtiÚs
+->
+®low_puÎ_fqdn
+è|| 
+	`is_¥ecŸl_addr
+ (p[1]))
+
+5364 
+ÝtiÚs
+->
+rou‹_deçuÉ_g©eway
+ = 
+p
+[1];
+
+5368 
+	`msg
+ (
+msgËv–
+, "rou‹-g©eway…¬m '%s' mu¡ b�¨v®id‡dd»ss", 
+p
+[1]);
+
+5369 
+”r
+;
+
+5373 ià(
+	`¡»q
+ (
+p
+[0], "route-metric") &&…[1])
+
+5375 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE
+);
+
+5376 
+ÝtiÚs
+->
+rou‹_deçuÉ_m‘ric
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5378 ià(
+	`¡»q
+ (
+p
+[0], "route-delay"))
+
+5380 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE_EXTRAS
+);
+
+5381 
+ÝtiÚs
+->
+rou‹_d–ay_defšed
+ = 
+Œue
+;
+
+5382 ià(
+p
+[1])
+
+5384 
+ÝtiÚs
+->
+rou‹_d–ay
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5385 ià(
+p
+[2])
+
+5387 
+ÝtiÚs
+->
+rou‹_d–ay_wšdow
+ = 
+	`pos™ive_©oi
+ (
+p
+[2]);
+
+5392 
+ÝtiÚs
+->
+rou‹_d–ay
+ = 0;
+
+5395 ià(
+	`¡»q
+ (
+p
+[0], "route-up") &&…[1])
+
+5397 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5398 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+5399 
+”r
+;
+
+5400 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+rou‹_sü�t
+, 
+p
+[1], "rou‹-up", 
+çl£
+);
+
+5402 ià(
+	`¡»q
+ (
+p
+[0], "route-pre-down") &&…[1])
+
+5404 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5405 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+5406 
+”r
+;
+
+5407 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+,
+
+5408 &
+ÝtiÚs
+->
+rou‹_´edown_sü�t
+,
+
+5409 
+p
+[1],
+
+5410 "rou‹-´e-down", 
+Œue
+);
+
+5412 ià(
+	`¡»q
+ (
+p
+[0], "route-noexec"))
+
+5414 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5415 
+ÝtiÚs
+->
+rou‹_nÛxec
+ = 
+Œue
+;
+
+5417 ià(
+	`¡»q
+ (
+p
+[0], "route-nopull"))
+
+5419 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5420 
+ÝtiÚs
+->
+rou‹_nÝuÎ
+ = 
+Œue
+;
+
+5422 ià(
+	`¡»q
+ (
+p
+[0], "allow-pull-fqdn"))
+
+5424 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5425 
+ÝtiÚs
+->
+®low_puÎ_fqdn
+ = 
+Œue
+;
+
+5427 ià(
+	`¡»q
+ (
+p
+[0], "redirect-gateway") || streq (p[0], "redirect-private"))
+
+5429 
+j
+;
+
+5430 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE
+);
+
+5431 
+	`rÞ_check_®loc
+ (
+ÝtiÚs
+);
+
+5432 ià(
+	`¡»q
+ (
+p
+[0], "redirect-gateway"))
+
+5433 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_REROUTE_GW
+;
+
+5434 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+5436 ià(
+	`¡»q
+ (
+p
+[
+j
+], "local"))
+
+5437 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_LOCAL
+;
+
+5438 ià(
+	`¡»q
+ (
+p
+[
+j
+], "autolocal"))
+
+5439 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_AUTO_LOCAL
+;
+
+5440 ià(
+	`¡»q
+ (
+p
+[
+j
+], "def1"))
+
+5441 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_DEF1
+;
+
+5442 ià(
+	`¡»q
+ (
+p
+[
+j
+], "bypass-dhcp"))
+
+5443 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_BYPASS_DHCP
+;
+
+5444 ià(
+	`¡»q
+ (
+p
+[
+j
+], "bypass-dns"))
+
+5445 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_BYPASS_DNS
+;
+
+5446 ià(
+	`¡»q
+ (
+p
+[
+j
+], "block-local"))
+
+5447 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_BLOCK_LOCAL
+;
+
+5450 
+	`msg
+ (
+msgËv–
+, "unknowÀ--% æag: %s", 
+p
+[0],…[
+j
+]);
+
+5451 
+”r
+;
+
+5454 
+ÝtiÚs
+->
+rou‹s
+->
+æags
+ |ð
+RG_ENABLE
+;
+
+5456 ià(
+	`¡»q
+ (
+p
+[0], "remote-random-hostname"))
+
+5458 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5459 
+ÝtiÚs
+->
+sockæags
+ |ð
+SF_HOST_RANDOMIZE
+;
+
+5461 ià(
+	`¡»q
+ (
+p
+[0], "setenv") &&…[1])
+
+5463 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5464 ià(
+	`¡»q
+ (
+p
+[1], "REMOTE_RANDOM_HOSTNAME"))
+
+5466 
+ÝtiÚs
+->
+sockæags
+ |ð
+SF_HOST_RANDOMIZE
+;
+
+5468 ià(
+	`¡»q
+ (
+p
+[1], "GENERIC_CONFIG"))
+
+5470 
+	`msg
+ (
+msgËv–
+, "this is‡ generic configuration‡nd cannot directly be used");
+
+5471 
+”r
+;
+
+5473 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+5474 ià(
+	`¡»q
+ (
+p
+[1], "PUSH_PEER_INFO"))
+
+5476 
+ÝtiÚs
+->
+push_³”_šfo
+ = 
+Œue
+;
+
+5479 #ià
+P2MP
+
+
+5480 ià(
+	`¡»q
+ (
+p
+[1], "SERVER_POLL_TIMEOUT") &&…[2])
+
+5482 
+ÝtiÚs
+->
+£rv”_pÞl_timeout
+ = 
+	`pos™ive_©oi
+(
+p
+[2]);
+
+5487 ià(
+	`¡»q
+ (
+p
+[1], "FORWARD_COMPATIBLE") &&…[2] && streq (p[2], "1"))
+
+5489 
+ÝtiÚs
+->
+fÜw¬d_com·tibË
+ = 
+Œue
+;
+
+5490 
+msgËv–_fc
+ = 
+	`msgËv–_fÜw¬d_com·tibË
+ (
+ÝtiÚs
+, 
+msgËv–
+);
+
+5492 
+	`£‹nv_¡r
+ (
+es
+, 
+p
+[1],…[2] ?…[2] : "");
+
+5495 ià(
+	`¡»q
+ (
+p
+[0], "setenv-safe") &&…[1])
+
+5497 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SETENV
+);
+
+5498 
+	`£‹nv_¡r_§ã
+ (
+es
+, 
+p
+[1],…[2] ?…[2] : "");
+
+5500 ià(
+	`¡»q
+ (
+p
+[0], "script-security") &&…[1])
+
+5502 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5503 
+sü�t_£cur™y
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5505 ià(
+	`¡»q
+ (
+p
+[0], "mssfix"))
+
+5507 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+|
+OPT_P_CONNECTION
+);
+
+5508 ià(
+p
+[1])
+
+5510 
+ÝtiÚs
+->
+û
+.
+mssfix
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+5513 
+ÝtiÚs
+->
+û
+.
+mssfix_deçuÉ
+ = 
+Œue
+;
+
+5516 #ifdeà
+ENABLE_OCC
+
+
+5517 ià(
+	`¡»q
+ (
+p
+[0], "disable-occ"))
+
+5519 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5520 
+ÝtiÚs
+->
+occ
+ = 
+çl£
+;
+
+5523 #ià
+P2MP
+
+
+5524 #ià
+P2MP_SERVER
+
+
+5525 ià(
+	`¡»q
+ (
+p
+[0], "server") &&…[1] &&…[2])
+
+5527 cÚ¡ 
+Ëv
+ = 
+M_WARN
+;
+
+5528 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+5529 
+š_addr_t
+ 
+ÃtwÜk
+, 
+Ãtmask
+;
+
+5531 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5532 
+ÃtwÜk
+ = 
+	`g‘_�_addr
+ (
+p
+[1], 
+Ëv
+, &
+”rÜ
+);
+
+5533 
+Ãtmask
+ = 
+	`g‘_�_addr
+ (
+p
+[2], 
+Ëv
+, &
+”rÜ
+);
+
+5534 ià(
+”rÜ
+ || !
+ÃtwÜk
+ || !
+Ãtmask
+)
+
+5536 
+	`msg
+ (
+msgËv–
+, "error…arsing --server…arameters");
+
+5537 
+”r
+;
+
+5539 
+ÝtiÚs
+->
+£rv”_defšed
+ = 
+Œue
+;
+
+5540 
+ÝtiÚs
+->
+£rv”_ÃtwÜk
+ = 
+ÃtwÜk
+;
+
+5541 
+ÝtiÚs
+->
+£rv”_Ãtmask
+ = 
+Ãtmask
+;
+
+5543 ià(
+p
+[3])
+
+5545 ià(
+	`¡»q
+ (
+p
+[3], "nopool"))
+
+5546 
+ÝtiÚs
+->
+£rv”_æags
+ |ð
+SF_NOPOOL
+;
+
+5549 
+	`msg
+ (
+msgËv–
+, "”rÜ…¬sšg --£rv”: % i nÙ‡„ecognized fÏg", 
+p
+[3]);
+
+5550 
+”r
+;
+
+5554 ià(
+	`¡»q
+ (
+p
+[0], "server-ipv6") &&…[1] )
+
+5556 cÚ¡ 
+Ëv
+ = 
+M_WARN
+;
+
+5557 
+š6_addr
+ 
+ÃtwÜk
+;
+
+5558 
+Ãtb™s
+ = 0;
+
+5560 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5561 iàÐ! 
+	`g‘_�v6_addr
+ (
+p
+[1], &
+ÃtwÜk
+, &
+Ãtb™s
+, 
+NULL
+, 
+Ëv
+) )
+
+5563 
+	`msg
+ (
+msgËv–
+, "error…arsing --server-ipv6…arameter");
+
+5564 
+”r
+;
+
+5566 iàÐ
+Ãtb™s
+ < 64 ||‚etbits > 112 )
+
+5568 
+	`msg
+Ð
+msgËv–
+, "--£rv”-�v6 s‘tšgs: oÆy /64../112 suµÜ‹d„ighˆnow (nÙ /%d)", 
+Ãtb™s
+ );
+
+5569 
+”r
+;
+
+5571 
+ÝtiÚs
+->
+£rv”_�v6_defšed
+ = 
+Œue
+;
+
+5572 
+ÝtiÚs
+->
+£rv”_ÃtwÜk_�v6
+ = 
+ÃtwÜk
+;
+
+5573 
+ÝtiÚs
+->
+£rv”_Ãtb™s_�v6
+ = 
+Ãtb™s
+;
+
+5575 ià(
+p
+[2])
+
+5577 
+	`msg
+ (
+msgËv–
+, "”rÜ…¬sšg --£rv”-�v6: % i nÙ‡„ecognized fÏg", 
+p
+[3]);
+
+5578 
+”r
+;
+
+5581 ià(
+	`¡»q
+ (
+p
+[0], "server-bridge") &&…[1] &&…[2] &&…[3] &&…[4])
+
+5583 cÚ¡ 
+Ëv
+ = 
+M_WARN
+;
+
+5584 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+5585 
+š_addr_t
+ 
+�
+, 
+Ãtmask
+, 
+poÞ_¡¬t
+, 
+poÞ_’d
+;
+
+5587 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5588 
+�
+ = 
+	`g‘_�_addr
+ (
+p
+[1], 
+Ëv
+, &
+”rÜ
+);
+
+5589 
+Ãtmask
+ = 
+	`g‘_�_addr
+ (
+p
+[2], 
+Ëv
+, &
+”rÜ
+);
+
+5590 
+poÞ_¡¬t
+ = 
+	`g‘_�_addr
+ (
+p
+[3], 
+Ëv
+, &
+”rÜ
+);
+
+5591 
+poÞ_’d
+ = 
+	`g‘_�_addr
+ (
+p
+[4], 
+Ëv
+, &
+”rÜ
+);
+
+5592 ià(
+”rÜ
+ || !
+�
+ || !
+Ãtmask
+ || !
+poÞ_¡¬t
+ || !
+poÞ_’d
+)
+
+5594 
+	`msg
+ (
+msgËv–
+, "error…arsing --server-bridge…arameters");
+
+5595 
+”r
+;
+
+5597 
+ÝtiÚs
+->
+£rv”_bridge_defšed
+ = 
+Œue
+;
+
+5598 
+ÝtiÚs
+->
+£rv”_bridge_�
+ = 
+�
+;
+
+5599 
+ÝtiÚs
+->
+£rv”_bridge_Ãtmask
+ = 
+Ãtmask
+;
+
+5600 
+ÝtiÚs
+->
+£rv”_bridge_poÞ_¡¬t
+ = 
+poÞ_¡¬t
+;
+
+5601 
+ÝtiÚs
+->
+£rv”_bridge_poÞ_’d
+ = 
+poÞ_’d
+;
+
+5603 ià(
+	`¡»q
+ (
+p
+[0], "server-bridge") &&…[1] && streq (p[1], "nogw"))
+
+5605 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5606 
+ÝtiÚs
+->
+£rv”_bridge_´oxy_dhý
+ = 
+Œue
+;
+
+5607 
+ÝtiÚs
+->
+£rv”_æags
+ |ð
+SF_NO_PUSH_ROUTE_GATEWAY
+;
+
+5609 ià(
+	`¡»q
+ (
+p
+[0], "server-bridge") && !p[1])
+
+5611 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5612 
+ÝtiÚs
+->
+£rv”_bridge_´oxy_dhý
+ = 
+Œue
+;
+
+5614 ià(
+	`¡»q
+ (
+p
+[0], "push") &&…[1])
+
+5616 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PUSH
+);
+
+5617 
+	`push_ÝtiÚs
+ (
+ÝtiÚs
+, &
+p
+[1], 
+msgËv–
+, &ÝtiÚs->
+gc
+);
+
+5619 ià(
+	`¡»q
+ (
+p
+[0], "push-reset"))
+
+5621 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5622 
+	`push_»£t
+ (
+ÝtiÚs
+);
+
+5624 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-pool") &&…[1] &&…[2])
+
+5626 cÚ¡ 
+Ëv
+ = 
+M_WARN
+;
+
+5627 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+5628 
+š_addr_t
+ 
+¡¬t
+, 
+’d
+, 
+Ãtmask
+=0;
+
+5630 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5631 
+¡¬t
+ = 
+	`g‘_�_addr
+ (
+p
+[1], 
+Ëv
+, &
+”rÜ
+);
+
+5632 
+’d
+ = 
+	`g‘_�_addr
+ (
+p
+[2], 
+Ëv
+, &
+”rÜ
+);
+
+5633 ià(
+p
+[3])
+
+5635 
+Ãtmask
+ = 
+	`g‘_�_addr
+ (
+p
+[3], 
+Ëv
+, &
+”rÜ
+);
+
+5637 ià(
+”rÜ
+)
+
+5639 
+	`msg
+ (
+msgËv–
+, "error…arsing --ifconfig-pool…arameters");
+
+5640 
+”r
+;
+
+5642 ià(!
+	`ifcÚfig_poÞ_v”ify_¿nge
+ (
+msgËv–
+, 
+¡¬t
+, 
+’d
+))
+
+5643 
+”r
+;
+
+5645 
+ÝtiÚs
+->
+ifcÚfig_poÞ_defšed
+ = 
+Œue
+;
+
+5646 
+ÝtiÚs
+->
+ifcÚfig_poÞ_¡¬t
+ = 
+¡¬t
+;
+
+5647 
+ÝtiÚs
+->
+ifcÚfig_poÞ_’d
+ = 
+’d
+;
+
+5648 ià(
+Ãtmask
+)
+
+5649 
+ÝtiÚs
+->
+ifcÚfig_poÞ_Ãtmask
+ = 
+Ãtmask
+;
+
+5651 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-pool-persist") &&…[1])
+
+5653 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5654 
+ÝtiÚs
+->
+ifcÚfig_poÞ_³rsi¡_fž’ame
+ = 
+p
+[1];
+
+5655 ià(
+p
+[2])
+
+5657 
+ÝtiÚs
+->
+ifcÚfig_poÞ_³rsi¡_»äesh_äeq
+ = 
+	`pos™ive_©oi
+ (
+p
+[2]);
+
+5660 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-pool-linear"))
+
+5662 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5663 
+ÝtiÚs
+->
+tÝÞogy
+ = 
+TOP_P2P
+;
+
+5665 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-ipv6-pool") &&…[1] )
+
+5667 cÚ¡ 
+Ëv
+ = 
+M_WARN
+;
+
+5668 
+š6_addr
+ 
+ÃtwÜk
+;
+
+5669 
+Ãtb™s
+ = 0;
+
+5671 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5672 iàÐ! 
+	`g‘_�v6_addr
+ (
+p
+[1], &
+ÃtwÜk
+, &
+Ãtb™s
+, 
+NULL
+, 
+Ëv
+ ) )
+
+5674 
+	`msg
+ (
+msgËv–
+, "error…arsing --ifconfig-ipv6-pool…arameters");
+
+5675 
+”r
+;
+
+5677 iàÐ
+Ãtb™s
+ < 64 ||‚etbits > 112 )
+
+5679 
+	`msg
+Ð
+msgËv–
+, "--ifcÚfig-�v6-poÞ s‘tšgs: oÆy /64../112 suµÜ‹d„ighˆnow (nÙ /%d)", 
+Ãtb™s
+ );
+
+5680 
+”r
+;
+
+5683 
+ÝtiÚs
+->
+ifcÚfig_�v6_poÞ_defšed
+ = 
+Œue
+;
+
+5684 
+ÝtiÚs
+->
+ifcÚfig_�v6_poÞ_ba£
+ = 
+ÃtwÜk
+;
+
+5685 
+ÝtiÚs
+->
+ifcÚfig_�v6_poÞ_Ãtb™s
+ = 
+Ãtb™s
+;
+
+5687 ià(
+	`¡»q
+ (
+p
+[0], "hash-size") &&…[1] &&…[2])
+
+5689 
+»®
+, 
+vœtu®
+;
+
+5691 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5692 
+»®
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5693 
+vœtu®
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5694 ià(
+»®
+ < 1 || 
+vœtu®
+ < 1)
+
+5696 
+	`msg
+ (
+msgËv–
+, "--hash-size sizes must be >= 1 (preferably‡…ower of 2)");
+
+5697 
+”r
+;
+
+5699 
+ÝtiÚs
+->
+»®_hash_size
+ = 
+»®
+;
+
+5700 
+ÝtiÚs
+->
+vœtu®_hash_size
+ = 
+»®
+;
+
+5702 ià(
+	`¡»q
+ (
+p
+[0], "connect-freq") &&…[1] &&…[2])
+
+5704 
+cf_max
+, 
+cf_³r
+;
+
+5706 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5707 
+cf_max
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5708 
+cf_³r
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5709 ià(
+cf_max
+ < 0 || 
+cf_³r
+ < 0)
+
+5711 
+	`msg
+ (
+msgËv–
+, "--connect-freq…arms must be > 0");
+
+5712 
+”r
+;
+
+5714 
+ÝtiÚs
+->
+cf_max
+ = cf_max;
+
+5715 
+ÝtiÚs
+->
+cf_³r
+ = cf_per;
+
+5717 ià(
+	`¡»q
+ (
+p
+[0], "max-clients") &&…[1])
+
+5719 
+max_þ›Ás
+;
+
+5721 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5722 
+max_þ›Ás
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5723 ià(
+max_þ›Ás
+ < 0)
+
+5725 
+	`msg
+ (
+msgËv–
+, "--max-clients must be‡t†east 1");
+
+5726 
+”r
+;
+
+5728 
+ÝtiÚs
+->
+max_þ›Ás
+ = max_clients;
+
+5730 ià(
+	`¡»q
+ (
+p
+[0], "max-routes-per-client") &&…[1])
+
+5732 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INHERIT
+);
+
+5733 
+ÝtiÚs
+->
+max_rou‹s_³r_þ›Á
+ = 
+	`max_št
+ (
+	`©oi
+ (
+p
+[1]), 1);
+
+5735 ià(
+	`¡»q
+ (
+p
+[0], "client-cert-not-required"))
+
+5737 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5738 
+ÝtiÚs
+->
+s¦_æags
+ |ð
+SSLF_CLIENT_CERT_NOT_REQUIRED
+;
+
+5740 ià(
+	`¡»q
+ (
+p
+[0], "username-as-common-name"))
+
+5742 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5743 
+ÝtiÚs
+->
+s¦_æags
+ |ð
+SSLF_USERNAME_AS_COMMON_NAME
+;
+
+5745 ià(
+	`¡»q
+ (
+p
+[0], "auth-user-pass-optional"))
+
+5747 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5748 
+ÝtiÚs
+->
+s¦_æags
+ |ð
+SSLF_AUTH_USER_PASS_OPTIONAL
+;
+
+5750 ià(
+	`¡»q
+ (
+p
+[0], "opt-verify"))
+
+5752 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5753 
+ÝtiÚs
+->
+s¦_æags
+ |ð
+SSLF_OPT_VERIFY
+;
+
+5755 ià(
+	`¡»q
+ (
+p
+[0], "auth-user-pass-verify") &&…[1])
+
+5757 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5758 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 3, 
+NM_QUOTE_HINT
+))
+
+5759 
+”r
+;
+
+5760 ià(
+p
+[2])
+
+5762 ià(
+	`¡»q
+ (
+p
+[2], "via-env"))
+
+5763 
+ÝtiÚs
+->
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+ = 
+çl£
+;
+
+5764 ià(
+	`¡»q
+ (
+p
+[2], "via-file"))
+
+5765 
+ÝtiÚs
+->
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+ = 
+Œue
+;
+
+5768 
+	`msg
+ (
+msgËv–
+, "second…arm�o --auth-user-pass-verify must be 'via-env' or 'via-file'");
+
+5769 
+”r
+;
+
+5774 
+	`msg
+ (
+msgËv–
+, "--auth-user-pass-verify„equires‡ second…arameter ('via-env' or 'via-file')");
+
+5775 
+”r
+;
+
+5777 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+,
+
+5778 &
+ÝtiÚs
+->
+auth_u£r_·ss_v”ify_sü�t
+,
+
+5779 
+p
+[1], "auth-u£r-·ss-v”ify", 
+Œue
+);
+
+5781 ià(
+	`¡»q
+ (
+p
+[0], "client-connect") &&…[1])
+
+5783 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5784 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+5785 
+”r
+;
+
+5786 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+þ›Á_cÚÃù_sü�t
+,
+
+5787 
+p
+[1], "þ›Á-cÚÃù", 
+Œue
+);
+
+5789 ià(
+	`¡»q
+ (
+p
+[0], "client-disconnect") &&…[1])
+
+5791 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5792 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+5793 
+”r
+;
+
+5794 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+þ›Á_discÚÃù_sü�t
+,
+
+5795 
+p
+[1], "þ›Á-discÚÃù", 
+Œue
+);
+
+5797 ià(
+	`¡»q
+ (
+p
+[0], "learn-address") &&…[1])
+
+5799 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+5800 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+5801 
+”r
+;
+
+5802 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+Ë¬n_add»ss_sü�t
+,
+
+5803 
+p
+[1], "Ë¬n-add»ss", 
+Œue
+);
+
+5805 ià(
+	`¡»q
+ (
+p
+[0], "tmp-dir") &&…[1])
+
+5807 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5808 
+ÝtiÚs
+->
+tmp_dœ
+ = 
+p
+[1];
+
+5810 ià(
+	`¡»q
+ (
+p
+[0], "client-config-dir") &&…[1])
+
+5812 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5813 
+ÝtiÚs
+->
+þ›Á_cÚfig_dœ
+ = 
+p
+[1];
+
+5815 ià(
+	`¡»q
+ (
+p
+[0], "ccd-exclusive"))
+
+5817 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5818 
+ÝtiÚs
+->
+ccd_exþusive
+ = 
+Œue
+;
+
+5820 ià(
+	`¡»q
+ (
+p
+[0], "bcast-buffers") &&…[1])
+
+5822 
+n_bÿ¡_buf
+;
+
+5824 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5825 
+n_bÿ¡_buf
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5826 ià(
+n_bÿ¡_buf
+ < 1)
+
+5827 
+	`msg
+ (
+msgËv–
+, "--bcast-buffers…arameter must be > 0");
+
+5828 
+ÝtiÚs
+->
+n_bÿ¡_buf
+ =‚_bcast_buf;
+
+5830 ià(
+	`¡»q
+ (
+p
+[0], "tcp-queue-limit") &&…[1])
+
+5832 
+tý_queue_lim™
+;
+
+5834 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5835 
+tý_queue_lim™
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5836 ià(
+tý_queue_lim™
+ < 1)
+
+5837 
+	`msg
+ (
+msgËv–
+, "--tcp-queue-limit…arameter must be > 0");
+
+5838 
+ÝtiÚs
+->
+tý_queue_lim™
+ =�cp_queue_limit;
+
+5840 #ià
+PORT_SHARE
+
+
+5841 ià(
+	`¡»q
+ (
+p
+[0], "port-share") &&…[1] &&…[2])
+
+5843 
+pÜt
+;
+
+5845 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5846 
+pÜt
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5847 ià(!
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+))
+
+5849 
+	`msg
+ (
+msgËv–
+, "port‚umber‡ssociated with --port-share directive is out of„ange");
+
+5850 
+”r
+;
+
+5853 
+ÝtiÚs
+->
+pÜt_sh¬e_ho¡
+ = 
+p
+[1];
+
+5854 
+ÝtiÚs
+->
+pÜt_sh¬e_pÜt
+ = 
+pÜt
+;
+
+5855 
+ÝtiÚs
+->
+pÜt_sh¬e_jouº®_dœ
+ = 
+p
+[3];
+
+5858 ià(
+	`¡»q
+ (
+p
+[0], "client-to-client"))
+
+5860 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5861 
+ÝtiÚs
+->
+’abË_c2c
+ = 
+Œue
+;
+
+5863 ià(
+	`¡»q
+ (
+p
+[0], "duplicate-cn"))
+
+5865 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5866 
+ÝtiÚs
+->
+du¶iÿ‹_ú
+ = 
+Œue
+;
+
+5868 ià(
+	`¡»q
+ (
+p
+[0], "iroute") &&…[1])
+
+5870 cÚ¡ *
+Ãtmask
+ = 
+NULL
+;
+
+5872 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5873 ià(
+p
+[2])
+
+5875 
+Ãtmask
+ = 
+p
+[2];
+
+5877 
+	`ÝtiÚ_œou‹
+ (
+ÝtiÚs
+, 
+p
+[1], 
+Ãtmask
+, 
+msgËv–
+);
+
+5879 ià(
+	`¡»q
+ (
+p
+[0], "iroute-ipv6") &&…[1])
+
+5881 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5882 
+	`ÝtiÚ_œou‹_�v6
+ (
+ÝtiÚs
+, 
+p
+[1], 
+msgËv–
+);
+
+5884 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-push") &&…[1] &&…[2])
+
+5886 
+š_addr_t
+ 
+loÿl
+, 
+»mÙe_Ãtmask
+;
+
+5888 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5889 
+loÿl
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+|
+GETADDR_RESOLVE
+, 
+p
+[1], 0, 
+NULL
+, NULL);
+
+5890 
+»mÙe_Ãtmask
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+|
+GETADDR_RESOLVE
+, 
+p
+[2], 0, 
+NULL
+, NULL);
+
+5891 ià(
+loÿl
+ && 
+»mÙe_Ãtmask
+)
+
+5893 
+ÝtiÚs
+->
+push_ifcÚfig_defšed
+ = 
+Œue
+;
+
+5894 
+ÝtiÚs
+->
+push_ifcÚfig_loÿl
+ = 
+loÿl
+;
+
+5895 
+ÝtiÚs
+->
+push_ifcÚfig_»mÙe_Ãtmask
+ = 
+»mÙe_Ãtmask
+;
+
+5896 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+5897 ià(
+p
+[3])
+
+5898 
+ÝtiÚs
+->
+push_ifcÚfig_loÿl_®Ÿs
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+|
+GETADDR_RESOLVE
+, 
+p
+[3], 0, 
+NULL
+, NULL);
+
+5903 
+	`msg
+ (
+msgËv–
+, "cannot…arse --ifconfig-push‡ddresses");
+
+5904 
+”r
+;
+
+5907 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-push-constraint") &&…[1] &&…[2])
+
+5909 
+š_addr_t
+ 
+ÃtwÜk
+, 
+Ãtmask
+;
+
+5911 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5912 
+ÃtwÜk
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+|
+GETADDR_RESOLVE
+, 
+p
+[1], 0, 
+NULL
+, NULL);
+
+5913 
+Ãtmask
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+p
+[2], 0, 
+NULL
+, NULL);
+
+5914 ià(
+ÃtwÜk
+ && 
+Ãtmask
+)
+
+5916 
+ÝtiÚs
+->
+push_ifcÚfig_cÚ¡¿št_defšed
+ = 
+Œue
+;
+
+5917 
+ÝtiÚs
+->
+push_ifcÚfig_cÚ¡¿št_ÃtwÜk
+ = 
+ÃtwÜk
+;
+
+5918 
+ÝtiÚs
+->
+push_ifcÚfig_cÚ¡¿št_Ãtmask
+ = 
+Ãtmask
+;
+
+5922 
+	`msg
+ (
+msgËv–
+, "cannot…arse --ifconfig-push-constraint‡ddresses");
+
+5923 
+”r
+;
+
+5926 ià(
+	`¡»q
+ (
+p
+[0], "ifconfig-ipv6-push") &&…[1] )
+
+5928 
+š6_addr
+ 
+loÿl
+, 
+»mÙe
+;
+
+5929 
+Ãtb™s
+;
+
+5931 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5933 iàÐ! 
+	`g‘_�v6_addr
+Ð
+p
+[1], &
+loÿl
+, &
+Ãtb™s
+, 
+NULL
+, 
+msgËv–
+ ) )
+
+5935 
+	`msg
+ (
+msgËv–
+, "cannot…arse --ifconfig-ipv6-push‡ddresses");
+
+5936 
+”r
+;
+
+5939 iàÐ
+p
+[2] )
+
+5941 iàÐ!
+	`g‘_�v6_addr
+Ð
+p
+[2], &
+»mÙe
+, 
+NULL
+, NULL, 
+msgËv–
+ ) )
+
+5943 
+	`msg
+Ð
+msgËv–
+, "cannot…arse --ifconfig-ipv6-push‡ddresses");
+
+5944 
+”r
+;
+
+5949 iàÐ! 
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+ ||
+
+5950 ! 
+	`g‘_�v6_addr
+Ð
+ÝtiÚs
+->
+ifcÚfig_�v6_loÿl
+, &
+»mÙe
+,
+
+5951 
+NULL
+, NULL, 
+msgËv–
+ ) )
+
+5953 
+	`msg
+Ð
+msgËv–
+, "second‡rgument�o --ifconfig-ipv6-push missing‡nd‚o global --ifconfig-ipv6‡ddress set");
+
+5954 
+”r
+;
+
+5958 
+ÝtiÚs
+->
+push_ifcÚfig_�v6_defšed
+ = 
+Œue
+;
+
+5959 
+ÝtiÚs
+->
+push_ifcÚfig_�v6_loÿl
+ = 
+loÿl
+;
+
+5960 
+ÝtiÚs
+->
+push_ifcÚfig_�v6_Ãtb™s
+ = 
+Ãtb™s
+;
+
+5961 
+ÝtiÚs
+->
+push_ifcÚfig_�v6_»mÙe
+ = 
+»mÙe
+;
+
+5963 ià(
+	`¡»q
+ (
+p
+[0], "disable"))
+
+5965 
+	`VERIFY_PERMISSION
+ (
+OPT_P_INSTANCE
+);
+
+5966 
+ÝtiÚs
+->
+di§bË
+ = 
+Œue
+;
+
+5968 ià(
+	`¡»q
+ (
+p
+[0], "tcp-nodelay"))
+
+5970 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5971 
+ÝtiÚs
+->
+£rv”_æags
+ |ð
+SF_TCP_NODELAY_HELPER
+;
+
+5973 ià(
+	`¡»q
+ (
+p
+[0], "stale-routes-check") &&…[1])
+
+5975 
+agešg_time
+, 
+check_š‹rv®
+;
+
+5977 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5978 
+agešg_time
+ = 
+	`©oi
+ (
+p
+[1]);
+
+5979 ià(
+p
+[2])
+
+5980 
+check_š‹rv®
+ = 
+	`©oi
+ (
+p
+[2]);
+
+5982 
+check_š‹rv®
+ = 
+agešg_time
+;
+
+5984 ià(
+agešg_time
+ < 1 || 
+check_š‹rv®
+ < 1)
+
+5986 
+	`msg
+ (
+msgËv–
+, "--stale-routes-check‡ging�ime‡nd check interval must be >= 1");
+
+5987 
+”r
+;
+
+5989 
+ÝtiÚs
+->
+¡®e_rou‹s_agešg_time
+ = 
+agešg_time
+;
+
+5990 
+ÝtiÚs
+->
+¡®e_rou‹s_check_š‹rv®
+ = 
+check_š‹rv®
+;
+
+5994 ià(
+	`¡»q
+ (
+p
+[0], "client"))
+
+5996 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+5997 
+ÝtiÚs
+->
+þ›Á
+ = 
+Œue
+;
+
+5999 ià(
+	`¡»q
+ (
+p
+[0], "pull"))
+
+6001 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6002 
+ÝtiÚs
+->
+puÎ
+ = 
+Œue
+;
+
+6004 ià(
+	`¡»q
+ (
+p
+[0], "push-continuation") &&…[1])
+
+6006 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PULL_MODE
+);
+
+6007 
+ÝtiÚs
+->
+push_cÚtšu©iÚ
+ = 
+	`©oi
+(
+p
+[1]);
+
+6009 ià(
+	`¡»q
+ (
+p
+[0], "server-poll-timeout") &&…[1])
+
+6011 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6012 
+ÝtiÚs
+->
+£rv”_pÞl_timeout
+ = 
+	`pos™ive_©oi
+(
+p
+[1]);
+
+6014 ià(
+	`¡»q
+ (
+p
+[0], "auth-user-pass"))
+
+6016 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6017 ià(
+p
+[1])
+
+6019 
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+ = 
+p
+[1];
+
+6022 
+ÝtiÚs
+->
+auth_u£r_·ss_fže
+ = "stdin";
+
+6024 ià(
+	`¡»q
+ (
+p
+[0], "auth-retry") &&…[1])
+
+6026 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6027 
+	`auth_»Œy_£t
+ (
+msgËv–
+, 
+p
+[1]);
+
+6029 #ifdeà
+ENABLE_CLIENT_CR
+
+
+6030 ià(
+	`¡»q
+ (
+p
+[0], "static-challenge") &&…[1] &&…[2])
+
+6032 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6033 
+ÝtiÚs
+->
+sc_šfo
+.
+ch®Ënge_‹xt
+ = 
+p
+[1];
+
+6034 ià(
+	`©oi
+(
+p
+[2]))
+
+6035 
+ÝtiÚs
+->
+sc_šfo
+.
+æags
+ |ð
+SC_ECHO
+;
+
+6039 #ifdeà
+WIN32
+
+
+6040 ià(
+	`¡»q
+ (
+p
+[0], "win-sys") &&…[1])
+
+6042 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6043 ià(
+	`¡»q
+ (
+p
+[1], "env"))
+
+6044 
+	`msg
+ (
+M_INFO
+, "NOTE: --win-sysƒnv is default from OpenVPN v2.3. "
+
+6048 
+	`£t_wš_sys_·th
+ (
+p
+[1], 
+es
+);
+
+6050 ià(
+	`¡»q
+ (
+p
+[0], "route-method") &&…[1])
+
+6052 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE_EXTRAS
+);
+
+6053 ià(
+	`¡»q
+ (
+p
+[1], "adaptive"))
+
+6054 
+ÝtiÚs
+->
+rou‹_m‘hod
+ = 
+ROUTE_METHOD_ADAPTIVE
+;
+
+6055 ià(
+	`¡»q
+ (
+p
+[1], "ipapi"))
+
+6056 
+ÝtiÚs
+->
+rou‹_m‘hod
+ = 
+ROUTE_METHOD_IPAPI
+;
+
+6057 ià(
+	`¡»q
+ (
+p
+[1], "exe"))
+
+6058 
+ÝtiÚs
+->
+rou‹_m‘hod
+ = 
+ROUTE_METHOD_EXE
+;
+
+6061 
+	`msg
+ (
+msgËv–
+, "--route method must be 'adaptive', 'ipapi', or 'exe'");
+
+6062 
+”r
+;
+
+6065 ià(
+	`¡»q
+ (
+p
+[0], "ip-win32") &&…[1])
+
+6067 cÚ¡ 
+šdex
+ = 
+	`ascii2�£t
+ (
+p
+[1]);
+
+6068 
+tuÁ­_ÝtiÚs
+ *
+to
+ = &
+ÝtiÚs
+->tuntap_options;
+
+6070 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6072 ià(
+šdex
+ < 0)
+
+6074 
+	`msg
+ (
+msgËv–
+,
+
+6076 
+p
+[1],
+
+6077 
+	`�£t2ascii_®l
+ (&
+gc
+));
+
+6078 
+”r
+;
+
+6081 ià(
+šdex
+ =ð
+IPW32_SET_ADAPTIVE
+)
+
+6082 
+ÝtiÚs
+->
+rou‹_d–ay_wšdow
+ = 
+IPW32_SET_ADAPTIVE_DELAY_WINDOW
+;
+
+6084 ià(
+šdex
+ =ð
+IPW32_SET_DHCP_MASQ
+)
+
+6086 ià(
+p
+[2])
+
+6088 ià(!
+	`¡»q
+ (
+p
+[2], "default"))
+
+6090 
+off£t
+ = 
+	`©oi
+ (
+p
+[2]);
+
+6092 ià(!(
+off£t
+ > -256 && offset < 256))
+
+6094 
+	`msg
+ (
+msgËv–
+, "--�-wš32 dyÇmiø[off£t] [Ëa£-time]: off£ˆ(%dèmu¡ b�> -256‡nd < 256", 
+off£t
+);
+
+6095 
+”r
+;
+
+6098 
+to
+->
+dhý_masq_cu¡om_off£t
+ = 
+Œue
+;
+
+6099 
+to
+->
+dhý_masq_off£t
+ = 
+off£t
+;
+
+6102 ià(
+p
+[3])
+
+6104 cÚ¡ 
+mš_Ëa£
+ = 30;
+
+6105 
+Ëa£_time
+;
+
+6106 
+Ëa£_time
+ = 
+	`©oi
+ (
+p
+[3]);
+
+6107 ià(
+Ëa£_time
+ < 
+mš_Ëa£
+)
+
+6109 
+	`msg
+ (
+msgËv–
+, "--�-wš32 dyÇmiø[off£t] [Ëa£-time]:†—£�im�·¿m‘” (%dèmu¡ b�©†—¡ %d secÚds", 
+Ëa£_time
+, 
+mš_Ëa£
+);
+
+6110 
+”r
+;
+
+6112 
+to
+->
+dhý_Ëa£_time
+ = 
+Ëa£_time
+;
+
+6116 
+to
+->
+�_wš32_ty³
+ = 
+šdex
+;
+
+6117 
+to
+->
+�_wš32_defšed
+ = 
+Œue
+;
+
+6119 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-option") &&…[1])
+
+6121 
+tuÁ­_ÝtiÚs
+ *
+o
+ = &
+ÝtiÚs
+->tuntap_options;
+
+6122 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6124 ià(
+	`¡»q
+ (
+p
+[1], "DOMAIN") &&…[2])
+
+6126 
+o
+->
+domaš
+ = 
+p
+[2];
+
+6128 ià(
+	`¡»q
+ (
+p
+[1], "NBS") &&…[2])
+
+6130 
+o
+->
+Ãtbios_scÝe
+ = 
+p
+[2];
+
+6132 ià(
+	`¡»q
+ (
+p
+[1], "NBT") &&…[2])
+
+6134 
+t
+;
+
+6135 
+t
+ = 
+	`©oi
+ (
+p
+[2]);
+
+6136 ià(!(
+t
+ == 1 ||� == 2 ||� == 4 ||� == 8))
+
+6138 
+	`msg
+ (
+msgËv–
+, "--dhý-ÝtiÚ NBT:…¬am‘” (%dèmu¡ b�1, 2, 4, o¸8", 
+t
+);
+
+6139 
+”r
+;
+
+6141 
+o
+->
+Ãtbios_node_ty³
+ = 
+t
+;
+
+6143 ià(
+	`¡»q
+ (
+p
+[1], "DNS") &&…[2])
+
+6145 
+	`dhý_ÝtiÚ_add»ss_·r£
+ ("DNS", 
+p
+[2], 
+o
+->
+dns
+, &o->
+dns_Ën
+, 
+msgËv–
+);
+
+6147 ià(
+	`¡»q
+ (
+p
+[1], "WINS") &&…[2])
+
+6149 
+	`dhý_ÝtiÚ_add»ss_·r£
+ ("WINS", 
+p
+[2], 
+o
+->
+wšs
+, &o->
+wšs_Ën
+, 
+msgËv–
+);
+
+6151 ià(
+	`¡»q
+ (
+p
+[1], "NTP") &&…[2])
+
+6153 
+	`dhý_ÝtiÚ_add»ss_·r£
+ ("NTP", 
+p
+[2], 
+o
+->
+Áp
+, &o->
+Áp_Ën
+, 
+msgËv–
+);
+
+6155 ià(
+	`¡»q
+ (
+p
+[1], "NBDD") &&…[2])
+
+6157 
+	`dhý_ÝtiÚ_add»ss_·r£
+ ("NBDD", 
+p
+[2], 
+o
+->
+nbdd
+, &o->
+nbdd_Ën
+, 
+msgËv–
+);
+
+6159 ià(
+	`¡»q
+ (
+p
+[1], "DISABLE-NBT"))
+
+6161 
+o
+->
+di§bË_nbt
+ = 1;
+
+6165 
+	`msg
+ (
+msgËv–
+, "--dhý-ÝtiÚ: unknowÀÝtiÚ�y³ '%s' o¸missšg…¬am‘”", 
+p
+[1]);
+
+6166 
+”r
+;
+
+6168 
+o
+->
+dhý_ÝtiÚs
+ = 
+Œue
+;
+
+6170 ià(
+	`¡»q
+ (
+p
+[0], "show-adapters"))
+
+6172 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6173 
+	`show_�p_wš_ad­‹rs
+ (
+M_INFO
+|
+M_NOPREFIX
+, 
+M_WARN
+|M_NOPREFIX);
+
+6174 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6176 ià(
+	`¡»q
+ (
+p
+[0], "show-net"))
+
+6178 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6179 
+	`show_rou‹s
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+6180 
+	`show_ad­‹rs
+ (
+M_INFO
+|
+M_NOPREFIX
+);
+
+6181 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6183 ià(
+	`¡»q
+ (
+p
+[0], "show-net-up"))
+
+6185 
+	`VERIFY_PERMISSION
+ (
+OPT_P_UP
+);
+
+6186 
+ÝtiÚs
+->
+show_Ãt_up
+ = 
+Œue
+;
+
+6188 ià(
+	`¡»q
+ (
+p
+[0], "tap-sleep") &&…[1])
+
+6190 
+s
+;
+
+6191 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6192 
+s
+ = 
+	`©oi
+ (
+p
+[1]);
+
+6193 ià(
+s
+ < 0 || s >= 256)
+
+6195 
+	`msg
+ (
+msgËv–
+, "--tap-sleep…arameter must be between 0‡nd 255");
+
+6196 
+”r
+;
+
+6198 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�p_¦“p
+ = 
+s
+;
+
+6200 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-renew"))
+
+6202 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6203 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_»Ãw
+ = 
+Œue
+;
+
+6205 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-pre-release"))
+
+6207 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6208 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_´e_»Ëa£
+ = 
+Œue
+;
+
+6210 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-release"))
+
+6212 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6213 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_»Ëa£
+ = 
+Œue
+;
+
+6215 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-internal") &&…[1])
+
+6217 
+ad­‹r_šdex
+;
+
+6218 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6219 
+	`£t_debug_Ëv–
+ (
+ÝtiÚs
+->
+v”bos™y
+, 
+SDL_CONSTRAIN
+);
+
+6220 
+ad­‹r_šdex
+ = 
+	`©ou
+ (
+p
+[1]);
+
+6221 
+	`¦“p
+ (
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+�p_¦“p
+);
+
+6222 ià(
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_´e_»Ëa£
+)
+
+6223 
+	`dhý_»Ëa£_by_ad­‹r_šdex
+ (
+ad­‹r_šdex
+);
+
+6224 ià(
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+dhý_»Ãw
+)
+
+6225 
+	`dhý_»Ãw_by_ad­‹r_šdex
+ (
+ad­‹r_šdex
+);
+
+6226 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6228 ià(
+	`¡»q
+ (
+p
+[0], "register-dns"))
+
+6230 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6231 
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+»gi¡”_dns
+ = 
+Œue
+;
+
+6233 ià(
+	`¡»q
+ (
+p
+[0], "rdns-internal"))
+
+6241 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6242 
+	`£t_debug_Ëv–
+ (
+ÝtiÚs
+->
+v”bos™y
+, 
+SDL_CONSTRAIN
+);
+
+6243 ià(
+ÝtiÚs
+->
+tuÁ­_ÝtiÚs
+.
+»gi¡”_dns
+)
+
+6244 
+	`�cÚfig_»gi¡”_dns
+ (
+NULL
+);
+
+6245 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6247 ià(
+	`¡»q
+ (
+p
+[0], "show-valid-subnets"))
+
+6249 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6250 
+	`show_v®id_wš32_tun_subÃts
+ ();
+
+6251 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6253 ià(
+	`¡»q
+ (
+p
+[0], "pause-exit"))
+
+6255 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6256 
+	`£t_·u£_ex™_wš32
+ ();
+
+6258 ià(
+	`¡»q
+ (
+p
+[0], "service") &&…[1])
+
+6260 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6261 
+ÝtiÚs
+->
+ex™_ev’t_Çme
+ = 
+p
+[1];
+
+6262 ià(
+p
+[2])
+
+6264 
+ÝtiÚs
+->
+ex™_ev’t_š™Ÿl_¡©e
+ = (
+	`©oi
+(
+p
+[2]) != 0);
+
+6267 ià(
+	`¡»q
+ (
+p
+[0], "allow-nonadmin"))
+
+6269 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6270 
+	`�p_®low_nÚadmš_acûss
+ (
+p
+[1]);
+
+6271 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+6273 ià(
+	`¡»q
+ (
+p
+[0], "user") &&…[1])
+
+6275 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6276 
+	`msg
+ (
+M_WARN
+, "NOTE: --user option is‚ot implemented on Windows");
+
+6278 ià(
+	`¡»q
+ (
+p
+[0], "group") &&…[1])
+
+6280 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6281 
+	`msg
+ (
+M_WARN
+, "NOTE: --group option is‚ot implemented on Windows");
+
+6284 ià(
+	`¡»q
+ (
+p
+[0], "user") &&…[1])
+
+6286 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6287 
+ÝtiÚs
+->
+u£ºame
+ = 
+p
+[1];
+
+6289 ià(
+	`¡»q
+ (
+p
+[0], "group") &&…[1])
+
+6291 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6292 
+ÝtiÚs
+->
+grou²ame
+ = 
+p
+[1];
+
+6294 ià(
+	`¡»q
+ (
+p
+[0], "dhcp-option") &&…[1])
+
+6296 
+	`VERIFY_PERMISSION
+ (
+OPT_P_IPWIN32
+);
+
+6297 
+	`fÜeign_ÝtiÚ
+ (
+ÝtiÚs
+, 
+p
+, 3, 
+es
+);
+
+6299 ià(
+	`¡»q
+ (
+p
+[0], "route-method") &&…[1])
+
+6301 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ROUTE_EXTRAS
+);
+
+6304 #ià
+PASSTOS_CAPABILITY
+
+
+6305 ià(
+	`¡»q
+ (
+p
+[0], "passtos"))
+
+6307 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6308 
+ÝtiÚs
+->
+·s¡os
+ = 
+Œue
+;
+
+6311 #ifdeà
+ENABLE_LZO
+
+
+6312 ià(
+	`¡»q
+ (
+p
+[0], "comp-lzo"))
+
+6314 
+	`VERIFY_PERMISSION
+ (
+OPT_P_COMP
+);
+
+6315 ià(
+p
+[1])
+
+6317 ià(
+	`¡»q
+ (
+p
+[1], "yes"))
+
+6318 
+ÝtiÚs
+->
+lzo
+ = 
+LZO_SELECTED
+|
+LZO_ON
+;
+
+6319 ià(
+	`¡»q
+ (
+p
+[1], "no"))
+
+6320 
+ÝtiÚs
+->
+lzo
+ = 
+LZO_SELECTED
+;
+
+6321 ià(
+	`¡»q
+ (
+p
+[1], "adaptive"))
+
+6322 
+ÝtiÚs
+->
+lzo
+ = 
+LZO_SELECTED
+|
+LZO_ON
+|
+LZO_ADAPTIVE
+;
+
+6325 
+	`msg
+ (
+msgËv–
+, "bad comp-lzØÝtiÚ: % -- mu¡ b�'yes', 'no', o¸'ad­tive'", 
+p
+[1]);
+
+6326 
+”r
+;
+
+6330 
+ÝtiÚs
+->
+lzo
+ = 
+LZO_SELECTED
+|
+LZO_ON
+|
+LZO_ADAPTIVE
+;
+
+6332 ià(
+	`¡»q
+ (
+p
+[0], "comp-noadapt"))
+
+6334 
+	`VERIFY_PERMISSION
+ (
+OPT_P_COMP
+);
+
+6335 
+ÝtiÚs
+->
+lzo
+ &ð~
+LZO_ADAPTIVE
+;
+
+6338 #ifdeà
+ENABLE_CRYPTO
+
+
+6339 ià(
+	`¡»q
+ (
+p
+[0], "show-ciphers"))
+
+6341 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6342 
+ÝtiÚs
+->
+show_c�h”s
+ = 
+Œue
+;
+
+6344 ià(
+	`¡»q
+ (
+p
+[0], "show-digests"))
+
+6346 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6347 
+ÝtiÚs
+->
+show_dige¡s
+ = 
+Œue
+;
+
+6349 ià(
+	`¡»q
+ (
+p
+[0], "show-engines"))
+
+6351 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6352 
+ÝtiÚs
+->
+show_’gšes
+ = 
+Œue
+;
+
+6354 ià(
+	`¡»q
+ (
+p
+[0], "key-direction") &&…[1])
+
+6356 
+key_dœeùiÚ
+;
+
+6358 
+key_dœeùiÚ
+ = 
+	`ascii2keydœeùiÚ
+ (
+msgËv–
+, 
+p
+[1]);
+
+6359 ià(
+key_dœeùiÚ
+ >= 0)
+
+6360 
+ÝtiÚs
+->
+key_dœeùiÚ
+ = key_direction;
+
+6362 
+”r
+;
+
+6364 ià(
+	`¡»q
+ (
+p
+[0], "secret") &&…[1])
+
+6366 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6367 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6369 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže_šlše
+ = 
+p
+[2];
+
+6372 ià(
+p
+[2])
+
+6374 
+key_dœeùiÚ
+;
+
+6376 
+key_dœeùiÚ
+ = 
+	`ascii2keydœeùiÚ
+ (
+msgËv–
+, 
+p
+[2]);
+
+6377 ià(
+key_dœeùiÚ
+ >= 0)
+
+6378 
+ÝtiÚs
+->
+key_dœeùiÚ
+ = key_direction;
+
+6380 
+”r
+;
+
+6382 
+ÝtiÚs
+->
+sh¬ed_£ü‘_fže
+ = 
+p
+[1];
+
+6384 ià(
+	`¡»q
+ (
+p
+[0], "genkey"))
+
+6386 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6387 
+ÝtiÚs
+->
+g’key
+ = 
+Œue
+;
+
+6389 ià(
+	`¡»q
+ (
+p
+[0], "auth") &&…[1])
+
+6391 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6392 
+ÝtiÚs
+->
+authÇme_defšed
+ = 
+Œue
+;
+
+6393 
+ÝtiÚs
+->
+authÇme
+ = 
+p
+[1];
+
+6394 ià(
+	`¡»q
+ (
+ÝtiÚs
+->
+authÇme
+, "none"))
+
+6396 
+ÝtiÚs
+->
+authÇme_defšed
+ = 
+çl£
+;
+
+6397 
+ÝtiÚs
+->
+authÇme
+ = 
+NULL
+;
+
+6400 ià(
+	`¡»q
+ (
+p
+[0], "auth"))
+
+6402 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6403 
+ÝtiÚs
+->
+authÇme_defšed
+ = 
+Œue
+;
+
+6405 ià(
+	`¡»q
+ (
+p
+[0], "cipher") &&…[1])
+
+6407 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6408 
+ÝtiÚs
+->
+c�h”Çme_defšed
+ = 
+Œue
+;
+
+6409 
+ÝtiÚs
+->
+c�h”Çme
+ = 
+p
+[1];
+
+6410 ià(
+	`¡»q
+ (
+ÝtiÚs
+->
+c�h”Çme
+, "none"))
+
+6412 
+ÝtiÚs
+->
+c�h”Çme_defšed
+ = 
+çl£
+;
+
+6413 
+ÝtiÚs
+->
+c�h”Çme
+ = 
+NULL
+;
+
+6416 ià(
+	`¡»q
+ (
+p
+[0], "cipher"))
+
+6418 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6419 
+ÝtiÚs
+->
+c�h”Çme_defšed
+ = 
+Œue
+;
+
+6421 ià(
+	`¡»q
+ (
+p
+[0], "prng") &&…[1])
+
+6423 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6424 ià(
+	`¡»q
+ (
+p
+[1], "none"))
+
+6425 
+ÝtiÚs
+->
+´ng_hash
+ = 
+NULL
+;
+
+6427 
+ÝtiÚs
+->
+´ng_hash
+ = 
+p
+[1];
+
+6428 ià(
+p
+[2])
+
+6430 cÚ¡ 
+¦
+ = 
+	`©oi
+ (
+p
+[2]);
+
+6431 ià(
+¦
+ >ð
+NONCE_SECRET_LEN_MIN
+ && sÈ<ð
+NONCE_SECRET_LEN_MAX
+)
+
+6433 
+ÝtiÚs
+->
+´ng_nÚû_£ü‘_Ën
+ = 
+¦
+;
+
+6437 
+	`msg
+ (
+msgËv–
+, "prng…arameter‚once_secret_len must be between %d‡nd %d",
+
+6438 
+NONCE_SECRET_LEN_MIN
+, 
+NONCE_SECRET_LEN_MAX
+);
+
+6439 
+”r
+;
+
+6443 ià(
+	`¡»q
+ (
+p
+[0], "no-replay"))
+
+6445 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6446 
+ÝtiÚs
+->
+»¶ay
+ = 
+çl£
+;
+
+6448 ià(
+	`¡»q
+ (
+p
+[0], "replay-window"))
+
+6450 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6451 ià(
+p
+[1])
+
+6453 
+»¶ay_wšdow
+;
+
+6455 
+»¶ay_wšdow
+ = 
+	`©oi
+ (
+p
+[1]);
+
+6456 ià(!(
+MIN_SEQ_BACKTRACK
+ <ð
+»¶ay_wšdow
+ &&„•Ïy_wšdow <ð
+MAX_SEQ_BACKTRACK
+))
+
+6458 
+	`msg
+ (
+msgËv–
+, "replay-window window size…arameter (%d) must be between %d‡nd %d",
+
+6459 
+»¶ay_wšdow
+,
+
+6460 
+MIN_SEQ_BACKTRACK
+,
+
+6461 
+MAX_SEQ_BACKTRACK
+);
+
+6462 
+”r
+;
+
+6464 
+ÝtiÚs
+->
+»¶ay_wšdow
+ =„eplay_window;
+
+6466 ià(
+p
+[2])
+
+6468 
+»¶ay_time
+;
+
+6470 
+»¶ay_time
+ = 
+	`©oi
+ (
+p
+[2]);
+
+6471 ià(!(
+MIN_TIME_BACKTRACK
+ <ð
+»¶ay_time
+ &&„•Ïy_tim�<ð
+MAX_TIME_BACKTRACK
+))
+
+6473 
+	`msg
+ (
+msgËv–
+, "replay-window�ime window…arameter (%d) must be between %d‡nd %d",
+
+6474 
+»¶ay_time
+,
+
+6475 
+MIN_TIME_BACKTRACK
+,
+
+6476 
+MAX_TIME_BACKTRACK
+);
+
+6477 
+”r
+;
+
+6479 
+ÝtiÚs
+->
+»¶ay_time
+ =„eplay_time;
+
+6484 
+	`msg
+ (
+msgËv–
+, "replay-window option is missing window size…arameter");
+
+6485 
+”r
+;
+
+6488 ià(
+	`¡»q
+ (
+p
+[0], "mute-replay-warnings"))
+
+6490 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6491 
+ÝtiÚs
+->
+mu‹_»¶ay_w¬nšgs
+ = 
+Œue
+;
+
+6493 ià(
+	`¡»q
+ (
+p
+[0], "no-iv"))
+
+6495 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6496 
+ÝtiÚs
+->
+u£_iv
+ = 
+çl£
+;
+
+6498 ià(
+	`¡»q
+ (
+p
+[0], "replay-persist") &&…[1])
+
+6500 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6501 
+ÝtiÚs
+->
+·ck‘_id_fže
+ = 
+p
+[1];
+
+6503 ià(
+	`¡»q
+ (
+p
+[0], "test-crypto"))
+
+6505 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6506 
+ÝtiÚs
+->
+‹¡_üy±o
+ = 
+Œue
+;
+
+6508 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+6509 ià(
+	`¡»q
+ (
+p
+[0], "engine"))
+
+6511 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6512 ià(
+p
+[1])
+
+6514 
+ÝtiÚs
+->
+’gše
+ = 
+p
+[1];
+
+6517 
+ÝtiÚs
+->
+’gše
+ = "auto";
+
+6520 #ifdeà
+HAVE_EVP_CIPHER_CTX_SET_KEY_LENGTH
+
+
+6521 ià(
+	`¡»q
+ (
+p
+[0], "keysize") &&…[1])
+
+6523 
+keysize
+;
+
+6525 
+	`VERIFY_PERMISSION
+ (
+OPT_P_CRYPTO
+);
+
+6526 
+keysize
+ = 
+	`©oi
+ (
+p
+[1]) / 8;
+
+6527 ià(
+keysize
+ < 0 || keysiz�> 
+MAX_CIPHER_KEY_LENGTH
+)
+
+6529 
+	`msg
+ (
+msgËv–
+, "Bad keysize: %s", 
+p
+[1]);
+
+6530 
+”r
+;
+
+6532 
+ÝtiÚs
+->
+keysize
+ = keysize;
+
+6535 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+6536 ià(
+	`¡»q
+ (
+p
+[0], "use-prediction-resistance"))
+
+6538 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6539 
+ÝtiÚs
+->
+u£_´ediùiÚ_»si¡ªû
+ = 
+Œue
+;
+
+6542 #ifdeà
+ENABLE_SSL
+
+
+6543 ià(
+	`¡»q
+ (
+p
+[0], "show-tls"))
+
+6545 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6546 
+ÝtiÚs
+->
+show_Žs_c�h”s
+ = 
+Œue
+;
+
+6548 ià(
+	`¡»q
+ (
+p
+[0], "tls-server"))
+
+6550 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6551 
+ÝtiÚs
+->
+Žs_£rv”
+ = 
+Œue
+;
+
+6553 ià(
+	`¡»q
+ (
+p
+[0], "tls-client"))
+
+6555 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6556 
+ÝtiÚs
+->
+Žs_þ›Á
+ = 
+Œue
+;
+
+6558 ià(
+	`¡»q
+ (
+p
+[0], "ca") &&…[1])
+
+6560 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6561 
+ÝtiÚs
+->
+ÿ_fže
+ = 
+p
+[1];
+
+6562 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6564 
+ÝtiÚs
+->
+ÿ_fže_šlše
+ = 
+p
+[2];
+
+6567 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+6568 ià(
+	`¡»q
+ (
+p
+[0], "capath") &&…[1])
+
+6570 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6571 
+ÝtiÚs
+->
+ÿ_·th
+ = 
+p
+[1];
+
+6574 ià(
+	`¡»q
+ (
+p
+[0], "dh") &&…[1])
+
+6576 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6577 
+ÝtiÚs
+->
+dh_fže
+ = 
+p
+[1];
+
+6578 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6580 
+ÝtiÚs
+->
+dh_fže_šlše
+ = 
+p
+[2];
+
+6583 ià(
+	`¡»q
+ (
+p
+[0], "cert") &&…[1])
+
+6585 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6586 
+ÝtiÚs
+->
+û¹_fže
+ = 
+p
+[1];
+
+6587 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6589 
+ÝtiÚs
+->
+û¹_fže_šlše
+ = 
+p
+[2];
+
+6592 ià(
+	`¡»q
+ (
+p
+[0], "extra-certs") &&…[1])
+
+6594 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6595 
+ÝtiÚs
+->
+exŒa_û¹s_fže
+ = 
+p
+[1];
+
+6596 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6598 
+ÝtiÚs
+->
+exŒa_û¹s_fže_šlše
+ = 
+p
+[2];
+
+6601 ià(
+	`¡»q
+ (
+p
+[0], "verify-hash") &&…[1])
+
+6603 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6604 
+ÝtiÚs
+->
+v”ify_hash
+ = 
+	`·r£_hash_fšg”´št
+(
+p
+[1], 
+SHA_DIGEST_LENGTH
+, 
+msgËv–
+, &ÝtiÚs->
+gc
+);
+
+6606 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+6607 ià(
+	`¡»q
+ (
+p
+[0], "cryptoapicert") &&…[1])
+
+6609 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6610 
+ÝtiÚs
+->
+üy±ßpi_û¹
+ = 
+p
+[1];
+
+6613 ià(
+	`¡»q
+ (
+p
+[0], "key") &&…[1])
+
+6615 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6616 
+ÝtiÚs
+->
+´iv_key_fže
+ = 
+p
+[1];
+
+6617 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6619 
+ÝtiÚs
+->
+´iv_key_fže_šlše
+ = 
+p
+[2];
+
+6622 ià(
+	`¡»q
+ (
+p
+[0], "tls-version-min") &&…[1])
+
+6624 
+v”
+;
+
+6625 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6626 
+v”
+ = 
+	`Žs_v”siÚ_·r£
+(
+p
+[1],…[2]);
+
+6627 ià(
+v”
+ =ð
+TLS_VER_BAD
+)
+
+6629 
+	`msg
+ (
+msgËv–
+, "unknowÀŽs-v”siÚ-mš…¬am‘”: %s", 
+p
+[1]);
+
+6630 
+”r
+;
+
+6632 
+ÝtiÚs
+->
+s¦_æags
+ &=
+
+6633 ~(
+SSLF_TLS_VERSION_MIN_MASK
+ << 
+SSLF_TLS_VERSION_MIN_SHIFT
+);
+
+6634 
+ÝtiÚs
+->
+s¦_æags
+ |ð(
+v”
+ << 
+SSLF_TLS_VERSION_MIN_SHIFT
+);
+
+6636 ià(
+	`¡»q
+ (
+p
+[0], "tls-version-max") &&…[1])
+
+6638 
+v”
+;
+
+6639 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6640 
+v”
+ = 
+	`Žs_v”siÚ_·r£
+(
+p
+[1], 
+NULL
+);
+
+6641 ià(
+v”
+ =ð
+TLS_VER_BAD
+)
+
+6643 
+	`msg
+ (
+msgËv–
+, "unknowÀŽs-v”siÚ-max…¬am‘”: %s", 
+p
+[1]);
+
+6644 
+”r
+;
+
+6646 
+ÝtiÚs
+->
+s¦_æags
+ &=
+
+6647 ~(
+SSLF_TLS_VERSION_MAX_MASK
+ << 
+SSLF_TLS_VERSION_MAX_SHIFT
+);
+
+6648 
+ÝtiÚs
+->
+s¦_æags
+ |ð(
+v”
+ << 
+SSLF_TLS_VERSION_MAX_SHIFT
+);
+
+6650 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+6651 ià(
+	`¡»q
+ (
+p
+[0], "pkcs12") &&…[1])
+
+6653 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6654 
+ÝtiÚs
+->
+pkcs12_fže
+ = 
+p
+[1];
+
+6655 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6657 
+ÝtiÚs
+->
+pkcs12_fže_šlše
+ = 
+p
+[2];
+
+6661 ià(
+	`¡»q
+ (
+p
+[0], "askpass"))
+
+6663 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6664 ià(
+p
+[1])
+
+6666 
+ÝtiÚs
+->
+key_·ss_fže
+ = 
+p
+[1];
+
+6669 
+ÝtiÚs
+->
+key_·ss_fže
+ = "stdin";
+
+6671 ià(
+	`¡»q
+ (
+p
+[0], "auth-nocache"))
+
+6673 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6674 
+	`s¦_£t_auth_noÿche
+ ();
+
+6676 ià(
+	`¡»q
+ (
+p
+[0], "auth-token") &&…[1])
+
+6678 
+	`VERIFY_PERMISSION
+ (
+OPT_P_ECHO
+);
+
+6679 
+	`s¦_£t_auth_tok’
+(
+p
+[1]);
+
+6680 #ifdeà
+ENABLE_MANAGEMENT
+
+
+6681 ià(
+mªagem’t
+)
+
+6682 
+	`mªagem’t_auth_tok’
+ (
+mªagem’t
+, 
+p
+[1]);
+
+6685 ià(
+	`¡»q
+ (
+p
+[0], "single-session"))
+
+6687 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6688 
+ÝtiÚs
+->
+sšgË_£ssiÚ
+ = 
+Œue
+;
+
+6690 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+6691 ià(
+	`¡»q
+ (
+p
+[0], "push-peer-info"))
+
+6693 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6694 
+ÝtiÚs
+->
+push_³”_šfo
+ = 
+Œue
+;
+
+6697 ià(
+	`¡»q
+ (
+p
+[0], "tls-exit"))
+
+6699 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6700 
+ÝtiÚs
+->
+Žs_ex™
+ = 
+Œue
+;
+
+6702 ià(
+	`¡»q
+ (
+p
+[0], "tls-cipher") &&…[1])
+
+6704 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6705 
+ÝtiÚs
+->
+c�h”_li¡
+ = 
+p
+[1];
+
+6707 ià(
+	`¡»q
+ (
+p
+[0], "crl-verify") &&…[1])
+
+6709 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6710 ià(
+p
+[2] && 
+	`¡»q
+(p[2], "dir"))
+
+6711 
+ÝtiÚs
+->
+s¦_æags
+ |ð
+SSLF_CRL_VERIFY_DIR
+;
+
+6712 
+ÝtiÚs
+->
+ül_fže
+ = 
+p
+[1];
+
+6714 ià(
+	`¡»q
+ (
+p
+[0], "tls-verify") &&…[1])
+
+6716 
+	`VERIFY_PERMISSION
+ (
+OPT_P_SCRIPT
+);
+
+6717 ià(!
+	`no_mÜe_thª_n_¬gs
+ (
+msgËv–
+, 
+p
+, 2, 
+NM_QUOTE_HINT
+))
+
+6718 
+”r
+;
+
+6719 
+	`£t_u£r_sü�t
+ (
+ÝtiÚs
+, &ÝtiÚs->
+Žs_v”ify
+,
+
+6720 
+	`¡ršg_sub¡™u‹
+ (
+p
+[1], ',', ' ', &
+ÝtiÚs
+->
+gc
+),
+
+6721 "Žs-v”ify", 
+Œue
+);
+
+6723 #iâdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+6724 ià(
+	`¡»q
+ (
+p
+[0], "tls-export-cert") &&…[1])
+
+6726 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6727 
+ÝtiÚs
+->
+Žs_expÜt_û¹
+ = 
+p
+[1];
+
+6730 ià(
+	`¡»q
+ (
+p
+[0], "compat-names"))
+
+6732 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6733 ià(
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+VERIFY_X509_NONE
+ &&
+
+6734 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_DN
+ &&
+
+6735 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_RDN_PREFIX
+)
+
+6737 
+	`msg
+ (
+msgËv–
+, "you cannot use --compat-names with --verify-x509-name");
+
+6738 
+”r
+;
+
+6740 
+	`msg
+ (
+M_WARN
+, "DEPRECATED OPTION: --compat-names,…lease update your configuration");
+
+6741 
+	`com·t_æag
+ (
+COMPAT_FLAG_SET
+ | 
+COMPAT_NAMES
+);
+
+6742 #ià
+P2MP_SERVER
+
+
+6743 ià(
+p
+[1] && 
+	`¡»q
+ (p[1], "no-remapping"))
+
+6744 
+	`com·t_æag
+ (
+COMPAT_FLAG_SET
+ | 
+COMPAT_NO_NAME_REMAPPING
+);
+
+6746 ià(
+	`¡»q
+ (
+p
+[0], "no-name-remapping"))
+
+6748 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6749 ià(
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+VERIFY_X509_NONE
+ &&
+
+6750 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_DN
+ &&
+
+6751 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_RDN_PREFIX
+)
+
+6753 
+	`msg
+ (
+msgËv–
+, "you cannot use --no-name-remapping with --verify-x509-name");
+
+6754 
+”r
+;
+
+6756 
+	`msg
+ (
+M_WARN
+, "DEPRECATED OPTION: --no-name-remapping,…lease update your configuration");
+
+6757 
+	`com·t_æag
+ (
+COMPAT_FLAG_SET
+ | 
+COMPAT_NAMES
+);
+
+6758 
+	`com·t_æag
+ (
+COMPAT_FLAG_SET
+ | 
+COMPAT_NO_NAME_REMAPPING
+);
+
+6761 ià(
+	`¡»q
+ (
+p
+[0], "tls-remote") &&…[1])
+
+6763 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6765 ià(
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+VERIFY_X509_NONE
+ &&
+
+6766 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_DN
+ &&
+
+6767 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ !ð
+TLS_REMOTE_SUBJECT_RDN_PREFIX
+)
+
+6769 
+	`msg
+ (
+msgËv–
+, "you cannot use --tls-remote with --verify-x509-name");
+
+6770 
+”r
+;
+
+6772 
+	`msg
+ (
+M_WARN
+, "DEPRECATED OPTION: --tls-remote,…lease update your configuration");
+
+6774 ià(
+	`¡¾’
+ (
+p
+[1]))
+
+6776 
+is_u£ºame
+ = (!
+	`¡rchr
+ (
+p
+[1], '='è|| !
+	`¡r¡r
+ (p[1], ", "));
+
+6777 
+ty³
+ = 
+TLS_REMOTE_SUBJECT_DN
+;
+
+6778 ià(
+p
+[1][0] !ð'/' && 
+is_u£ºame
+)
+
+6779 
+ty³
+ = 
+TLS_REMOTE_SUBJECT_RDN_PREFIX
+;
+
+6785 ià(
+p
+[1][0] =ð'/' || 
+is_u£ºame
+)
+
+6786 
+	`com·t_æag
+ (
+COMPAT_FLAG_SET
+ | 
+COMPAT_NAMES
+);
+
+6788 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ = 
+ty³
+;
+
+6789 
+ÝtiÚs
+->
+v”ify_x509_Çme
+ = 
+p
+[1];
+
+6792 ià(
+	`¡»q
+ (
+p
+[0], "v”ify-x509-Çme"è&&…[1] && 
+	`¡¾’
+ (p[1]))
+
+6794 
+ty³
+ = 
+VERIFY_X509_SUBJECT_DN
+;
+
+6795 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6796 ià(
+ÝtiÚs
+->
+v”ify_x509_ty³
+ =ð
+TLS_REMOTE_SUBJECT_DN
+ ||
+
+6797 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ =ð
+TLS_REMOTE_SUBJECT_RDN_PREFIX
+)
+
+6799 
+	`msg
+ (
+msgËv–
+, "you cannot use --verify-x509-name with --tls-remote");
+
+6800 
+”r
+;
+
+6802 ià(
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NAMES
+))
+
+6804 
+	`msg
+ (
+msgËv–
+, "you cannot use --verify-x509-name with "
+
+6806 
+”r
+;
+
+6808 ià(
+p
+[2])
+
+6810 ià(
+	`¡»q
+ (
+p
+[2], "subject"))
+
+6811 
+ty³
+ = 
+VERIFY_X509_SUBJECT_DN
+;
+
+6812 ià(
+	`¡»q
+ (
+p
+[2], "name"))
+
+6813 
+ty³
+ = 
+VERIFY_X509_SUBJECT_RDN
+;
+
+6814 ià(
+	`¡»q
+ (
+p
+[2], "name-prefix"))
+
+6815 
+ty³
+ = 
+VERIFY_X509_SUBJECT_RDN_PREFIX
+;
+
+6818 
+	`msg
+ (
+msgËv–
+, "unknowÀX.509‚am�ty³: %s", 
+p
+[2]);
+
+6819 
+”r
+;
+
+6822 
+ÝtiÚs
+->
+v”ify_x509_ty³
+ = 
+ty³
+;
+
+6823 
+ÝtiÚs
+->
+v”ify_x509_Çme
+ = 
+p
+[1];
+
+6825 ià(
+	`¡»q
+ (
+p
+[0], "ns-cert-type") &&…[1])
+
+6827 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6828 ià(
+	`¡»q
+ (
+p
+[1], "server"))
+
+6829 
+ÝtiÚs
+->
+ns_û¹_ty³
+ = 
+NS_CERT_CHECK_SERVER
+;
+
+6830 ià(
+	`¡»q
+ (
+p
+[1], "client"))
+
+6831 
+ÝtiÚs
+->
+ns_û¹_ty³
+ = 
+NS_CERT_CHECK_CLIENT
+;
+
+6834 
+	`msg
+ (
+msgËv–
+, "--ns-cert-type must be 'client' or 'server'");
+
+6835 
+”r
+;
+
+6838 #ià
+OPENSSL_VERSION_NUMBER
+ >ð0x00907000L || 
+ENABLE_CRYPTO_POLARSSL
+
+
+6839 ià(
+	`¡»q
+ (
+p
+[0], "remote-cert-ku"))
+
+6841 
+j
+;
+
+6843 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6845 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+6846 
+	`ssÿnf
+ (
+p
+[
+j
+], "%x", &(
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[j-1]));
+
+6848 ià(
+	`¡»q
+ (
+p
+[0], "remote-cert-eku") &&…[1])
+
+6850 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6851 
+ÝtiÚs
+->
+»mÙe_û¹_eku
+ = 
+p
+[1];
+
+6853 ià(
+	`¡»q
+ (
+p
+[0], "remote-cert-tls") &&…[1])
+
+6855 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6857 ià(
+	`¡»q
+ (
+p
+[1], "server"))
+
+6859 
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[0] = 0xa0;
+
+6860 
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[1] = 0x88;
+
+6861 
+ÝtiÚs
+->
+»mÙe_û¹_eku
+ = "TLS Web Server Authentication";
+
+6863 ià(
+	`¡»q
+ (
+p
+[1], "client"))
+
+6865 
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[0] = 0x80;
+
+6866 
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[1] = 0x08;
+
+6867 
+ÝtiÚs
+->
+»mÙe_û¹_ku
+[2] = 0x88;
+
+6868 
+ÝtiÚs
+->
+»mÙe_û¹_eku
+ = "TLS Web Client Authentication";
+
+6872 
+	`msg
+ (
+msgËv–
+, "--remote-cert-tls must be 'client' or 'server'");
+
+6873 
+”r
+;
+
+6877 ià(
+	`¡»q
+ (
+p
+[0], "tls-timeout") &&…[1])
+
+6879 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6880 
+ÝtiÚs
+->
+Žs_timeout
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6882 ià(
+	`¡»q
+ (
+p
+[0], "reneg-bytes") &&…[1])
+
+6884 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6885 
+ÝtiÚs
+->
+»ÃgÙŸ‹_by‹s
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6887 ià(
+	`¡»q
+ (
+p
+[0], "reneg-pkts") &&…[1])
+
+6889 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6890 
+ÝtiÚs
+->
+»ÃgÙŸ‹_·ck‘s
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6892 ià(
+	`¡»q
+ (
+p
+[0], "reneg-sec") &&…[1])
+
+6894 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6895 
+ÝtiÚs
+->
+»ÃgÙŸ‹_£cÚds
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6897 ià(
+	`¡»q
+ (
+p
+[0], "hand-window") &&…[1])
+
+6899 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6900 
+ÝtiÚs
+->
+hªdshake_wšdow
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6902 ià(
+	`¡»q
+ (
+p
+[0], "tran-window") &&…[1])
+
+6904 
+	`VERIFY_PERMISSION
+ (
+OPT_P_TLS_PARMS
+);
+
+6905 
+ÝtiÚs
+->
+Œªs™iÚ_wšdow
+ = 
+	`pos™ive_©oi
+ (
+p
+[1]);
+
+6907 ià(
+	`¡»q
+ (
+p
+[0], "tls-auth") &&…[1])
+
+6909 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6910 ià(
+	`¡»q
+ (
+p
+[1], 
+INLINE_FILE_TAG
+) &&…[2])
+
+6912 
+ÝtiÚs
+->
+Žs_auth_fže_šlše
+ = 
+p
+[2];
+
+6915 ià(
+p
+[2])
+
+6917 
+key_dœeùiÚ
+;
+
+6919 
+key_dœeùiÚ
+ = 
+	`ascii2keydœeùiÚ
+ (
+msgËv–
+, 
+p
+[2]);
+
+6920 ià(
+key_dœeùiÚ
+ >= 0)
+
+6921 
+ÝtiÚs
+->
+key_dœeùiÚ
+ = key_direction;
+
+6923 
+”r
+;
+
+6925 
+ÝtiÚs
+->
+Žs_auth_fže
+ = 
+p
+[1];
+
+6927 ià(
+	`¡»q
+ (
+p
+[0], "key-method") &&…[1])
+
+6929 
+key_m‘hod
+;
+
+6931 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6932 
+key_m‘hod
+ = 
+	`©oi
+ (
+p
+[1]);
+
+6933 ià(
+key_m‘hod
+ < 
+KEY_METHOD_MIN
+ || key_m‘hod > 
+KEY_METHOD_MAX
+)
+
+6935 
+	`msg
+ (
+msgËv–
+, "key_method…arameter (%d) must be >= %d‡nd <= %d",
+
+6936 
+key_m‘hod
+,
+
+6937 
+KEY_METHOD_MIN
+,
+
+6938 
+KEY_METHOD_MAX
+);
+
+6939 
+”r
+;
+
+6941 
+ÝtiÚs
+->
+key_m‘hod
+ = key_method;
+
+6943 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+6944 ià(
+	`¡»q
+ (
+p
+[0], "x509-username-field") &&…[1])
+
+6953 *
+s
+ = 
+p
+[1];
+
+6955 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+6956 ià(
+	`¡ºcmp
+("ext:", 
+s
+, 4) != 0)
+
+6958 
+size_t
+ 
+i
+ = 0;
+
+6959 
+s
+[
+i
+] && !
+	`isuµ”
+(s[i])) i++;
+
+6960 ià(
+	`¡¾’
+(
+s
+è=ð
+i
+)
+
+6962 (*
+s
+ = 
+	`touµ”
+(*s)) != '\0') s++;
+
+6963 
+	`msg
+(
+M_WARN
+, "DEPRECATED FEATURE:‡utomatically upcased�he "
+
+6965 "cÚfigu¿tiÚ", 
+p
+[1]);
+
+6968 
+ÝtiÚs
+->
+x509_u£ºame_f›ld
+ = 
+p
+[1];
+
+6973 #ifdeà
+ENABLE_PKCS11
+
+
+6974 ià(
+	`¡»q
+ (
+p
+[0], "show-pkcs11-ids"))
+
+6976 *
+´ovid”
+ = 
+p
+[1];
+
+6977 
+boÞ
+ 
+û¹_´iv©e
+ = (
+p
+[2] =ð
+NULL
+ ? 
+çl£
+ : ( 
+	`©oi
+ (p[2]) != 0 ));
+
+6979 #ifdeà
+DEFAULT_PKCS11_MODULE
+
+
+6980 ià(!
+´ovid”
+)
+
+6981 
+´ovid”
+ = 
+DEFAULT_PKCS11_MODULE
+;
+
+6982 ià(!
+p
+[2])
+
+6984 *
+’dp
+ = 
+NULL
+;
+
+6985 
+i
+ = 
+	`¡¹Þ
+(
+´ovid”
+, &
+’dp
+, 10);
+
+6987 ià(*
+’dp
+ == 0)
+
+6991 
+´ovid”
+ = 
+DEFAULT_PKCS11_MODULE
+;
+
+6992 
+û¹_´iv©e
+ = 
+i
+;
+
+6996 ià(!
+´ovid”
+)
+
+6998 
+	`msg
+ (
+msgËv–
+, "--show-pkcs11-ids„equires‡…rovider…arameter");
+
+6999 
+”r
+;
+
+7002 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7004 
+	`£t_debug_Ëv–
+ (
+ÝtiÚs
+->
+v”bos™y
+, 
+SDL_CONSTRAIN
+);
+
+7005 
+	`show_pkcs11_ids
+ (
+´ovid”
+, 
+û¹_´iv©e
+);
+
+7006 
+	`Ý’v²_ex™
+ (
+OPENVPN_EXIT_STATUS_GOOD
+);
+
+7008 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-providers") &&…[1])
+
+7010 
+j
+;
+
+7012 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7014 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+7015 
+ÝtiÚs
+->
+pkcs11_´ovid”s
+[
+j
+-1] = 
+p
+[j];
+
+7017 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-protected-authentication"))
+
+7019 
+j
+;
+
+7021 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7023 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+7024 
+ÝtiÚs
+->
+pkcs11_´Ùeùed_auth’tiÿtiÚ
+[
+j
+-1] = 
+	`©oi
+ (
+p
+[j]) != 0 ? 1 : 0;
+
+7026 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-private-mode") &&…[1])
+
+7028 
+j
+;
+
+7030 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7032 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+7033 
+	`ssÿnf
+ (
+p
+[
+j
+], "%x", &(
+ÝtiÚs
+->
+pkcs11_´iv©e_mode
+[j-1]));
+
+7035 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-cert-private"))
+
+7037 
+j
+;
+
+7039 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7041 
+j
+ = 1; j < 
+MAX_PARMS
+ && 
+p
+[j] !ð
+NULL
+; ++j)
+
+7042 
+ÝtiÚs
+->
+pkcs11_û¹_´iv©e
+[
+j
+-1] = 
+	`©oi
+ (
+p
+[j]) != 0 ? 1 : 0;
+
+7044 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-pin-cache") &&…[1])
+
+7046 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7047 
+ÝtiÚs
+->
+pkcs11_pš_ÿche_³riod
+ = 
+	`©oi
+ (
+p
+[1]);
+
+7049 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-id") &&…[1])
+
+7051 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7052 
+ÝtiÚs
+->
+pkcs11_id
+ = 
+p
+[1];
+
+7054 ià(
+	`¡»q
+ (
+p
+[0], "pkcs11-id-management"))
+
+7056 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7057 
+ÝtiÚs
+->
+pkcs11_id_mªagem’t
+ = 
+Œue
+;
+
+7060 ià(
+	`¡»q
+ (
+p
+[0], "rmtun"))
+
+7062 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7063 
+ÝtiÚs
+->
+³rsi¡_cÚfig
+ = 
+Œue
+;
+
+7064 
+ÝtiÚs
+->
+³rsi¡_mode
+ = 0;
+
+7066 ià(
+	`¡»q
+ (
+p
+[0], "mktun"))
+
+7068 
+	`VERIFY_PERMISSION
+ (
+OPT_P_GENERAL
+);
+
+7069 
+ÝtiÚs
+->
+³rsi¡_cÚfig
+ = 
+Œue
+;
+
+7070 
+ÝtiÚs
+->
+³rsi¡_mode
+ = 1;
+
+7072 ià(
+	`¡»q
+ (
+p
+[0], "peer-id") &&…[1])
+
+7074 
+	`VERIFY_PERMISSION
+ (
+OPT_P_PEER_ID
+);
+
+7075 
+ÝtiÚs
+->
+u£_³”_id
+ = 
+Œue
+;
+
+7076 
+ÝtiÚs
+->
+³”_id
+ = 
+	`©oi
+(
+p
+[1]);
+
+7080 
+i
+;
+
+7081 
+msgËv–
+ð
+msgËv–_fc
+;
+
+7084 
+i
+=0; 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+ && options->ignore_unknown_option[i]; i++)
+
+7086 ià(
+	`¡»q
+(
+p
+[0], 
+ÝtiÚs
+->
+ignÜe_unknown_ÝtiÚ
+[
+i
+]))
+
+7088 
+msgËv–
+ = 
+M_WARN
+;
+
+7092 ià(
+fže
+)
+
+7093 
+	`msg
+ (
+msgËv–
+, "UÄecognized o±iÚ o¸missšg…¬am‘”(sèš %s:%d: % (%s)", 
+fže
+, 
+lše
+, 
+p
+[0], 
+PACKAGE_VERSION
+);
+
+7095 
+	`msg
+ (
+msgËv–
+, "UÄecognized o±iÚ o¸missšg…¬am‘”(s): --% (%s)", 
+p
+[0], 
+PACKAGE_VERSION
+);
+
+7097 
+”r
+:
+
+7098 
+	`gc_ä“
+ (&
+gc
+);
+
+7099 
+	}
+}
+
+	@options.h
+
+30 #iâdeà
+OPTIONS_H
+
+
+31 
+	#OPTIONS_H
+
+
+	)
+
+33 
+	~"basic.h
+"
+
+34 
+	~"commÚ.h
+"
+
+35 
+	~"mtu.h
+"
+
+36 
+	~"rou‹.h
+"
+
+37 
+	~"tun.h
+"
+
+38 
+	~"sock‘.h
+"
+
+39 
+	~"¶ugš.h
+"
+
+40 
+	~"mªage.h
+"
+
+41 
+	~"´oxy.h
+"
+
+42 
+	~"lzo.h
+"
+
+43 
+	~"pushli¡.h
+"
+
+44 
+	~"þš©.h
+"
+
+50 
+	#MAX_PARMS
+ 16
+
+	)
+
+55 
+	#OPTION_PARM_SIZE
+ 256
+
+	)
+
+56 
+	#OPTION_LINE_SIZE
+ 256
+
+	)
+
+58 
cÚ¡ 
+t™Ë_¡ršg
+[];
+
+60 #ià
+P2MP
+
+
+63 
+	sÝtiÚs_´e_puÎ
+
+
+65 
+boÞ
+ 
+	mtuÁ­_ÝtiÚs_defšed
+;
+
+66 
+tuÁ­_ÝtiÚs
+ 
+	mtuÁ­_ÝtiÚs
+;
+
+68 
+boÞ
+ 
+	mrou‹s_defšed
+;
+
+69 
+rou‹_ÝtiÚ_li¡
+ *
+	mrou‹s
+;
+
+71 
+boÞ
+ 
+	mrou‹s_�v6_defšed
+;
+
+72 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+	mrou‹s_�v6
+;
+
+74 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+75 
+boÞ
+ 
+	mþ›Á_Çt_defšed
+;
+
+76 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+	mþ›Á_Çt
+;
+
+79 
+	mfÜeign_ÝtiÚ_šdex
+;
+
+83 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& !defšed(
+ENABLE_CRYPTO_OPENSSL
+è&& !defšed(
+ENABLE_CRYPTO_POLARSSL
+)
+
+87 
+	scÚÃùiÚ_’Œy
+
+
+89 
+	m´Ùo
+;
+
+90 
+	mloÿl_pÜt
+;
+
+91 
+boÞ
+ 
+	mloÿl_pÜt_defšed
+;
+
+92 
+	m»mÙe_pÜt
+;
+
+93 cÚ¡ *
+	mloÿl
+;
+
+94 cÚ¡ *
+	m»mÙe
+;
+
+95 
+boÞ
+ 
+	m»mÙe_æßt
+;
+
+96 
+boÞ
+ 
+	mbšd_defšed
+;
+
+97 
+boÞ
+ 
+	mbšd_loÿl
+;
+
+98 
+	mcÚÃù_»Œy_£cÚds
+;
+
+99 
+boÞ
+ 
+	mcÚÃù_»Œy_defšed
+;
+
+100 
+	mcÚÃù_»Œy_max
+;
+
+101 
+	mcÚÃù_timeout
+;
+
+102 
+boÞ
+ 
+	mcÚÃù_timeout_defšed
+;
+
+103 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+104 
+h‰p_´oxy_ÝtiÚs
+ *
+	mh‰p_´oxy_ÝtiÚs
+;
+
+106 #ifdeà
+ENABLE_SOCKS
+
+
+107 cÚ¡ *
+	msocks_´oxy_£rv”
+;
+
+108 
+	msocks_´oxy_pÜt
+;
+
+109 cÚ¡ *
+	msocks_´oxy_authfže
+;
+
+110 
+boÞ
+ 
+	msocks_´oxy_»Œy
+;
+
+113 
+	mtun_mtu
+;
+
+114 
+boÞ
+ 
+	mtun_mtu_defšed
+;
+
+115 
+	mtun_mtu_exŒa
+;
+
+116 
+boÞ
+ 
+	mtun_mtu_exŒa_defšed
+;
+
+117 
+	mlšk_mtu
+;
+
+118 
+boÞ
+ 
+	mlšk_mtu_defšed
+;
+
+121 
+	mmtu_discov”_ty³
+;
+
+123 
+	mäagm’t
+;
+
+124 
+	mmssfix
+;
+
+125 
+boÞ
+ 
+	mmssfix_deçuÉ
+;
+
+127 #ifdeà
+ENABLE_OCC
+
+
+128 
+	mex¶ic™_ex™_nÙifiÿtiÚ
+;
+
+131 
+	#CE_DISABLED
+ (1<<0)
+
+	)
+
+132 
+	#CE_MAN_QUERY_PROXY
+ (1<<1)
+
+	)
+
+133 
+	#CE_MAN_QUERY_REMOTE_UNDEF
+ 0
+
+	)
+
+134 
+	#CE_MAN_QUERY_REMOTE_QUERY
+ 1
+
+	)
+
+135 
+	#CE_MAN_QUERY_REMOTE_ACCEPT
+ 2
+
+	)
+
+136 
+	#CE_MAN_QUERY_REMOTE_MOD
+ 3
+
+	)
+
+137 
+	#CE_MAN_QUERY_REMOTE_SKIP
+ 4
+
+	)
+
+138 
+	#CE_MAN_QUERY_REMOTE_MASK
+ (0x07)
+
+	)
+
+139 
+	#CE_MAN_QUERY_REMOTE_SHIFT
+ (2)
+
+	)
+
+140 
+	mæags
+;
+
+143 
+	s»mÙe_’Œy
+
+
+145 cÚ¡ *
+	m»mÙe
+;
+
+146 
+	m»mÙe_pÜt
+;
+
+147 
+	m´Ùo
+;
+
+150 
+	#CONNECTION_LIST_SIZE
+ 64
+
+	)
+
+152 
+	scÚÃùiÚ_li¡
+
+
+154 
+	mËn
+;
+
+155 
+	mcu¼’t
+;
+
+156 
+	mn_cyþes
+;
+
+157 
+boÞ
+ 
+	mno_advªû
+;
+
+158 
+cÚÃùiÚ_’Œy
+ *
+	m¬¿y
+[
+CONNECTION_LIST_SIZE
+];
+
+161 
+	s»mÙe_li¡
+
+
+163 
+	mËn
+;
+
+164 
+»mÙe_’Œy
+ *
+	m¬¿y
+[
+CONNECTION_LIST_SIZE
+];
+
+167 
+	s»mÙe_ho¡_¡Üe
+
+
+169 
+	#RH_HOST_LEN
+ 80
+
+	)
+
+170 
+	mho¡
+[
+RH_HOST_LEN
+];
+
+174 
+	sÝtiÚs
+
+
+176 
+gc_¬’a
+ 
+	mgc
+;
+
+177 
+boÞ
+ 
+	mgc_owÃd
+;
+
+180 cÚ¡ *
+	mcÚfig
+;
+
+183 
+	#MODE_POINT_TO_POINT
+ 0
+
+	)
+
+184 
+	#MODE_SERVER
+ 1
+
+	)
+
+185 
+	mmode
+;
+
+188 
+boÞ
+ 
+	mfÜw¬d_com·tibË
+;
+
+190 cÚ¡ ** 
+	mignÜe_unknown_ÝtiÚ
+;
+
+193 
+boÞ
+ 
+	m³rsi¡_cÚfig
+;
+
+194 
+	m³rsi¡_mode
+;
+
+196 #ifdeà
+ENABLE_CRYPTO
+
+
+197 cÚ¡ *
+	mkey_·ss_fže
+;
+
+198 
+boÞ
+ 
+	mshow_c�h”s
+;
+
+199 
+boÞ
+ 
+	mshow_dige¡s
+;
+
+200 
+boÞ
+ 
+	mshow_’gšes
+;
+
+201 #ifdeà
+ENABLE_SSL
+
+
+202 
+boÞ
+ 
+	mshow_Žs_c�h”s
+;
+
+204 
+boÞ
+ 
+	mg’key
+;
+
+208 
+cÚÃùiÚ_’Œy
+ 
+	mû
+;
+
+209 *
+	m»mÙe_�_hšt
+;
+
+210 
+cÚÃùiÚ_li¡
+ *
+	mcÚÃùiÚ_li¡
+;
+
+211 
+»mÙe_li¡
+ *
+	m»mÙe_li¡
+;
+
+212 
+boÞ
+ 
+	mfÜû_cÚÃùiÚ_li¡
+;
+
+214 #ià
+HTTP_PROXY_OVERRIDE
+
+
+215 
+h‰p_´oxy_ÝtiÚs
+ *
+	mh‰p_´oxy_ov”ride
+;
+
+218 
+»mÙe_ho¡_¡Üe
+ *
+	mrh_¡Üe
+;
+
+220 
+boÞ
+ 
+	m»mÙe_¿ndom
+;
+
+221 cÚ¡ *
+	m�chªge
+;
+
+222 cÚ¡ *
+	mdev
+;
+
+223 cÚ¡ *
+	mdev_ty³
+;
+
+224 cÚ¡ *
+	mdev_node
+;
+
+225 cÚ¡ *
+	mÎaddr
+;
+
+226 
+	mtÝÞogy
+;
+
+227 cÚ¡ *
+	mifcÚfig_loÿl
+;
+
+228 cÚ¡ *
+	mifcÚfig_»mÙe_Ãtmask
+;
+
+229 cÚ¡ *
+	mifcÚfig_�v6_loÿl
+;
+
+230 
+	mifcÚfig_�v6_Ãtb™s
+;
+
+231 cÚ¡ *
+	mifcÚfig_�v6_»mÙe
+;
+
+232 
+boÞ
+ 
+	mifcÚfig_nÛxec
+;
+
+233 
+boÞ
+ 
+	mifcÚfig_now¬n
+;
+
+234 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+235 
+	msh­”
+;
+
+238 
+	m´Ùo_fÜû
+;
+
+240 #ifdeà
+ENABLE_OCC
+
+
+241 
+boÞ
+ 
+	mmtu_‹¡
+;
+
+244 #ifdeà
+ENABLE_MEMSTATS
+
+
+245 *
+	mmem¡©s_â
+;
+
+248 
+boÞ
+ 
+	mmlock
+;
+
+250 
+	mk“·live_pšg
+;
+
+251 
+	mk“·live_timeout
+;
+
+253 
+	mšaùiv™y_timeout
+;
+
+254 
+	mšaùiv™y_mšimum_by‹s
+;
+
+256 
+	mpšg_£nd_timeout
+;
+
+257 
+	mpšg_»c_timeout
+;
+
+258 
+boÞ
+ 
+	mpšg_tim”_»mÙe
+;
+
+259 
+boÞ
+ 
+	mtun_�v6
+;
+
+261 
+	#PING_UNDEF
+ 0
+
+	)
+
+262 
+	#PING_EXIT
+ 1
+
+	)
+
+263 
+	#PING_RESTART
+ 2
+
+	)
+
+264 
+	mpšg_»c_timeout_aùiÚ
+;
+
+266 
+boÞ
+ 
+	m³rsi¡_tun
+;
+
+267 
+boÞ
+ 
+	m³rsi¡_loÿl_�
+;
+
+268 
+boÞ
+ 
+	m³rsi¡_»mÙe_�
+;
+
+269 
+boÞ
+ 
+	m³rsi¡_key
+;
+
+271 #ià
+PASSTOS_CAPABILITY
+
+
+272 
+boÞ
+ 
+	m·s¡os
+;
+
+275 
+	m»sÞve_»Œy_£cÚds
+;
+
+277 
+tuÁ­_ÝtiÚs
+ 
+	mtuÁ­_ÝtiÚs
+;
+
+280 cÚ¡ *
+	mu£ºame
+;
+
+281 cÚ¡ *
+	mgrou²ame
+;
+
+282 cÚ¡ *
+	mchroÙ_dœ
+;
+
+283 cÚ¡ *
+	mcd_dœ
+;
+
+284 #ifdeà
+ENABLE_SELINUX
+
+
+285 *
+	m£lšux_cÚ‹xt
+;
+
+287 cÚ¡ *
+	mwr™•id
+;
+
+288 cÚ¡ *
+	mup_sü�t
+;
+
+289 cÚ¡ *
+	mdown_sü�t
+;
+
+290 
+boÞ
+ 
+	mu£r_sü�t_u£d
+;
+
+291 
+boÞ
+ 
+	mdown_´e
+;
+
+292 
+boÞ
+ 
+	mup_d–ay
+;
+
+293 
+boÞ
+ 
+	mup_»¡¬t
+;
+
+294 
+boÞ
+ 
+	md«mÚ
+;
+
+296 
+	m»m­_sigu¤1
+;
+
+299 
+	mš‘d
+;
+
+301 
+boÞ
+ 
+	mlog
+;
+
+302 
+boÞ
+ 
+	msuµ»ss_time¡amps
+;
+
+303 
+	mniû
+;
+
+304 
+	mv”bos™y
+;
+
+305 
+	mmu‹
+;
+
+307 #ifdeà
+ENABLE_DEBUG
+
+
+308 
+	mg»mlš
+;
+
+311 cÚ¡ *
+	m¡©us_fže
+;
+
+312 
+	m¡©us_fže_v”siÚ
+;
+
+313 
+	m¡©us_fže_upd©e_äeq
+;
+
+316 
+boÞ
+ 
+	mç¡_io
+;
+
+318 #ifdeà
+ENABLE_LZO
+
+
+320 
+	mlzo
+;
+
+324 
+	mrcvbuf
+;
+
+325 
+	m¢dbuf
+;
+
+328 
+	mm¬k
+;
+
+331 
+	msockæags
+;
+
+334 cÚ¡ *
+	mrou‹_sü�t
+;
+
+335 cÚ¡ *
+	mrou‹_´edown_sü�t
+;
+
+336 cÚ¡ *
+	mrou‹_deçuÉ_g©eway
+;
+
+337 
+	mrou‹_deçuÉ_m‘ric
+;
+
+338 
+boÞ
+ 
+	mrou‹_nÛxec
+;
+
+339 
+	mrou‹_d–ay
+;
+
+340 
+	mrou‹_d–ay_wšdow
+;
+
+341 
+boÞ
+ 
+	mrou‹_d–ay_defšed
+;
+
+342 
+	mmax_rou‹s
+;
+
+343 
+rou‹_ÝtiÚ_li¡
+ *
+	mrou‹s
+;
+
+344 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+	mrou‹s_�v6
+;
+
+345 
+boÞ
+ 
+	mrou‹_nÝuÎ
+;
+
+346 
+boÞ
+ 
+	mrou‹_g©eway_vŸ_dhý
+;
+
+347 
+boÞ
+ 
+	m®low_puÎ_fqdn
+;
+
+349 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+350 
+þ›Á_Çt_ÝtiÚ_li¡
+ *
+	mþ›Á_Çt
+;
+
+353 #ifdeà
+ENABLE_OCC
+
+
+355 
+boÞ
+ 
+	mocc
+;
+
+358 #ifdeà
+ENABLE_MANAGEMENT
+
+
+359 cÚ¡ *
+	mmªagem’t_addr
+;
+
+360 
+	mmªagem’t_pÜt
+;
+
+361 cÚ¡ *
+	mmªagem’t_u£r_·ss
+;
+
+362 
+	mmªagem’t_log_hi¡Üy_ÿche
+;
+
+363 
+	mmªagem’t_echo_bufãr_size
+;
+
+364 
+	mmªagem’t_¡©e_bufãr_size
+;
+
+365 cÚ¡ *
+	mmªagem’t_wr™e_³”_šfo_fže
+;
+
+367 cÚ¡ *
+	mmªagem’t_þ›Á_u£r
+;
+
+368 cÚ¡ *
+	mmªagem’t_þ›Á_group
+;
+
+371 
+	mmªagem’t_æags
+;
+
+374 #ifdeà
+ENABLE_PLUGIN
+
+
+375 
+¶ugš_ÝtiÚ_li¡
+ *
+	m¶ugš_li¡
+;
+
+380 #ià
+P2MP
+
+
+382 #ià
+P2MP_SERVER
+
+
+384 cÚ¡ *
+	mtmp_dœ
+;
+
+385 
+boÞ
+ 
+	m£rv”_defšed
+;
+
+386 
+š_addr_t
+ 
+	m£rv”_ÃtwÜk
+;
+
+387 
+š_addr_t
+ 
+	m£rv”_Ãtmask
+;
+
+388 
+boÞ
+ 
+	m£rv”_�v6_defšed
+;
+
+389 
+š6_addr
+ 
+	m£rv”_ÃtwÜk_�v6
+;
+
+390 
+	m£rv”_Ãtb™s_�v6
+;
+
+392 
+	#SF_NOPOOL
+ (1<<0)
+
+	)
+
+393 
+	#SF_TCP_NODELAY_HELPER
+ (1<<1)
+
+	)
+
+394 
+	#SF_NO_PUSH_ROUTE_GATEWAY
+ (1<<2)
+
+	)
+
+395 
+	m£rv”_æags
+;
+
+397 
+boÞ
+ 
+	m£rv”_bridge_´oxy_dhý
+;
+
+399 
+boÞ
+ 
+	m£rv”_bridge_defšed
+;
+
+400 
+š_addr_t
+ 
+	m£rv”_bridge_�
+;
+
+401 
+š_addr_t
+ 
+	m£rv”_bridge_Ãtmask
+;
+
+402 
+š_addr_t
+ 
+	m£rv”_bridge_poÞ_¡¬t
+;
+
+403 
+š_addr_t
+ 
+	m£rv”_bridge_poÞ_’d
+;
+
+405 
+push_li¡
+ 
+	mpush_li¡
+;
+
+406 
+boÞ
+ 
+	mifcÚfig_poÞ_defšed
+;
+
+407 
+š_addr_t
+ 
+	mifcÚfig_poÞ_¡¬t
+;
+
+408 
+š_addr_t
+ 
+	mifcÚfig_poÞ_’d
+;
+
+409 
+š_addr_t
+ 
+	mifcÚfig_poÞ_Ãtmask
+;
+
+410 cÚ¡ *
+	mifcÚfig_poÞ_³rsi¡_fž’ame
+;
+
+411 
+	mifcÚfig_poÞ_³rsi¡_»äesh_äeq
+;
+
+413 
+boÞ
+ 
+	mifcÚfig_�v6_poÞ_defšed
+;
+
+414 
+š6_addr
+ 
+	mifcÚfig_�v6_poÞ_ba£
+;
+
+415 
+	mifcÚfig_�v6_poÞ_Ãtb™s
+;
+
+417 
+	m»®_hash_size
+;
+
+418 
+	mvœtu®_hash_size
+;
+
+419 cÚ¡ *
+	mþ›Á_cÚÃù_sü�t
+;
+
+420 cÚ¡ *
+	mþ›Á_discÚÃù_sü�t
+;
+
+421 cÚ¡ *
+	mË¬n_add»ss_sü�t
+;
+
+422 cÚ¡ *
+	mþ›Á_cÚfig_dœ
+;
+
+423 
+boÞ
+ 
+	mccd_exþusive
+;
+
+424 
+boÞ
+ 
+	mdi§bË
+;
+
+425 
+	mn_bÿ¡_buf
+;
+
+426 
+	mtý_queue_lim™
+;
+
+427 
+œou‹
+ *
+	mœou‹s
+;
+
+428 
+œou‹_�v6
+ *
+	mœou‹s_�v6
+;
+
+429 
+boÞ
+ 
+	mpush_ifcÚfig_defšed
+;
+
+430 
+š_addr_t
+ 
+	mpush_ifcÚfig_loÿl
+;
+
+431 
+š_addr_t
+ 
+	mpush_ifcÚfig_»mÙe_Ãtmask
+;
+
+432 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+433 
+š_addr_t
+ 
+	mpush_ifcÚfig_loÿl_®Ÿs
+;
+
+435 
+boÞ
+ 
+	mpush_ifcÚfig_cÚ¡¿št_defšed
+;
+
+436 
+š_addr_t
+ 
+	mpush_ifcÚfig_cÚ¡¿št_ÃtwÜk
+;
+
+437 
+š_addr_t
+ 
+	mpush_ifcÚfig_cÚ¡¿št_Ãtmask
+;
+
+438 
+boÞ
+ 
+	mpush_ifcÚfig_�v6_defšed
+;
+
+439 
+š6_addr
+ 
+	mpush_ifcÚfig_�v6_loÿl
+;
+
+440 
+	mpush_ifcÚfig_�v6_Ãtb™s
+;
+
+441 
+š6_addr
+ 
+	mpush_ifcÚfig_�v6_»mÙe
+;
+
+442 
+boÞ
+ 
+	m’abË_c2c
+;
+
+443 
+boÞ
+ 
+	mdu¶iÿ‹_ú
+;
+
+444 
+	mcf_max
+;
+
+445 
+	mcf_³r
+;
+
+446 
+	mmax_þ›Ás
+;
+
+447 
+	mmax_rou‹s_³r_þ›Á
+;
+
+448 
+	m¡®e_rou‹s_check_š‹rv®
+;
+
+449 
+	m¡®e_rou‹s_agešg_time
+;
+
+451 cÚ¡ *
+	mauth_u£r_·ss_v”ify_sü�t
+;
+
+452 
+boÞ
+ 
+	mauth_u£r_·ss_v”ify_sü�t_vŸ_fže
+;
+
+453 #ià
+PORT_SHARE
+
+
+454 *
+	mpÜt_sh¬e_ho¡
+;
+
+455 
+	mpÜt_sh¬e_pÜt
+;
+
+456 cÚ¡ *
+	mpÜt_sh¬e_jouº®_dœ
+;
+
+460 
+boÞ
+ 
+	mþ›Á
+;
+
+461 
+boÞ
+ 
+	mpuÎ
+;
+
+462 
+	mpush_cÚtšu©iÚ
+;
+
+463 
+	mpush_ÝtiÚ_ty³s_found
+;
+
+464 cÚ¡ *
+	mauth_u£r_·ss_fže
+;
+
+465 
+ÝtiÚs_´e_puÎ
+ *
+	m´e_puÎ
+;
+
+467 
+	m£rv”_pÞl_timeout
+;
+
+469 
+	mscheduËd_ex™_š‹rv®
+;
+
+471 #ifdeà
+ENABLE_CLIENT_CR
+
+
+472 
+¡©ic_ch®Ënge_šfo
+ 
+	msc_šfo
+;
+
+476 #ifdeà
+ENABLE_CRYPTO
+
+
+478 cÚ¡ *
+	msh¬ed_£ü‘_fže
+;
+
+479 cÚ¡ *
+	msh¬ed_£ü‘_fže_šlše
+;
+
+480 
+	mkey_dœeùiÚ
+;
+
+481 
+boÞ
+ 
+	mc�h”Çme_defšed
+;
+
+482 cÚ¡ *
+	mc�h”Çme
+;
+
+483 
+boÞ
+ 
+	mauthÇme_defšed
+;
+
+484 cÚ¡ *
+	mauthÇme
+;
+
+485 
+	mkeysize
+;
+
+486 cÚ¡ *
+	m´ng_hash
+;
+
+487 
+	m´ng_nÚû_£ü‘_Ën
+;
+
+488 cÚ¡ *
+	m’gše
+;
+
+489 
+boÞ
+ 
+	m»¶ay
+;
+
+490 
+boÞ
+ 
+	mmu‹_»¶ay_w¬nšgs
+;
+
+491 
+	m»¶ay_wšdow
+;
+
+492 
+	m»¶ay_time
+;
+
+493 cÚ¡ *
+	m·ck‘_id_fže
+;
+
+494 
+boÞ
+ 
+	mu£_iv
+;
+
+495 
+boÞ
+ 
+	m‹¡_üy±o
+;
+
+496 #ifdeà
+ENABLE_PREDICTION_RESISTANCE
+
+
+497 
+boÞ
+ 
+	mu£_´ediùiÚ_»si¡ªû
+;
+
+500 #ifdeà
+ENABLE_SSL
+
+
+502 
+boÞ
+ 
+	mŽs_£rv”
+;
+
+503 
+boÞ
+ 
+	mŽs_þ›Á
+;
+
+504 cÚ¡ *
+	mÿ_fže
+;
+
+505 cÚ¡ *
+	mÿ_·th
+;
+
+506 cÚ¡ *
+	mdh_fže
+;
+
+507 cÚ¡ *
+	mû¹_fže
+;
+
+508 cÚ¡ *
+	mexŒa_û¹s_fže
+;
+
+509 cÚ¡ *
+	m´iv_key_fže
+;
+
+510 cÚ¡ *
+	mpkcs12_fže
+;
+
+511 cÚ¡ *
+	mc�h”_li¡
+;
+
+512 cÚ¡ *
+	mŽs_v”ify
+;
+
+513 
+	mv”ify_x509_ty³
+;
+
+514 cÚ¡ *
+	mv”ify_x509_Çme
+;
+
+515 cÚ¡ *
+	mŽs_expÜt_û¹
+;
+
+516 cÚ¡ *
+	mül_fže
+;
+
+518 cÚ¡ *
+	mÿ_fže_šlše
+;
+
+519 cÚ¡ *
+	mû¹_fže_šlše
+;
+
+520 cÚ¡ *
+	mexŒa_û¹s_fže_šlše
+;
+
+521 *
+	m´iv_key_fže_šlše
+;
+
+522 cÚ¡ *
+	mdh_fže_šlše
+;
+
+523 cÚ¡ *
+	mpkcs12_fže_šlše
+;
+
+525 
+	mns_û¹_ty³
+;
+
+526 
+	m»mÙe_û¹_ku
+[
+MAX_PARMS
+];
+
+527 cÚ¡ *
+	m»mÙe_û¹_eku
+;
+
+528 
+ušt8_t
+ *
+	mv”ify_hash
+;
+
+529 
+	ms¦_æags
+;
+
+531 #ifdeà
+ENABLE_PKCS11
+
+
+532 cÚ¡ *
+	mpkcs11_´ovid”s
+[
+MAX_PARMS
+];
+
+533 
+	mpkcs11_´iv©e_mode
+[
+MAX_PARMS
+];
+
+534 
+boÞ
+ 
+	mpkcs11_´Ùeùed_auth’tiÿtiÚ
+[
+MAX_PARMS
+];
+
+535 
+boÞ
+ 
+	mpkcs11_û¹_´iv©e
+[
+MAX_PARMS
+];
+
+536 
+	mpkcs11_pš_ÿche_³riod
+;
+
+537 cÚ¡ *
+	mpkcs11_id
+;
+
+538 
+boÞ
+ 
+	mpkcs11_id_mªagem’t
+;
+
+541 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+542 cÚ¡ *
+	müy±ßpi_û¹
+;
+
+546 
+	mkey_m‘hod
+;
+
+549 
+	mŽs_timeout
+;
+
+552 
+	m»ÃgÙŸ‹_by‹s
+;
+
+553 
+	m»ÃgÙŸ‹_·ck‘s
+;
+
+554 
+	m»ÃgÙŸ‹_£cÚds
+;
+
+558 
+	mhªdshake_wšdow
+;
+
+560 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+562 *
+	mx509_u£ºame_f›ld
+;
+
+566 
+	mŒªs™iÚ_wšdow
+;
+
+569 cÚ¡ *
+	mŽs_auth_fže
+;
+
+570 cÚ¡ *
+	mŽs_auth_fže_šlše
+;
+
+573 
+boÞ
+ 
+	msšgË_£ssiÚ
+;
+
+575 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+576 
+boÞ
+ 
+	mpush_³”_šfo
+;
+
+579 
+boÞ
+ 
+	mŽs_ex™
+;
+
+584 #ifdeà
+ENABLE_X509_TRACK
+
+
+585 cÚ¡ 
+x509_Œack
+ *
+	mx509_Œack
+;
+
+589 
+	mfÜeign_ÝtiÚ_šdex
+;
+
+591 #ifdeà
+WIN32
+
+
+592 cÚ¡ *
+	mex™_ev’t_Çme
+;
+
+593 
+boÞ
+ 
+	mex™_ev’t_š™Ÿl_¡©e
+;
+
+594 
+boÞ
+ 
+	mshow_Ãt_up
+;
+
+595 
+	mrou‹_m‘hod
+;
+
+598 
+boÞ
+ 
+	mu£_³”_id
+;
+
+599 
+ušt32_t
+ 
+	m³”_id
+;
+
+602 
+	#¡»q
+(
+x
+, 
+y
+è(!
+	`¡rcmp
+((x), (y)))
+
+	)
+
+607 
+	#OPT_P_GENERAL
+ (1<<0)
+
+	)
+
+608 
+	#OPT_P_UP
+ (1<<1)
+
+	)
+
+609 
+	#OPT_P_ROUTE
+ (1<<2)
+
+	)
+
+610 
+	#OPT_P_IPWIN32
+ (1<<3)
+
+	)
+
+611 
+	#OPT_P_SCRIPT
+ (1<<4)
+
+	)
+
+612 
+	#OPT_P_SETENV
+ (1<<5)
+
+	)
+
+613 
+	#OPT_P_SHAPER
+ (1<<6)
+
+	)
+
+614 
+	#OPT_P_TIMER
+ (1<<7)
+
+	)
+
+615 
+	#OPT_P_PERSIST
+ (1<<8)
+
+	)
+
+616 
+	#OPT_P_PERSIST_IP
+ (1<<9)
+
+	)
+
+617 
+	#OPT_P_COMP
+ (1<<10è
+
+	)
+
+618 
+	#OPT_P_MESSAGES
+ (1<<11)
+
+	)
+
+619 
+	#OPT_P_CRYPTO
+ (1<<12è
+
+	)
+
+620 
+	#OPT_P_TLS_PARMS
+ (1<<13è
+
+	)
+
+621 
+	#OPT_P_MTU
+ (1<<14è
+
+	)
+
+622 
+	#OPT_P_NICE
+ (1<<15)
+
+	)
+
+623 
+	#OPT_P_PUSH
+ (1<<16)
+
+	)
+
+624 
+	#OPT_P_INSTANCE
+ (1<<17)
+
+	)
+
+625 
+	#OPT_P_CONFIG
+ (1<<18)
+
+	)
+
+626 
+	#OPT_P_EXPLICIT_NOTIFY
+ (1<<19)
+
+	)
+
+627 
+	#OPT_P_ECHO
+ (1<<20)
+
+	)
+
+628 
+	#OPT_P_INHERIT
+ (1<<21)
+
+	)
+
+629 
+	#OPT_P_ROUTE_EXTRAS
+ (1<<22)
+
+	)
+
+630 
+	#OPT_P_PULL_MODE
+ (1<<23)
+
+	)
+
+631 
+	#OPT_P_PLUGIN
+ (1<<24)
+
+	)
+
+632 
+	#OPT_P_SOCKBUF
+ (1<<25)
+
+	)
+
+633 
+	#OPT_P_SOCKFLAGS
+ (1<<26)
+
+	)
+
+634 
+	#OPT_P_CONNECTION
+ (1<<27)
+
+	)
+
+635 
+	#OPT_P_PEER_ID
+ (1<<28)
+
+	)
+
+637 
+	#OPT_P_DEFAULT
+ (~(
+OPT_P_INSTANCE
+|
+OPT_P_PULL_MODE
+))
+
+	)
+
+639 #ià
+P2MP
+
+
+640 
+	#PULL_DEFINED
+(
+Ýt
+è((Ýt)->
+puÎ
+)
+
+	)
+
+641 #ià
+P2MP_SERVER
+
+
+642 
+	#PUSH_DEFINED
+(
+Ýt
+è((Ýt)->
+push_li¡
+)
+
+	)
+
+646 #iâdeà
+PULL_DEFINED
+
+
+647 
+	#PULL_DEFINED
+(
+Ýt
+è(
+çl£
+)
+
+	)
+
+650 #iâdeà
+PUSH_DEFINED
+
+
+651 
+	#PUSH_DEFINED
+(
+Ýt
+è(
+çl£
+)
+
+	)
+
+654 #ifdeà
+WIN32
+
+
+655 
+	#ROUTE_OPTION_FLAGS
+(
+o
+è((o)->
+rou‹_m‘hod
+ & 
+ROUTE_METHOD_MASK
+)
+
+	)
+
+657 
+	#ROUTE_OPTION_FLAGS
+(
+o
+è(0)
+
+	)
+
+660 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+661 
+	#SHAPER_DEFINED
+(
+Ýt
+è((Ýt)->
+sh­”
+)
+
+	)
+
+663 
+	#SHAPER_DEFINED
+(
+Ýt
+è(
+çl£
+)
+
+	)
+
+666 #ifdeà
+ENABLE_PLUGIN
+
+
+667 
+	#PLUGIN_OPTION_LIST
+(
+Ýt
+è((Ýt)->
+¶ugš_li¡
+)
+
+	)
+
+669 
+	#PLUGIN_OPTION_LIST
+(
+Ýt
+è(
+NULL
+)
+
+	)
+
+672 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+673 
+	#MAN_CLIENT_AUTH_ENABLED
+(
+Ýt
+è((Ýt)->
+mªagem’t_æags
+ & 
+MF_CLIENT_AUTH
+)
+
+	)
+
+675 
+	#MAN_CLIENT_AUTH_ENABLED
+(
+Ýt
+è(
+çl£
+)
+
+	)
+
+678 
+·r£_¬gv
+ (
+ÝtiÚs
+ *options,
+
+679 cÚ¡ 
+¬gc
+,
+
+680 *
+¬gv
+[],
+
+681 cÚ¡ 
+msgËv–
+,
+
+682 cÚ¡ 
+³rmissiÚ_mask
+,
+
+683 *
+ÝtiÚ_ty³s_found
+,
+
+684 
+’v_£t
+ *
+es
+);
+
+686 
+nÙnuÎ
+ (cÚ¡ *
+¬g
+, cÚ¡ *
+desü�tiÚ
+);
+
+688 
+u§ge_sm®l
+ ();
+
+690 
+show_lib¿ry_v”siÚs
+(cÚ¡ 
+æags
+);
+
+692 
+š™_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+, cÚ¡ 
+boÞ
+ 
+š™_gc
+);
+
+693 
+unš™_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+);
+
+695 
+£‹nv_£‰šgs
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+ÝtiÚs
+ *
+o
+);
+
+696 
+show_£‰šgs
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+);
+
+698 
+boÞ
+ 
+¡ršg_defšed_equ®
+ (cÚ¡ *
+s1
+, cÚ¡ *
+s2
+);
+
+700 #ifdeà
+ENABLE_OCC
+
+
+702 cÚ¡ *
+ÝtiÚs_¡ršg_v”siÚ
+ (cÚ¡ * 
+s
+, 
+gc_¬’a
+ *
+gc
+);
+
+704 *
+ÝtiÚs_¡ršg
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+,
+
+705 cÚ¡ 
+äame
+ *frame,
+
+706 
+tuÁ­
+ *
+‰
+,
+
+707 
+boÞ
+ 
+»mÙe
+,
+
+708 
+gc_¬’a
+ *
+gc
+);
+
+710 
+boÞ
+ 
+ÝtiÚs_cmp_equ®_§ã
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+, 
+size_t
+ 
+aùu®_n
+);
+
+711 
+ÝtiÚs_w¬nšg_§ã
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+, 
+size_t
+ 
+aùu®_n
+);
+
+712 
+boÞ
+ 
+ÝtiÚs_cmp_equ®
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+);
+
+713 
+ÝtiÚs_w¬nšg
+ (*
+aùu®
+, cÚ¡ *
+ex³ùed
+);
+
+717 
+ÝtiÚs_po¡´oûss
+ (
+ÝtiÚs
+ *options);
+
+719 
+´e_puÎ_§ve
+ (
+ÝtiÚs
+ *
+o
+);
+
+720 
+´e_puÎ_»¡Üe
+ (
+ÝtiÚs
+ *
+o
+);
+
+722 
+boÞ
+ 
+­¶y_push_ÝtiÚs
+ (
+ÝtiÚs
+ *options,
+
+723 
+bufãr
+ *
+buf
+,
+
+724 
+³rmissiÚ_mask
+,
+
+725 *
+ÝtiÚ_ty³s_found
+,
+
+726 
+’v_£t
+ *
+es
+);
+
+728 
+ÝtiÚs_d‘ach
+ (
+ÝtiÚs
+ *
+o
+);
+
+730 
+ÝtiÚs_£rv”_impÜt
+ (
+ÝtiÚs
+ *
+o
+,
+
+731 cÚ¡ *
+fž’ame
+,
+
+732 
+msgËv–
+,
+
+733 
+³rmissiÚ_mask
+,
+
+734 *
+ÝtiÚ_ty³s_found
+,
+
+735 
+’v_£t
+ *
+es
+);
+
+737 
+´e_puÎ_deçuÉ
+ (
+ÝtiÚs
+ *
+o
+);
+
+739 
+rÞ_check_®loc
+ (
+ÝtiÚs
+ *options);
+
+741 
+·r£_lše
+ (cÚ¡ *
+lše
+,
+
+742 *
+p
+[],
+
+743 cÚ¡ 
+n
+,
+
+744 cÚ¡ *
+fže
+,
+
+745 cÚ¡ 
+lše_num
+,
+
+746 
+msgËv–
+,
+
+747 
+gc_¬’a
+ *
+gc
+);
+
+753 
+·r£_tÝÞogy
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+msgËv–
+);
+
+754 cÚ¡ *
+´št_tÝÞogy
+ (cÚ¡ 
+tÝÞogy
+);
+
+760 #ià
+P2MP
+
+
+762 
+	#AR_NONE
+ 0
+
+	)
+
+763 
+	#AR_INTERACT
+ 1
+
+	)
+
+764 
+	#AR_NOINTERACT
+ 2
+
+	)
+
+766 
+auth_»Œy_g‘
+ ();
+
+767 
+boÞ
+ 
+auth_»Œy_£t
+ (cÚ¡ 
+msgËv–
+, cÚ¡ *
+ÝtiÚ
+);
+
+768 cÚ¡ *
+auth_»Œy_´št
+ ();
+
+772 
+ÝtiÚs_¡ršg_impÜt
+ (
+ÝtiÚs
+ *options,
+
+773 cÚ¡ *
+cÚfig
+,
+
+774 cÚ¡ 
+msgËv–
+,
+
+775 cÚ¡ 
+³rmissiÚ_mask
+,
+
+776 *
+ÝtiÚ_ty³s_found
+,
+
+777 
+’v_£t
+ *
+es
+);
+
+779 
+boÞ
+ 
+g‘_�v6_addr
+ÐcÚ¡ * 
+´efix_¡r
+, 
+š6_addr
+ *
+ÃtwÜk
+,
+
+780 * 
+Ãtb™s
+, ** 
+´š�bË_�v6
+,
+
+781 
+msgËv–
+ );
+
+786 
+šlše
+ 
+boÞ
+
+
+787 
+	$cÚÃùiÚ_li¡_defšed
+ (cÚ¡ 
+ÝtiÚs
+ *
+o
+)
+
+789  
+o
+->
+cÚÃùiÚ_li¡
+ !ð
+NULL
+;
+
+790 
+	}
+}
+
+792 
+šlše
+ 
+
+793 
+	$cÚÃùiÚ_li¡_£t_no_advªû
+ (
+ÝtiÚs
+ *
+o
+)
+
+795 ià(
+o
+->
+cÚÃùiÚ_li¡
+)
+
+796 
+o
+->
+cÚÃùiÚ_li¡
+->
+no_advªû
+ = 
+Œue
+;
+
+797 
+	}
+}
+
+	@otime.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"Ùime.h
+"
+
+35 
+	~"memdbg.h
+"
+
+37 
+time_t
+ 
+	gnow
+ = 0;
+
+39 #ià
+TIME_BACKTRACK_PROTECTION
+
+
+41 
+time_t
+ 
+	gnow_adj
+ = 0;
+
+42 
+time_t
+ 
+	gnow_u£c
+ = 0;
+
+50 
+	$upd©e_now
+ (cÚ¡ 
+time_t
+ 
+sy¡em_time
+)
+
+52 cÚ¡ 
+fÜw¬d_th»shÞd
+ = 86400;
+
+53 cÚ¡ 
+backw¬d_Œigg”
+ = 10;
+
+54 
+time_t
+ 
+»®_time
+ = 
+sy¡em_time
+ + 
+now_adj
+;
+
+56 ià(
+»®_time
+ > 
+now
+)
+
+58 cÚ¡ 
+time_t
+ 
+ov”shoÙ
+ = 
+»®_time
+ - 
+now
+ - 1;
+
+59 ià(
+ov”shoÙ
+ > 
+fÜw¬d_th»shÞd
+ && 
+now_adj
+ >= overshoot)
+
+61 
+now_adj
+ -ð
+ov”shoÙ
+;
+
+62 
+»®_time
+ -ð
+ov”shoÙ
+;
+
+64 
+now
+ = 
+»®_time
+;
+
+66 ià(
+»®_time
+ < 
+now
+ - 
+backw¬d_Œigg”
+)
+
+67 
+now_adj
+ +ð(
+now
+ - 
+»®_time
+);
+
+68 
+	}
+}
+
+71 
+	$upd©e_now_u£c
+ (
+timev®
+ *
+tv
+)
+
+73 cÚ¡ 
+time_t
+ 
+Ï¡
+ = 
+now
+;
+
+74 
+	`upd©e_now
+ (
+tv
+->
+tv_£c
+);
+
+75 ià(
+now
+ > 
+Ï¡
+ || (now =ðÏ¡ && 
+tv
+->
+tv_u£c
+ > 
+now_u£c
+))
+
+76 
+now_u£c
+ = 
+tv
+->
+tv_u£c
+;
+
+77 
+	}
+}
+
+85 
+	$tv_¡ršg
+ (cÚ¡ 
+timev®
+ *
+tv
+, 
+gc_¬’a
+ *
+gc
+)
+
+87 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+88 
+	`buf_´štf
+ (&
+out
+, "[%d/%d]",
+
+89 (è
+tv
+->
+tv_£c
+,
+
+90 ()
+tv
+->
+tv_u£c
+);
+
+91  
+	`BSTR
+ (&
+out
+);
+
+92 
+	}
+}
+
+100 
+	$tv_¡ršg_abs
+ (cÚ¡ 
+timev®
+ *
+tv
+, 
+gc_¬’a
+ *
+gc
+)
+
+102  
+	`time_¡ršg
+ ((
+time_t
+è
+tv
+->
+tv_£c
+,
+
+103 (è
+tv
+->
+tv_u£c
+,
+
+104 
+Œue
+,
+
+105 
+gc
+);
+
+106 
+	}
+}
+
+111 
+	$time_¡ršg
+ (
+time_t
+ 
+t
+, 
+u£c
+, 
+boÞ
+ 
+show_u£c
+, 
+gc_¬’a
+ *
+gc
+)
+
+113 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+114 
+timev®
+ 
+tv
+;
+
+116 ià(
+t
+)
+
+118 
+tv
+.
+tv_£c
+ = 
+t
+;
+
+119 
+tv
+.
+tv_u£c
+ = 
+u£c
+;
+
+123 
+	`g‘timeofday
+ (&
+tv
+, 
+NULL
+);
+
+126 
+t
+ = 
+tv
+.
+tv_£c
+;
+
+127 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`ùime
+(&
+t
+));
+
+128 
+	`buf_rm�ž
+ (&
+out
+, '\n');
+
+130 ià(
+show_u£c
+ && 
+tv
+.
+tv_u£c
+)
+
+131 
+	`buf_´štf
+ (&
+out
+, " us=%d", ()
+tv
+.
+tv_u£c
+);
+
+133  
+	`BSTR
+ (&
+out
+);
+
+134 
+	}
+}
+
+143 
+äequ’cy_lim™
+ *
+
+144 
+	$äequ’cy_lim™_š™
+ (
+max
+, 
+³r
+)
+
+146 
+äequ’cy_lim™
+ *
+f
+;
+
+148 
+	`ASSERT
+ (
+max
+ >ð0 && 
+³r
+ >= 0);
+
+150 
+	`ALLOC_OBJ
+ (
+f
+, 
+äequ’cy_lim™
+);
+
+151 
+f
+->
+max
+ = max;
+
+152 
+f
+->
+³r
+ =…er;
+
+153 
+f
+->
+n
+ = 0;
+
+154 
+f
+->
+»£t
+ = 0;
+
+155  
+f
+;
+
+156 
+	}
+}
+
+159 
+	$äequ’cy_lim™_ä“
+ (
+äequ’cy_lim™
+ *
+f
+)
+
+161 
+	`ä“
+ (
+f
+);
+
+162 
+	}
+}
+
+164 
+boÞ
+
+
+165 
+	$äequ’cy_lim™_ev’t_®lowed
+ (
+äequ’cy_lim™
+ *
+f
+)
+
+167 ià(
+f
+->
+³r
+)
+
+169 
+boÞ
+ 
+»t
+;
+
+170 ià(
+now
+ >ð
+f
+->
+»£t
+ + f->
+³r
+)
+
+172 
+f
+->
+»£t
+ = 
+now
+;
+
+173 
+f
+->
+n
+ = 0;
+
+175 
+»t
+ = (++
+f
+->
+n
+ <ðf->
+max
+);
+
+176  
+»t
+;
+
+179  
+Œue
+;
+
+180 
+	}
+}
+
+182 #ifdeà
+TIME_TEST
+
+
+184 
+	$time_‹¡
+ ()
+
+186 
+timev®
+ 
+tv
+;
+
+187 
+time_t
+ 
+t
+;
+
+188 
+i
+;
+
+189 
+i
+ = 0; i < 10000; ++i)
+
+191 
+t
+ = 
+	`time
+(
+NULL
+);
+
+192 
+	`g‘timeofday
+ (&
+tv
+, 
+NULL
+);
+
+194 
+	`msg
+ (
+M_INFO
+, "t=%u s=%u us=%u",
+
+195 ()
+t
+,
+
+196 ()
+tv
+.
+tv_£c
+,
+
+197 ()
+tv
+.
+tv_u£c
+);
+
+200 
+	}
+}
+
+	@otime.h
+
+25 #iâdeà
+OTIME_H
+
+
+26 
+	#OTIME_H
+
+
+	)
+
+28 
+	~"commÚ.h
+"
+
+29 
+	~"š‹g”.h
+"
+
+30 
+	~"bufãr.h
+"
+
+32 
+	säequ’cy_lim™
+
+
+34 
+	mmax
+;
+
+35 
+	m³r
+;
+
+36 
+	mn
+;
+
+37 
+time_t
+ 
+	m»£t
+;
+
+40 
+äequ’cy_lim™
+ *
+äequ’cy_lim™_š™
+ (
+max
+, 
+³r
+);
+
+41 
+äequ’cy_lim™_ä“
+ (
+äequ’cy_lim™
+ *
+f
+);
+
+42 
+boÞ
+ 
+äequ’cy_lim™_ev’t_®lowed
+ (
+äequ’cy_lim™
+ *
+f
+);
+
+45 cÚ¡ * 
+time_¡ršg
+ (
+time_t
+ 
+t
+, 
+u£c
+, 
+boÞ
+ 
+show_u£c
+, 
+gc_¬’a
+ *
+gc
+);
+
+49 cÚ¡ *
+tv_¡ršg
+ (cÚ¡ 
+timev®
+ *
+tv
+, 
+gc_¬’a
+ *
+gc
+);
+
+50 cÚ¡ *
+tv_¡ršg_abs
+ (cÚ¡ 
+timev®
+ *
+tv
+, 
+gc_¬’a
+ *
+gc
+);
+
+52 
+time_t
+ 
+now
+;
+
+54 
+time_‹¡
+ ();
+
+56 #ià
+TIME_BACKTRACK_PROTECTION
+
+
+58 
+upd©e_now
+ (cÚ¡ 
+time_t
+ 
+sy¡em_time
+);
+
+60 
+time_t
+ 
+now_u£c
+;
+
+61 
+upd©e_now_u£c
+ (
+timev®
+ *
+tv
+);
+
+63 
+šlše
+ 
+
+64 
+	$Ý’v²_g‘timeofday
+ (
+timev®
+ *
+tv
+, *
+tz
+)
+
+66 cÚ¡ 
+¡©us
+ = 
+	`g‘timeofday
+ (
+tv
+, 
+tz
+);
+
+67 ià(!
+¡©us
+)
+
+69 
+	`upd©e_now_u£c
+ (
+tv
+);
+
+70 
+tv
+->
+tv_£c
+ = 
+now
+;
+
+71 
+tv
+->
+tv_u£c
+ = 
+now_u£c
+;
+
+73  
+¡©us
+;
+
+74 
+	}
+}
+
+76 
+šlše
+ 
+
+77 
+	$upd©e_time
+ ()
+
+79 #ifdeà
+WIN32
+
+
+81 
+timev®
+ 
+tv
+;
+
+82 
+	`Ý’v²_g‘timeofday
+ (&
+tv
+, 
+NULL
+);
+
+84 
+	`upd©e_now
+ (
+	`time
+ (
+NULL
+));
+
+86 
+	}
+}
+
+90 
+šlše
+ 
+
+91 
+	$upd©e_time
+ ()
+
+93 #ià
+	`defšed
+(
+WIN32
+)
+
+95 
+timev®
+ 
+tv
+;
+
+96 ià(!
+	`g‘timeofday
+ (&
+tv
+, 
+NULL
+))
+
+98 ià(
+tv
+.
+tv_£c
+ !ð
+now
+)
+
+99 
+now
+ = 
+tv
+.
+tv_£c
+;
+
+102 cÚ¡ 
+time_t
+ 
+»®_time
+ = 
+	`time
+ (
+NULL
+);
+
+103 ià(
+»®_time
+ !ð
+now
+)
+
+104 
+now
+ = 
+»®_time
+;
+
+106 
+	}
+}
+
+108 
+šlše
+ 
+
+109 
+	$Ý’v²_g‘timeofday
+ (
+timev®
+ *
+tv
+, *
+tz
+)
+
+111  
+	`g‘timeofday
+ (
+tv
+, 
+tz
+);
+
+112 
+	}
+}
+
+116 
+šlše
+ 
+time_t
+
+
+117 
+	$Ý’v²_time
+ (
+time_t
+ *
+t
+)
+
+119 
+	`upd©e_time
+ ();
+
+120 ià(
+t
+)
+
+121 *
+t
+ = 
+now
+;
+
+122  
+now
+;
+
+123 
+	}
+}
+
+125 
+šlše
+ 
+
+126 
+	$tv_þ—r
+ (
+timev®
+ *
+tv
+)
+
+128 
+tv
+->
+tv_£c
+ = 0;
+
+129 
+tv
+->
+tv_u£c
+ = 0;
+
+130 
+	}
+}
+
+132 
+šlše
+ 
+boÞ
+
+
+133 
+	$tv_defšed
+ (cÚ¡ 
+timev®
+ *
+tv
+)
+
+135  
+tv
+->
+tv_£c
+ > 0 &&�v->
+tv_u£c
+ > 0;
+
+136 
+	}
+}
+
+139 
+šlše
+ 
+
+140 
+	$tv_subŒaù
+ (cÚ¡ 
+timev®
+ *
+tv1
+, cÚ¡ timev® *
+tv2
+, cÚ¡ 
+max_£cÚds
+)
+
+142 cÚ¡ 
+max_u£c
+ = 
+max_£cÚds
+ * 1000000;
+
+143 cÚ¡ 
+£c_diff
+ = 
+tv1
+->
+tv_£c
+ - 
+tv2
+->tv_sec;
+
+145 ià(
+£c_diff
+ > (()
+max_£cÚds
+ + 10))
+
+146  
+max_u£c
+;
+
+147 ià(
+£c_diff
+ < -(()
+max_£cÚds
+ + 10))
+
+148  -
+max_u£c
+;
+
+149  
+	`cÚ¡¿š_št
+ (
+£c_diff
+ * 1000000 + (
+tv1
+->
+tv_u£c
+ - 
+tv2
+->tv_u£c), -
+max_u£c
+, max_usec);
+
+150 
+	}
+}
+
+152 
+šlše
+ 
+
+153 
+	$tv_add
+ (
+timev®
+ *
+de¡
+, cÚ¡ timev® *
+¤c
+)
+
+155 
+de¡
+->
+tv_£c
+ +ð
+¤c
+->tv_sec;
+
+156 
+de¡
+->
+tv_u£c
+ +ð
+¤c
+->tv_usec;
+
+157 
+de¡
+->
+tv_£c
+ +ð(de¡->
+tv_u£c
+ >> 20);
+
+158 
+de¡
+->
+tv_u£c
+ &= 0x000FFFFF;
+
+159 ià(
+de¡
+->
+tv_u£c
+ >= 1000000)
+
+161 
+de¡
+->
+tv_u£c
+ -= 1000000;
+
+162 
+de¡
+->
+tv_£c
+ += 1;
+
+164 
+	}
+}
+
+166 
+šlše
+ 
+boÞ
+
+
+167 
+	$tv_É
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+169 ià(
+t1
+->
+tv_£c
+ < 
+t2
+->tv_sec)
+
+170  
+Œue
+;
+
+171 ià(
+t1
+->
+tv_£c
+ > 
+t2
+->tv_sec)
+
+172  
+çl£
+;
+
+174  
+t1
+->
+tv_u£c
+ < 
+t2
+->tv_usec;
+
+175 
+	}
+}
+
+177 
+šlše
+ 
+boÞ
+
+
+178 
+	$tv_Ë
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+180 ià(
+t1
+->
+tv_£c
+ < 
+t2
+->tv_sec)
+
+181  
+Œue
+;
+
+182 ià(
+t1
+->
+tv_£c
+ > 
+t2
+->tv_sec)
+
+183  
+çl£
+;
+
+185  
+t1
+->
+tv_u£c
+ <ð
+t2
+->tv_usec;
+
+186 
+	}
+}
+
+188 
+šlše
+ 
+boÞ
+
+
+189 
+	$tv_ge
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+191 ià(
+t1
+->
+tv_£c
+ > 
+t2
+->tv_sec)
+
+192  
+Œue
+;
+
+193 ià(
+t1
+->
+tv_£c
+ < 
+t2
+->tv_sec)
+
+194  
+çl£
+;
+
+196  
+t1
+->
+tv_u£c
+ >ð
+t2
+->tv_usec;
+
+197 
+	}
+}
+
+199 
+šlše
+ 
+boÞ
+
+
+200 
+	$tv_gt
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+202 ià(
+t1
+->
+tv_£c
+ > 
+t2
+->tv_sec)
+
+203  
+Œue
+;
+
+204 ià(
+t1
+->
+tv_£c
+ < 
+t2
+->tv_sec)
+
+205  
+çl£
+;
+
+207  
+t1
+->
+tv_u£c
+ > 
+t2
+->tv_usec;
+
+208 
+	}
+}
+
+210 
+šlše
+ 
+boÞ
+
+
+211 
+	$tv_eq
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+213  
+t1
+->
+tv_£c
+ =ð
+t2
+->tv_£ø&&�1->
+tv_u£c
+ ==�2->tv_usec;
+
+214 
+	}
+}
+
+216 
+šlše
+ 
+
+217 
+	$tv_d–�
+ (
+timev®
+ *
+de¡
+, cÚ¡ timev® *
+t1
+, cÚ¡ timev® *
+t2
+)
+
+219 
+£c
+ = 
+t2
+->
+tv_£c
+ - 
+t1
+->tv_sec;
+
+220 
+u£c
+ = 
+t2
+->
+tv_u£c
+ - 
+t1
+->tv_usec;
+
+222 
+u£c
+ < 0)
+
+224 
+u£c
+ += 1000000;
+
+225 
+£c
+ -= 1;
+
+228 ià(
+£c
+ < 0)
+
+229 
+u£c
+ = 
+£c
+ = 0;
+
+231 
+de¡
+->
+tv_£c
+ = 
+£c
+;
+
+232 
+de¡
+->
+tv_u£c
+ = 
+u£c
+;
+
+233 
+	}
+}
+
+235 
+	#TV_WITHIN_SIGMA_MAX_SEC
+ 600
+
+	)
+
+236 
+	#TV_WITHIN_SIGMA_MAX_USEC
+ (
+TV_WITHIN_SIGMA_MAX_SEC
+ * 1000000)
+
+	)
+
+241 
+šlše
+ 
+boÞ
+
+
+242 
+	$tv_w™hš_sigma
+ (cÚ¡ 
+timev®
+ *
+t1
+, cÚ¡ timev® *
+t2
+, 
+sigma
+)
+
+244 cÚ¡ 
+d–�
+ = 
+	`tv_subŒaù
+ (
+t1
+, 
+t2
+, 
+TV_WITHIN_SIGMA_MAX_SEC
+);
+
+245  -()
+sigma
+ <ð
+d–�
+ && delta <= ()sigma;
+
+246 
+	}
+}
+
+252 
+šlše
+ 
+
+253 
+	$š‹rv®_—¾›¡_wakeup
+ (
+š‹rv®_t
+ *
+wakeup
+, 
+time_t
+ 
+©
+,�ime_ˆ
+cu¼’t
+) {
+
+254 ià(
+©
+ > 
+cu¼’t
+)
+
+256 cÚ¡ 
+š‹rv®_t
+ 
+d–�
+ = (š‹rv®_tè(
+©
+ - 
+cu¼’t
+);
+
+257 ià(
+d–�
+ < *
+wakeup
+)
+
+258 *
+wakeup
+ = 
+d–�
+;
+
+259 ià(*
+wakeup
+ < 0)
+
+260 *
+wakeup
+ = 0;
+
+262 
+	}
+}
+
+	@packet_id.c
+
+34 #ifdeà
+HAVE_CONFIG_H
+
+
+35 
+	~"cÚfig.h
+"
+
+36 #–ià
+defšed
+(
+_MSC_VER
+)
+
+37 
+	~"cÚfig-msvc.h
+"
+
+40 
+	~"sysh—d.h
+"
+
+42 #ifdeà
+ENABLE_CRYPTO
+
+
+44 
+	~"·ck‘_id.h
+"
+
+45 
+	~"misc.h
+"
+
+46 
+	~"š‹g”.h
+"
+
+48 
+	~"memdbg.h
+"
+
+56 
+	#SEQ_UNSEEN
+ ((
+time_t
+)0)
+
+	)
+
+57 
+	#SEQ_EXPIRED
+ ((
+time_t
+)1)
+
+	)
+
+59 
+·ck‘_id_debug_´št
+ (
+msgËv–
+,
+
+60 cÚ¡ 
+·ck‘_id_»c
+ *
+p
+,
+
+61 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+,
+
+62 cÚ¡ *
+mes§ge
+,
+
+63 
+v®ue
+);
+
+65 
+šlše
+ 
+
+66 
+	$·ck‘_id_debug
+ (
+msgËv–
+,
+
+67 cÚ¡ 
+·ck‘_id_»c
+ *
+p
+,
+
+68 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+,
+
+69 cÚ¡ *
+mes§ge
+,
+
+70 
+v®ue
+)
+
+72 #ifdeà
+ENABLE_DEBUG
+
+
+73 ià(
+	`uÆik–y
+(
+	`check_debug_Ëv–
+(
+msgËv–
+)))
+
+74 
+	`·ck‘_id_debug_´št
+ (
+msgËv–
+, 
+p
+, 
+pš
+, 
+mes§ge
+, 
+v®ue
+);
+
+76 
+	}
+}
+
+79 
+	$·ck‘_id_š™
+ (
+·ck‘_id
+ *
+p
+, 
+boÞ
+ 
+tý_mode
+, 
+£q_backŒack
+, 
+time_backŒack
+, cÚ¡ *
+Çme
+, 
+un™
+)
+
+81 
+	`dmsg
+ (
+D_PID_DEBUG
+, "PID…acket_id_init�cp_mode=%d seq_backtrack=%d�ime_backtrack=%d",
+
+82 
+tý_mode
+,
+
+83 
+£q_backŒack
+,
+
+84 
+time_backŒack
+);
+
+86 
+	`ASSERT
+ (
+p
+);
+
+87 
+	`CLEAR
+ (*
+p
+);
+
+89 
+p
+->
+»c
+.
+Çme
+ =‚ame;
+
+90 
+p
+->
+»c
+.
+un™
+ = unit;
+
+91 ià(
+£q_backŒack
+ && !
+tý_mode
+)
+
+93 
+	`ASSERT
+ (
+MIN_SEQ_BACKTRACK
+ <ð
+£q_backŒack
+ && seq_backŒack <ð
+MAX_SEQ_BACKTRACK
+);
+
+94 
+	`ASSERT
+ (
+MIN_TIME_BACKTRACK
+ <ð
+time_backŒack
+ &&�ime_backŒack <ð
+MAX_TIME_BACKTRACK
+);
+
+95 
+	`CIRC_LIST_ALLOC
+ (
+p
+->
+»c
+.
+£q_li¡
+, £q_li¡, 
+£q_backŒack
+);
+
+96 
+p
+->
+»c
+.
+£q_backŒack
+ = seq_backtrack;
+
+97 
+p
+->
+»c
+.
+time_backŒack
+ =�ime_backtrack;
+
+99 
+p
+->
+»c
+.
+š™Ÿlized
+ = 
+Œue
+;
+
+100 
+	}
+}
+
+103 
+	$·ck‘_id_ä“
+ (
+·ck‘_id
+ *
+p
+)
+
+105 ià(
+p
+)
+
+107 
+	`dmsg
+ (
+D_PID_DEBUG
+, "PID…acket_id_free");
+
+108 ià(
+p
+->
+»c
+.
+£q_li¡
+)
+
+109 
+	`ä“
+ (
+p
+->
+»c
+.
+£q_li¡
+);
+
+110 
+	`CLEAR
+ (*
+p
+);
+
+112 
+	}
+}
+
+115 
+	$·ck‘_id_add
+ (
+·ck‘_id_»c
+ *
+p
+, cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+)
+
+117 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+118 ià(
+p
+->
+£q_li¡
+)
+
+120 
+·ck‘_id_ty³
+ 
+diff
+;
+
+126 ià(!
+	`CIRC_LIST_SIZE
+ (
+p
+->
+£q_li¡
+)
+
+127 || 
+pš
+->
+time
+ > 
+p
+->time
+
+128 || (
+pš
+->
+id
+ >ð(
+·ck‘_id_ty³
+)
+p
+->
+£q_backŒack
+
+
+129 && 
+pš
+->
+id
+ - (
+·ck‘_id_ty³
+)
+p
+->
+£q_backŒack
+ >…->id))
+
+131 
+p
+->
+time
+ = 
+pš
+->time;
+
+132 
+p
+->
+id
+ = 0;
+
+133 ià(
+pš
+->
+id
+ > (
+·ck‘_id_ty³
+)
+p
+->
+£q_backŒack
+)
+
+134 
+p
+->
+id
+ = 
+pš
+->id - (
+·ck‘_id_ty³
+í->
+£q_backŒack
+;
+
+135 
+	`CIRC_LIST_RESET
+ (
+p
+->
+£q_li¡
+);
+
+138 
+p
+->
+id
+ < 
+pš
+->id
+
+139 #ifdeà
+PID_SIMULATE_BACKTRACK
+
+
+140 || (
+	`g‘_¿ndom
+() % 64) < 31
+
+144 
+	`CIRC_LIST_PUSH
+ (
+p
+->
+£q_li¡
+, 
+SEQ_UNSEEN
+);
+
+145 ++
+p
+->
+id
+;
+
+148 
+diff
+ = 
+p
+->
+id
+ - 
+pš
+->id;
+
+149 ià(
+diff
+ < (
+·ck‘_id_ty³
+è
+	`CIRC_LIST_SIZE
+ (
+p
+->
+£q_li¡
+)
+
+150 && 
+loÿl_now
+ > 
+SEQ_EXPIRED
+)
+
+151 
+	`CIRC_LIST_ITEM
+ (
+p
+->
+£q_li¡
+, 
+diff
+èð
+loÿl_now
+;
+
+155 
+p
+->
+time
+ = 
+pš
+->time;
+
+156 
+p
+->
+id
+ = 
+pš
+->id;
+
+158 
+	}
+}
+
+166 
+	$·ck‘_id_»­
+ (
+·ck‘_id_»c
+ *
+p
+)
+
+168 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+169 ià(
+p
+->
+time_backŒack
+)
+
+171 
+i
+;
+
+172 
+boÞ
+ 
+expœe
+ = 
+çl£
+;
+
+173 
+i
+ = 0; i < 
+	`CIRC_LIST_SIZE
+ (
+p
+->
+£q_li¡
+); ++i)
+
+175 cÚ¡ 
+time_t
+ 
+t
+ = 
+	`CIRC_LIST_ITEM
+ (
+p
+->
+£q_li¡
+, 
+i
+);
+
+176 ià(
+t
+ =ð
+SEQ_EXPIRED
+)
+
+178 ià(!
+expœe
+ && 
+t
+ &&� + 
+p
+->
+time_backŒack
+ < 
+loÿl_now
+)
+
+179 
+expœe
+ = 
+Œue
+;
+
+180 ià(
+expœe
+)
+
+181 
+	`CIRC_LIST_ITEM
+ (
+p
+->
+£q_li¡
+, 
+i
+èð
+SEQ_EXPIRED
+;
+
+184 
+p
+->
+Ï¡_»­
+ = 
+loÿl_now
+;
+
+185 
+	}
+}
+
+191 
+boÞ
+
+
+192 
+	$·ck‘_id_‹¡
+ (
+·ck‘_id_»c
+ *
+p
+,
+
+193 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+)
+
+195 
+·ck‘_id_ty³
+ 
+diff
+;
+
+197 
+	`·ck‘_id_debug
+ (
+D_PID_DEBUG
+, 
+p
+, 
+pš
+, "PID_TEST", 0);
+
+199 
+	`ASSERT
+ (
+p
+->
+š™Ÿlized
+);
+
+201 ià(!
+pš
+->
+id
+)
+
+202  
+çl£
+;
+
+204 ià(
+p
+->
+£q_backŒack
+)
+
+212 ià(
+pš
+->
+time
+ =ð
+p
+->time)
+
+215 ià(
+pš
+->
+id
+ > 
+p
+->id)
+
+216  
+Œue
+;
+
+219 
+diff
+ = 
+p
+->
+id
+ - 
+pš
+->id;
+
+222 ià(()
+diff
+ > 
+p
+->
+max_backŒack_¡©
+)
+
+224 
+p
+->
+max_backŒack_¡©
+ = ()
+diff
+;
+
+225 
+	`·ck‘_id_debug
+ (
+D_PID_DEBUG_LOW
+, 
+p
+, 
+pš
+, "PID_ERR„•Ïy-wšdow backŒack occu¼ed",…->
+max_backŒack_¡©
+);
+
+228 ià(
+diff
+ >ð(
+·ck‘_id_ty³
+è
+	`CIRC_LIST_SIZE
+ (
+p
+->
+£q_li¡
+))
+
+230 
+	`·ck‘_id_debug
+ (
+D_PID_DEBUG_LOW
+, 
+p
+, 
+pš
+, "PID_ERR†¬g�diff", 
+diff
+);
+
+231  
+çl£
+;
+
+235 cÚ¡ 
+time_t
+ 
+v
+ = 
+	`CIRC_LIST_ITEM
+ (
+p
+->
+£q_li¡
+, 
+diff
+);
+
+236 ià(
+v
+ == 0)
+
+237  
+Œue
+;
+
+241 
+	`·ck‘_id_debug
+ (
+D_PID_DEBUG_MEDIUM
+, 
+p
+, 
+pš
+, "PID_ERR„•Ïy", 
+diff
+);
+
+242  
+çl£
+;
+
+246 ià(
+pš
+->
+time
+ < 
+p
+->time)
+
+248 
+	`·ck‘_id_debug
+ (
+D_PID_DEBUG_LOW
+, 
+p
+, 
+pš
+, "PID_ERR�ime backtrack", 0);
+
+249  
+çl£
+;
+
+252  
+Œue
+;
+
+262 ià(
+pš
+->
+time
+ =ð
+p
+->time)
+
+263  !
+p
+->
+id
+ || 
+pš
+->id ==…->id + 1;
+
+264 ià(
+pš
+->
+time
+ < 
+p
+->time)
+
+265  
+çl£
+;
+
+267  
+pš
+->
+id
+ == 1;
+
+269 
+	}
+}
+
+276 
+boÞ
+
+
+277 
+	$·ck‘_id_»ad
+ (
+·ck‘_id_Ãt
+ *
+pš
+, 
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+lÚg_fÜm
+)
+
+279 
+·ck‘_id_ty³
+ 
+Ãt_id
+;
+
+280 
+Ãt_time_t
+ 
+Ãt_time
+;
+
+282 
+pš
+->
+id
+ = 0;
+
+283 
+pš
+->
+time
+ = 0;
+
+285 ià(!
+	`buf_»ad
+ (
+buf
+, &
+Ãt_id
+,  (net_id)))
+
+286  
+çl£
+;
+
+287 
+pš
+->
+id
+ = 
+	`Áohpid
+ (
+Ãt_id
+);
+
+288 ià(
+lÚg_fÜm
+)
+
+290 ià(!
+	`buf_»ad
+ (
+buf
+, &
+Ãt_time
+,  (net_time)))
+
+291  
+çl£
+;
+
+292 
+pš
+->
+time
+ = 
+	`Áohtime
+ (
+Ãt_time
+);
+
+294  
+Œue
+;
+
+295 
+	}
+}
+
+297 
+boÞ
+
+
+298 
+	$·ck‘_id_wr™e
+ (cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+, 
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+lÚg_fÜm
+, boÞ 
+´•’d
+)
+
+300 
+·ck‘_id_ty³
+ 
+Ãt_id
+ = 
+	`htÚpid
+ (
+pš
+->
+id
+);
+
+301 
+Ãt_time_t
+ 
+Ãt_time
+ = 
+	`htÚtime
+ (
+pš
+->
+time
+);
+
+303 ià(
+´•’d
+)
+
+305 ià(
+lÚg_fÜm
+)
+
+307 ià(!
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+Ãt_time
+,  (net_time)))
+
+308  
+çl£
+;
+
+310 ià(!
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+Ãt_id
+,  (net_id)))
+
+311  
+çl£
+;
+
+315 ià(!
+	`buf_wr™e
+ (
+buf
+, &
+Ãt_id
+,  (net_id)))
+
+316  
+çl£
+;
+
+317 ià(
+lÚg_fÜm
+)
+
+319 ià(!
+	`buf_wr™e
+ (
+buf
+, &
+Ãt_time
+,  (net_time)))
+
+320  
+çl£
+;
+
+323  
+Œue
+;
+
+324 
+	}
+}
+
+327 
+	$·ck‘_id_Ãt_´št
+ (cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+, 
+boÞ
+ 
+´št_time¡amp
+, 
+gc_¬’a
+ *
+gc
+)
+
+329 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+331 
+	`buf_´štf
+ (&
+out
+, "[ #" 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+pš
+->
+id
+);
+
+332 ià(
+´št_time¡amp
+ && 
+pš
+->
+time
+)
+
+333 
+	`buf_´štf
+ (&
+out
+, " /�im�ð(" 
+·ck‘_id_fÜm©
+ ") %s",
+
+334 (
+·ck‘_id_´št_ty³
+)
+pš
+->
+time
+,
+
+335 
+	`time_¡ršg
+ (
+pš
+->
+time
+, 0, 
+çl£
+, 
+gc
+));
+
+337 
+	`buf_´štf
+ (&
+out
+, " ]");
+
+338  
+	`BSTR
+ (&
+out
+);
+
+339 
+	}
+}
+
+343 
+	$·ck‘_id_³rsi¡_š™
+ (
+·ck‘_id_³rsi¡
+ *
+p
+)
+
+345 
+p
+->
+fž’ame
+ = 
+NULL
+;
+
+346 
+p
+->
+fd
+ = -1;
+
+347 
+p
+->
+time
+ =…->
+time_Ï¡_wr™‹n
+ = 0;
+
+348 
+p
+->
+id
+ =…->
+id_Ï¡_wr™‹n
+ = 0;
+
+349 
+	}
+}
+
+353 
+	$·ck‘_id_³rsi¡_þo£
+ (
+·ck‘_id_³rsi¡
+ *
+p
+)
+
+355 ià(
+	`·ck‘_id_³rsi¡_’abËd
+ (
+p
+))
+
+357 ià(
+	`þo£
+ (
+p
+->
+fd
+))
+
+358 
+	`msg
+ (
+D_PID_PERSIST
+ | 
+M_ERRNO
+, "Clo£ƒ¼Ü oÀ--»¶ay-³rsi¡ fž�%s", 
+p
+->
+fž’ame
+);
+
+359 
+	`·ck‘_id_³rsi¡_š™
+ (
+p
+);
+
+361 
+	}
+}
+
+365 
+	$·ck‘_id_³rsi¡_lßd
+ (
+·ck‘_id_³rsi¡
+ *
+p
+, cÚ¡ *
+fž’ame
+)
+
+367 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+368 ià(!
+	`·ck‘_id_³rsi¡_’abËd
+ (
+p
+))
+
+371 
+p
+->
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fž’ame
+,
+
+372 
+O_CREAT
+ | 
+O_RDWR
+ | 
+O_BINARY
+,
+
+373 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+374 ià(
+p
+->
+fd
+ == -1)
+
+376 
+	`msg
+ (
+D_PID_PERSIST
+ | 
+M_ERRNO
+,
+
+378 
+fž’ame
+);
+
+382 
+·ck‘_id_³rsi¡_fže_image
+ 
+image
+;
+
+383 
+ssize_t
+ 
+n
+;
+
+385 #ià
+	`defšed
+(
+HAVE_FLOCK
+è&& defšed(
+LOCK_EX
+è&& defšed(
+LOCK_NB
+)
+
+386 ià(
+	`æock
+ (
+p
+->
+fd
+, 
+LOCK_EX
+ | 
+LOCK_NB
+))
+
+387 
+	`msg
+ (
+M_ERR
+, "CªnÙ ob�šƒxþusiv�lock oÀ--»¶ay-³rsi¡ fž�%s", 
+fž’ame
+);
+
+390 
+p
+->
+fž’ame
+ = filename;
+
+391 
+n
+ = 
+	`»ad
+ (
+p
+->
+fd
+, &
+image
+, (image));
+
+392 ià(
+n
+ =ð(
+image
+))
+
+394 
+p
+->
+time
+ =…->
+time_Ï¡_wr™‹n
+ = 
+image
+.time;
+
+395 
+p
+->
+id
+ =…->
+id_Ï¡_wr™‹n
+ = 
+image
+.id;
+
+396 
+	`dmsg
+ (
+D_PID_PERSIST_DEBUG
+, "PID Persist Read from %s: %s",
+
+397 
+p
+->
+fž’ame
+, 
+	`·ck‘_id_³rsi¡_´št
+ (p, &
+gc
+));
+
+399 ià(
+n
+ == -1)
+
+401 
+	`msg
+ (
+D_PID_PERSIST
+ | 
+M_ERRNO
+,
+
+403 
+p
+->
+fž’ame
+);
+
+407 
+	`gc_ä“
+ (&
+gc
+);
+
+408 
+	}
+}
+
+412 
+	$·ck‘_id_³rsi¡_§ve
+ (
+·ck‘_id_³rsi¡
+ *
+p
+)
+
+414 ià(
+	`·ck‘_id_³rsi¡_’abËd
+ (
+p
+è&&…->
+time
+ && (p->tim�!ðp->
+time_Ï¡_wr™‹n
+ ||
+
+415 
+p
+->
+id
+ !ðp->
+id_Ï¡_wr™‹n
+))
+
+417 
+·ck‘_id_³rsi¡_fže_image
+ 
+image
+;
+
+418 
+ssize_t
+ 
+n
+;
+
+419 
+off_t
+ 
+£ek_»t
+;
+
+420 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+422 
+image
+.
+time
+ = 
+p
+->time;
+
+423 
+image
+.
+id
+ = 
+p
+->id;
+
+424 
+£ek_»t
+ = 
+	`l£ek
+(
+p
+->
+fd
+, (
+off_t
+)0, 
+SEEK_SET
+);
+
+425 ià(
+£ek_»t
+ =ð(
+off_t
+)0)
+
+427 
+n
+ = 
+	`wr™e
+(
+p
+->
+fd
+, &
+image
+, (image));
+
+428 ià(
+n
+ =ð(
+image
+))
+
+430 
+p
+->
+time_Ï¡_wr™‹n
+ =…->
+time
+;
+
+431 
+p
+->
+id_Ï¡_wr™‹n
+ =…->
+id
+;
+
+432 
+	`dmsg
+ (
+D_PID_PERSIST_DEBUG
+, "PID Persist Write�o %s: %s",
+
+433 
+p
+->
+fž’ame
+, 
+	`·ck‘_id_³rsi¡_´št
+ (p, &
+gc
+));
+
+437 
+	`msg
+ (
+D_PID_PERSIST
+ | 
+M_ERRNO
+,
+
+439 
+p
+->
+fž’ame
+);
+
+444 
+	`msg
+ (
+D_PID_PERSIST
+ | 
+M_ERRNO
+,
+
+446 
+p
+->
+fž’ame
+);
+
+448 
+	`gc_ä“
+ (&
+gc
+);
+
+450 
+	}
+}
+
+454 
+	$·ck‘_id_³rsi¡_lßd_obj
+ (cÚ¡ 
+·ck‘_id_³rsi¡
+ *
+p
+, 
+·ck‘_id
+ *
+pid
+)
+
+456 ià(
+p
+ && 
+pid
+ && 
+	`·ck‘_id_³rsi¡_’abËd
+ (pè&&…->
+time
+)
+
+458 
+pid
+->
+»c
+.
+time
+ = 
+p
+->time;
+
+459 
+pid
+->
+»c
+.
+id
+ = 
+p
+->id;
+
+461 
+	}
+}
+
+464 
+	$·ck‘_id_³rsi¡_´št
+ (cÚ¡ 
+·ck‘_id_³rsi¡
+ *
+p
+, 
+gc_¬’a
+ *
+gc
+)
+
+466 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+468 
+	`buf_´štf
+ (&
+out
+, "[");
+
+470 ià(
+	`·ck‘_id_³rsi¡_’abËd
+ (
+p
+))
+
+472 
+	`buf_´štf
+ (&
+out
+, " #" 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+p
+->
+id
+);
+
+473 ià(
+p
+->
+time
+)
+
+474 
+	`buf_´štf
+ (&
+out
+, " /�im�ð(" 
+·ck‘_id_fÜm©
+ ") %s",
+
+475 (
+·ck‘_id_´št_ty³
+)
+p
+->
+time
+,
+
+476 
+	`time_¡ršg
+ (
+p
+->
+time
+, 0, 
+çl£
+, 
+gc
+));
+
+479 
+	`buf_´štf
+ (&
+out
+, " ]");
+
+480  (*)
+out
+.
+d©a
+;
+
+481 
+	}
+}
+
+483 #ifdeà
+ENABLE_DEBUG
+
+
+486 
+	$·ck‘_id_debug_´št
+ (
+msgËv–
+,
+
+487 cÚ¡ 
+·ck‘_id_»c
+ *
+p
+,
+
+488 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+,
+
+489 cÚ¡ *
+mes§ge
+,
+
+490 
+v®ue
+)
+
+492 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+493 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+494 
+timev®
+ 
+tv
+;
+
+495 cÚ¡ 
+time_t
+ 
+´ev_now
+ = 
+now
+;
+
+496 cÚ¡ 
+£q_li¡
+ *
+¦
+ = 
+p
+->seq_list;
+
+497 
+i
+;
+
+499 
+	`CLEAR
+ (
+tv
+);
+
+500 
+	`g‘timeofday
+ (&
+tv
+, 
+NULL
+);
+
+502 
+	`buf_´štf
+ (&
+out
+, "% [%d]", 
+mes§ge
+, 
+v®ue
+);
+
+503 
+	`buf_´štf
+ (&
+out
+, " [%s-%d] [", 
+p
+->
+Çme
+,…->
+un™
+);
+
+504 
+i
+ = 0; 
+¦
+ !ð
+NULL
+ && i < sl->
+x_size
+; ++i)
+
+506 
+c
+;
+
+507 
+time_t
+ 
+v
+;
+
+508 
+diff
+;
+
+510 
+v
+ = 
+	`CIRC_LIST_ITEM
+(
+¦
+, 
+i
+);
+
+511 ià(
+v
+ =ð
+SEQ_UNSEEN
+)
+
+512 
+c
+ = '_';
+
+513 ià(
+v
+ =ð
+SEQ_EXPIRED
+)
+
+514 
+c
+ = 'E';
+
+517 
+diff
+ = (è
+´ev_now
+ - 
+v
+;
+
+518 ià(
+diff
+ < 0)
+
+519 
+c
+ = 'N';
+
+520 ià(
+diff
+ < 10)
+
+521 
+c
+ = '0' + 
+diff
+;
+
+523 
+c
+ = '>';
+
+525 
+	`buf_´štf
+(&
+out
+, "%c", 
+c
+);
+
+527 
+	`buf_´štf
+ (&
+out
+, "] " 
+time_fÜm©
+ ":" 
+·ck‘_id_fÜm©
+, (
+time_ty³
+)
+p
+->
+time
+, (
+·ck‘_id_´št_ty³
+í->
+id
+);
+
+528 ià(
+pš
+)
+
+529 
+	`buf_´štf
+ (&
+out
+, " " 
+time_fÜm©
+ ":" 
+·ck‘_id_fÜm©
+, (
+time_ty³
+)
+pš
+->
+time
+, (
+·ck‘_id_´št_ty³
+íš->
+id
+);
+
+531 
+	`buf_´štf
+ (&
+out
+, "�=" 
+time_fÜm©
+ "[%d]",
+
+532 (
+time_ty³
+)
+´ev_now
+,
+
+533 ()(
+´ev_now
+ - 
+tv
+.
+tv_£c
+));
+
+535 
+	`buf_´štf
+ (&
+out
+, "„=[%d,%d,%d,%d,%d]",
+
+536 ()(
+p
+->
+Ï¡_»­
+ - 
+tv
+.
+tv_£c
+),
+
+537 
+p
+->
+£q_backŒack
+,
+
+538 
+p
+->
+time_backŒack
+,
+
+539 
+p
+->
+max_backŒack_¡©
+,
+
+540 ()
+p
+->
+š™Ÿlized
+);
+
+541 ià(
+¦
+ !ð
+NULL
+)
+
+543 
+	`buf_´štf
+ (&
+out
+, " sl=[%d,%d,%d,%d]",
+
+544 
+¦
+->
+x_h—d
+,
+
+545 
+¦
+->
+x_size
+,
+
+546 
+¦
+->
+x_ÿp
+,
+
+547 
+¦
+->
+x_sizeof
+);
+
+551 
+	`msg
+ (
+msgËv–
+, "%s", 
+	`BSTR
+(&
+out
+));
+
+552 
+	`gc_ä“
+ (&
+gc
+);
+
+553 
+	}
+}
+
+557 #ifdeà
+PID_TEST
+
+
+560 
+	$·ck‘_id_š‹¿ùive_‹¡
+ ()
+
+562 
+·ck‘_id
+ 
+pid
+;
+
+563 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+564 
+boÞ
+ 
+lÚg_fÜm
+;
+
+565 
+boÞ
+ 
+couÁ
+ = 0;
+
+566 
+boÞ
+ 
+‹¡
+;
+
+568 cÚ¡ 
+£q_backŒack
+ = 10;
+
+569 cÚ¡ 
+time_backŒack
+ = 10;
+
+571 
+	`·ck‘_id_š™
+ (&
+pid
+, 
+£q_backŒack
+, 
+time_backŒack
+);
+
+573 
+Œue
+) {
+
+574 
+buf
+[80];
+
+575 ià(!
+	`fg‘s
+(
+buf
+, (buf), 
+¡dš
+))
+
+577 
+	`upd©e_time
+ ();
+
+578 ià(
+	`ssÿnf
+ (
+buf
+, "%lu,%u", &
+pš
+.
+time
+, &pš.
+id
+) == 2)
+
+580 
+	`·ck‘_id_»­_‹¡
+ (&
+pid
+.
+»c
+);
+
+581 
+‹¡
+ = 
+	`·ck‘_id_‹¡
+ (&
+pid
+.
+»c
+, &
+pš
+);
+
+582 
+	`´štf
+ ("·ck‘_id_‹¡ (" 
+time_fÜm©
+ ", " 
+·ck‘_id_fÜm©
+ ")„eturned %d\n",
+
+583 (
+time_ty³
+)
+pš
+.
+time
+,
+
+584 (
+·ck‘_id_´št_ty³
+)
+pš
+.
+id
+,
+
+585 
+‹¡
+);
+
+586 ià(
+‹¡
+)
+
+587 
+	`·ck‘_id_add
+ (&
+pid
+.
+»c
+, &
+pš
+);
+
+591 
+lÚg_fÜm
+ = (
+couÁ
+ < 20);
+
+592 
+	`·ck‘_id_®loc_outgošg
+ (&
+pid
+.
+£nd
+, &
+pš
+, 
+lÚg_fÜm
+);
+
+593 
+	`´štf
+ ("(" 
+time_fÜm©
+ "(" 
+·ck‘_id_fÜm©
+ "), %d)\n",
+
+594 (
+time_ty³
+)
+pš
+.
+time
+,
+
+595 (
+·ck‘_id_´št_ty³
+)
+pš
+.
+id
+,
+
+596 
+lÚg_fÜm
+);
+
+597 ià(
+pid
+.
+£nd
+.
+id
+ == 10)
+
+598 
+pid
+.
+£nd
+.
+id
+ = 0xFFFFFFF8;
+
+599 ++
+couÁ
+;
+
+602 
+	`·ck‘_id_ä“
+ (&
+pid
+);
+
+603 
+	}
+}
+
+	@packet_id.h
+
+31 #ifdeà
+ENABLE_CRYPTO
+
+
+33 #iâdeà
+PACKET_ID_H
+
+
+34 
+	#PACKET_ID_H
+
+
+	)
+
+36 
+	~"cœc_li¡.h
+"
+
+37 
+	~"bufãr.h
+"
+
+38 
+	~"”rÜ.h
+"
+
+39 
+	~"Ùime.h
+"
+
+52 
+ušt32_t
+ 
+	t·ck‘_id_ty³
+;
+
+53 
+ušt32_t
+ 
+	tÃt_time_t
+;
+
+60 
+	#PACKET_ID_WRAP_TRIGGER
+ 0xFF000000
+
+	)
+
+63 
+	#htÚpid
+(
+x
+è
+	`htÚl
+(x)
+
+	)
+
+66 
+	#Áohpid
+(
+x
+è
+	`Áohl
+(x)
+
+	)
+
+69 
+	#htÚtime
+(
+x
+è
+	`htÚl
+((
+Ãt_time_t
+)x)
+
+	)
+
+72 
+	#Áohtime
+(
+x
+è((
+time_t
+)
+	`Áohl
+(x))
+
+	)
+
+82 
+ušt8_t
+ 
+	t·ck‘_id_ty³
+;
+
+83 
+ušt16_t
+ 
+	tÃt_time_t
+;
+
+85 
+	#PACKET_ID_WRAP_TRIGGER
+ 0x80
+
+	)
+
+87 
+	#htÚpid
+(
+x
+è(x)
+
+	)
+
+88 
+	#Áohpid
+(
+x
+è(x)
+
+	)
+
+89 
+	#htÚtime
+(
+x
+è
+	`htÚs
+((
+Ãt_time_t
+)x)
+
+	)
+
+90 
+	#Áohtime
+(
+x
+è((
+time_t
+)
+	`Áohs
+(x))
+
+	)
+
+97 
+	#·ck‘_id_fÜm©
+ "%u"
+
+	)
+
+98 
+	t·ck‘_id_´št_ty³
+;
+
+105 
+	#MIN_SEQ_BACKTRACK
+ 0
+
+	)
+
+106 
+	#MAX_SEQ_BACKTRACK
+ 65536
+
+	)
+
+107 
+	#DEFAULT_SEQ_BACKTRACK
+ 64
+
+	)
+
+114 
+	#MIN_TIME_BACKTRACK
+ 0
+
+	)
+
+115 
+	#MAX_TIME_BACKTRACK
+ 600
+
+	)
+
+116 
+	#DEFAULT_TIME_BACKTRACK
+ 15
+
+	)
+
+125 
+	#SEQ_REAP_INTERVAL
+ 5
+
+	)
+
+127 
+CIRC_LIST
+ (
+£q_li¡
+, 
+time_t
+);
+
+134 
+	s·ck‘_id_»c
+
+
+136 
+time_t
+ 
+	mÏ¡_»­
+;
+
+137 
+time_t
+ 
+	mtime
+;
+
+138 
+·ck‘_id_ty³
+ 
+	mid
+;
+
+139 
+	m£q_backŒack
+;
+
+140 
+	mtime_backŒack
+;
+
+141 
+	mmax_backŒack_¡©
+;
+
+142 
+boÞ
+ 
+	mš™Ÿlized
+;
+
+143 
+£q_li¡
+ *
+	m£q_li¡
+;
+
+144 cÚ¡ *
+	mÇme
+;
+
+145 
+	mun™
+;
+
+152 
+	s·ck‘_id_³rsi¡
+
+
+154 cÚ¡ *
+	mfž’ame
+;
+
+155 
+	mfd
+;
+
+156 
+time_t
+ 
+	mtime
+;
+
+157 
+·ck‘_id_ty³
+ 
+	mid
+;
+
+158 
+time_t
+ 
+	mtime_Ï¡_wr™‹n
+;
+
+159 
+·ck‘_id_ty³
+ 
+	mid_Ï¡_wr™‹n
+;
+
+162 
+	s·ck‘_id_³rsi¡_fže_image
+
+
+164 
+time_t
+ 
+	mtime
+;
+
+165 
+·ck‘_id_ty³
+ 
+	mid
+;
+
+172 
+	s·ck‘_id_£nd
+
+
+174 
+·ck‘_id_ty³
+ 
+	mid
+;
+
+175 
+time_t
+ 
+	mtime
+;
+
+201 
+	s·ck‘_id_Ãt
+
+
+203 
+·ck‘_id_ty³
+ 
+	mid
+;
+
+204 
+time_t
+ 
+	mtime
+;
+
+207 
+	s·ck‘_id
+
+
+209 
+·ck‘_id_£nd
+ 
+	m£nd
+;
+
+210 
+·ck‘_id_»c
+ 
+	m»c
+;
+
+213 
+·ck‘_id_š™
+ (
+·ck‘_id
+ *
+p
+, 
+boÞ
+ 
+tý_mode
+, 
+£q_backŒack
+, 
+time_backŒack
+, cÚ¡ *
+Çme
+, 
+un™
+);
+
+214 
+·ck‘_id_ä“
+ (
+·ck‘_id
+ *
+p
+);
+
+217 
+boÞ
+ 
+·ck‘_id_‹¡
+ (
+·ck‘_id_»c
+ *
+p
+,
+
+218 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+);
+
+221 
+·ck‘_id_add
+ (
+·ck‘_id_»c
+ *
+p
+,
+
+222 cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+);
+
+225 
+·ck‘_id_»­
+ (
+·ck‘_id_»c
+ *
+p
+);
+
+232 
+·ck‘_id_³rsi¡_š™
+ (
+·ck‘_id_³rsi¡
+ *
+p
+);
+
+235 
+·ck‘_id_³rsi¡_þo£
+ (
+·ck‘_id_³rsi¡
+ *
+p
+);
+
+238 
+·ck‘_id_³rsi¡_lßd
+ (
+·ck‘_id_³rsi¡
+ *
+p
+, cÚ¡ *
+fž’ame
+);
+
+241 
+·ck‘_id_³rsi¡_§ve
+ (
+·ck‘_id_³rsi¡
+ *
+p
+);
+
+244 
+·ck‘_id_³rsi¡_lßd_obj
+ (cÚ¡ 
+·ck‘_id_³rsi¡
+ *
+p
+, 
+·ck‘_id
+* 
+pid
+);
+
+247 cÚ¡ *
+·ck‘_id_³rsi¡_´št
+ (cÚ¡ 
+·ck‘_id_³rsi¡
+ *
+p
+, 
+gc_¬’a
+ *
+gc
+);
+
+254 
+boÞ
+ 
+·ck‘_id_»ad
+ (
+·ck‘_id_Ãt
+ *
+pš
+, 
+bufãr
+ *
+buf
+, boÞ 
+lÚg_fÜm
+);
+
+255 
+boÞ
+ 
+·ck‘_id_wr™e
+ (cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+, 
+bufãr
+ *
+buf
+, boÞ 
+lÚg_fÜm
+, boÞ 
+´•’d
+);
+
+262 
+šlše
+ 
+boÞ
+
+
+263 
+	$·ck‘_id_³rsi¡_’abËd
+ (cÚ¡ 
+·ck‘_id_³rsi¡
+ *
+p
+)
+
+265  
+p
+->
+fd
+ >= 0;
+
+266 
+	}
+}
+
+269 
+šlše
+ 
+
+270 
+	$·ck‘_id_³rsi¡_§ve_obj
+ (
+·ck‘_id_³rsi¡
+ *
+p
+, cÚ¡ 
+·ck‘_id
+* 
+pid
+)
+
+272 ià(
+	`·ck‘_id_³rsi¡_’abËd
+ (
+p
+è&& 
+pid
+->
+»c
+.
+time
+)
+
+274 
+p
+->
+time
+ = 
+pid
+->
+»c
+.time;
+
+275 
+p
+->
+id
+ = 
+pid
+->
+»c
+.id;
+
+277 
+	}
+}
+
+279 cÚ¡ * 
+·ck‘_id_Ãt_´št
+(cÚ¡ 
+·ck‘_id_Ãt
+ *
+pš
+, 
+boÞ
+ 
+´št_time¡amp
+, 
+gc_¬’a
+ *
+gc
+);
+
+281 #ifdeà
+PID_TEST
+
+
+282 
+·ck‘_id_š‹¿ùive_‹¡
+();
+
+285 
+šlše
+ 
+
+286 
+	$·ck‘_id_size
+ (
+boÞ
+ 
+lÚg_fÜm
+)
+
+288   (
+·ck‘_id_ty³
+è+ (
+lÚg_fÜm
+ ?  (
+Ãt_time_t
+) : 0);
+
+289 
+	}
+}
+
+291 
+šlše
+ 
+boÞ
+
+
+292 
+	$·ck‘_id_þo£_to_w¿µšg
+ (cÚ¡ 
+·ck‘_id_£nd
+ *
+p
+)
+
+294  
+p
+->
+id
+ >ð
+PACKET_ID_WRAP_TRIGGER
+;
+
+295 
+	}
+}
+
+302 
+šlše
+ 
+
+303 
+	$·ck‘_id_®loc_outgošg
+ (
+·ck‘_id_£nd
+ *
+p
+, 
+·ck‘_id_Ãt
+ *
+pš
+, 
+boÞ
+ 
+lÚg_fÜm
+)
+
+305 ià(!
+p
+->
+time
+)
+
+306 
+p
+->
+time
+ = 
+now
+;
+
+307 
+pš
+->
+id
+ = ++
+p
+->id;
+
+308 ià(!
+pš
+->
+id
+)
+
+310 
+	`ASSERT
+ (
+lÚg_fÜm
+);
+
+311 
+p
+->
+time
+ = 
+now
+;
+
+312 
+pš
+->
+id
+ = 
+p
+->id = 1;
+
+314 
+pš
+->
+time
+ = 
+p
+->time;
+
+315 
+	}
+}
+
+317 
+šlše
+ 
+boÞ
+
+
+318 
+	$check_time¡amp_d–�
+ (
+time_t
+ 
+»mÙe
+, 
+max_d–�
+)
+
+320 
+abs
+;
+
+321 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+323 ià(
+loÿl_now
+ >ð
+»mÙe
+)
+
+324 
+abs
+ = 
+loÿl_now
+ - 
+»mÙe
+;
+
+326 
+abs
+ = 
+»mÙe
+ - 
+loÿl_now
+;
+
+327  
+abs
+ <ð
+max_d–�
+;
+
+328 
+	}
+}
+
+330 
+šlše
+ 
+
+331 
+	$·ck‘_id_»­_‹¡
+ (
+·ck‘_id_»c
+ *
+p
+)
+
+333 ià(
+p
+->
+Ï¡_»­
+ + 
+SEQ_REAP_INTERVAL
+ <ð
+now
+)
+
+334 
+	`·ck‘_id_»­
+ (
+p
+);
+
+335 
+	}
+}
+
+	@perf.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"³rf.h
+"
+
+35 #ifdeà
+ENABLE_PERFORMANCE_METRICS
+
+
+37 
+	~"”rÜ.h
+"
+
+38 
+	~"Ùime.h
+"
+
+40 
+	~"memdbg.h
+"
+
+42 cÚ¡ *
+	gm‘ric_Çmes
+[] = {
+
+65 
+	s³rf
+
+
+67 
+	#PS_INITIAL
+ 0
+
+	)
+
+68 
+	#PS_METER_RUNNING
+ 1
+
+	)
+
+69 
+	#PS_METER_INTERRUPTED
+ 2
+
+	)
+
+70 
+	m¡©e
+;
+
+72 
+timev®
+ 
+	m¡¬t
+;
+
+73 
+	msoçr
+;
+
+74 
+	msum
+;
+
+75 
+	mmax
+;
+
+76 
+	mcouÁ
+;
+
+79 
+	s³rf_£t
+
+
+81 
+	m¡ack_Ën
+;
+
+82 
+	m¡ack
+[
+STACK_N
+];
+
+83 
+³rf
+ 
+	m³rf
+[
+PERF_N
+];
+
+86 
+³rf_£t
+ 
+	g³rf_£t
+;
+
+88 
+³rf_´št_¡©e
+ (
+Ëv
+);
+
+90 
+šlše
+ 
+
+91 
+	$g‘_¡ack_šdex
+ (
+sd–�
+)
+
+93 cÚ¡ 
+sšdex
+ = 
+³rf_£t
+.
+¡ack_Ën
+ + 
+sd–�
+;
+
+94 ià(
+sšdex
+ >ð0 && sšdex < 
+STACK_N
+)
+
+95  
+sšdex
+;
+
+98 
+	}
+}
+
+101 
+	$g‘_³rf_šdex
+ (
+sd–�
+)
+
+103 cÚ¡ 
+sšdex
+ = 
+	`g‘_¡ack_šdex
+ (
+sd–�
+);
+
+104 ià(
+sšdex
+ >= 0)
+
+106 cÚ¡ 
+pšdex
+ = 
+³rf_£t
+.
+¡ack
+[
+sšdex
+];
+
+107 ià(
+pšdex
+ >ð0 &&…šdex < 
+PERF_N
+)
+
+108  
+pšdex
+;
+
+114 
+	}
+}
+
+116 
+³rf
+ *
+
+117 
+	$g‘_³rf
+ (
+sd–�
+)
+
+119 cÚ¡ 
+pšdex
+ = 
+	`g‘_³rf_šdex
+ (
+sd–�
+);
+
+120 ià(
+pšdex
+ >= 0)
+
+121  &
+³rf_£t
+.
+³rf
+[
+pšdex
+];
+
+123  
+NULL
+;
+
+124 
+	}
+}
+
+127 
+	$push_³rf_šdex
+ (
+pšdex
+)
+
+129 cÚ¡ 
+sšdex
+ = 
+	`g‘_¡ack_šdex
+ (0);
+
+130 cÚ¡ 
+ÃwËn
+ = 
+	`g‘_¡ack_šdex
+ (1);
+
+131 ià(
+sšdex
+ >ð0 && 
+ÃwËn
+ >= 0
+
+132 && 
+pšdex
+ >ð0 &&…šdex < 
+PERF_N
+)
+
+134 
+i
+;
+
+135 
+i
+ = 0; i < 
+sšdex
+; ++i)
+
+136 ià(
+³rf_£t
+.
+¡ack
+[
+i
+] =ð
+pšdex
+)
+
+138 
+	`³rf_´št_¡©e
+ (
+M_INFO
+);
+
+139 
+	`msg
+ (
+M_FATAL
+, "PERF:…ush_perf_index %s failed",
+
+140 
+m‘ric_Çmes
+ [
+pšdex
+]);
+
+143 
+³rf_£t
+.
+¡ack
+[
+sšdex
+] = 
+pšdex
+;
+
+144 
+³rf_£t
+.
+¡ack_Ën
+ = 
+ÃwËn
+;
+
+147 
+	`msg
+ (
+M_FATAL
+, "PERF:…ush_perf_index: stack…ushƒrror");
+
+148 
+	}
+}
+
+151 
+	$pÝ_³rf_šdex
+ ()
+
+153 cÚ¡ 
+ÃwËn
+ = 
+	`g‘_¡ack_šdex
+ (-1);
+
+154 ià(
+ÃwËn
+ >= 0)
+
+156 
+³rf_£t
+.
+¡ack_Ën
+ = 
+ÃwËn
+;
+
+159 
+	`msg
+ (
+M_FATAL
+, "PERF:…op_perf_index: stack…opƒrror");
+
+160 
+	}
+}
+
+163 
+	$¡©e_mu¡_be
+ (cÚ¡ 
+³rf
+ *
+p
+, cÚ¡ 
+wª‹d
+)
+
+165 ià(
+p
+->
+¡©e
+ !ð
+wª‹d
+)
+
+166 
+	`msg
+ (
+M_FATAL
+, "PERF: bad state‡ctual=%d wanted=%d",
+
+167 
+p
+->
+¡©e
+,
+
+168 
+wª‹d
+);
+
+169 
+	}
+}
+
+172 
+	$upd©e_soçr
+ (
+³rf
+ *
+p
+)
+
+174 
+timev®
+ 
+cu¼’t
+;
+
+175 
+	`ASSERT
+ (!
+	`g‘timeofday
+ (&
+cu¼’t
+, 
+NULL
+));
+
+176 
+p
+->
+soçr
+ +ð(è
+	`tv_subŒaù
+ (&
+cu¼’t
+, &p->
+¡¬t
+, 600) / 1000000.0;
+
+177 
+	`tv_þ—r
+ (&
+p
+->
+¡¬t
+);
+
+178 
+	}
+}
+
+181 
+	$³rf_¡¬t
+ (
+³rf
+ *
+p
+)
+
+183 
+	`¡©e_mu¡_be
+ (
+p
+, 
+PS_INITIAL
+);
+
+184 
+	`ASSERT
+ (!
+	`g‘timeofday
+ (&
+p
+->
+¡¬t
+, 
+NULL
+));
+
+185 
+p
+->
+soçr
+ = 0.0;
+
+186 
+p
+->
+¡©e
+ = 
+PS_METER_RUNNING
+;
+
+187 
+	}
+}
+
+190 
+	$³rf_¡Ý
+ (
+³rf
+ *
+p
+)
+
+192 
+	`¡©e_mu¡_be
+ (
+p
+, 
+PS_METER_RUNNING
+);
+
+193 
+	`upd©e_soçr
+ (
+p
+);
+
+194 
+p
+->
+sum
+ +ðp->
+soçr
+;
+
+195 ià(
+p
+->
+soçr
+ >…->
+max
+)
+
+196 
+p
+->
+max
+ =…->
+soçr
+;
+
+197 
+p
+->
+couÁ
+ += 1.0;
+
+198 
+p
+->
+soçr
+ = 0.0;
+
+199 
+p
+->
+¡©e
+ = 
+PS_INITIAL
+;
+
+200 
+	}
+}
+
+203 
+	$³rf_š‹¼u±
+ (
+³rf
+ *
+p
+)
+
+205 
+	`¡©e_mu¡_be
+ (
+p
+, 
+PS_METER_RUNNING
+);
+
+206 
+	`upd©e_soçr
+ (
+p
+);
+
+207 
+p
+->
+¡©e
+ = 
+PS_METER_INTERRUPTED
+;
+
+208 
+	}
+}
+
+211 
+	$³rf_»sume
+ (
+³rf
+ *
+p
+)
+
+213 
+	`¡©e_mu¡_be
+ (
+p
+, 
+PS_METER_INTERRUPTED
+);
+
+214 
+	`ASSERT
+ (!
+	`g‘timeofday
+ (&
+p
+->
+¡¬t
+, 
+NULL
+));
+
+215 
+p
+->
+¡©e
+ = 
+PS_METER_RUNNING
+;
+
+216 
+	}
+}
+
+219 
+	$³rf_push
+ (
+ty³
+)
+
+221 
+³rf
+ *
+´ev
+;
+
+222 
+³rf
+ *
+cur
+;
+
+224 
+	`ASSERT
+ (
+	`SIZE
+(
+m‘ric_Çmes
+è=ð
+PERF_N
+);
+
+225 
+	`push_³rf_šdex
+ (
+ty³
+);
+
+227 
+´ev
+ = 
+	`g‘_³rf
+ (-2);
+
+228 
+cur
+ = 
+	`g‘_³rf
+ (-1);
+
+230 
+	`ASSERT
+ (
+cur
+);
+
+232 ià(
+´ev
+)
+
+233 
+	`³rf_š‹¼u±
+ (
+´ev
+);
+
+234 
+	`³rf_¡¬t
+ (
+cur
+);
+
+235 
+	}
+}
+
+238 
+	$³rf_pÝ
+ ()
+
+240 
+³rf
+ *
+´ev
+;
+
+241 
+³rf
+ *
+cur
+;
+
+243 
+´ev
+ = 
+	`g‘_³rf
+ (-2);
+
+244 
+cur
+ = 
+	`g‘_³rf
+ (-1);
+
+246 
+	`ASSERT
+ (
+cur
+);
+
+247 
+	`³rf_¡Ý
+ (
+cur
+);
+
+249 ià(
+´ev
+)
+
+250 
+	`³rf_»sume
+ (
+´ev
+);
+
+252 
+	`pÝ_³rf_šdex
+ ();
+
+253 
+	}
+}
+
+256 
+	$³rf_ou�ut_»suÉs
+ ()
+
+258 
+i
+;
+
+259 
+	`msg
+ (
+M_INFO
+, "LATENCY PROFILE (mean‡nd max‡re in milliseconds)");
+
+260 
+i
+ = 0; i < 
+PERF_N
+; ++i)
+
+262 
+³rf
+ *
+p
+ = &
+³rf_£t
+.³rf[
+i
+];
+
+263 ià(
+p
+->
+couÁ
+ > 0.0)
+
+265 cÚ¡ 
+m—n
+ = 
+p
+->
+sum
+ /…->
+couÁ
+;
+
+266 
+	`msg
+ (
+M_INFO
+, "% n=%.0àm—n=%.3àmax=%.3f", 
+m‘ric_Çmes
+[
+i
+], 
+p
+->
+couÁ
+, 
+m—n
+*1000.0,…->
+max
+*1000.0);
+
+269 
+	}
+}
+
+272 
+	$³rf_´št_¡©e
+ (
+Ëv
+)
+
+274 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+275 
+i
+;
+
+276 
+	`msg
+ (
+Ëv
+, "PERF STATE");
+
+277 
+	`msg
+ (
+Ëv
+, "Stack:");
+
+278 
+i
+ = 0; i < 
+³rf_£t
+.
+¡ack_Ën
+; ++i)
+
+280 cÚ¡ 
+j
+ = 
+³rf_£t
+.
+¡ack
+[
+i
+];
+
+281 cÚ¡ 
+³rf
+ *
+p
+ = &
+³rf_£t
+.³rf[
+j
+];
+
+282 
+	`msg
+ (
+Ëv
+, "[%d] %s state=%d start=%s sofar=%f sum=%f max=%f count=%f",
+
+283 
+i
+,
+
+284 
+m‘ric_Çmes
+[
+j
+],
+
+285 
+p
+->
+¡©e
+,
+
+286 
+	`tv_¡ršg
+ (&
+p
+->
+¡¬t
+, &
+gc
+),
+
+287 
+p
+->
+soçr
+,
+
+288 
+p
+->
+sum
+,
+
+289 
+p
+->
+max
+,
+
+290 
+p
+->
+couÁ
+);
+
+292 
+	`gc_ä“
+ (&
+gc
+);
+
+293 
+	}
+}
+
+296 #ifdeà
+_MSC_VER
+
+
+297 
+	$dummy
+(è{
+	}
+}
+
+	@perf.h
+
+31 #iâdeà
+PERF_H
+
+
+32 
+	#PERF_H
+
+
+	)
+
+39 
+	#PERF_BIO_READ_PLAINTEXT
+ 0
+
+	)
+
+40 
+	#PERF_BIO_WRITE_PLAINTEXT
+ 1
+
+	)
+
+41 
+	#PERF_BIO_READ_CIPHERTEXT
+ 2
+
+	)
+
+42 
+	#PERF_BIO_WRITE_CIPHERTEXT
+ 3
+
+	)
+
+43 
+	#PERF_TLS_MULTI_PROCESS
+ 4
+
+	)
+
+44 
+	#PERF_IO_WAIT
+ 5
+
+	)
+
+45 
+	#PERF_EVENT_LOOP
+ 6
+
+	)
+
+46 
+	#PERF_MULTI_CREATE_INSTANCE
+ 7
+
+	)
+
+47 
+	#PERF_MULTI_CLOSE_INSTANCE
+ 8
+
+	)
+
+48 
+	#PERF_MULTI_SHOW_STATS
+ 9
+
+	)
+
+49 
+	#PERF_MULTI_BCAST
+ 10
+
+	)
+
+50 
+	#PERF_MULTI_MCAST
+ 11
+
+	)
+
+51 
+	#PERF_SCRIPT
+ 12
+
+	)
+
+52 
+	#PERF_READ_IN_LINK
+ 13
+
+	)
+
+53 
+	#PERF_PROC_IN_LINK
+ 14
+
+	)
+
+54 
+	#PERF_READ_IN_TUN
+ 15
+
+	)
+
+55 
+	#PERF_PROC_IN_TUN
+ 16
+
+	)
+
+56 
+	#PERF_PROC_OUT_LINK
+ 17
+
+	)
+
+57 
+	#PERF_PROC_OUT_TUN
+ 18
+
+	)
+
+58 
+	#PERF_PROC_OUT_TUN_MTCP
+ 19
+
+	)
+
+59 
+	#PERF_N
+ 20
+
+	)
+
+61 #ifdeà
+ENABLE_PERFORMANCE_METRICS
+
+
+63 
+	~"basic.h
+"
+
+68 
+	#STACK_N
+ 64
+
+	)
+
+70 
+³rf_push
+ (
+ty³
+);
+
+71 
+³rf_pÝ
+ ();
+
+72 
+³rf_ou�ut_»suÉs
+ ();
+
+76 
+šlše
+ 
+	$³rf_push
+ (
+ty³
+è{
+	}
+}
+
+77 
+šlše
+ 
+	$³rf_pÝ
+ (è{
+	}
+}
+
+78 
+šlše
+ 
+	$³rf_ou�ut_»suÉs
+ (è{
+	}
+}
+
+	@pf-inline.h
+
+25 #ià
+defšed
+(
+ENABLE_PF
+è&& !defšed(
+PF_INLINE_H
+)
+
+26 
+	#PF_INLINE_H
+
+
+	)
+
+32 
+	#PCT_SRC
+ 1
+
+	)
+
+33 
+	#PCT_DEST
+ 2
+
+	)
+
+34 
+šlše
+ 
+boÞ
+
+
+35 
+	$pf_c2c_‹¡
+ (cÚ¡ 
+cÚ‹xt
+ *
+¤c
+, cÚ¡ cÚ‹xˆ*
+de¡
+, cÚ¡ *
+´efix
+)
+
+37 
+boÞ
+ 
+	`pf_ú_‹¡
+ (
+pf_£t
+ *
+pfs
+, cÚ¡ 
+Žs_muÉi
+ *
+tm
+, cÚ¡ 
+ty³
+, cÚ¡ *
+´efix
+);
+
+38  (!
+¤c
+->
+c2
+.
+pf
+.
+’abËd
+ || 
+	`pf_ú_‹¡
+ (¤c->c2.pf.
+pfs
+, 
+de¡
+->c2.
+Žs_muÉi
+, 
+PCT_DEST
+, 
+´efix
+))
+
+39 && (!
+de¡
+->
+c2
+.
+pf
+.
+’abËd
+ || 
+	`pf_ú_‹¡
+ (de¡->c2.pf.
+pfs
+, 
+¤c
+->c2.
+Žs_muÉi
+, 
+PCT_SRC
+, 
+´efix
+));
+
+40 
+	}
+}
+
+42 
+šlše
+ 
+boÞ
+
+
+43 
+	$pf_addr_‹¡
+ (cÚ¡ 
+cÚ‹xt
+ *
+¤c
+, cÚ¡ 
+mrou‹_addr
+ *
+de¡
+, cÚ¡ *
+´efix
+)
+
+45 
+boÞ
+ 
+	`pf_addr_‹¡_dowÜk
+ (cÚ¡ 
+cÚ‹xt
+ *
+¤c
+, cÚ¡ 
+mrou‹_addr
+ *
+de¡
+, cÚ¡ *
+´efix
+);
+
+47 ià(
+¤c
+->
+c2
+.
+pf
+.
+’abËd
+)
+
+48  
+	`pf_addr_‹¡_dowÜk
+ (
+¤c
+, 
+de¡
+, 
+´efix
+);
+
+50  
+Œue
+;
+
+51 
+	}
+}
+
+53 
+šlše
+ 
+boÞ
+
+
+54 
+	$pf_kžl_‹¡
+ (cÚ¡ 
+pf_£t
+ *
+pfs
+)
+
+56  
+pfs
+->
+kžl
+;
+
+57 
+	}
+}
+
+	@pf.c
+
+27 #ifdeà
+HAVE_CONFIG_H
+
+
+28 
+	~"cÚfig.h
+"
+
+29 #–ià
+defšed
+(
+_MSC_VER
+)
+
+30 
+	~"cÚfig-msvc.h
+"
+
+33 
+	~"sysh—d.h
+"
+
+35 #ià
+defšed
+(
+ENABLE_PF
+)
+
+37 
+	~"š™.h
+"
+
+39 
+	~"memdbg.h
+"
+
+41 
+	~"pf-šlše.h
+"
+
+44 
+	$pf_de¡roy
+ (
+pf_£t
+ *
+pfs
+)
+
+46 ià(
+pfs
+)
+
+48 ià(
+pfs
+->
+ús
+.
+hash_�bË
+)
+
+49 
+	`hash_ä“
+ (
+pfs
+->
+ús
+.
+hash_�bË
+);
+
+52 
+pf_ú_–em
+ *
+l
+ = 
+pfs
+->
+ús
+.
+li¡
+;
+
+53 
+l
+)
+
+55 
+pf_ú_–em
+ *
+Ãxt
+ = 
+l
+->next;
+
+56 
+	`ä“
+ (
+l
+->
+ruË
+.
+ú
+);
+
+57 
+	`ä“
+ (
+l
+);
+
+58 
+l
+ = 
+Ãxt
+;
+
+62 
+pf_subÃt
+ *
+l
+ = 
+pfs
+->
+¢s
+.
+li¡
+;
+
+63 
+l
+)
+
+65 
+pf_subÃt
+ *
+Ãxt
+ = 
+l
+->next;
+
+66 
+	`ä“
+ (
+l
+);
+
+67 
+l
+ = 
+Ãxt
+;
+
+70 
+	`ä“
+ (
+pfs
+);
+
+72 
+	}
+}
+
+74 
+boÞ
+
+
+75 
+	$add_þ›Á
+ (cÚ¡ *
+lše
+, cÚ¡ *
+´efix
+, cÚ¡ 
+lše_num
+, 
+pf_ú_–em
+ ***
+Ãxt
+, cÚ¡ 
+boÞ
+ 
+exþude
+)
+
+77 
+pf_ú_–em
+ *
+e
+;
+
+78 
+	`ALLOC_OBJ_CLEAR
+ (
+e
+, 
+pf_ú_–em
+);
+
+79 
+e
+->
+ruË
+.
+exþude
+ =ƒxclude;
+
+80 
+e
+->
+ruË
+.
+ú
+ = 
+	`¡ršg_®loc
+ (
+lše
+, 
+NULL
+);
+
+81 **
+Ãxt
+ = 
+e
+;
+
+82 *
+Ãxt
+ = &
+e
+->next;
+
+83  
+Œue
+;
+
+84 
+	}
+}
+
+86 
+boÞ
+
+
+87 
+	$add_subÃt
+ (cÚ¡ *
+lše
+, cÚ¡ *
+´efix
+, cÚ¡ 
+lše_num
+, 
+pf_subÃt
+ ***
+Ãxt
+, cÚ¡ 
+boÞ
+ 
+exþude
+)
+
+89 
+š_addr
+ 
+ÃtwÜk
+;
+
+90 
+š_addr_t
+ 
+Ãtmask
+ = 0;
+
+92 ià(
+	`¡rcmp
+ (
+lše
+, "unknown"))
+
+94 
+Ãtb™s
+ = 32;
+
+95 *
+div
+ = 
+	`¡rchr
+ (
+lše
+, '/');
+
+97 ià(
+div
+)
+
+99 *
+div
+++ = '\0';
+
+100 ià(
+	`ssÿnf
+ (
+div
+, "%d", &
+Ãtb™s
+) != 1)
+
+102 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d: bad '/n' subÃˆ¥ecif›r: '%s'", 
+´efix
+, 
+lše_num
+, 
+div
+);
+
+103  
+çl£
+;
+
+105 ià(
+Ãtb™s
+ < 0 ||‚etbits > 32)
+
+107 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d: bad '/n' subÃˆ¥ecif›r: mu¡ b�b‘w“À0‡nd 32: '%s'", 
+´efix
+, 
+lše_num
+, 
+div
+);
+
+108  
+çl£
+;
+
+112 ià(
+	`Ý’v²_š‘_©Ú
+ (
+lše
+, &
+ÃtwÜk
+è!ð
+OIA_IP
+)
+
+114 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d: bad‚‘wÜk‡dd»ss: '%s'", 
+´efix
+, 
+lše_num
+, 
+lše
+);
+
+115  
+çl£
+;
+
+117 
+Ãtmask
+ = 
+	`Ãtb™s_to_Ãtmask
+ (
+Ãtb™s
+);
+
+118 ià((
+ÃtwÜk
+.
+s_addr
+ & 
+	`htÚl
+ (
+Ãtmask
+)) !=‚etwork.s_addr)
+
+120 
+ÃtwÜk
+.
+s_addr
+ &ð
+	`htÚl
+ (
+Ãtmask
+);
+
+121 
+	`msg
+ (
+M_WARN
+, "WARNING: PF: %s/%d: incÜ»ù subÃˆ%s/%d chªged�Ø%s/%d", 
+´efix
+, 
+lše_num
+, 
+lše
+, 
+Ãtb™s
+, 
+	`š‘_Áß
+ (
+ÃtwÜk
+),‚etbits);
+
+127 
+ÃtwÜk
+.
+s_addr
+ = 
+	`htÚl
+(0);
+
+128 
+Ãtmask
+ = 
+IPV4_NETMASK_HOST
+;
+
+132 
+pf_subÃt
+ *
+e
+;
+
+133 
+	`ALLOC_OBJ_CLEAR
+ (
+e
+, 
+pf_subÃt
+);
+
+134 
+e
+->
+ruË
+.
+exþude
+ =ƒxclude;
+
+135 
+e
+->
+ruË
+.
+ÃtwÜk
+ = 
+	`Áohl
+ (ÃtwÜk.
+s_addr
+);
+
+136 
+e
+->
+ruË
+.
+Ãtmask
+ =‚etmask;
+
+137 **
+Ãxt
+ = 
+e
+;
+
+138 *
+Ãxt
+ = &
+e
+->next;
+
+139  
+Œue
+;
+
+141 
+	}
+}
+
+143 
+ušt32_t
+
+
+144 
+	$ú_hash_funùiÚ
+ (cÚ¡ *
+key
+, 
+ušt32_t
+ 
+iv
+)
+
+146  
+	`hash_func
+ ((
+ušt8_t
+ *)
+key
+, 
+	`¡¾’
+ ((*)keyè+ 1, 
+iv
+);
+
+147 
+	}
+}
+
+149 
+boÞ
+
+
+150 
+	$ú_com·»_funùiÚ
+ (cÚ¡ *
+key1
+, cÚ¡ *
+key2
+)
+
+152  !
+	`¡rcmp
+((cÚ¡ *)
+key1
+, (cÚ¡ *)
+key2
+);
+
+153 
+	}
+}
+
+155 
+boÞ
+
+
+156 
+	$g’hash
+ (
+pf_ú_£t
+ *
+ús
+, cÚ¡ *
+´efix
+, cÚ¡ 
+n_þ›Ás
+)
+
+158 
+pf_ú_–em
+ *
+e
+;
+
+159 
+boÞ
+ 
+¡©us
+ = 
+Œue
+;
+
+160 
+n_buck‘s
+ = 
+n_þ›Ás
+;
+
+162 ià(
+n_buck‘s
+ < 16)
+
+163 
+n_buck‘s
+ = 16;
+
+164 
+ús
+->
+hash_�bË
+ = 
+	`hash_š™
+ (
+n_buck‘s
+, 0, 
+ú_hash_funùiÚ
+, 
+ú_com·»_funùiÚ
+);
+
+165 
+e
+ = 
+ús
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+167 ià(!
+	`hash_add
+ (
+ús
+->
+hash_�bË
+, 
+e
+->
+ruË
+.
+ú
+, &e->ruË, 
+çl£
+))
+
+169 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s: du¶iÿ‹ commÚ‚am�š [þ›Ás] seùiÚ: '%s'", 
+´efix
+, 
+e
+->
+ruË
+.
+ú
+);
+
+170 
+¡©us
+ = 
+çl£
+;
+
+174  
+¡©us
+;
+
+175 
+	}
+}
+
+177 
+pf_£t
+ *
+
+178 
+	$pf_š™
+ (cÚ¡ 
+bufãr_li¡
+ *
+bl
+, cÚ¡ *
+´efix
+, cÚ¡ 
+boÞ
+ 
+®low_kžl
+)
+
+180 
+	#MODE_UNDEF
+ 0
+
+	)
+
+181 
+	#MODE_CLIENTS
+ 1
+
+	)
+
+182 
+	#MODE_SUBNETS
+ 2
+
+	)
+
+183 
+mode
+ = 
+MODE_UNDEF
+;
+
+184 
+lše_num
+ = 0;
+
+185 
+n_þ›Ás
+ = 0;
+
+186 
+n_subÃts
+ = 0;
+
+187 
+n_”rÜs
+ = 0;
+
+188 
+pf_£t
+ *
+pfs
+ = 
+NULL
+;
+
+189 
+lše
+[
+PF_MAX_LINE_LEN
+];
+
+191 
+	`ALLOC_OBJ_CLEAR
+ (
+pfs
+, 
+pf_£t
+);
+
+192 ià(
+bl
+)
+
+194 
+pf_ú_–em
+ **
+þ
+ = &
+pfs
+->
+ús
+.
+li¡
+;
+
+195 
+pf_subÃt
+ **
+¦
+ = &
+pfs
+->
+¢s
+.
+li¡
+;
+
+196 
+bufãr_’Œy
+ *
+be
+;
+
+198 
+be
+ = 
+bl
+->
+h—d
+; b�!ð
+NULL
+; b�ðbe->
+Ãxt
+)
+
+200 ++
+lše_num
+;
+
+201 
+	`¡ºýyÁ
+ (
+lše
+, 
+	`BSTR
+(&
+be
+->
+buf
+), (line));
+
+202 
+	`rm_Œažšg_ch¬s
+ (
+lše
+, "\r\n\t ");
+
+203 ià(
+lše
+[0] == '\0' ||†ine[0] == '#')
+
+205 ià(
+lše
+[0] == '+' ||†ine[0] == '-')
+
+207 
+boÞ
+ 
+exþude
+ = (
+lše
+[0] == '-');
+
+209 ià(
+lše
+[1] =='\0')
+
+211 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d:‚Ød©¨aá” +/-: '%s'", 
+´efix
+, 
+lše_num
+, 
+lše
+);
+
+212 ++
+n_”rÜs
+;
+
+214 ià(
+mode
+ =ð
+MODE_CLIENTS
+)
+
+216 ià(
+	`add_þ›Á
+ (&
+lše
+[1], 
+´efix
+, 
+lše_num
+, &
+þ
+, 
+exþude
+))
+
+217 ++
+n_þ›Ás
+;
+
+219 ++
+n_”rÜs
+;
+
+221 ià(
+mode
+ =ð
+MODE_SUBNETS
+)
+
+223 ià(
+	`add_subÃt
+ (&
+lše
+[1], 
+´efix
+, 
+lše_num
+, &
+¦
+, 
+exþude
+))
+
+224 ++
+n_subÃts
+;
+
+226 ++
+n_”rÜs
+;
+
+228 ià(
+mode
+ =ð
+MODE_UNDEF
+)
+
+232 
+	`ASSERT
+ (0);
+
+235 ià(
+lše
+[0] == '[')
+
+237 ià(!
+	`¡rÿ£cmp
+ (
+lše
+, "[clients‡ccept]"))
+
+239 
+mode
+ = 
+MODE_CLIENTS
+;
+
+240 
+pfs
+->
+ús
+.
+deçuÉ_®low
+ = 
+Œue
+;
+
+242 ià(!
+	`¡rÿ£cmp
+ (
+lše
+, "[clients drop]"))
+
+244 
+mode
+ = 
+MODE_CLIENTS
+;
+
+245 
+pfs
+->
+ús
+.
+deçuÉ_®low
+ = 
+çl£
+;
+
+247 ià(!
+	`¡rÿ£cmp
+ (
+lše
+, "[subnets‡ccept]"))
+
+249 
+mode
+ = 
+MODE_SUBNETS
+;
+
+250 
+pfs
+->
+¢s
+.
+deçuÉ_®low
+ = 
+Œue
+;
+
+252 ià(!
+	`¡rÿ£cmp
+ (
+lše
+, "[subnets drop]"))
+
+254 
+mode
+ = 
+MODE_SUBNETS
+;
+
+255 
+pfs
+->
+¢s
+.
+deçuÉ_®low
+ = 
+çl£
+;
+
+257 ià(!
+	`¡rÿ£cmp
+ (
+lše
+, "[end]"))
+
+258 
+dÚe
+;
+
+259 ià(
+®low_kžl
+ && !
+	`¡rÿ£cmp
+ (
+lše
+, "[kill]"))
+
+260 
+kžl
+;
+
+263 
+mode
+ = 
+MODE_UNDEF
+;
+
+264 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d unknowÀ�g: '%s'", 
+´efix
+, 
+lše_num
+, 
+lše
+);
+
+265 ++
+n_”rÜs
+;
+
+270 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s/%d†š�mu¡ begš w™h '+', '-', o¸'[' : '%s'", 
+´efix
+, 
+lše_num
+, 
+lše
+);
+
+271 ++
+n_”rÜs
+;
+
+274 ++
+n_”rÜs
+;
+
+275 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s: missšg [’d]", 
+´efix
+);
+
+279 
+	`msg
+ (
+D_PF_INFO
+, "PF: %s: cªnÙ o³n", 
+´efix
+);
+
+280 ++
+n_”rÜs
+;
+
+283 
+dÚe
+:
+
+284 ià(
+bl
+)
+
+286 ià(!
+n_”rÜs
+)
+
+288 ià(!
+	`g’hash
+ (&
+pfs
+->
+ús
+, 
+´efix
+, 
+n_þ›Ás
+))
+
+289 ++
+n_”rÜs
+;
+
+291 ià(
+n_”rÜs
+)
+
+292 
+	`msg
+ (
+D_PF_INFO
+, "PF: % »jeùed du�tØ%dƒ¼Ü(s)", 
+´efix
+, 
+n_”rÜs
+);
+
+294 ià(
+n_”rÜs
+)
+
+296 
+	`pf_de¡roy
+ (
+pfs
+);
+
+297 
+pfs
+ = 
+NULL
+;
+
+299  
+pfs
+;
+
+301 
+kžl
+:
+
+302 
+	`pf_de¡roy
+ (
+pfs
+);
+
+303 
+	`ALLOC_OBJ_CLEAR
+ (
+pfs
+, 
+pf_£t
+);
+
+304 
+pfs
+->
+kžl
+ = 
+Œue
+;
+
+305  
+pfs
+;
+
+306 
+	}
+}
+
+308 #ifdeà
+PLUGIN_PF
+
+
+309 
+pf_£t
+ *
+
+310 
+	$pf_š™_äom_fže
+ (cÚ¡ *
+â
+)
+
+312 
+bufãr_li¡
+ *
+bl
+ = 
+	`bufãr_li¡_fže
+ (
+â
+, 
+PF_MAX_LINE_LEN
+);
+
+313 ià(
+bl
+)
+
+315 
+pf_£t
+ *
+pfs
+ = 
+	`pf_š™
+ (
+bl
+, 
+â
+, 
+Œue
+);
+
+316 
+	`bufãr_li¡_ä“
+ (
+bl
+);
+
+317  
+pfs
+;
+
+321 
+	`msg
+ (
+D_PF_INFO
+|
+M_ERRNO
+, "PF: %s: cªnÙ o³n", 
+â
+);
+
+322  
+NULL
+;
+
+324 
+	}
+}
+
+327 #ifdeà
+ENABLE_DEBUG
+
+
+330 
+	$drÝ_acû±
+ (cÚ¡ 
+boÞ
+ 
+acû±
+)
+
+332  
+acû±
+ ? "ACCEPT" : "DROP";
+
+333 
+	}
+}
+
+336 
+	$pù_Çme
+ (cÚ¡ 
+ty³
+)
+
+338 
+ty³
+)
+
+340 
+PCT_SRC
+:
+
+342 
+PCT_DEST
+:
+
+347 
+	}
+}
+
+350 
+	$pf_ú_‹¡_´št
+ (cÚ¡ *
+´efix
+,
+
+351 cÚ¡ 
+ty³
+,
+
+352 cÚ¡ *
+´efix2
+,
+
+353 cÚ¡ *
+ú
+,
+
+354 cÚ¡ 
+boÞ
+ 
+®low
+,
+
+355 cÚ¡ 
+pf_ú
+ *
+ruË
+)
+
+357 ià(
+ruË
+)
+
+359 
+	`dmsg
+ (
+D_PF_DEBUG
+, "PF: %s/%s/%s %s %s„ule=[%s %s]",
+
+360 
+´efix
+, 
+´efix2
+, 
+	`pù_Çme
+ (
+ty³
+),
+
+361 
+ú
+, 
+	`drÝ_acû±
+ (
+®low
+),
+
+362 
+ruË
+->
+ú
+, 
+	`drÝ_acû±
+ (!ruË->
+exþude
+));
+
+366 
+	`dmsg
+ (
+D_PF_DEBUG
+, "PF: %s/%s/%s %s %s",
+
+367 
+´efix
+, 
+´efix2
+, 
+	`pù_Çme
+ (
+ty³
+),
+
+368 
+ú
+, 
+	`drÝ_acû±
+ (
+®low
+));
+
+370 
+	}
+}
+
+373 
+	$pf_addr_‹¡_´št
+ (cÚ¡ *
+´efix
+,
+
+374 cÚ¡ *
+´efix2
+,
+
+375 cÚ¡ 
+cÚ‹xt
+ *
+¤c
+,
+
+376 cÚ¡ 
+mrou‹_addr
+ *
+de¡
+,
+
+377 cÚ¡ 
+boÞ
+ 
+®low
+,
+
+378 cÚ¡ 
+�v4_subÃt
+ *
+ruË
+)
+
+380 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+381 ià(
+ruË
+)
+
+383 
+	`dmsg
+ (
+D_PF_DEBUG
+, "PF: %s/%s %s %s %s„ule=[%s/%s %s]",
+
+384 
+´efix
+,
+
+385 
+´efix2
+,
+
+386 
+	`Žs_commÚ_Çme
+ (
+¤c
+->
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+387 
+	`mrou‹_addr_´št_ex
+ (
+de¡
+, 
+MAPF_SHOW_ARP
+, &
+gc
+),
+
+388 
+	`drÝ_acû±
+ (
+®low
+),
+
+389 
+	`´št_š_addr_t
+ (
+ruË
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+390 
+	`´št_š_addr_t
+ (
+ruË
+->
+Ãtmask
+, 0, &
+gc
+),
+
+391 
+	`drÝ_acû±
+ (!
+ruË
+->
+exþude
+));
+
+395 
+	`dmsg
+ (
+D_PF_DEBUG
+, "PF: %s/%s %s %s %s",
+
+396 
+´efix
+,
+
+397 
+´efix2
+,
+
+398 
+	`Žs_commÚ_Çme
+ (
+¤c
+->
+c2
+.
+Žs_muÉi
+, 
+çl£
+),
+
+399 
+	`mrou‹_addr_´št_ex
+ (
+de¡
+, 
+MAPF_SHOW_ARP
+, &
+gc
+),
+
+400 
+	`drÝ_acû±
+ (
+®low
+));
+
+402 
+	`gc_ä“
+ (&
+gc
+);
+
+403 
+	}
+}
+
+407 
+šlše
+ 
+pf_ú
+ *
+
+408 
+	$lookup_ú_ruË
+ (
+hash
+ *
+h
+, cÚ¡ *
+ú
+, cÚ¡ 
+ušt32_t
+ 
+ú_hash
+)
+
+410 
+hash_–em’t
+ *
+he
+ = 
+	`hash_lookup_ç¡
+ (
+h
+, 
+	`hash_buck‘
+ (h, 
+ú_hash
+), 
+ú
+, cn_hash);
+
+411 ià(
+he
+)
+
+412  (
+pf_ú
+ *è
+he
+->
+v®ue
+;
+
+414  
+NULL
+;
+
+415 
+	}
+}
+
+417 
+boÞ
+
+
+418 
+	$pf_ú_‹¡
+ (
+pf_£t
+ *
+pfs
+, cÚ¡ 
+Žs_muÉi
+ *
+tm
+, cÚ¡ 
+ty³
+, cÚ¡ *
+´efix
+)
+
+420 ià(
+pfs
+ && !pfs->
+kžl
+)
+
+422 cÚ¡ *
+ú
+;
+
+423 
+ušt32_t
+ 
+ú_hash
+;
+
+424 ià(
+	`Žs_commÚ_Çme_hash
+ (
+tm
+, &
+ú
+, &
+ú_hash
+))
+
+426 cÚ¡ 
+pf_ú
+ *
+ruË
+ = 
+	`lookup_ú_ruË
+ (
+pfs
+->
+ús
+.
+hash_�bË
+, 
+ú
+, 
+ú_hash
+);
+
+427 ià(
+ruË
+)
+
+429 #ifdeà
+ENABLE_DEBUG
+
+
+430 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+431 
+	`pf_ú_‹¡_´št
+ ("PF_CN_MATCH", 
+ty³
+, 
+´efix
+, 
+ú
+, !
+ruË
+->
+exþude
+,„ule);
+
+433 ià(!
+ruË
+->
+exþude
+)
+
+434  
+Œue
+;
+
+436  
+çl£
+;
+
+440 #ifdeà
+ENABLE_DEBUG
+
+
+441 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+442 
+	`pf_ú_‹¡_´št
+ ("PF_CN_DEFAULT", 
+ty³
+, 
+´efix
+, 
+ú
+, 
+pfs
+->
+ús
+.
+deçuÉ_®low
+, 
+NULL
+);
+
+444 ià(
+pfs
+->
+ús
+.
+deçuÉ_®low
+)
+
+445  
+Œue
+;
+
+447  
+çl£
+;
+
+451 #ifdeà
+ENABLE_DEBUG
+
+
+452 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+453 
+	`pf_ú_‹¡_´št
+ ("PF_CN_FAULT", 
+ty³
+, 
+´efix
+, 
+	`Žs_commÚ_Çme
+ (
+tm
+, 
+çl£
+), f®£, 
+NULL
+);
+
+455  
+çl£
+;
+
+456 
+	}
+}
+
+458 
+boÞ
+
+
+459 
+	$pf_addr_‹¡_dowÜk
+ (cÚ¡ 
+cÚ‹xt
+ *
+¤c
+, cÚ¡ 
+mrou‹_addr
+ *
+de¡
+, cÚ¡ *
+´efix
+)
+
+461 
+pf_£t
+ *
+pfs
+ = 
+¤c
+->
+c2
+.
+pf
+.pfs;
+
+462 ià(
+pfs
+ && !pfs->
+kžl
+)
+
+464 cÚ¡ 
+š_addr_t
+ 
+addr
+ = 
+	`š_addr_t_äom_mrou‹_addr
+ (
+de¡
+);
+
+465 cÚ¡ 
+pf_subÃt
+ *
+£
+ = 
+pfs
+->
+¢s
+.
+li¡
+;
+
+466 
+£
+)
+
+468 ià((
+addr
+ & 
+£
+->
+ruË
+.
+Ãtmask
+è=ð£->ruË.
+ÃtwÜk
+)
+
+470 #ifdeà
+ENABLE_DEBUG
+
+
+471 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+472 
+	`pf_addr_‹¡_´št
+ ("PF_ADDR_MATCH", 
+´efix
+, 
+¤c
+, 
+de¡
+, !
+£
+->
+ruË
+.
+exþude
+, &se->rule);
+
+474  !
+£
+->
+ruË
+.
+exþude
+;
+
+476 
+£
+ = se->
+Ãxt
+;
+
+478 #ifdeà
+ENABLE_DEBUG
+
+
+479 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+480 
+	`pf_addr_‹¡_´št
+ ("PF_ADDR_DEFAULT", 
+´efix
+, 
+¤c
+, 
+de¡
+, 
+pfs
+->
+¢s
+.
+deçuÉ_®low
+, 
+NULL
+);
+
+482  
+pfs
+->
+¢s
+.
+deçuÉ_®low
+;
+
+486 #ifdeà
+ENABLE_DEBUG
+
+
+487 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+488 
+	`pf_addr_‹¡_´št
+ ("PF_ADDR_FAULT", 
+´efix
+, 
+¤c
+, 
+de¡
+, 
+çl£
+, 
+NULL
+);
+
+490  
+çl£
+;
+
+492 
+	}
+}
+
+494 #ifdeà
+PLUGIN_PF
+
+
+496 
+	$pf_check_»lßd
+ (
+cÚ‹xt
+ *
+c
+)
+
+498 cÚ¡ 
+¦ow_wakeup
+ = 15;
+
+499 cÚ¡ 
+ç¡_wakeup
+ = 1;
+
+500 cÚ¡ 
+wakeup_Œªs™iÚ
+ = 60;
+
+501 
+boÞ
+ 
+»lßded
+ = 
+çl£
+;
+
+503 ià(
+c
+->
+c2
+.
+pf
+.
+’abËd
+
+
+504 && 
+c
+->
+c2
+.
+pf
+.
+fž’ame
+
+
+505 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+pf
+.
+»lßd
+, &c->c2.
+timev®
+, 
+ETT_DEFAULT
+))
+
+507 
+¶©fÜm_¡©_t
+ 
+s
+;
+
+508 ià(!
+	`¶©fÜm_¡©
+ (
+c
+->
+c2
+.
+pf
+.
+fž’ame
+, &
+s
+))
+
+510 ià(
+s
+.
+¡_mtime
+ > 
+c
+->
+c2
+.
+pf
+.
+fže_Ï¡_mod
+)
+
+512 
+pf_£t
+ *
+pfs
+ = 
+	`pf_š™_äom_fže
+ (
+c
+->
+c2
+.
+pf
+.
+fž’ame
+);
+
+513 ià(
+pfs
+)
+
+515 ià(
+c
+->
+c2
+.
+pf
+.
+pfs
+)
+
+516 
+	`pf_de¡roy
+ (
+c
+->
+c2
+.
+pf
+.
+pfs
+);
+
+517 
+c
+->
+c2
+.
+pf
+.
+pfs
+ =…fs;
+
+518 
+»lßded
+ = 
+Œue
+;
+
+519 ià(
+	`pf_kžl_‹¡
+ (
+pfs
+))
+
+521 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+522 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "pf-kill";
+
+525 
+c
+->
+c2
+.
+pf
+.
+fže_Ï¡_mod
+ = 
+s
+.
+¡_mtime
+;
+
+529 
+wakeup
+ = 
+¦ow_wakeup
+;
+
+530 ià(!
+c
+->
+c2
+.
+pf
+.
+pfs
+ && c->c2.pf.
+n_check_»lßd
+ < 
+wakeup_Œªs™iÚ
+)
+
+531 
+wakeup
+ = 
+ç¡_wakeup
+;
+
+532 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+pf
+.
+»lßd
+, 
+wakeup
+, 
+now
+);
+
+533 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+534 
+c
+->
+c2
+.
+pf
+.
+n_check_»lßd
+++;
+
+537 #ifdeà
+ENABLE_DEBUG
+
+
+538 ià(
+»lßded
+ && 
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+539 
+	`pf_cÚ‹xt_´št
+ (&
+c
+->
+c2
+.
+pf
+, "pf_check_»lßd", 
+D_PF_DEBUG
+);
+
+541 
+	}
+}
+
+544 #ifdeà
+MANAGEMENT_PF
+
+
+545 
+boÞ
+
+
+546 
+	$pf_lßd_äom_bufãr_li¡
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr_li¡
+ *
+cÚfig
+)
+
+548 
+pf_£t
+ *
+pfs
+ = 
+	`pf_š™
+ (
+cÚfig
+, "[SERVER-PF]", 
+çl£
+);
+
+549 ià(
+pfs
+)
+
+551 ià(
+c
+->
+c2
+.
+pf
+.
+pfs
+)
+
+552 
+	`pf_de¡roy
+ (
+c
+->
+c2
+.
+pf
+.
+pfs
+);
+
+553 
+c
+->
+c2
+.
+pf
+.
+pfs
+ =…fs;
+
+554  
+Œue
+;
+
+557  
+çl£
+;
+
+558 
+	}
+}
+
+562 
+	$pf_š™_cÚ‹xt
+ (
+cÚ‹xt
+ *
+c
+)
+
+564 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+565 #ifdeà
+PLUGIN_PF
+
+
+566 ià(
+	`¶ugš_defšed
+ (
+c
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_ENABLE_PF
+))
+
+568 cÚ¡ *
+pf_fže
+ = 
+	`ü—‹_‹mp_fže
+ (
+c
+->
+ÝtiÚs
+.
+tmp_dœ
+, "pf", &
+gc
+);
+
+569 ifÐ
+pf_fže
+ ) {
+
+570 
+	`£‹nv_¡r
+ (
+c
+->
+c2
+.
+es
+, "pf_fže", 
+pf_fže
+);
+
+572 ià(
+	`¶ugš_ÿÎ
+ (
+c
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_ENABLE_PF
+, 
+NULL
+, NULL, c->
+c2
+.
+es
+è=ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+574 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+pf
+.
+»lßd
+, 1, 
+now
+);
+
+575 
+c
+->
+c2
+.
+pf
+.
+fž’ame
+ = 
+	`¡ršg_®loc
+ (
+pf_fže
+, &c->c2.
+gc
+);
+
+576 
+c
+->
+c2
+.
+pf
+.
+’abËd
+ = 
+Œue
+;
+
+577 #ifdeà
+ENABLE_DEBUG
+
+
+578 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+579 
+	`pf_cÚ‹xt_´št
+ (&
+c
+->
+c2
+.
+pf
+, "pf_š™_cÚ‹xt#1", 
+D_PF_DEBUG
+);
+
+584 
+	`msg
+ (
+M_WARN
+, "WARNING: OPENVPN_PLUGIN_ENABLE_PF disabled");
+
+589 #ifdeà
+MANAGEMENT_PF
+
+
+590 ià(!
+c
+->
+c2
+.
+pf
+.
+’abËd
+ && 
+	`mªagem’t_’abË_pf
+ (
+mªagem’t
+))
+
+592 
+c
+->
+c2
+.
+pf
+.
+’abËd
+ = 
+Œue
+;
+
+593 #ifdeà
+ENABLE_DEBUG
+
+
+594 ià(
+	`check_debug_Ëv–
+ (
+D_PF_DEBUG
+))
+
+595 
+	`pf_cÚ‹xt_´št
+ (&
+c
+->
+c2
+.
+pf
+, "pf_š™_cÚ‹xt#2", 
+D_PF_DEBUG
+);
+
+599 
+	`gc_ä“
+ (&
+gc
+);
+
+600 
+	}
+}
+
+603 
+	$pf_de¡roy_cÚ‹xt
+ (
+pf_cÚ‹xt
+ *
+pfc
+)
+
+605 #ifdeà
+PLUGIN_PF
+
+
+606 ià(
+pfc
+->
+fž’ame
+)
+
+608 
+	`¶©fÜm_uÆšk
+ (
+pfc
+->
+fž’ame
+);
+
+611 ià(
+pfc
+->
+pfs
+)
+
+612 
+	`pf_de¡roy
+ (
+pfc
+->
+pfs
+);
+
+613 
+	}
+}
+
+615 #ifdeà
+ENABLE_DEBUG
+
+
+618 
+	$pf_subÃt_£t_´št
+ (cÚ¡ 
+pf_subÃt_£t
+ *
+s
+, cÚ¡ 
+Ëv
+)
+
+620 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+621 ià(
+s
+)
+
+623 
+pf_subÃt
+ *
+e
+;
+
+625 
+	`msg
+ (
+Ëv
+, " ----- struct…f_subnet_set -----");
+
+626 
+	`msg
+ (
+Ëv
+, " deçuÉ_®low=%s", 
+	`drÝ_acû±
+ (
+s
+->
+deçuÉ_®low
+));
+
+628 
+e
+ = 
+s
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+630 
+	`msg
+ (
+Ëv
+, " %s/%s %s",
+
+631 
+	`´št_š_addr_t
+ (
+e
+->
+ruË
+.
+ÃtwÜk
+, 0, &
+gc
+),
+
+632 
+	`´št_š_addr_t
+ (
+e
+->
+ruË
+.
+Ãtmask
+, 0, &
+gc
+),
+
+633 
+	`drÝ_acû±
+ (!
+e
+->
+ruË
+.
+exþude
+));
+
+636 
+	`gc_ä“
+ (&
+gc
+);
+
+637 
+	}
+}
+
+640 
+	$pf_ú_£t_´št
+ (cÚ¡ 
+pf_ú_£t
+ *
+s
+, cÚ¡ 
+Ëv
+)
+
+642 ià(
+s
+)
+
+644 
+hash_™”©Ü
+ 
+hi
+;
+
+645 
+hash_–em’t
+ *
+he
+;
+
+647 
+	`msg
+ (
+Ëv
+, " ----- struct…f_cn_set -----");
+
+648 
+	`msg
+ (
+Ëv
+, " deçuÉ_®low=%s", 
+	`drÝ_acû±
+ (
+s
+->
+deçuÉ_®low
+));
+
+650 ià(
+s
+->
+hash_�bË
+)
+
+652 
+	`hash_™”©Ü_š™
+ (
+s
+->
+hash_�bË
+, &
+hi
+);
+
+653 (
+he
+ = 
+	`hash_™”©Ü_Ãxt
+ (&
+hi
+)))
+
+655 
+pf_ú
+ *
+e
+ = (pf_ú *)
+he
+->
+v®ue
+;
+
+656 
+	`msg
+ (
+Ëv
+, " %s %s",
+
+657 
+e
+->
+ú
+,
+
+658 
+	`drÝ_acû±
+ (!
+e
+->
+exþude
+));
+
+661 
+	`msg
+ (
+Ëv
+, " ----------");
+
+664 
+pf_ú_–em
+ *
+û
+;
+
+665 
+û
+ = 
+s
+->
+li¡
+; c�!ð
+NULL
+; c�ðû->
+Ãxt
+)
+
+667 
+pf_ú
+ *
+e
+ = 
+	`lookup_ú_ruË
+ (
+s
+->
+hash_�bË
+, 
+û
+->
+ruË
+.
+ú
+, 
+	`ú_hash_funùiÚ
+ (ce->rule.cn, 0));
+
+668 ià(
+e
+)
+
+670 
+	`msg
+ (
+Ëv
+, " %s %s",
+
+671 
+e
+->
+ú
+,
+
+672 
+	`drÝ_acû±
+ (!
+e
+->
+exþude
+));
+
+676 
+	`msg
+ (
+Ëv
+, " % LOOKUP FAILED", 
+û
+->
+ruË
+.
+ú
+);
+
+682 
+	}
+}
+
+685 
+	$pf_£t_´št
+ (cÚ¡ 
+pf_£t
+ *
+pfs
+, cÚ¡ 
+Ëv
+)
+
+687 ià(
+pfs
+)
+
+689 
+	`msg
+ (
+Ëv
+, " ----- struct…f_set -----");
+
+690 
+	`msg
+ (
+Ëv
+, " kžl=%d", 
+pfs
+->
+kžl
+);
+
+691 
+	`pf_subÃt_£t_´št
+ (&
+pfs
+->
+¢s
+, 
+Ëv
+);
+
+692 
+	`pf_ú_£t_´št
+ (&
+pfs
+->
+ús
+, 
+Ëv
+);
+
+694 
+	}
+}
+
+697 
+	$pf_cÚ‹xt_´št
+ (cÚ¡ 
+pf_cÚ‹xt
+ *
+pfc
+, cÚ¡ *
+´efix
+, cÚ¡ 
+Ëv
+)
+
+699 
+	`msg
+ (
+Ëv
+, "----- % : sŒuù…f_cÚ‹xˆ-----", 
+´efix
+);
+
+700 ià(
+pfc
+)
+
+702 
+	`msg
+ (
+Ëv
+, "’abËd=%d", 
+pfc
+->
+’abËd
+);
+
+703 #ifdeà
+PLUGIN_PF
+
+
+704 
+	`msg
+ (
+Ëv
+, "fž’ame='%s'", 
+	`Å
+(
+pfc
+->
+fž’ame
+));
+
+705 
+	`msg
+ (
+Ëv
+, "fže_Ï¡_mod=%u", ()
+pfc
+->
+fže_Ï¡_mod
+);
+
+706 
+	`msg
+ (
+Ëv
+, "n_check_»lßd=%u", 
+pfc
+->
+n_check_»lßd
+);
+
+707 
+	`msg
+ (
+Ëv
+, "»lßd=[%d,%u,%u]", 
+pfc
+->
+»lßd
+.
+defšed
+,…fc->»lßd.
+n
+, (ífc->»lßd.
+Ï¡
+);
+
+709 
+	`pf_£t_´št
+ (
+pfc
+->
+pfs
+, 
+Ëv
+);
+
+711 
+	`msg
+ (
+Ëv
+, "--------------------");
+
+712 
+	}
+}
+
+	@pf.h
+
+27 #ià
+defšed
+(
+ENABLE_PF
+è&& !defšed(
+OPENVPN_PF_H
+)
+
+28 
+	#OPENVPN_PF_H
+
+
+	)
+
+30 
+	~"li¡.h
+"
+
+31 
+	~"mrou‹.h
+"
+
+33 
+	#PF_MAX_LINE_LEN
+ 256
+
+	)
+
+35 
+	gcÚ‹xt
+;
+
+37 
+	s�v4_subÃt
+ {
+
+38 
+boÞ
+ 
+	mexþude
+;
+
+39 
+š_addr_t
+ 
+	mÃtwÜk
+;
+
+40 
+š_addr_t
+ 
+	mÃtmask
+;
+
+43 
+	spf_subÃt
+ {
+
+44 
+pf_subÃt
+ *
+	mÃxt
+;
+
+45 
+�v4_subÃt
+ 
+	mruË
+;
+
+48 
+	spf_subÃt_£t
+ {
+
+49 
+boÞ
+ 
+	mdeçuÉ_®low
+;
+
+50 
+pf_subÃt
+ *
+	mli¡
+;
+
+53 
+	spf_ú
+ {
+
+54 
+boÞ
+ 
+	mexþude
+;
+
+55 *
+	mú
+;
+
+58 
+	spf_ú_–em
+ {
+
+59 
+pf_ú_–em
+ *
+	mÃxt
+;
+
+60 
+pf_ú
+ 
+	mruË
+;
+
+63 
+	spf_ú_£t
+ {
+
+64 
+boÞ
+ 
+	mdeçuÉ_®low
+;
+
+65 
+pf_ú_–em
+ *
+	mli¡
+;
+
+66 
+hash
+ *
+	mhash_�bË
+;
+
+69 
+	spf_£t
+ {
+
+70 
+boÞ
+ 
+	mkžl
+;
+
+71 
+pf_subÃt_£t
+ 
+	m¢s
+;
+
+72 
+pf_ú_£t
+ 
+	mús
+;
+
+75 
+	spf_cÚ‹xt
+ {
+
+76 
+boÞ
+ 
+	m’abËd
+;
+
+77 
+pf_£t
+ *
+	mpfs
+;
+
+78 #ifdeà
+PLUGIN_PF
+
+
+79 *
+	mfž’ame
+;
+
+80 
+time_t
+ 
+	mfže_Ï¡_mod
+;
+
+81 
+	mn_check_»lßd
+;
+
+82 
+ev’t_timeout
+ 
+	m»lßd
+;
+
+86 
+pf_š™_cÚ‹xt
+ (
+cÚ‹xt
+ *
+c
+);
+
+88 
+pf_de¡roy_cÚ‹xt
+ (
+pf_cÚ‹xt
+ *
+pfc
+);
+
+90 #ifdeà
+PLUGIN_PF
+
+
+91 
+pf_check_»lßd
+ (
+cÚ‹xt
+ *
+c
+);
+
+94 #ifdeà
+MANAGEMENT_PF
+
+
+95 
+boÞ
+ 
+pf_lßd_äom_bufãr_li¡
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr_li¡
+ *
+cÚfig
+);
+
+98 #ifdeà
+ENABLE_DEBUG
+
+
+99 
+pf_cÚ‹xt_´št
+ (cÚ¡ 
+pf_cÚ‹xt
+ *
+pfc
+, cÚ¡ *
+´efix
+, cÚ¡ 
+Ëv
+);
+
+	@ping-inline.h
+
+25 #iâdeà
+PING_INLINE_H
+
+
+26 
+	#PING_INLINE_H
+
+
+	)
+
+32 
+šlše
+ 
+
+33 
+	$check_pšg_»¡¬t
+ (
+cÚ‹xt
+ *
+c
+)
+
+35 
+	`check_pšg_»¡¬t_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+36 ià(
+c
+->
+ÝtiÚs
+.
+pšg_»c_timeout
+
+
+37 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+pšg_»c_š‹rv®
+,
+
+38 &
+c
+->
+c2
+.
+timev®
+,
+
+39 (!
+c
+->
+ÝtiÚs
+.
+pšg_tim”_»mÙe
+
+
+40 || 
+	`lšk_sock‘_aùu®_defšed
+ (&
+c
+->
+c1
+.
+lšk_sock‘_addr
+.
+aùu®
+))
+
+41 ? 
+ETT_DEFAULT
+ : 15))
+
+42 
+	`check_pšg_»¡¬t_dowÜk
+ (
+c
+);
+
+43 
+	}
+}
+
+48 
+šlše
+ 
+
+49 
+	$check_pšg_£nd
+ (
+cÚ‹xt
+ *
+c
+)
+
+51 
+	`check_pšg_£nd_dowÜk
+ (
+cÚ‹xt
+ *
+c
+);
+
+52 ià(
+c
+->
+ÝtiÚs
+.
+pšg_£nd_timeout
+
+
+53 && 
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+pšg_£nd_š‹rv®
+,
+
+54 &
+c
+->
+c2
+.
+timev®
+,
+
+55 !
+	`TO_LINK_DEF
+(
+c
+è? 
+ETT_DEFAULT
+ : 1))
+
+56 
+	`check_pšg_£nd_dowÜk
+ (
+c
+);
+
+57 
+	}
+}
+
+	@ping.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"pšg.h
+"
+
+35 
+	~"memdbg.h
+"
+
+37 
+	~"pšg-šlše.h
+"
+
+46 cÚ¡ 
+ušt8_t
+ 
+	gpšg_¡ršg
+[] = {
+
+56 
+	$check_pšg_»¡¬t_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+58 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+59 
+c
+->
+ÝtiÚs
+.
+pšg_»c_timeout_aùiÚ
+)
+
+61 
+PING_EXIT
+:
+
+62 
+	`msg
+ (
+M_INFO
+, "%sInactivity�imeout (--ping-exit),ƒxiting",
+
+63 
+	`fÜm©_commÚ_Çme
+ (
+c
+, &
+gc
+));
+
+64 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+65 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "ping-exit";
+
+67 
+PING_RESTART
+:
+
+68 
+	`msg
+ (
+M_INFO
+, "%sInactivity�imeout (--ping-restart),„estarting",
+
+69 
+	`fÜm©_commÚ_Çme
+ (
+c
+, &
+gc
+));
+
+70 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+71 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "ping-restart";
+
+74 
+	`ASSERT
+ (0);
+
+76 
+	`gc_ä“
+ (&
+gc
+);
+
+77 
+	}
+}
+
+83 
+	$check_pšg_£nd_dowÜk
+ (
+cÚ‹xt
+ *
+c
+)
+
+85 
+c
+->
+c2
+.
+buf
+ = c->c2.
+bufãrs
+->
+aux_buf
+;
+
+86 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`FRAME_HEADROOM
+ (&c->c2.
+äame
+)));
+
+87 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+c
+->
+c2
+.
+buf
+, 
+	`MAX_RW_SIZE_TUN
+ (&c->c2.
+äame
+)));
+
+88 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+c
+->
+c2
+.
+buf
+, 
+pšg_¡ršg
+,  (ping_string)));
+
+94 
+	`’üy±_sign
+ (
+c
+, 
+Œue
+);
+
+96 
+c
+->
+c2
+.
+buf
+.
+Ën
+ = 0;
+
+97 
+	`dmsg
+ (
+D_PING
+, "SENT PING");
+
+98 
+	}
+}
+
+	@ping.h
+
+25 #iâdeà
+PING_H
+
+
+26 
+	#PING_H
+
+
+	)
+
+28 
+	~"š™.h
+"
+
+29 
+	~"fÜw¬d.h
+"
+
+34 
+	#PRE_PULL_INITIAL_PING_RESTART
+ 120
+
+	)
+
+36 
cÚ¡ 
+ušt8_t
+ 
+pšg_¡ršg
+[];
+
+39 
+	#PING_STRING_SIZE
+ 16
+
+	)
+
+41 
+šlše
+ 
+boÞ
+
+
+42 
+	$is_pšg_msg
+ (cÚ¡ 
+bufãr
+* 
+buf
+)
+
+44  
+	`buf_¡ršg_m©ch
+ (
+buf
+, 
+pšg_¡ršg
+, 
+PING_STRING_SIZE
+);
+
+45 
+	}
+}
+
+	@pkcs11.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+defšed
+(
+ENABLE_PKCS11
+)
+
+35 
+	~<pkcs11-h–³r-1.0/pkcs11h-û¹ifiÿ‹.h
+>
+
+36 
+	~"basic.h
+"
+
+37 
+	~"”rÜ.h
+"
+
+38 
+	~"mªage.h
+"
+
+39 
+	~"ba£64.h
+"
+
+40 
+	~"pkcs11.h
+"
+
+41 
+	~"misc.h
+"
+
+42 
+	~"Ùime.h
+"
+
+43 
+	~"cÚsÞe.h
+"
+
+44 
+	~"pkcs11_back’d.h
+"
+
+47 
+time_t
+
+
+48 
+	$__mytime
+ () {
+
+49  
+	`Ý’v²_time
+ (
+NULL
+);
+
+50 
+	}
+}
+
+52 #ià!
+defšed
+(
+_WIN32
+)
+
+55 
+	$__myg‘timeofday
+ (
+timev®
+ *
+tv
+) {
+
+56  
+	`g‘timeofday
+ (
+tv
+, 
+NULL
+);
+
+57 
+	}
+}
+
+62 
+	$__my¦“p
+ (cÚ¡ 
+u£c
+) {
+
+63 #ià
+	`defšed
+(
+_WIN32
+)
+
+64 
+	`SË•
+ (
+u£c
+/1000);
+
+66 
+	`u¦“p
+ (
+u£c
+);
+
+68 
+	}
+}
+
+71 
+pkcs11h_’gše_sy¡em_t
+ 
+	gs_pkcs11h_sys_’gše
+ = {
+
+72 
+m®loc
+,
+
+73 
+ä“
+,
+
+74 
+__mytime
+,
+
+75 
+__my¦“p
+,
+
+76 #ià
+defšed
+(
+_WIN32
+)
+
+77 
+NULL
+
+
+79 
+__myg‘timeofday
+
+
+85 
+	$_pkcs11_msg_pkcs112Ý’v²
+ (
+
+86 cÚ¡ 
+æags
+
+
+88 
+Ý’v²_æags
+;
+
+90 
+æags
+) {
+
+91 
+PKCS11H_LOG_DEBUG2
+:
+
+92 
+Ý’v²_æags
+ = 
+D_PKCS11_DEBUG
+;
+
+94 
+PKCS11H_LOG_DEBUG1
+:
+
+95 
+Ý’v²_æags
+ = 
+D_SHOW_PKCS11
+;
+
+97 
+PKCS11H_LOG_INFO
+:
+
+98 
+Ý’v²_æags
+ = 
+M_INFO
+;
+
+100 
+PKCS11H_LOG_WARN
+:
+
+101 
+Ý’v²_æags
+ = 
+M_WARN
+;
+
+103 
+PKCS11H_LOG_ERROR
+:
+
+104 
+Ý’v²_æags
+ = 
+M_FATAL
+;
+
+107 
+Ý’v²_æags
+ = 
+M_FATAL
+;
+
+111 #ià
+	`defšed
+(
+ENABLE_PKCS11_FORCE_DEBUG
+)
+
+112 
+Ý’v²_æags
+=
+M_INFO
+;
+
+115  
+Ý’v²_æags
+;
+
+116 
+	}
+}
+
+120 
+	$_pkcs11_msg_Ý’v²2pkcs11
+ (
+
+121 cÚ¡ 
+æags
+
+
+123 
+pkcs11_æags
+;
+
+125 ià((
+æags
+ & 
+D_PKCS11_DEBUG
+) != 0) {
+
+126 
+pkcs11_æags
+ = 
+PKCS11H_LOG_DEBUG2
+;
+
+128 ià((
+æags
+ & 
+D_SHOW_PKCS11
+) != 0) {
+
+129 
+pkcs11_æags
+ = 
+PKCS11H_LOG_DEBUG1
+;
+
+131 ià((
+æags
+ & 
+M_INFO
+) != 0) {
+
+132 
+pkcs11_æags
+ = 
+PKCS11H_LOG_INFO
+;
+
+134 ià((
+æags
+ & 
+M_WARN
+) != 0) {
+
+135 
+pkcs11_æags
+ = 
+PKCS11H_LOG_WARN
+;
+
+137 ià((
+æags
+ & 
+M_FATAL
+) != 0) {
+
+138 
+pkcs11_æags
+ = 
+PKCS11H_LOG_ERROR
+;
+
+141 
+pkcs11_æags
+ = 
+PKCS11H_LOG_ERROR
+;
+
+144 #ià
+	`defšed
+(
+ENABLE_PKCS11_FORCE_DEBUG
+)
+
+145 
+pkcs11_æags
+ = 
+PKCS11H_LOG_DEBUG2
+;
+
+148  
+pkcs11_æags
+;
+
+149 
+	}
+}
+
+153 
+	$_pkcs11_Ý’v²_log
+ (
+
+154 * cÚ¡ 
+glob®_d©a
+,
+
+155 
+æags
+,
+
+156 cÚ¡ * cÚ¡ 
+szFÜm©
+,
+
+157 
+va_li¡
+ 
+¬gs
+
+
+159 
+Bufãr
+[10*1024];
+
+161 ()
+glob®_d©a
+;
+
+163 
+	`v¢´štf
+ (
+Bufãr
+,  (Bufãr), 
+szFÜm©
+, 
+¬gs
+);
+
+164 
+Bufãr
+[ (Buffer)-1] = 0;
+
+166 
+	`msg
+ (
+	`_pkcs11_msg_pkcs112Ý’v²
+ (
+æags
+), "%s", 
+Bufãr
+);
+
+167 
+	}
+}
+
+170 
+PKCS11H_BOOL
+
+
+171 
+	$_pkcs11_Ý’v²_tok’_´om±
+ (
+
+172 * cÚ¡ 
+glob®_d©a
+,
+
+173 * cÚ¡ 
+u£r_d©a
+,
+
+174 cÚ¡ 
+pkcs11h_tok’_id_t
+ 
+tok’
+,
+
+175 cÚ¡ 
+»Œy
+
+
+177 
+u£r_·ss
+ 
+tok’_»¥
+;
+
+179 ()
+glob®_d©a
+;
+
+180 ()
+u£r_d©a
+;
+
+181 ()
+»Œy
+;
+
+183 
+	`ASSERT
+ (
+tok’
+!=
+NULL
+);
+
+185 
+	`CLEAR
+ (
+tok’_»¥
+);
+
+186 
+tok’_»¥
+.
+defšed
+ = 
+çl£
+;
+
+187 
+tok’_»¥
+.
+noÿche
+ = 
+Œue
+;
+
+188 
+	`Ý’v²_¢´štf
+ (
+
+189 
+tok’_»¥
+.
+u£ºame
+,
+
+190  (
+tok’_»¥
+.
+u£ºame
+),
+
+192 
+tok’
+->
+Ïb–
+
+
+196 !
+	`g‘_u£r_·ss
+ (
+
+197 &
+tok’_»¥
+,
+
+198 
+NULL
+,
+
+200 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_NEED_OK
+|
+GET_USER_PASS_NOFATAL
+
+
+203  
+çl£
+;
+
+206  
+	`¡rcmp
+ (
+tok’_»¥
+.
+·sswÜd
+, "ok") == 0;
+
+208 
+	}
+}
+
+211 
+PKCS11H_BOOL
+
+
+212 
+	$_pkcs11_Ý’v²_pš_´om±
+ (
+
+213 * cÚ¡ 
+glob®_d©a
+,
+
+214 * cÚ¡ 
+u£r_d©a
+,
+
+215 cÚ¡ 
+pkcs11h_tok’_id_t
+ 
+tok’
+,
+
+216 cÚ¡ 
+»Œy
+,
+
+217 * cÚ¡ 
+pš
+,
+
+218 cÚ¡ 
+size_t
+ 
+pš_max
+
+
+220 
+u£r_·ss
+ 
+tok’_·ss
+;
+
+221 
+´om±
+[1024];
+
+223 ()
+glob®_d©a
+;
+
+224 ()
+u£r_d©a
+;
+
+225 ()
+»Œy
+;
+
+227 
+	`ASSERT
+ (
+tok’
+!=
+NULL
+);
+
+229 
+	`Ý’v²_¢´štf
+ (
+´om±
+,  (´om±), "% tok’", 
+tok’
+->
+Ïb–
+);
+
+231 
+tok’_·ss
+.
+defšed
+ = 
+çl£
+;
+
+232 
+tok’_·ss
+.
+noÿche
+ = 
+Œue
+;
+
+235 !
+	`g‘_u£r_·ss
+ (
+
+236 &
+tok’_·ss
+,
+
+237 
+NULL
+,
+
+238 
+´om±
+,
+
+239 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_PASSWORD_ONLY
+|
+GET_USER_PASS_NOFATAL
+
+
+242  
+çl£
+;
+
+245 
+	`¡ºýyÁ
+ (
+pš
+, 
+tok’_·ss
+.
+·sswÜd
+, 
+pš_max
+);
+
+246 
+	`purge_u£r_·ss
+ (&
+tok’_·ss
+, 
+Œue
+);
+
+248 ià(
+	`¡¾’
+ (
+pš
+) == 0) {
+
+249  
+çl£
+;
+
+252  
+Œue
+;
+
+255 
+	}
+}
+
+257 
+boÞ
+
+
+258 
+	$pkcs11_š™Ÿlize
+ (
+
+259 cÚ¡ 
+boÞ
+ 
+´Ùeùed_auth
+,
+
+260 cÚ¡ 
+nPINCacheP”iod
+
+
+262 
+CK_RV
+ 
+rv
+ = 
+CKR_FUNCTION_FAILED
+;
+
+264 
+	`dmsg
+ (
+
+265 
+D_PKCS11_DEBUG
+,
+
+269 ià((
+rv
+ = 
+	`pkcs11h_’gše_£tSy¡em
+ (&
+s_pkcs11h_sys_’gše
+)è!ð
+CKR_OK
+) {
+
+270 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ in™Ÿliz�sy¡emƒngš�%ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+271 
+þ—nup
+;
+
+274 ià((
+rv
+ = 
+	`pkcs11h_š™Ÿlize
+ ()è!ð
+CKR_OK
+) {
+
+275 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ in™Ÿliz�%ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+276 
+þ—nup
+;
+
+279 ià((
+rv
+ = 
+	`pkcs11h_£tLogHook
+ (
+_pkcs11_Ý’v²_log
+, 
+NULL
+)è!ð
+CKR_OK
+) {
+
+280 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ hook %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+281 
+þ—nup
+;
+
+284 
+	`pkcs11h_£tLogLev–
+ (
+	`_pkcs11_msg_Ý’v²2pkcs11
+ (
+	`g‘_debug_Ëv–
+ ()));
+
+286 ià((
+rv
+ = 
+	`pkcs11h_£tFÜkMode
+ (
+TRUE
+)è!ð
+CKR_OK
+) {
+
+287 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ fÜk mod�%ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+288 
+þ—nup
+;
+
+291 ià((
+rv
+ = 
+	`pkcs11h_£tTok’Prom±Hook
+ (
+_pkcs11_Ý’v²_tok’_´om±
+, 
+NULL
+)è!ð
+CKR_OK
+) {
+
+292 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ hook %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+293 
+þ—nup
+;
+
+296 ià((
+rv
+ = 
+	`pkcs11h_£tPINProm±Hook
+ (
+_pkcs11_Ý’v²_pš_´om±
+, 
+NULL
+)è!ð
+CKR_OK
+) {
+
+297 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ hook %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+298 
+þ—nup
+;
+
+301 ià((
+rv
+ = 
+	`pkcs11h_£tPrÙeùedAuth’tiÿtiÚ
+ (
+´Ùeùed_auth
+)è!ð
+CKR_OK
+) {
+
+302 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘…rÙeùed‡uth’tiÿtiÚ mod�%ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+303 
+þ—nup
+;
+
+306 ià((
+rv
+ = 
+	`pkcs11h_£tPINCacheP”iod
+ (
+nPINCacheP”iod
+)è!ð
+CKR_OK
+) {
+
+307 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ Pÿch�³riod %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+308 
+þ—nup
+;
+
+311 
+rv
+ = 
+CKR_OK
+;
+
+313 
+þ—nup
+:
+
+314 
+	`dmsg
+ (
+
+315 
+D_PKCS11_DEBUG
+,
+
+317 
+rv
+,
+
+318 
+	`pkcs11h_g‘Mes§ge
+ (
+rv
+)
+
+321  
+rv
+ =ð
+CKR_OK
+;
+
+322 
+	}
+}
+
+325 
+	$pkcs11_‹rmš©e
+ () {
+
+326 
+	`dmsg
+ (
+
+327 
+D_PKCS11_DEBUG
+,
+
+331 
+	`pkcs11h_‹rmš©e
+ ();
+
+333 
+	`dmsg
+ (
+
+334 
+D_PKCS11_DEBUG
+,
+
+337 
+	}
+}
+
+339 
+boÞ
+
+
+340 
+	$pkcs11_addProvid”
+ (
+
+341 cÚ¡ * cÚ¡ 
+´ovid”
+,
+
+342 cÚ¡ 
+boÞ
+ 
+´Ùeùed_auth
+,
+
+343 cÚ¡ 
+´iv©e_mode
+,
+
+344 cÚ¡ 
+boÞ
+ 
+û¹_´iv©e
+
+
+346 
+CK_RV
+ 
+rv
+ = 
+CKR_OK
+;
+
+348 
+	`ASSERT
+ (
+´ovid”
+!=
+NULL
+);
+
+350 
+	`dmsg
+ (
+
+351 
+D_PKCS11_DEBUG
+,
+
+353 
+´ovid”
+,
+
+354 
+´iv©e_mode
+
+
+357 
+	`msg
+ (
+
+358 
+M_INFO
+,
+
+360 
+´ovid”
+
+
+364 (
+rv
+ = 
+	`pkcs11h_addProvid”
+ (
+
+365 
+´ovid”
+,
+
+366 
+´ovid”
+,
+
+367 
+´Ùeùed_auth
+,
+
+368 
+´iv©e_mode
+,
+
+369 
+PKCS11H_SLOTEVENT_METHOD_AUTO
+,
+
+371 
+û¹_´iv©e
+
+
+372 )è!ð
+CKR_OK
+
+
+374 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ in™Ÿliz�´ovid” '%s' %ld-'%s'", 
+´ovid”
+, 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+377 
+	`dmsg
+ (
+
+378 
+D_PKCS11_DEBUG
+,
+
+380 
+rv
+,
+
+381 
+	`pkcs11h_g‘Mes§ge
+ (
+rv
+)
+
+384  
+rv
+ =ð
+CKR_OK
+;
+
+385 
+	}
+}
+
+388 
+	$pkcs11_logout
+() {
+
+389  
+	`pkcs11h_logout
+ (è=ð
+CKR_OK
+;
+
+390 
+	}
+}
+
+393 
+	$pkcs11_mªagem’t_id_couÁ
+ () {
+
+394 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+id_li¡
+ = 
+NULL
+;
+
+395 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+t
+ = 
+NULL
+;
+
+396 
+CK_RV
+ 
+rv
+ = 
+CKR_OK
+;
+
+397 
+couÁ
+ = 0;
+
+399 
+	`dmsg
+ (
+
+400 
+D_PKCS11_DEBUG
+,
+
+405 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_’umC”tifiÿ‹Ids
+ (
+
+406 
+PKCS11H_ENUM_METHOD_CACHE_EXIST
+,
+
+407 
+NULL
+,
+
+408 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+409 
+NULL
+,
+
+410 &
+id_li¡
+
+
+411 )è!ð
+CKR_OK
+
+
+413 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹†i¡ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+414 
+þ—nup
+;
+
+417 
+couÁ
+ = 0, 
+t
+ = 
+id_li¡
+;� !ð
+NULL
+;� =�->
+Ãxt
+) {
+
+418 
+couÁ
+++;
+
+421 
+þ—nup
+:
+
+423 ià(
+id_li¡
+ !ð
+NULL
+) {
+
+424 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹IdLi¡
+ (
+id_li¡
+);
+
+425 
+id_li¡
+ = 
+NULL
+;
+
+428 
+	`dmsg
+ (
+
+429 
+D_PKCS11_DEBUG
+,
+
+431 
+couÁ
+
+
+434  
+couÁ
+;
+
+435 
+	}
+}
+
+437 
+boÞ
+
+
+438 
+	$pkcs11_mªagem’t_id_g‘
+ (
+
+439 cÚ¡ 
+šdex
+,
+
+440 ** 
+id
+,
+
+441 **
+ba£64
+
+
+443 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+id_li¡
+ = 
+NULL
+;
+
+444 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+’Œy
+ = 
+NULL
+;
+
+446 
+pkcs11h_û¹ifiÿ‹_id_t
+ 
+û¹ifiÿ‹_id
+ = 
+NULL
+;
+
+448 
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+449 
+CK_RV
+ 
+rv
+ = 
+CKR_OK
+;
+
+450 *
+û¹ifiÿ‹_blob
+ = 
+NULL
+;
+
+451 
+size_t
+ 
+û¹ifiÿ‹_blob_size
+ = 0;
+
+452 
+size_t
+ 
+max
+;
+
+453 *
+š‹º®_id
+ = 
+NULL
+;
+
+454 *
+š‹º®_ba£64
+ = 
+NULL
+;
+
+455 
+couÁ
+ = 0;
+
+456 
+boÞ
+ 
+sucûss
+ = 
+çl£
+;
+
+458 
+	`ASSERT
+ (
+id
+!=
+NULL
+);
+
+459 
+	`ASSERT
+ (
+ba£64
+!=
+NULL
+);
+
+461 
+	`dmsg
+ (
+
+462 
+D_PKCS11_DEBUG
+,
+
+464 
+šdex
+
+
+467 *
+id
+ = 
+NULL
+;
+
+468 *
+ba£64
+ = 
+NULL
+;
+
+471 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_’umC”tifiÿ‹Ids
+ (
+
+472 
+PKCS11H_ENUM_METHOD_CACHE_EXIST
+,
+
+473 
+NULL
+,
+
+474 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+475 
+NULL
+,
+
+476 &
+id_li¡
+
+
+477 )è!ð
+CKR_OK
+
+
+479 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹†i¡ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+480 
+þ—nup
+;
+
+483 
+’Œy
+ = 
+id_li¡
+;
+
+484 
+couÁ
+ = 0;
+
+485 
+’Œy
+ !ð
+NULL
+ && 
+couÁ
+ !ð
+šdex
+) {
+
+486 
+couÁ
+++;
+
+487 
+’Œy
+ =ƒÁry->
+Ãxt
+;
+
+490 ià(
+’Œy
+ =ð
+NULL
+) {
+
+491 
+	`dmsg
+ (
+
+492 
+D_PKCS11_DEBUG
+,
+
+494 
+šdex
+
+
+496 
+þ—nup
+;
+
+500 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_£rŸlizeC”tifiÿ‹Id
+ (
+
+501 
+NULL
+,
+
+502 &
+max
+,
+
+503 
+’Œy
+->
+û¹ifiÿ‹_id
+
+
+504 )è!ð
+CKR_OK
+
+
+506 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ s”Ÿliz�û¹ifiÿ‹ id %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+507 
+þ—nup
+;
+
+510 ià((
+š‹º®_id
+ = (*)
+	`m®loc
+ (
+max
+)è=ð
+NULL
+) {
+
+511 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot‡llocate memory");
+
+512 
+þ—nup
+;
+
+516 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_£rŸlizeC”tifiÿ‹Id
+ (
+
+517 
+š‹º®_id
+,
+
+518 &
+max
+,
+
+519 
+’Œy
+->
+û¹ifiÿ‹_id
+
+
+520 )è!ð
+CKR_OK
+
+
+522 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ s”Ÿliz�û¹ifiÿ‹ id %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+523 
+þ—nup
+;
+
+527 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_ü—‹
+ (
+
+528 
+’Œy
+->
+û¹ifiÿ‹_id
+,
+
+529 
+NULL
+,
+
+530 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+531 
+PKCS11H_PIN_CACHE_INFINITE
+,
+
+532 &
+û¹ifiÿ‹
+
+
+533 )è!ð
+CKR_OK
+
+
+535 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+536 
+þ—nup
+;
+
+540 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_g‘C”tifiÿ‹Blob
+ (
+
+541 
+û¹ifiÿ‹
+,
+
+542 
+NULL
+,
+
+543 &
+û¹ifiÿ‹_blob_size
+
+
+544 )è!ð
+CKR_OK
+
+
+546 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹ blob %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+547 
+þ—nup
+;
+
+550 ià((
+û¹ifiÿ‹_blob
+ = (*)
+	`m®loc
+ (
+û¹ifiÿ‹_blob_size
+)è=ð
+NULL
+) {
+
+551 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot‡llocate memory");
+
+552 
+þ—nup
+;
+
+556 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_g‘C”tifiÿ‹Blob
+ (
+
+557 
+û¹ifiÿ‹
+,
+
+558 
+û¹ifiÿ‹_blob
+,
+
+559 &
+û¹ifiÿ‹_blob_size
+
+
+560 )è!ð
+CKR_OK
+
+
+562 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹ blob %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+563 
+þ—nup
+;
+
+566 ià(
+	`Ý’v²_ba£64_’code
+ (
+û¹ifiÿ‹_blob
+, 
+û¹ifiÿ‹_blob_size
+, &
+š‹º®_ba£64
+) == -1) {
+
+567 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Cannotƒncode certificate");
+
+568 
+þ—nup
+;
+
+571 *
+id
+ = 
+š‹º®_id
+;
+
+572 
+š‹º®_id
+ = 
+NULL
+;
+
+573 *
+ba£64
+ = 
+š‹º®_ba£64
+;
+
+574 
+š‹º®_ba£64
+ = 
+NULL
+;
+
+575 
+sucûss
+ = 
+Œue
+;
+
+577 
+þ—nup
+:
+
+579 ià(
+id_li¡
+ !ð
+NULL
+) {
+
+580 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹IdLi¡
+ (
+id_li¡
+);
+
+581 
+id_li¡
+ = 
+NULL
+;
+
+584 ià(
+š‹º®_id
+ !ð
+NULL
+) {
+
+585 
+	`ä“
+ (
+š‹º®_id
+);
+
+586 
+š‹º®_id
+ = 
+NULL
+;
+
+589 ià(
+š‹º®_ba£64
+ !ð
+NULL
+) {
+
+590 
+	`ä“
+ (
+š‹º®_ba£64
+);
+
+591 
+š‹º®_ba£64
+ = 
+NULL
+;
+
+594 ià(
+û¹ifiÿ‹_blob
+ !ð
+NULL
+) {
+
+595 
+	`ä“
+ (
+û¹ifiÿ‹_blob
+);
+
+596 
+û¹ifiÿ‹_blob
+ = 
+NULL
+;
+
+599 
+	`dmsg
+ (
+
+600 
+D_PKCS11_DEBUG
+,
+
+602 
+sucûss
+ ? 1 : 0,
+
+603 *
+id
+
+
+606  
+sucûss
+;
+
+607 
+	}
+}
+
+610 
+	$Žs_ùx_u£_pkcs11
+ (
+
+611 
+Žs_roÙ_ùx
+ * cÚ¡ 
+s¦_ùx
+,
+
+612 
+boÞ
+ 
+pkcs11_id_mªagem’t
+,
+
+613 cÚ¡ * cÚ¡ 
+pkcs11_id
+
+
+615 
+pkcs11h_û¹ifiÿ‹_id_t
+ 
+û¹ifiÿ‹_id
+ = 
+NULL
+;
+
+616 
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+617 
+CK_RV
+ 
+rv
+ = 
+CKR_OK
+;
+
+619 
+boÞ
+ 
+ok
+ = 
+çl£
+;
+
+621 
+	`ASSERT
+ (
+s¦_ùx
+!=
+NULL
+);
+
+622 
+	`ASSERT
+ (
+pkcs11_id_mªagem’t
+ || 
+pkcs11_id
+!=
+NULL
+);
+
+624 
+	`dmsg
+ (
+
+625 
+D_PKCS11_DEBUG
+,
+
+627 (*)
+s¦_ùx
+,
+
+628 
+pkcs11_id_mªagem’t
+ ? 1 : 0,
+
+629 
+pkcs11_id
+
+
+632 ià(
+pkcs11_id_mªagem’t
+) {
+
+633 
+u£r_·ss
+ 
+id_»¥
+;
+
+635 
+	`CLEAR
+ (
+id_»¥
+);
+
+637 
+id_»¥
+.
+defšed
+ = 
+çl£
+;
+
+638 
+id_»¥
+.
+noÿche
+ = 
+Œue
+;
+
+639 
+	`Ý’v²_¢´štf
+ (
+
+640 
+id_»¥
+.
+u£ºame
+,
+
+641  (
+id_»¥
+.
+u£ºame
+),
+
+646 !
+	`g‘_u£r_·ss
+ (
+
+647 &
+id_»¥
+,
+
+648 
+NULL
+,
+
+650 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_NEED_STR
+|
+GET_USER_PASS_NOFATAL
+
+
+653 
+þ—nup
+;
+
+657 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_de£rŸlizeC”tifiÿ‹Id
+ (
+
+658 &
+û¹ifiÿ‹_id
+,
+
+659 
+id_»¥
+.
+·sswÜd
+
+
+660 )è!ð
+CKR_OK
+
+
+662 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ de£rŸliz�id %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+663 
+þ—nup
+;
+
+668 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_de£rŸlizeC”tifiÿ‹Id
+ (
+
+669 &
+û¹ifiÿ‹_id
+,
+
+670 
+pkcs11_id
+
+
+671 )è!ð
+CKR_OK
+
+
+673 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ de£rŸliz�id %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+674 
+þ—nup
+;
+
+679 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_ü—‹
+ (
+
+680 
+û¹ifiÿ‹_id
+,
+
+681 
+NULL
+,
+
+682 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+683 
+PKCS11H_PIN_CACHE_INFINITE
+,
+
+684 &
+û¹ifiÿ‹
+
+
+685 )è!ð
+CKR_OK
+
+
+687 
+	`msg
+ (
+M_WARN
+, "PKCS#11: CªnÙ g‘ c”tifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+688 
+þ—nup
+;
+
+692 (
+	`pkcs11_š™_Žs_£ssiÚ
+ (
+
+693 
+û¹ifiÿ‹
+,
+
+694 
+s¦_ùx
+
+
+698 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+699 
+þ—nup
+;
+
+703 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+704 
+ok
+ = 
+Œue
+;
+
+706 
+þ—nup
+:
+
+707 ià(
+û¹ifiÿ‹
+ !ð
+NULL
+) {
+
+708 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹
+ (
+û¹ifiÿ‹
+);
+
+709 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+712 ià(
+û¹ifiÿ‹_id
+ !ð
+NULL
+) {
+
+713 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹Id
+ (
+û¹ifiÿ‹_id
+);
+
+714 
+û¹ifiÿ‹_id
+ = 
+NULL
+;
+
+717 
+	`dmsg
+ (
+
+718 
+D_PKCS11_DEBUG
+,
+
+720 
+ok
+ ? 1 : 0,
+
+721 
+rv
+
+
+724  
+ok
+ ? 1 : 0;
+
+725 
+	}
+}
+
+728 
+PKCS11H_BOOL
+
+
+729 
+	$_pkcs11_Ý’v²_show_pkcs11_ids_pš_´om±
+ (
+
+730 * cÚ¡ 
+glob®_d©a
+,
+
+731 * cÚ¡ 
+u£r_d©a
+,
+
+732 cÚ¡ 
+pkcs11h_tok’_id_t
+ 
+tok’
+,
+
+733 cÚ¡ 
+»Œy
+,
+
+734 * cÚ¡ 
+pš
+,
+
+735 cÚ¡ 
+size_t
+ 
+pš_max
+
+
+737 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+738 
+bufãr
+ 
+·ss_´om±
+ = 
+	`®loc_buf_gc
+ (128, &
+gc
+);
+
+740 ()
+glob®_d©a
+;
+
+741 ()
+u£r_d©a
+;
+
+742 ()
+»Œy
+;
+
+744 
+	`ASSERT
+ (
+tok’
+!=
+NULL
+);
+
+746 
+	`buf_´štf
+ (&
+·ss_´om±
+, "PËa£ƒÁ” '%s'�ok’ PIN o¸'ÿnûl': ", 
+tok’
+->
+di¥Ïy
+);
+
+748 ià(!
+	`g‘_cÚsÞe_šput
+ (
+	`BSTR
+ (&
+·ss_´om±
+), 
+çl£
+, 
+pš
+, 
+pš_max
+)) {
+
+749 
+	`msg
+ (
+M_FATAL
+, "Cannot„ead…assword from stdin");
+
+752 
+	`gc_ä“
+ (&
+gc
+);
+
+754 ià(!
+	`¡rcmp
+ (
+pš
+, "cancel")) {
+
+755  
+FALSE
+;
+
+758  
+TRUE
+;
+
+760 
+	}
+}
+
+763 
+	$show_pkcs11_ids
+ (
+
+764 cÚ¡ * cÚ¡ 
+´ovid”
+,
+
+765 
+boÞ
+ 
+û¹_´iv©e
+
+
+767 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+768 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+u£r_û¹ifiÿ‹s
+ = 
+NULL
+;
+
+769 
+pkcs11h_û¹ifiÿ‹_id_li¡_t
+ 
+cu¼’t
+ = 
+NULL
+;
+
+770 
+CK_RV
+ 
+rv
+ = 
+CKR_FUNCTION_FAILED
+;
+
+772 ià((
+rv
+ = 
+	`pkcs11h_š™Ÿlize
+ ()è!ð
+CKR_OK
+) {
+
+773 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ in™Ÿliz�%ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+774 
+þ—nup
+;
+
+777 ià((
+rv
+ = 
+	`pkcs11h_£tLogHook
+ (
+_pkcs11_Ý’v²_log
+, 
+NULL
+)è!ð
+CKR_OK
+) {
+
+778 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ hook %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+779 
+þ—nup
+;
+
+782 
+	`pkcs11h_£tLogLev–
+ (
+	`_pkcs11_msg_Ý’v²2pkcs11
+ (
+	`g‘_debug_Ëv–
+ ()));
+
+784 ià((
+rv
+ = 
+	`pkcs11h_£tPrÙeùedAuth’tiÿtiÚ
+ (
+TRUE
+)è!ð
+CKR_OK
+) {
+
+785 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘…rÙeùed‡uth’tiÿtiÚ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+786 
+þ—nup
+;
+
+789 ià((
+rv
+ = 
+	`pkcs11h_£tPINProm±Hook
+ (
+_pkcs11_Ý’v²_show_pkcs11_ids_pš_´om±
+, 
+NULL
+)è!ð
+CKR_OK
+) {
+
+790 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s‘ PIN hook %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+791 
+þ—nup
+;
+
+795 (
+rv
+ = 
+	`pkcs11h_addProvid”
+ (
+
+796 
+´ovid”
+,
+
+797 
+´ovid”
+,
+
+798 
+TRUE
+,
+
+800 
+FALSE
+,
+
+802 
+û¹_´iv©e
+ ? 
+TRUE
+ : 
+FALSE
+
+
+803 )è!ð
+CKR_OK
+
+
+805 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ‡dd…rovid” '%s' %ld-'%s'", 
+´ovid”
+, 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+806 
+þ—nup
+;
+
+810 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_’umC”tifiÿ‹Ids
+ (
+
+811 
+PKCS11H_ENUM_METHOD_CACHE_EXIST
+,
+
+812 
+NULL
+,
+
+813 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+814 
+NULL
+,
+
+815 &
+u£r_û¹ifiÿ‹s
+
+
+816 )è!ð
+CKR_OK
+
+
+818 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙƒnum”©�û¹ifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+819 
+þ—nup
+;
+
+822 
+	`msg
+ (
+
+823 
+M_INFO
+|
+M_NOPREFIX
+|
+M_NOLF
+,
+
+831 
+cu¼’t
+ = 
+u£r_û¹ifiÿ‹s
+;cu¼’ˆ!ð
+NULL
+; cu¼’ˆðcu¼’t->
+Ãxt
+) {
+
+832 
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+833 *
+dn
+ = 
+NULL
+;
+
+834 
+£rŸl
+[1024] = {0};
+
+835 *
+£r
+ = 
+NULL
+;
+
+836 
+size_t
+ 
+£r_Ën
+ = 0;
+
+839 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_£rŸlizeC”tifiÿ‹Id
+ (
+
+840 
+NULL
+,
+
+841 &
+£r_Ën
+,
+
+842 
+cu¼’t
+->
+û¹ifiÿ‹_id
+
+
+843 )è!ð
+CKR_OK
+
+
+845 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s”Ÿliz�û¹ifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+846 
+þ—nup1
+;
+
+850 
+rv
+ =ð
+CKR_OK
+ &&
+
+851 (
+£r
+ = (*)
+	`m®loc
+ (
+£r_Ën
+)è=ð
+NULL
+
+
+853 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot‡llocate memory");
+
+854 
+þ—nup1
+;
+
+858 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_£rŸlizeC”tifiÿ‹Id
+ (
+
+859 
+£r
+,
+
+860 &
+£r_Ën
+,
+
+861 
+cu¼’t
+->
+û¹ifiÿ‹_id
+
+
+862 )è!ð
+CKR_OK
+
+
+864 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ s”Ÿliz�û¹ifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+865 
+þ—nup1
+;
+
+869 (
+rv
+ = 
+	`pkcs11h_û¹ifiÿ‹_ü—‹
+ (
+
+870 
+cu¼’t
+->
+û¹ifiÿ‹_id
+,
+
+871 
+NULL
+,
+
+872 
+PKCS11H_PROMPT_MASK_ALLOW_ALL
+,
+
+873 
+PKCS11H_PIN_CACHE_INFINITE
+,
+
+874 &
+û¹ifiÿ‹
+
+
+877 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: CªnÙ c»©�û¹ifiÿ‹ %ld-'%s'", 
+rv
+, 
+	`pkcs11h_g‘Mes§ge
+ (rv));
+
+878 
+þ—nup1
+;
+
+882 (
+dn
+ = 
+	`pkcs11_û¹ifiÿ‹_dn
+ (
+
+883 
+û¹ifiÿ‹
+,
+
+884 &
+gc
+
+
+885 )è=ð
+NULL
+
+
+887 
+þ—nup1
+;
+
+891 (
+	`pkcs11_û¹ifiÿ‹_£rŸl
+ (
+
+892 
+û¹ifiÿ‹
+,
+
+893 
+£rŸl
+,
+
+894 (
+£rŸl
+)
+
+897 
+þ—nup1
+;
+
+900 
+	`msg
+ (
+
+901 
+M_INFO
+|
+M_NOPREFIX
+|
+M_NOLF
+,
+
+909 
+dn
+,
+
+910 
+£rŸl
+,
+
+911 
+£r
+
+
+914 
+þ—nup1
+:
+
+916 ià(
+û¹ifiÿ‹
+ !ð
+NULL
+) {
+
+917 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹
+ (
+û¹ifiÿ‹
+);
+
+918 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+921 ià(
+£r
+ !ð
+NULL
+) {
+
+922 
+	`ä“
+ (
+£r
+);
+
+923 
+£r
+ = 
+NULL
+;
+
+927 
+þ—nup
+:
+
+928 ià(
+u£r_û¹ifiÿ‹s
+ !ð
+NULL
+) {
+
+929 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹IdLi¡
+ (
+u£r_û¹ifiÿ‹s
+);
+
+930 
+u£r_û¹ifiÿ‹s
+ = 
+NULL
+;
+
+933 
+	`pkcs11h_‹rmš©e
+ ();
+
+934 
+	`gc_ä“
+ (&
+gc
+);
+
+935 
+	}
+}
+
+938 #ifdeà
+_MSC_VER
+
+
+939 
+	$dummy
+ (è{
+	}
+}
+
+	@pkcs11.h
+
+25 #iâdeà
+OPENVPN_PKCS11_H
+
+
+26 
+	#OPENVPN_PKCS11_H
+
+
+	)
+
+28 #ià
+defšed
+(
+ENABLE_PKCS11
+)
+
+30 
+	~"s¦_commÚ.h
+"
+
+32 
+boÞ
+
+
+33 
+pkcs11_š™Ÿlize
+ (
+
+34 cÚ¡ 
+boÞ
+ 
+fPrÙeùedAuth’tiÿtiÚ
+,
+
+35 cÚ¡ 
+nPINCacheP”iod
+
+
+39 
+pkcs11_‹rmš©e
+ ();
+
+41 
+boÞ
+
+
+42 
+pkcs11_addProvid”
+ (
+
+43 cÚ¡ * cÚ¡ 
+´ovid”
+,
+
+44 cÚ¡ 
+boÞ
+ 
+fPrÙeùedAuth’tiÿtiÚ
+,
+
+45 cÚ¡ 
+´iv©e_mode
+,
+
+46 cÚ¡ 
+boÞ
+ 
+fC”tIsPriv©e
+
+
+50 
+pkcs11_logout
+();
+
+53 
+pkcs11_mªagem’t_id_couÁ
+ ();
+
+55 
+boÞ
+
+
+56 
+pkcs11_mªagem’t_id_g‘
+ (
+
+57 cÚ¡ 
+šdex
+,
+
+58 ** 
+id
+,
+
+59 **
+ba£64
+
+
+63 
+Žs_ùx_u£_pkcs11
+ (
+
+64 
+Žs_roÙ_ùx
+ * cÚ¡ 
+s¦_ùx
+,
+
+65 
+boÞ
+ 
+pkcs11_id_mªagem’t
+,
+
+66 cÚ¡ * cÚ¡ 
+pkcs11_id
+
+
+70 
+show_pkcs11_ids
+ (
+
+71 cÚ¡ * cÚ¡ 
+´ovid”
+,
+
+72 
+boÞ
+ 
+û¹_´iv©e
+
+
+	@pkcs11_backend.h
+
+30 #iâdeà
+PKCS11_BACKEND_H_
+
+
+31 
+	#PKCS11_BACKEND_H_
+
+
+	)
+
+33 
+	~"sysh—d.h
+"
+
+35 #ià
+defšed
+(
+ENABLE_PKCS11
+)
+
+37 
+	~"s¦_commÚ.h
+"
+
+39 
+	~<pkcs11-h–³r-1.0/pkcs11h-û¹ifiÿ‹.h
+>
+
+49 * 
+pkcs11_û¹ifiÿ‹_dn
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+, 
+gc_¬’a
+ *
+gc
+);
+
+60 
+pkcs11_û¹ifiÿ‹_£rŸl
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+, *
+£rŸl
+,
+
+61 
+size_t
+ 
+£rŸl_Ën
+);
+
+71 
+pkcs11_š™_Žs_£ssiÚ
+(
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+,
+
+72 
+Žs_roÙ_ùx
+ * cÚ¡ 
+s¦_ùx
+);
+
+	@pkcs11_openssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_PKCS11
+è&& defšed(
+ENABLE_CRYPTO_OPENSSL
+)
+
+40 
+	~"”¾ev–.h
+"
+
+41 
+	~"pkcs11_back’d.h
+"
+
+42 
+	~"s¦_v”ify.h
+"
+
+43 
+	~<pkcs11-h–³r-1.0/pkcs11h-Ý’s¦.h
+>
+
+46 
+	$pkcs11_š™_Žs_£ssiÚ
+(
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+,
+
+47 
+Žs_roÙ_ùx
+ * cÚ¡ 
+s¦_ùx
+)
+
+49 
+»t
+ = 1;
+
+51 
+X509
+ *
+x509
+ = 
+NULL
+;
+
+52 
+EVP_PKEY
+ *
+evp
+ = 
+NULL
+;
+
+53 
+pkcs11h_Ý’s¦_£ssiÚ_t
+ 
+Ý’s¦_£ssiÚ
+ = 
+NULL
+;
+
+55 ià((
+Ý’s¦_£ssiÚ
+ = 
+	`pkcs11h_Ý’s¦_ü—‹SessiÚ
+ (
+û¹ifiÿ‹
+)è=ð
+NULL
+)
+
+57 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Cannot initialize openssl session");
+
+58 
+þ—nup
+;
+
+64 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+66 ià((
+evp
+ = 
+	`pkcs11h_Ý’s¦_£ssiÚ_g‘EVP
+ (
+Ý’s¦_£ssiÚ
+)è=ð
+NULL
+)
+
+68 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Unable getƒvp object");
+
+69 
+þ—nup
+;
+
+72 ià((
+x509
+ = 
+	`pkcs11h_Ý’s¦_£ssiÚ_g‘X509
+ (
+Ý’s¦_£ssiÚ
+)è=ð
+NULL
+)
+
+74 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Unable get certificate object");
+
+75 
+þ—nup
+;
+
+78 ià(!
+	`SSL_CTX_u£_Priv©eKey
+ (
+s¦_ùx
+->
+ùx
+, 
+evp
+))
+
+80 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Cannot set…rivate key for openssl");
+
+81 
+þ—nup
+;
+
+84 ià(!
+	`SSL_CTX_u£_û¹ifiÿ‹
+ (
+s¦_ùx
+->
+ùx
+, 
+x509
+))
+
+86 
+	`msg
+ (
+M_WARN
+, "PKCS#11: Cannot set certificate for openssl");
+
+87 
+þ—nup
+;
+
+89 
+»t
+ = 0;
+
+91 
+þ—nup
+:
+
+96 ià(
+û¹ifiÿ‹
+ !ð
+NULL
+) {
+
+97 
+	`pkcs11h_û¹ifiÿ‹_ä“C”tifiÿ‹
+ (
+û¹ifiÿ‹
+);
+
+98 
+û¹ifiÿ‹
+ = 
+NULL
+;
+
+105 ià(
+x509
+ !ð
+NULL
+)
+
+107 
+	`X509_ä“
+ (
+x509
+);
+
+108 
+x509
+ = 
+NULL
+;
+
+111 ià(
+evp
+ !ð
+NULL
+)
+
+113 
+	`EVP_PKEY_ä“
+ (
+evp
+);
+
+114 
+evp
+ = 
+NULL
+;
+
+117 ià(
+Ý’s¦_£ssiÚ
+ !ð
+NULL
+)
+
+119 
+	`pkcs11h_Ý’s¦_ä“SessiÚ
+ (
+Ý’s¦_£ssiÚ
+);
+
+120 
+Ý’s¦_£ssiÚ
+ = 
+NULL
+;
+
+122  
+»t
+;
+
+123 
+	}
+}
+
+126 
+	$pkcs11_û¹ifiÿ‹_dn
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+, 
+gc_¬’a
+ *
+gc
+)
+
+128 
+X509
+ *
+x509
+ = 
+NULL
+;
+
+130 *
+dn
+ = 
+NULL
+;
+
+132 ià((
+x509
+ = 
+	`pkcs11h_Ý’s¦_g‘X509
+ (
+û¹ifiÿ‹
+)è=ð
+NULL
+)
+
+134 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot get X509");
+
+135 
+þ—nup
+;
+
+138 
+dn
+ = 
+	`x509_g‘_subjeù
+ (
+x509
+, 
+gc
+);
+
+140 
+þ—nup
+:
+
+141 ià(
+x509
+ !ð
+NULL
+)
+
+143 
+	`X509_ä“
+ (
+x509
+);
+
+144 
+x509
+ = 
+NULL
+;
+
+147  
+dn
+;
+
+148 
+	}
+}
+
+151 
+	$pkcs11_û¹ifiÿ‹_£rŸl
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+, *
+£rŸl
+,
+
+152 
+size_t
+ 
+£rŸl_Ën
+)
+
+154 
+X509
+ *
+x509
+ = 
+NULL
+;
+
+155 
+BIO
+ *
+bio
+ = 
+NULL
+;
+
+156 
+»t
+ = 1;
+
+157 
+n
+;
+
+159 ià((
+x509
+ = 
+	`pkcs11h_Ý’s¦_g‘X509
+ (
+û¹ifiÿ‹
+)è=ð
+NULL
+)
+
+161 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot get X509");
+
+162 
+þ—nup
+;
+
+165 ià((
+bio
+ = 
+	`BIO_Ãw
+ (
+	`BIO_s_mem
+ ())è=ð
+NULL
+)
+
+167 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot create BIO");
+
+168 
+þ—nup
+;
+
+171 
+	`i2a_ASN1_INTEGER
+(
+bio
+, 
+	`X509_g‘_£rŸlNumb”
+ (
+x509
+));
+
+172 
+n
+ = 
+	`BIO_»ad
+ (
+bio
+, 
+£rŸl
+, 
+£rŸl_Ën
+-1);
+
+174 ià(
+n
+<0) {
+
+175 
+£rŸl
+[0] = '\x0';
+
+178 
+£rŸl
+[
+n
+] = 0;
+
+181 
+»t
+ = 0;
+
+183 
+þ—nup
+:
+
+185 ià(
+x509
+ !ð
+NULL
+)
+
+187 
+	`X509_ä“
+ (
+x509
+);
+
+188 
+x509
+ = 
+NULL
+;
+
+190  
+»t
+;
+
+191 
+	}
+}
+
+	@pkcs11_polarssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_PKCS11
+è&& defšed(
+ENABLE_CRYPTO_POLARSSL
+)
+
+40 
+	~"”¾ev–.h
+"
+
+41 
+	~"pkcs11_back’d.h
+"
+
+42 
+	~<pÞ¬s¦/pkcs11.h
+>
+
+45 
+	$pkcs11_š™_Žs_£ssiÚ
+(
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹ifiÿ‹
+,
+
+46 
+Žs_roÙ_ùx
+ * cÚ¡ 
+s¦_ùx
+)
+
+48 
+»t
+ = 1;
+
+50 
+	`ASSERT
+ (
+NULL
+ !ð
+s¦_ùx
+);
+
+52 ià(
+	`pkcs11_x509_û¹_š™
+(
+s¦_ùx
+->
+üt_chaš
+, 
+û¹ifiÿ‹
+)) {
+
+53 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot„etrieve PolarSSL certificate object");
+
+54 
+þ—nup
+;
+
+57 
+s¦_ùx
+->
+´iv_key_pkcs11
+ = 
+	`m®loc
+((
+pkcs11_cÚ‹xt
+));
+
+59 ià(
+s¦_ùx
+->
+´iv_key_pkcs11
+ =ð
+NULL
+) {
+
+60 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot‡llocate PolarSSL…rivate key object");
+
+61 
+þ—nup
+;
+
+64 ià(
+	`pkcs11_´iv_key_š™
+(
+s¦_ùx
+->
+´iv_key_pkcs11
+, 
+û¹ifiÿ‹
+)) {
+
+65 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot initialize PolarSSL…rivate key object");
+
+66 
+þ—nup
+;
+
+69 
+»t
+ = 0;
+
+71 
+þ—nup
+:
+
+72  
+»t
+;
+
+73 
+	}
+}
+
+76 
+	$pkcs11_û¹ifiÿ‹_dn
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+78 *
+»t
+ = 
+NULL
+;
+
+79 
+dn
+[1024] = {0};
+
+81 
+x509_û¹
+ 
+pÞ¬_û¹
+ = {0};
+
+83 ià(
+	`pkcs11_x509_û¹_š™
+(&
+pÞ¬_û¹
+, 
+û¹
+)) {
+
+84 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot„etrieve PolarSSL certificate object");
+
+85 
+þ—nup
+;
+
+88 ià(-1 =ð
+	`x509·r£_dn_g‘s
+ (
+dn
+, (dn), &
+pÞ¬_û¹
+.
+subjeù
+)) {
+
+89 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: PolarSSL cannot…arse subject");
+
+90 
+þ—nup
+;
+
+93 
+»t
+ = 
+	`¡ršg_®loc
+(
+dn
+, 
+gc
+);
+
+95 
+þ—nup
+:
+
+96 
+	`x509_ä“
+(&
+pÞ¬_û¹
+);
+
+98  
+»t
+;
+
+99 
+	}
+}
+
+102 
+	$pkcs11_û¹ifiÿ‹_£rŸl
+ (
+pkcs11h_û¹ifiÿ‹_t
+ 
+û¹
+, *
+£rŸl
+,
+
+103 
+size_t
+ 
+£rŸl_Ën
+)
+
+105 
+»t
+ = 1;
+
+107 
+x509_û¹
+ 
+pÞ¬_û¹
+ = {0};
+
+109 ià(
+	`pkcs11_x509_û¹_š™
+(&
+pÞ¬_û¹
+, 
+û¹
+)) {
+
+110 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: Cannot„etrieve PolarSSL certificate object");
+
+111 
+þ—nup
+;
+
+114 ià(-1 =ð
+	`x509·r£_£rŸl_g‘s
+ (
+£rŸl
+, 
+£rŸl_Ën
+, &
+pÞ¬_û¹
+.serial)) {
+
+115 
+	`msg
+ (
+M_FATAL
+, "PKCS#11: PolarSSL cannot…arse serial");
+
+116 
+þ—nup
+;
+
+119 
+»t
+ = 0;
+
+121 
+þ—nup
+:
+
+122 
+	`x509_ä“
+(&
+pÞ¬_û¹
+);
+
+124  
+»t
+;
+
+125 
+	}
+}
+
+	@platform.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"bufãr.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+35 
+	~"wš32.h
+"
+
+37 
+	~"memdbg.h
+"
+
+39 
+	~"¶©fÜm.h
+"
+
+44 
+	$¶©fÜm_chroÙ
+ (cÚ¡ *
+·th
+)
+
+46 ià(
+·th
+)
+
+48 #ifdeà
+HAVE_CHROOT
+
+
+49 cÚ¡ *
+tÝ
+ = "/";
+
+50 ià(
+	`chroÙ
+ (
+·th
+))
+
+51 
+	`msg
+ (
+M_ERR
+, "chroÙ�Ø'%s' fažed", 
+·th
+);
+
+52 ià(
+	`¶©fÜm_chdœ
+ (
+tÝ
+))
+
+53 
+	`msg
+ (
+M_ERR
+, "cd�Ø'%s' fažed", 
+tÝ
+);
+
+54 
+	`msg
+ (
+M_INFO
+, "chroÙ�Ø'%s'‡nd cd�Ø'%s' sucûeded", 
+·th
+, 
+tÝ
+);
+
+56 
+	`msg
+ (
+M_FATAL
+, "SÜry buˆI cª'ˆchroÙ�Ø'%s' beÿu£�hi Ý”©šg sy¡em dÛ¢'ˆ­³¬�ØsuµÜˆth�chroÙ(èsy¡em c®l", 
+·th
+);
+
+59 
+	}
+}
+
+63 
+boÞ
+
+
+64 
+	$¶©fÜm_u£r_g‘
+ (cÚ¡ *
+u£ºame
+, 
+¶©fÜm_¡©e_u£r
+ *
+¡©e
+)
+
+66 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+67 
+	`CLEAR
+ (*
+¡©e
+);
+
+68 ià(
+u£ºame
+)
+
+70 #ià
+	`defšed
+(
+HAVE_GETPWNAM
+è&& defšed(
+HAVE_SETUID
+)
+
+71 
+¡©e
+->
+pw
+ = 
+	`g‘pwÇm
+ (
+u£ºame
+);
+
+72 ià(!
+¡©e
+->
+pw
+)
+
+73 
+	`msg
+ (
+M_ERR
+, "çžed�Øfšd UID fÜ u£¸%s", 
+u£ºame
+);
+
+74 
+¡©e
+->
+u£ºame
+ = username;
+
+75 
+»t
+ = 
+Œue
+;
+
+77 
+	`msg
+ (
+M_FATAL
+, "ÿÂÙ g‘ UID fÜ u£¸% --…ÏtfÜm†ack g‘pwÇme(èÜ s‘uid(èsy¡em c®ls", 
+u£ºame
+);
+
+80  
+»t
+;
+
+81 
+	}
+}
+
+84 
+	$¶©fÜm_u£r_£t
+ (cÚ¡ 
+¶©fÜm_¡©e_u£r
+ *
+¡©e
+)
+
+86 #ià
+	`defšed
+(
+HAVE_GETPWNAM
+è&& defšed(
+HAVE_SETUID
+)
+
+87 ià(
+¡©e
+->
+u£ºame
+ && s�‹->
+pw
+)
+
+89 ià(
+	`£tuid
+ (
+¡©e
+->
+pw
+->
+pw_uid
+))
+
+90 
+	`msg
+ (
+M_ERR
+, "£tuid('%s'èçžed", 
+¡©e
+->
+u£ºame
+);
+
+91 
+	`msg
+ (
+M_INFO
+, "UID s‘�Ø%s", 
+¡©e
+->
+u£ºame
+);
+
+94 
+	}
+}
+
+98 
+boÞ
+
+
+99 
+	$¶©fÜm_group_g‘
+ (cÚ¡ *
+grou²ame
+, 
+¶©fÜm_¡©e_group
+ *
+¡©e
+)
+
+101 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+102 
+	`CLEAR
+ (*
+¡©e
+);
+
+103 ià(
+grou²ame
+)
+
+105 #ià
+	`defšed
+(
+HAVE_GETGRNAM
+è&& defšed(
+HAVE_SETGID
+)
+
+106 
+¡©e
+->
+gr
+ = 
+	`g‘gºam
+ (
+grou²ame
+);
+
+107 ià(!
+¡©e
+->
+gr
+)
+
+108 
+	`msg
+ (
+M_ERR
+, "çžed�Øfšd GID fÜ grou°%s", 
+grou²ame
+);
+
+109 
+¡©e
+->
+grou²ame
+ = groupname;
+
+110 
+»t
+ = 
+Œue
+;
+
+112 
+	`msg
+ (
+M_FATAL
+, "ÿÂÙ g‘ GID fÜ grou°% --…ÏtfÜm†ack g‘gºam(èÜ s‘gid(èsy¡em c®ls", 
+grou²ame
+);
+
+115  
+»t
+;
+
+116 
+	}
+}
+
+119 
+	$¶©fÜm_group_£t
+ (cÚ¡ 
+¶©fÜm_¡©e_group
+ *
+¡©e
+)
+
+121 #ià
+	`defšed
+(
+HAVE_GETGRNAM
+è&& defšed(
+HAVE_SETGID
+)
+
+122 ià(
+¡©e
+->
+grou²ame
+ && s�‹->
+gr
+)
+
+124 ià(
+	`£tgid
+ (
+¡©e
+->
+gr
+->
+gr_gid
+))
+
+125 
+	`msg
+ (
+M_ERR
+, "£tgid('%s'èçžed", 
+¡©e
+->
+grou²ame
+);
+
+126 
+	`msg
+ (
+M_INFO
+, "GID s‘�Ø%s", 
+¡©e
+->
+grou²ame
+);
+
+127 #ifdeà
+HAVE_SETGROUPS
+
+
+129 
+gid_t
+ 
+gr_li¡
+[1];
+
+130 
+gr_li¡
+[0] = 
+¡©e
+->
+gr
+->
+gr_gid
+;
+
+131 ià(
+	`£tgroups
+ (1, 
+gr_li¡
+))
+
+132 
+	`msg
+ (
+M_ERR
+, "£tgroups('%s'èçžed", 
+¡©e
+->
+grou²ame
+);
+
+137 
+	}
+}
+
+141 
+	$¶©fÜm_niû
+ (
+niûv®
+)
+
+143 ià(
+niûv®
+)
+
+145 #ifdeà
+HAVE_NICE
+
+
+146 
+”ºo
+ = 0;
+
+147 ià(
+	`niû
+ (
+niûv®
+è< 0 && 
+”ºo
+ != 0)
+
+148 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "WARNING:‚iû %d fažed: %s", 
+niûv®
+, 
+	`¡»¼Ü
+(
+”ºo
+));
+
+150 
+	`msg
+ (
+M_INFO
+, "niû %d sucûeded", 
+niûv®
+);
+
+152 
+	`msg
+ (
+M_WARN
+, "WARNING:‚iû %d fažed (funùiÚ‚Ù im¶em’‹d)", 
+niûv®
+);
+
+155 
+	}
+}
+
+159 
+	$¶©fÜm_g‘pid
+ ()
+
+161 #ifdeà
+WIN32
+
+
+162  (è
+	`G‘Cu¼’tProûssId
+ ();
+
+164 #ifdeà
+HAVE_GETPID
+
+
+165  (è
+	`g‘pid
+ ();
+
+170 
+	}
+}
+
+174 
+	$¶©fÜm_mlock®l
+(
+boÞ
+ 
+´št_msg
+)
+
+176 #ifdeà
+HAVE_MLOCKALL
+
+
+177 ià(
+	`mlock®l
+ (
+MCL_CURRENT
+ | 
+MCL_FUTURE
+))
+
+178 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "WARNING: mlockall call failed");
+
+179 ià(
+´št_msg
+)
+
+180 
+	`msg
+ (
+M_INFO
+, "mlockall call succeeded");
+
+182 
+	`msg
+ (
+M_WARN
+, "WARNING: mlockall call failed (function‚ot implemented)");
+
+184 
+	}
+}
+
+190 
+	$¶©fÜm_chdœ
+ (cÚ¡ * 
+dœ
+)
+
+192 #ifdeà
+HAVE_CHDIR
+
+
+193 #ifdeà
+WIN32
+
+
+194 
+»s
+;
+
+195 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+196 
+»s
+ = 
+	`_wchdœ
+ (
+	`wide_¡ršg
+ (
+dœ
+, &
+gc
+));
+
+197 
+	`gc_ä“
+ (&
+gc
+);
+
+198  
+»s
+;
+
+200  
+	`chdœ
+ (
+dœ
+);
+
+205 
+	}
+}
+
+210 
+boÞ
+
+
+211 
+	$¶©fÜm_sy¡em_ok
+ (
+¡©
+)
+
+213 #ifdeà
+WIN32
+
+
+214  
+¡©
+ == 0;
+
+216  
+¡©
+ !ð-1 && 
+	`WIFEXITED
+ (¡©è&& 
+	`WEXITSTATUS
+ (stat) == 0;
+
+218 
+	}
+}
+
+221 
+	$¶©fÜm_acûss
+ (cÚ¡ *
+·th
+, 
+mode
+)
+
+223 #ifdeà
+WIN32
+
+
+224 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+225 
+»t
+ = 
+	`_wacûss
+ (
+	`wide_¡ršg
+ (
+·th
+, &
+gc
+), 
+mode
+ & ~
+X_OK
+);
+
+226 
+	`gc_ä“
+ (&
+gc
+);
+
+227  
+»t
+;
+
+229  
+	`acûss
+ (
+·th
+, 
+mode
+);
+
+231 
+	}
+}
+
+237 
+	$¶©fÜm_¦“p_mžli£cÚds
+ (
+n
+)
+
+239 #ifdeà
+WIN32
+
+
+240 
+	`SË•
+ (
+n
+);
+
+242 
+timev®
+ 
+tv
+;
+
+243 
+tv
+.
+tv_£c
+ = 
+n
+ / 1000;
+
+244 
+tv
+.
+tv_u£c
+ = (
+n
+ % 1000) * 1000;
+
+245 
+	`£Ëù
+ (0, 
+NULL
+, NULL, NULL, &
+tv
+);
+
+247 
+	}
+}
+
+253 
+	$¶©fÜm_¦“p_uÁž_sigÇl
+ ()
+
+255 #ifdeà
+WIN32
+
+
+256 
+	`ASSERT
+ (0);
+
+258 
+	`£Ëù
+ (0, 
+NULL
+, NULL, NULL, NULL);
+
+260 
+	}
+}
+
+263 
+boÞ
+
+
+264 
+	$¶©fÜm_uÆšk
+ (cÚ¡ *
+fž’ame
+)
+
+266 #ià
+	`defšed
+(
+WIN32
+)
+
+267 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+268 
+BOOL
+ 
+»t
+ = 
+	`D–‘eFžeW
+ (
+	`wide_¡ršg
+ (
+fž’ame
+, &
+gc
+));
+
+269 
+	`gc_ä“
+ (&
+gc
+);
+
+270  (
+»t
+ != 0);
+
+271 #–ià
+	`defšed
+(
+HAVE_UNLINK
+)
+
+272  (
+	`uÆšk
+ (
+fž’ame
+) == 0);
+
+274  
+çl£
+;
+
+276 
+	}
+}
+
+278 
+FILE
+ *
+
+279 
+	$¶©fÜm_fÝ’
+ (cÚ¡ *
+·th
+, cÚ¡ *
+mode
+)
+
+281 #ifdeà
+WIN32
+
+
+282 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+283 
+FILE
+ *
+f
+ = 
+	`_wfÝ’
+ (
+	`wide_¡ršg
+ (
+·th
+, &
+gc
+), wide_¡ršg (
+mode
+, &gc));
+
+284 
+	`gc_ä“
+ (&
+gc
+);
+
+285  
+f
+;
+
+287  
+	`fÝ’
+(
+·th
+, 
+mode
+);
+
+289 
+	}
+}
+
+292 
+	$¶©fÜm_Ý’
+ (cÚ¡ *
+·th
+, 
+æags
+, 
+mode
+)
+
+294 #ifdeà
+WIN32
+
+
+295 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+296 
+fd
+ = 
+	`_wÝ’
+ (
+	`wide_¡ršg
+ (
+·th
+, &
+gc
+), 
+æags
+, 
+mode
+);
+
+297 
+	`gc_ä“
+ (&
+gc
+);
+
+298  
+fd
+;
+
+300  
+	`Ý’
+(
+·th
+, 
+æags
+, 
+mode
+);
+
+302 
+	}
+}
+
+305 
+	$¶©fÜm_¡©
+ (cÚ¡ *
+·th
+, 
+¶©fÜm_¡©_t
+ *
+buf
+)
+
+307 #ifdeà
+WIN32
+
+
+308 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+309 
+»s
+ = 
+	`_w¡©
+ (
+	`wide_¡ršg
+ (
+·th
+, &
+gc
+), 
+buf
+);
+
+310 
+	`gc_ä“
+ (&
+gc
+);
+
+311  
+»s
+;
+
+313  
+	`¡©
+(
+·th
+, 
+buf
+);
+
+315 
+	}
+}
+
+	@platform.h
+
+25 #iâdeà
+PLATFORM_H
+
+
+26 
+	#PLATFORM_H
+
+
+	)
+
+28 #ifdeà
+HAVE_SYS_TYPES_H
+
+
+29 
+	~<sys/ty³s.h
+>
+
+32 #ifdeà
+HAVE_SYS_STAT_H
+
+
+33 
+	~<sys/¡©.h
+>
+
+36 #ifdeà
+HAVE_UNISTD_H
+
+
+37 
+	~<uni¡d.h
+>
+
+40 #ifdeà
+HAVE_PWD_H
+
+
+41 
+	~<pwd.h
+>
+
+44 #ifdeà
+HAVE_GRP_H
+
+
+45 
+	~<g½.h
+>
+
+48 #ifdeà
+HAVE_STDIO_H
+
+
+49 
+	~<¡dio.h
+>
+
+52 
+	~"basic.h
+"
+
+56 
+	s¶©fÜm_¡©e_u£r
+ {
+
+57 #ià
+defšed
+(
+HAVE_GETPWNAM
+è&& defšed(
+HAVE_SETUID
+)
+
+58 cÚ¡ *
+	mu£ºame
+;
+
+59 
+·sswd
+ *
+	mpw
+;
+
+61 
+	mdummy
+;
+
+67 
+	s¶©fÜm_¡©e_group
+ {
+
+68 #ià
+defšed
+(
+HAVE_GETGRNAM
+è&& defšed(
+HAVE_SETGID
+)
+
+69 cÚ¡ *
+	mgrou²ame
+;
+
+70 
+group
+ *
+	mgr
+;
+
+72 
+	mdummy
+;
+
+76 
+boÞ
+ 
+¶©fÜm_u£r_g‘
+ (cÚ¡ *
+u£ºame
+, 
+¶©fÜm_¡©e_u£r
+ *
+¡©e
+);
+
+77 
+¶©fÜm_u£r_£t
+ (cÚ¡ 
+¶©fÜm_¡©e_u£r
+ *
+¡©e
+);
+
+79 
+boÞ
+ 
+¶©fÜm_group_g‘
+ (cÚ¡ *
+grou²ame
+, 
+¶©fÜm_¡©e_group
+ *
+¡©e
+);
+
+80 
+¶©fÜm_group_£t
+ (cÚ¡ 
+¶©fÜm_¡©e_group
+ *
+¡©e
+);
+
+86 
+šlše
+ 
+
+87 
+	$¶©fÜm_¡©e_u£r_uid
+ (cÚ¡ 
+¶©fÜm_¡©e_u£r
+ *
+s
+)
+
+89 #ià
+	`defšed
+(
+HAVE_GETPWNAM
+è&& defšed(
+HAVE_SETUID
+)
+
+90 ià(
+s
+->
+pw
+)
+
+91  
+s
+->
+pw
+->
+pw_uid
+;
+
+94 
+	}
+}
+
+96 
+šlše
+ 
+
+97 
+	$¶©fÜm_¡©e_group_gid
+ (cÚ¡ 
+¶©fÜm_¡©e_group
+ *
+s
+)
+
+99 #ià
+	`defšed
+(
+HAVE_GETGRNAM
+è&& defšed(
+HAVE_SETGID
+)
+
+100 ià(
+s
+->
+gr
+)
+
+101  
+s
+->
+gr
+->
+gr_gid
+;
+
+104 
+	}
+}
+
+106 
+¶©fÜm_chroÙ
+ (cÚ¡ *
+·th
+);
+
+108 
+¶©fÜm_niû
+ (
+niûv®
+);
+
+110 
+¶©fÜm_g‘pid
+ ();
+
+112 
+¶©fÜm_mlock®l
+ (
+boÞ
+ 
+´št_msg
+);
+
+114 
+¶©fÜm_chdœ
+ (cÚ¡ * 
+dœ
+);
+
+117 
+boÞ
+ 
+¶©fÜm_sy¡em_ok
+ (
+¡©
+);
+
+119 
+¶©fÜm_acûss
+ (cÚ¡ *
+·th
+, 
+mode
+);
+
+121 
+¶©fÜm_¦“p_mžli£cÚds
+ (
+n
+);
+
+123 
+¶©fÜm_¦“p_uÁž_sigÇl
+ ();
+
+126 
+boÞ
+ 
+¶©fÜm_uÆšk
+ (cÚ¡ *
+fž’ame
+);
+
+128 
+¶©fÜm_pu‹nv
+ (*
+¡ršg
+);
+
+130 
+FILE
+ *
+¶©fÜm_fÝ’
+ (cÚ¡ *
+·th
+, cÚ¡ *
+mode
+);
+
+131 
+¶©fÜm_Ý’
+ (cÚ¡ *
+·th
+, 
+æags
+, 
+mode
+);
+
+133 #ifdeà
+WIN32
+
+
+134 
+_¡©
+ 
+	t¶©fÜm_¡©_t
+;
+
+136 
+¡©
+ 
+	t¶©fÜm_¡©_t
+;
+
+138 
+¶©fÜm_¡©
+ (cÚ¡ *
+·th
+, 
+¶©fÜm_¡©_t
+ *
+buf
+);
+
+	@plugin.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ifdeà
+ENABLE_PLUGIN
+
+
+35 #ifdeà
+HAVE_DLFCN_H
+
+
+36 
+	~<dlfú.h
+>
+
+39 
+	~"bufãr.h
+"
+
+40 
+	~"”rÜ.h
+"
+
+41 
+	~"misc.h
+"
+
+42 
+	~"¶ugš.h
+"
+
+43 
+	~"s¦_back’d.h
+"
+
+44 
+	~"wš32.h
+"
+
+45 
+	~"memdbg.h
+"
+
+47 
+	#PLUGIN_SYMBOL_REQUIRED
+ (1<<0)
+
+	)
+
+50 
+¶ugš_commÚ
+ *
+	g¡©ic_¶ugš_commÚ
+ = 
+NULL
+;
+
+53 
+	$¶ugš_show_¡ršg_¬¿y
+ (
+msgËv–
+, cÚ¡ *
+Çme
+, cÚ¡ *
+¬¿y
+[])
+
+55 
+i
+;
+
+56 
+i
+ = 0; 
+¬¿y
+[i]; ++i)
+
+58 ià(
+	`’v_§ã_to_´št
+ (
+¬¿y
+[
+i
+]))
+
+59 
+	`msg
+ (
+msgËv–
+, "%s[%d] = '%s'", 
+Çme
+, 
+i
+, 
+¬¿y
+[i]);
+
+61 
+	}
+}
+
+64 
+	$¶ugš_show_¬gs_’v
+ (
+msgËv–
+, cÚ¡ *
+¬gv
+[], cÚ¡ *
+’vp
+[])
+
+66 ià(
+	`check_debug_Ëv–
+ (
+msgËv–
+))
+
+68 
+	`¶ugš_show_¡ršg_¬¿y
+ (
+msgËv–
+, "ARGV", 
+¬gv
+);
+
+69 
+	`¶ugš_show_¡ršg_¬¿y
+ (
+msgËv–
+, "ENVP", 
+’vp
+);
+
+71 
+	}
+}
+
+74 
+	$¶ugš_ty³_Çme
+ (cÚ¡ 
+ty³
+)
+
+76 
+ty³
+)
+
+78 
+OPENVPN_PLUGIN_UP
+:
+
+80 
+OPENVPN_PLUGIN_DOWN
+:
+
+82 
+OPENVPN_PLUGIN_ROUTE_UP
+:
+
+84 
+OPENVPN_PLUGIN_IPCHANGE
+:
+
+86 
+OPENVPN_PLUGIN_TLS_VERIFY
+:
+
+88 
+OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
+:
+
+90 
+OPENVPN_PLUGIN_CLIENT_CONNECT
+:
+
+92 
+OPENVPN_PLUGIN_CLIENT_CONNECT_V2
+:
+
+94 
+OPENVPN_PLUGIN_CLIENT_DISCONNECT
+:
+
+96 
+OPENVPN_PLUGIN_LEARN_ADDRESS
+:
+
+98 
+OPENVPN_PLUGIN_TLS_FINAL
+:
+
+100 
+OPENVPN_PLUGIN_ENABLE_PF
+:
+
+102 
+OPENVPN_PLUGIN_ROUTE_PREDOWN
+:
+
+107 
+	}
+}
+
+110 
+	$¶ugš_mask_¡ršg
+ (cÚ¡ 
+ty³_mask
+, 
+gc_¬’a
+ *
+gc
+)
+
+112 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+113 
+boÞ
+ 
+fœ¡
+ = 
+Œue
+;
+
+114 
+i
+;
+
+116 
+i
+ = 0; i < 
+OPENVPN_PLUGIN_N
+; ++i)
+
+118 ià(
+	`OPENVPN_PLUGIN_MASK
+ (
+i
+è& 
+ty³_mask
+)
+
+120 ià(!
+fœ¡
+)
+
+121 
+	`buf_´štf
+ (&
+out
+, "|");
+
+122 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`¶ugš_ty³_Çme
+ (
+i
+));
+
+123 
+fœ¡
+ = 
+çl£
+;
+
+126  
+	`BSTR
+ (&
+out
+);
+
+127 
+	}
+}
+
+129 
+šlše
+ 
+
+130 
+	$¶ugš_suµÜ‹d_ty³s
+ ()
+
+132  ((1<<
+OPENVPN_PLUGIN_N
+)-1);
+
+133 
+	}
+}
+
+135 
+¶ugš_ÝtiÚ_li¡
+ *
+
+136 
+	$¶ugš_ÝtiÚ_li¡_Ãw
+ (
+gc_¬’a
+ *
+gc
+)
+
+138 
+¶ugš_ÝtiÚ_li¡
+ *
+»t
+;
+
+139 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+»t
+, 
+¶ugš_ÝtiÚ_li¡
+, 
+gc
+);
+
+140  
+»t
+;
+
+141 
+	}
+}
+
+143 
+boÞ
+
+
+144 
+	$¶ugš_ÝtiÚ_li¡_add
+ (
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+, **
+p
+, 
+gc_¬’a
+ *
+gc
+)
+
+146 ià(
+li¡
+->
+n
+ < 
+MAX_PLUGINS
+)
+
+148 
+¶ugš_ÝtiÚ
+ *
+o
+ = &
+li¡
+->
+¶ugšs
+[li¡->
+n
+++];
+
+149 
+o
+->
+¬gv
+ = 
+	`make_ex‹nded_¬g_¬¿y
+ (
+p
+, 
+gc
+);
+
+150 ià(
+o
+->
+¬gv
+[0])
+
+151 
+o
+->
+so_·thÇme
+ = o->
+¬gv
+[0];
+
+152  
+Œue
+;
+
+155  
+çl£
+;
+
+156 
+	}
+}
+
+158 #iâdeà
+ENABLE_SMALL
+
+
+160 
+	$¶ugš_ÝtiÚ_li¡_´št
+ (cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+, 
+msgËv–
+)
+
+162 
+i
+;
+
+163 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+165 
+i
+ = 0; i < 
+li¡
+->
+n
+; ++i)
+
+167 cÚ¡ 
+¶ugš_ÝtiÚ
+ *
+o
+ = &
+li¡
+->
+¶ugšs
+[
+i
+];
+
+168 
+	`msg
+ (
+msgËv–
+, "…lugš[%d] % '%s'", 
+i
+, 
+o
+->
+so_·thÇme
+, 
+	`´št_¬gv
+ (o->
+¬gv
+, &
+gc
+, 
+PA_BRACKET
+));
+
+171 
+	`gc_ä“
+ (&
+gc
+);
+
+172 
+	}
+}
+
+175 #iâdeà
+WIN32
+
+
+178 
+	$libdl_»sÞve_symbÞ
+ (*
+hªdË
+, **
+de¡
+, cÚ¡ *
+symbÞ
+, cÚ¡ *
+¶ugš_Çme
+, cÚ¡ 
+æags
+)
+
+180 *
+de¡
+ = 
+	`dlsym
+ (
+hªdË
+, 
+symbÞ
+);
+
+181 ià((
+æags
+ & 
+PLUGIN_SYMBOL_REQUIRED
+è&& !*
+de¡
+)
+
+182 
+	`msg
+ (
+M_FATAL
+, "PLUGIN: could‚Ù fšd„equœed symbÞ '%s' iÀ¶ugš sh¬ed objeù %s: %s", 
+symbÞ
+, 
+¶ugš_Çme
+, 
+	`dË¼Ü
+());
+
+183 
+	}
+}
+
+188 
+	$dÎ_»sÞve_symbÞ
+ (
+HMODULE
+ 
+moduË
+, **
+de¡
+, cÚ¡ *
+symbÞ
+, cÚ¡ *
+¶ugš_Çme
+, cÚ¡ 
+æags
+)
+
+190 *
+de¡
+ = 
+	`G‘ProcAdd»ss
+ (
+moduË
+, 
+symbÞ
+);
+
+191 ià((
+æags
+ & 
+PLUGIN_SYMBOL_REQUIRED
+è&& !*
+de¡
+)
+
+192 
+	`msg
+ (
+M_FATAL
+, "PLUGIN: could‚Ù fšd„equœed symbÞ '%s' iÀ¶ugš DLL %s", 
+symbÞ
+, 
+¶ugš_Çme
+);
+
+193 
+	}
+}
+
+198 
+	$¶ugš_š™_™em
+ (
+¶ugš
+ *
+p
+, cÚ¡ 
+¶ugš_ÝtiÚ
+ *
+o
+)
+
+200 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+201 
+boÞ
+ 
+»l
+ = 
+çl£
+;
+
+203 
+p
+->
+so_·thÇme
+ = 
+o
+->so_pathname;
+
+204 
+p
+->
+¶ugš_ty³_mask
+ = 
+	`¶ugš_suµÜ‹d_ty³s
+ ();
+
+206 #iâdeà
+WIN32
+
+
+208 
+p
+->
+hªdË
+ = 
+NULL
+;
+
+209 #ià
+	`defšed
+(
+PLUGIN_LIBDIR
+)
+
+210 ià(!
+	`absÞu‹_·thÇme
+ (
+p
+->
+so_·thÇme
+))
+
+212 
+fuÎ
+[
+PATH_MAX
+];
+
+214 
+	`Ý’v²_¢´štf
+ (
+fuÎ
+, (fuÎ), "%s/%s", 
+PLUGIN_LIBDIR
+, 
+p
+->
+so_·thÇme
+);
+
+215 
+p
+->
+hªdË
+ = 
+	`dlÝ’
+ (
+fuÎ
+, 
+RTLD_NOW
+);
+
+216 #ià
+	`defšed
+(
+ENABLE_PLUGIN_SEARCH
+)
+
+217 ià(!
+p
+->
+hªdË
+)
+
+219 
+»l
+ = 
+Œue
+;
+
+220 
+p
+->
+hªdË
+ = 
+	`dlÝ’
+ (p->
+so_·thÇme
+, 
+RTLD_NOW
+);
+
+227 
+»l
+ = !
+	`absÞu‹_·thÇme
+ (
+p
+->
+so_·thÇme
+);
+
+228 
+p
+->
+hªdË
+ = 
+	`dlÝ’
+ (p->
+so_·thÇme
+, 
+RTLD_NOW
+);
+
+230 ià(!
+p
+->
+hªdË
+)
+
+231 
+	`msg
+ (
+M_ERR
+, "PLUGIN_INIT: could‚Ù†ßd…lugš sh¬ed objeù %s: %s", 
+p
+->
+so_·thÇme
+, 
+	`dË¼Ü
+());
+
+233 
+	#PLUGIN_SYM
+(
+v¬
+, 
+Çme
+, 
+æags
+è
+	`libdl_»sÞve_symbÞ
+ (
+p
+->
+hªdË
+, (*)&p->v¬,‚ame,…->
+so_·thÇme
+, fÏgs)
+
+	)
+
+237 
+»l
+ = !
+	`absÞu‹_·thÇme
+ (
+p
+->
+so_·thÇme
+);
+
+238 
+p
+->
+moduË
+ = 
+	`LßdLib¿ryW
+ (
+	`wide_¡ršg
+ (p->
+so_·thÇme
+, &
+gc
+));
+
+239 ià(!
+p
+->
+moduË
+)
+
+240 
+	`msg
+ (
+M_ERR
+, "PLUGIN_INIT: could‚Ù†ßd…lugš DLL: %s", 
+p
+->
+so_·thÇme
+);
+
+242 
+	#PLUGIN_SYM
+(
+v¬
+, 
+Çme
+, 
+æags
+è
+	`dÎ_»sÞve_symbÞ
+ (
+p
+->
+moduË
+, (*)&p->v¬,‚ame,…->
+so_·thÇme
+, fÏgs)
+
+	)
+
+246 
+	`PLUGIN_SYM
+ (
+Ý’1
+, "openvpn_plugin_open_v1", 0);
+
+247 
+	`PLUGIN_SYM
+ (
+Ý’2
+, "openvpn_plugin_open_v2", 0);
+
+248 
+	`PLUGIN_SYM
+ (
+Ý’3
+, "openvpn_plugin_open_v3", 0);
+
+249 
+	`PLUGIN_SYM
+ (
+func1
+, "openvpn_plugin_func_v1", 0);
+
+250 
+	`PLUGIN_SYM
+ (
+func2
+, "openvpn_plugin_func_v2", 0);
+
+251 
+	`PLUGIN_SYM
+ (
+func3
+, "openvpn_plugin_func_v3", 0);
+
+252 
+	`PLUGIN_SYM
+ (
+þo£
+, "Ý’v²_¶ugš_þo£_v1", 
+PLUGIN_SYMBOL_REQUIRED
+);
+
+253 
+	`PLUGIN_SYM
+ (
+abÜt
+, "openvpn_plugin_abort_v1", 0);
+
+254 
+	`PLUGIN_SYM
+ (
+þ›Á_cÚ¡ruùÜ
+, "openvpn_plugin_client_constructor_v1", 0);
+
+255 
+	`PLUGIN_SYM
+ (
+þ›Á_de¡ruùÜ
+, "openvpn_plugin_client_destructor_v1", 0);
+
+256 
+	`PLUGIN_SYM
+ (
+mš_v”siÚ_»quœed
+, "openvpn_plugin_min_version_required_v1", 0);
+
+257 
+	`PLUGIN_SYM
+ (
+š™Ÿliz©iÚ_pošt
+, "openvpn_plugin_select_initialization_point_v1", 0);
+
+259 ià(!
+p
+->
+Ý’1
+ && !p->
+Ý’2
+ && !p->
+Ý’3
+)
+
+260 
+	`msg
+ (
+M_FATAL
+, "PLUGIN: symbÞ o³nv²_¶ugš_Ý’_vX i undefšed iÀ¶ugš: %s", 
+p
+->
+so_·thÇme
+);
+
+262 ià(!
+p
+->
+func1
+ && !p->
+func2
+ && !p->
+func3
+)
+
+263 
+	`msg
+ (
+M_FATAL
+, "PLUGIN: symbÞ o³nv²_¶ugš_func_vX i undefšed iÀ¶ugš: %s", 
+p
+->
+so_·thÇme
+);
+
+268 ià(
+p
+->
+mš_v”siÚ_»quœed
+)
+
+270 cÚ¡ 
+¶ugš_Ãeds_v”siÚ
+ = (*
+p
+->
+mš_v”siÚ_»quœed
+)();
+
+271 ià(
+¶ugš_Ãeds_v”siÚ
+ > 
+OPENVPN_PLUGIN_VERSION
+)
+
+272 
+	`msg
+ (
+M_FATAL
+, "PLUGIN_INIT:…lugin‚eeds interface version %d, but�his version of OpenVPN only supports version %d: %s",
+
+273 
+¶ugš_Ãeds_v”siÚ
+,
+
+274 
+OPENVPN_PLUGIN_VERSION
+,
+
+275 
+p
+->
+so_·thÇme
+);
+
+278 ià(
+p
+->
+š™Ÿliz©iÚ_pošt
+)
+
+279 
+p
+->
+»que¡ed_š™Ÿliz©iÚ_pošt
+ = (*p->
+š™Ÿliz©iÚ_pošt
+)();
+
+281 
+p
+->
+»que¡ed_š™Ÿliz©iÚ_pošt
+ = 
+OPENVPN_PLUGIN_INIT_PRE_DAEMON
+;
+
+283 ià(
+»l
+)
+
+284 
+	`msg
+ (
+M_WARN
+, "WARNING:…lugš '%s' s³cif›d by‡„–©iv�·thÇm�-- usšg‡ÀabsÞu‹…©hÇm�would b�mÜ�£cu»", 
+p
+->
+so_·thÇme
+);
+
+286 
+p
+->
+š™Ÿlized
+ = 
+Œue
+;
+
+288 
+	`gc_ä“
+ (&
+gc
+);
+
+289 
+	}
+}
+
+292 
+	$¶ugš_vlog
+ (
+Ý’v²_¶ugš_log_æags_t
+ 
+æags
+, cÚ¡ *
+Çme
+, cÚ¡ *
+fÜm©
+, 
+va_li¡
+ 
+¬gli¡
+)
+
+294 
+msg_æags
+;
+
+296 ià(!
+fÜm©
+)
+
+299 ià(!
+Çme
+ ||‚ame[0] == '\0')
+
+301 
+	`msg
+ (
+D_PLUGIN_DEBUG
+, "PLUGIN: suppressed†og message from…lugin with unknown‚ame");
+
+305 ià(
+æags
+ & 
+PLOG_ERR
+)
+
+306 
+msg_æags
+ = 
+M_INFO
+ | 
+M_NONFATAL
+;
+
+307 ià(
+æags
+ & 
+PLOG_WARN
+)
+
+308 
+msg_æags
+ = 
+M_INFO
+ | 
+M_WARN
+;
+
+309 ià(
+æags
+ & 
+PLOG_NOTE
+)
+
+310 
+msg_æags
+ = 
+M_INFO
+;
+
+311 ià(
+æags
+ & 
+PLOG_DEBUG
+)
+
+312 
+msg_æags
+ = 
+D_PLUGIN_DEBUG
+;
+
+314 ià(
+æags
+ & 
+PLOG_ERRNO
+)
+
+315 
+msg_æags
+ |ð
+M_ERRNO
+;
+
+316 ià(
+æags
+ & 
+PLOG_NOMUTE
+)
+
+317 
+msg_æags
+ |ð
+M_NOMUTE
+;
+
+319 ià(
+	`MSG_TEST
+ (
+msg_æags
+))
+
+321 
+gc_¬’a
+ 
+gc
+;
+
+322 * 
+msg_fmt
+;
+
+325 
+msg_æags
+ |ð
+M_NOIPREFIX
+;
+
+327 
+	`gc_š™
+ (&
+gc
+);
+
+328 
+msg_fmt
+ = 
+	`gc_m®loc
+ (
+ERR_BUF_SIZE
+, 
+çl£
+, &
+gc
+);
+
+329 
+	`Ý’v²_¢´štf
+ (
+msg_fmt
+, 
+ERR_BUF_SIZE
+, "PLUGIN %s: %s", 
+Çme
+, 
+fÜm©
+);
+
+330 
+	`x_msg_va
+ (
+msg_æags
+, 
+msg_fmt
+, 
+¬gli¡
+);
+
+332 
+	`gc_ä“
+ (&
+gc
+);
+
+334 
+	}
+}
+
+337 
+	$¶ugš_log
+ (
+Ý’v²_¶ugš_log_æags_t
+ 
+æags
+, cÚ¡ *
+Çme
+, cÚ¡ *
+fÜm©
+, ...)
+
+339 
+va_li¡
+ 
+¬gli¡
+;
+
+340 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+341 
+	`¶ugš_vlog
+ (
+æags
+, 
+Çme
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+342 
+	`va_’d
+ (
+¬gli¡
+);
+
+343 
+	}
+}
+
+345 
+Ý’v²_¶ugš_ÿÎbacks
+ 
+	gÿÎbacks
+ = {
+
+346 
+¶ugš_log
+,
+
+347 
+¶ugš_vlog
+
+
+351 
+	$¶ugš_Ý’_™em
+ (
+¶ugš
+ *
+p
+,
+
+352 cÚ¡ 
+¶ugš_ÝtiÚ
+ *
+o
+,
+
+353 
+Ý’v²_¶ugš_¡ršg_li¡
+ **
+»Ži¡
+,
+
+354 cÚ¡ **
+’vp
+,
+
+355 cÚ¡ 
+š™_pošt
+)
+
+357 
+	`ASSERT
+ (
+p
+->
+š™Ÿlized
+);
+
+360 ià(
+»Ži¡
+)
+
+361 *
+»Ži¡
+ = 
+NULL
+;
+
+363 ià(!
+p
+->
+¶ugš_hªdË
+ && 
+š™_pošt
+ =ðp->
+»que¡ed_š™Ÿliz©iÚ_pošt
+)
+
+365 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+367 
+	`dmsg
+ (
+D_PLUGIN_DEBUG
+, "PLUGIN_INIT: PRE");
+
+368 
+	`¶ugš_show_¬gs_’v
+ (
+D_PLUGIN_DEBUG
+, 
+o
+->
+¬gv
+, 
+’vp
+);
+
+373 ià(
+p
+->
+Ý’3
+) {
+
+374 
+Ý’v²_¶ugš_¬gs_Ý’_š
+ 
+¬gs
+ = { 
+p
+->
+¶ugš_ty³_mask
+,
+
+375 (cÚ¡ ** cÚ¡è
+o
+->
+¬gv
+,
+
+376 (cÚ¡ ** cÚ¡è
+’vp
+,
+
+377 &
+ÿÎbacks
+,
+
+378 
+SSLAPI
+ };
+
+379 
+Ý’v²_¶ugš_¬gs_Ý’_»tuº
+ 
+»�rgs
+;
+
+381 
+	`CLEAR
+(
+»�rgs
+);
+
+382 
+»�rgs
+.
+»tuº_li¡
+ = 
+»Ži¡
+;
+
+383 ià((*
+p
+->
+Ý’3
+)(
+OPENVPN_PLUGINv3_STRUCTVER
+, &
+¬gs
+, &
+»�rgs
+è=ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+) {
+
+384 
+p
+->
+¶ugš_ty³_mask
+ = 
+»�rgs
+.
+ty³_mask
+;
+
+385 
+p
+->
+¶ugš_hªdË
+ = 
+»�rgs
+.
+hªdË
+;
+
+387 
+p
+->
+¶ugš_hªdË
+ = 
+NULL
+;
+
+389 } ià(
+p
+->
+Ý’2
+)
+
+390 
+p
+->
+¶ugš_hªdË
+ = (*p->
+Ý’2
+)(&p->
+¶ugš_ty³_mask
+, 
+o
+->
+¬gv
+, 
+’vp
+, 
+»Ži¡
+);
+
+391 ià(
+p
+->
+Ý’1
+)
+
+392 
+p
+->
+¶ugš_hªdË
+ = (*p->
+Ý’1
+)(&p->
+¶ugš_ty³_mask
+, 
+o
+->
+¬gv
+, 
+’vp
+);
+
+394 
+	`ASSERT
+ (0);
+
+396 
+	`msg
+ (
+D_PLUGIN
+, "PLUGIN_INIT: POST %s '%s' intercepted=%s %s",
+
+397 
+p
+->
+so_·thÇme
+,
+
+398 
+	`´št_¬gv
+ (
+o
+->
+¬gv
+, &
+gc
+, 
+PA_BRACKET
+),
+
+399 
+	`¶ugš_mask_¡ršg
+ (
+p
+->
+¶ugš_ty³_mask
+, &
+gc
+),
+
+400 (
+»Ži¡
+ && *retlist) ? "[RETLIST]" : "");
+
+402 ià((
+p
+->
+¶ugš_ty³_mask
+ | 
+	`¶ugš_suµÜ‹d_ty³s
+()) !=…lugin_supported_types())
+
+403 
+	`msg
+ (
+M_FATAL
+, "PLUGIN_INIT:…lugin %sƒxpressed interest in unsupported…lugin�ypes: [want=0x%08x, have=0x%08x]",
+
+404 
+p
+->
+so_·thÇme
+,
+
+405 
+p
+->
+¶ugš_ty³_mask
+,
+
+406 
+	`¶ugš_suµÜ‹d_ty³s
+());
+
+408 ià(
+p
+->
+¶ugš_hªdË
+ =ð
+NULL
+)
+
+409 
+	`msg
+ (
+M_FATAL
+, "PLUGIN_INIT:…lugin initialization function failed: %s",
+
+410 
+p
+->
+so_·thÇme
+);
+
+412 
+	`gc_ä“
+ (&
+gc
+);
+
+414 
+	}
+}
+
+417 
+¶ugš_ÿÎ_™em
+ (cÚ¡ 
+¶ugš
+ *
+p
+,
+
+418 *
+³r_þ›Á_cÚ‹xt
+,
+
+419 cÚ¡ 
+ty³
+,
+
+420 cÚ¡ 
+¬gv
+ *
+av
+,
+
+421 
+Ý’v²_¶ugš_¡ršg_li¡
+ **
+»Ži¡
+,
+
+422 cÚ¡ **
+’vp
+
+
+423 #ifdeà
+ENABLE_SSL
+
+
+424 , 
+û¹d•th
+,
+
+425 
+Ý’v²_x509_û¹_t
+ *
+cu¼’t_û¹
+
+
+429 
+	g¡©us
+ = 
+OPENVPN_PLUGIN_FUNC_SUCCESS
+;
+
+432 ià(
+	g»Ži¡
+)
+
+433 *
+	g»Ži¡
+ = 
+NULL
+;
+
+435 ià(
+	gp
+->
+	g¶ugš_hªdË
+ && (p->
+	g¶ugš_ty³_mask
+ & 
+OPENVPN_PLUGIN_MASK
+ (
+ty³
+)))
+
+437 
+gc_¬’a
+ 
+	ggc
+ = 
+gc_Ãw
+ ();
+
+438 
+¬gv
+ 
+	ga
+ = 
+¬gv_š£¹_h—d
+ (
+av
+, 
+p
+->
+so_·thÇme
+);
+
+440 
+dmsg
+ (
+D_PLUGIN_DEBUG
+, "PLUGIN_CALL: PRE�y³=%s", 
+¶ugš_ty³_Çme
+ (
+ty³
+));
+
+441 
+¶ugš_show_¬gs_’v
+ (
+D_PLUGIN_DEBUG
+, (cÚ¡ **)
+a
+.
+¬gv
+, 
+’vp
+);
+
+446 ià(
+	gp
+->
+	gfunc3
+) {
+
+447 
+Ý’v²_¶ugš_¬gs_func_š
+ 
+	g¬gs
+ = { 
+ty³
+,
+
+448 (cÚ¡ ** cÚ¡è
+a
+.
+¬gv
+,
+
+449 (cÚ¡ ** cÚ¡è
+’vp
+,
+
+450 
+p
+->
+¶ugš_hªdË
+,
+
+451 
+³r_þ›Á_cÚ‹xt
+,
+
+452 #ifdeà
+ENABLE_SSL
+
+
+453 (
+cu¼’t_û¹
+ ? 
+û¹d•th
+ : -1),
+
+454 
+cu¼’t_û¹
+
+
+457 
+NULL
+
+
+461 
+Ý’v²_¶ugš_¬gs_func_»tuº
+ 
+	g»�rgs
+;
+
+463 
+CLEAR
+(
+»�rgs
+);
+
+464 
+	g»�rgs
+.
+	g»tuº_li¡
+ = 
+»Ži¡
+;
+
+465 
+	g¡©us
+ = (*
+p
+->
+func3
+)(
+OPENVPN_PLUGINv3_STRUCTVER
+, &
+	g¬gs
+, &
+	g»�rgs
+);
+
+466 } ià(
+	gp
+->
+	gfunc2
+)
+
+467 
+	g¡©us
+ = (*
+p
+->
+func2
+)Õ->
+¶ugš_hªdË
+, 
+	gty³
+, (cÚ¡ **)
+	ga
+.
+	g¬gv
+, 
+	g’vp
+, 
+	g³r_þ›Á_cÚ‹xt
+, 
+	g»Ži¡
+);
+
+468 ià(
+	gp
+->
+	gfunc1
+)
+
+469 
+	g¡©us
+ = (*
+p
+->
+func1
+)Õ->
+¶ugš_hªdË
+, 
+	gty³
+, (cÚ¡ **)
+	ga
+.
+	g¬gv
+, 
+	g’vp
+);
+
+471 
+ASSERT
+ (0);
+
+473 
+msg
+ (
+D_PLUGIN
+, "PLUGIN_CALL: POST %s/%s status=%d",
+
+474 
+p
+->
+so_·thÇme
+,
+
+475 
+¶ugš_ty³_Çme
+ (
+ty³
+),
+
+476 
+¡©us
+);
+
+478 ià(
+	g¡©us
+ =ð
+OPENVPN_PLUGIN_FUNC_ERROR
+)
+
+479 
+msg
+ (
+M_WARN
+, "PLUGIN_CALL:…lugin function %s failed with status %d: %s",
+
+480 
+¶ugš_ty³_Çme
+ (
+ty³
+),
+
+481 
+¡©us
+,
+
+482 
+p
+->
+so_·thÇme
+);
+
+484 
+¬gv_»£t
+ (&
+a
+);
+
+485 
+gc_ä“
+ (&
+gc
+);
+
+487  
+	g¡©us
+;
+
+491 
+	$¶ugš_þo£_™em
+ (
+¶ugš
+ *
+p
+)
+
+493 ià(
+p
+->
+š™Ÿlized
+)
+
+495 
+	`msg
+ (
+D_PLUGIN
+, "PLUGIN_CLOSE: %s", 
+p
+->
+so_·thÇme
+);
+
+500 ià(
+p
+->
+¶ugš_hªdË
+)
+
+501 (*
+p
+->
+þo£
+)Õ->
+¶ugš_hªdË
+);
+
+503 #iâdeà
+WIN32
+
+
+504 ià(
+	`dlþo£
+ (
+p
+->
+hªdË
+))
+
+505 
+	`msg
+ (
+M_WARN
+, "PLUGIN_CLOSE: dlþo£(èçžed oÀ¶ugš: %s", 
+p
+->
+so_·thÇme
+);
+
+506 #–ià
+	`defšed
+(
+WIN32
+)
+
+507 ià(!
+	`F»eLib¿ry
+ (
+p
+->
+moduË
+))
+
+508 
+	`msg
+ (
+M_WARN
+, "PLUGIN_CLOSE: F»eLib¿ry(èçžed oÀ¶ugš: %s", 
+p
+->
+so_·thÇme
+);
+
+511 
+p
+->
+š™Ÿlized
+ = 
+çl£
+;
+
+513 
+	}
+}
+
+516 
+	$¶ugš_abÜt_™em
+ (cÚ¡ 
+¶ugš
+ *
+p
+)
+
+521 ià(
+p
+->
+abÜt
+)
+
+522 (*
+p
+->
+abÜt
+)Õ->
+¶ugš_hªdË
+);
+
+523 
+	}
+}
+
+526 
+	$¶ugš_³r_þ›Á_š™
+ (cÚ¡ 
+¶ugš_commÚ
+ *
+pc
+,
+
+527 
+¶ugš_³r_þ›Á
+ *
+þi
+,
+
+528 cÚ¡ 
+š™_pošt
+)
+
+530 cÚ¡ 
+n
+ = 
+pc
+->n;
+
+531 
+i
+;
+
+533 
+i
+ = 0; i < 
+n
+; ++i)
+
+535 cÚ¡ 
+¶ugš
+ *
+p
+ = &
+pc
+->
+¶ugšs
+[
+i
+];
+
+536 ià(
+p
+->
+¶ugš_hªdË
+
+
+537 && (
+š™_pošt
+ < 0 || in™_pošˆ=ð
+p
+->
+»que¡ed_š™Ÿliz©iÚ_pošt
+)
+
+538 && 
+p
+->
+þ›Á_cÚ¡ruùÜ
+)
+
+539 
+þi
+->
+³r_þ›Á_cÚ‹xt
+[
+i
+] = (*
+p
+->
+þ›Á_cÚ¡ruùÜ
+)Õ->
+¶ugš_hªdË
+);
+
+541 
+	}
+}
+
+544 
+	$¶ugš_³r_þ›Á_de¡roy
+ (cÚ¡ 
+¶ugš_commÚ
+ *
+pc
+, 
+¶ugš_³r_þ›Á
+ *
+þi
+)
+
+546 cÚ¡ 
+n
+ = 
+pc
+->n;
+
+547 
+i
+;
+
+549 
+i
+ = 0; i < 
+n
+; ++i)
+
+551 cÚ¡ 
+¶ugš
+ *
+p
+ = &
+pc
+->
+¶ugšs
+[
+i
+];
+
+552 *
+cc
+ = 
+þi
+->
+³r_þ›Á_cÚ‹xt
+[
+i
+];
+
+554 ià(
+p
+->
+þ›Á_de¡ruùÜ
+ && 
+cc
+)
+
+555 (*
+p
+->
+þ›Á_de¡ruùÜ
+)Õ->
+¶ugš_hªdË
+, 
+cc
+);
+
+557 
+	`CLEAR
+ (*
+þi
+);
+
+558 
+	}
+}
+
+560 
+¶ugš_li¡
+ *
+
+561 
+	$¶ugš_li¡_šh”™
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¤c
+)
+
+563 
+¶ugš_li¡
+ *
+¶
+;
+
+564 
+	`ALLOC_OBJ_CLEAR
+ (
+¶
+, 
+¶ugš_li¡
+);
+
+565 
+¶
+->
+commÚ
+ = 
+¤c
+->common;
+
+566 
+	`ASSERT
+ (
+¶
+->
+commÚ
+);
+
+567 
+	`¶ugš_³r_þ›Á_š™
+ (
+¶
+->
+commÚ
+, &¶->
+³r_þ›Á
+, -1);
+
+568  
+¶
+;
+
+569 
+	}
+}
+
+571 
+¶ugš_commÚ
+ *
+
+572 
+	$¶ugš_commÚ_š™
+ (cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+)
+
+574 
+i
+;
+
+575 
+¶ugš_commÚ
+ *
+pc
+;
+
+577 
+	`ALLOC_OBJ_CLEAR
+ (
+pc
+, 
+¶ugš_commÚ
+);
+
+579 
+i
+ = 0; i < 
+li¡
+->
+n
+; ++i)
+
+581 
+	`¶ugš_š™_™em
+ (&
+pc
+->
+¶ugšs
+[
+i
+],
+
+582 &
+li¡
+->
+¶ugšs
+[
+i
+]);
+
+583 
+pc
+->
+n
+ = 
+i
+ + 1;
+
+586 
+¡©ic_¶ugš_commÚ
+ = 
+pc
+;
+
+587  
+pc
+;
+
+588 
+	}
+}
+
+591 
+	$¶ugš_commÚ_Ý’
+ (
+¶ugš_commÚ
+ *
+pc
+,
+
+592 cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+,
+
+593 
+¶ugš_»tuº
+ *
+´
+,
+
+594 cÚ¡ 
+’v_£t
+ *
+es
+,
+
+595 cÚ¡ 
+š™_pošt
+)
+
+597 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+598 
+i
+;
+
+599 cÚ¡ **
+’vp
+;
+
+601 
+’vp
+ = 
+	`make_’v_¬¿y
+ (
+es
+, 
+çl£
+, &
+gc
+);
+
+603 ià(
+´
+)
+
+604 
+	`¶ugš_»tuº_š™
+ (
+´
+);
+
+606 
+i
+ = 0; i < 
+pc
+->
+n
+; ++i)
+
+608 
+	`¶ugš_Ý’_™em
+ (&
+pc
+->
+¶ugšs
+[
+i
+],
+
+609 &
+li¡
+->
+¶ugšs
+[
+i
+],
+
+610 
+´
+ ? &´->
+li¡
+[
+i
+] : 
+NULL
+,
+
+611 
+’vp
+,
+
+612 
+š™_pošt
+);
+
+615 ià(
+´
+)
+
+616 
+´
+->
+n
+ = 
+i
+;
+
+618 
+	`gc_ä“
+ (&
+gc
+);
+
+619 
+	}
+}
+
+622 
+	$¶ugš_commÚ_þo£
+ (
+¶ugš_commÚ
+ *
+pc
+)
+
+624 
+¡©ic_¶ugš_commÚ
+ = 
+NULL
+;
+
+625 ià(
+pc
+)
+
+627 
+i
+;
+
+629 
+i
+ = 0; i < 
+pc
+->
+n
+; ++i)
+
+630 
+	`¶ugš_þo£_™em
+ (&
+pc
+->
+¶ugšs
+[
+i
+]);
+
+631 
+	`ä“
+ (
+pc
+);
+
+633 
+	}
+}
+
+635 
+¶ugš_li¡
+ *
+
+636 
+	$¶ugš_li¡_š™
+ (cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+)
+
+638 
+¶ugš_li¡
+ *
+¶
+;
+
+639 
+	`ALLOC_OBJ_CLEAR
+ (
+¶
+, 
+¶ugš_li¡
+);
+
+640 
+¶
+->
+commÚ
+ = 
+	`¶ugš_commÚ_š™
+ (
+li¡
+);
+
+641 
+¶
+->
+commÚ_owÃd
+ = 
+Œue
+;
+
+642  
+¶
+;
+
+643 
+	}
+}
+
+646 
+	$¶ugš_li¡_Ý’
+ (
+¶ugš_li¡
+ *
+¶
+,
+
+647 cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+,
+
+648 
+¶ugš_»tuº
+ *
+´
+,
+
+649 cÚ¡ 
+’v_£t
+ *
+es
+,
+
+650 cÚ¡ 
+š™_pošt
+)
+
+652 
+	`¶ugš_commÚ_Ý’
+ (
+¶
+->
+commÚ
+, 
+li¡
+, 
+´
+, 
+es
+, 
+š™_pošt
+);
+
+653 
+	`¶ugš_³r_þ›Á_š™
+ (
+¶
+->
+commÚ
+, &¶->
+³r_þ›Á
+, 
+š™_pošt
+);
+
+654 
+	}
+}
+
+657 
+¶ugš_ÿÎ_s¦
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+,
+
+658 cÚ¡ 
+ty³
+,
+
+659 cÚ¡ 
+¬gv
+ *
+av
+,
+
+660 
+¶ugš_»tuº
+ *
+´
+,
+
+661 
+’v_£t
+ *
+es
+
+
+662 #ifdeà
+ENABLE_SSL
+
+
+663 , 
+û¹d•th
+,
+
+664 
+Ý’v²_x509_û¹_t
+ *
+cu¼’t_û¹
+
+
+668 ià(
+	g´
+)
+
+669 
+¶ugš_»tuº_š™
+ (
+´
+);
+
+671 ià(
+¶ugš_defšed
+ (
+¶
+, 
+ty³
+))
+
+673 
+gc_¬’a
+ 
+	ggc
+ = 
+gc_Ãw
+ ();
+
+674 
+	gi
+;
+
+675 cÚ¡ **
+	g’vp
+;
+
+676 cÚ¡ 
+	gn
+ = 
+¶ugš_n
+ (
+¶
+);
+
+677 
+boÞ
+ 
+	gsucûss
+ = 
+çl£
+;
+
+678 
+boÞ
+ 
+	g”rÜ
+ = 
+çl£
+;
+
+679 
+boÞ
+ 
+	gdeã¼ed
+ = 
+çl£
+;
+
+681 
+£‹nv_d–
+ (
+es
+, "script_type");
+
+682 
+	g’vp
+ = 
+make_’v_¬¿y
+ (
+es
+, 
+çl£
+, &
+gc
+);
+
+684 
+	gi
+ = 0; i < 
+	gn
+; ++i)
+
+686 cÚ¡ 
+	g¡©us
+ = 
+¶ugš_ÿÎ_™em
+ (&
+¶
+->
+commÚ
+->
+¶ugšs
+[
+i
+],
+
+687 
+¶
+->
+³r_þ›Á
+.
+³r_þ›Á_cÚ‹xt
+[
+i
+],
+
+688 
+ty³
+,
+
+689 
+av
+,
+
+690 
+´
+ ? &´->
+li¡
+[
+i
+] : 
+NULL
+,
+
+691 
+’vp
+
+
+692 #ifdeà
+ENABLE_SSL
+
+
+693 ,
+û¹d•th
+,
+
+694 
+cu¼’t_û¹
+
+
+697 
+	g¡©us
+)
+
+699 
+	gOPENVPN_PLUGIN_FUNC_SUCCESS
+:
+
+700 
+sucûss
+ = 
+Œue
+;
+
+702 
+	gOPENVPN_PLUGIN_FUNC_DEFERRED
+:
+
+703 
+deã¼ed
+ = 
+Œue
+;
+
+706 
+”rÜ
+ = 
+Œue
+;
+
+711 ià(
+	g´
+)
+
+712 
+	g´
+->
+	gn
+ = 
+i
+;
+
+714 
+gc_ä“
+ (&
+gc
+);
+
+716 ià(
+	gty³
+ =ð
+OPENVPN_PLUGIN_ENABLE_PF
+ && 
+sucûss
+)
+
+717  
+OPENVPN_PLUGIN_FUNC_SUCCESS
+;
+
+718 ià(
+	g”rÜ
+)
+
+719  
+	gOPENVPN_PLUGIN_FUNC_ERROR
+;
+
+720 ià(
+	gdeã¼ed
+)
+
+721  
+	gOPENVPN_PLUGIN_FUNC_DEFERRED
+;
+
+724  
+	gOPENVPN_PLUGIN_FUNC_SUCCESS
+;
+
+728 
+	$¶ugš_li¡_þo£
+ (
+¶ugš_li¡
+ *
+¶
+)
+
+730 ià(
+¶
+)
+
+732 ià(
+¶
+->
+commÚ
+)
+
+734 
+	`¶ugš_³r_þ›Á_de¡roy
+ (
+¶
+->
+commÚ
+, &¶->
+³r_þ›Á
+);
+
+736 ià(
+¶
+->
+commÚ_owÃd
+)
+
+737 
+	`¶ugš_commÚ_þo£
+ (
+¶
+->
+commÚ
+);
+
+740 
+	`ä“
+ (
+¶
+);
+
+742 
+	}
+}
+
+745 
+	$¶ugš_abÜt
+ ()
+
+747 
+¶ugš_commÚ
+ *
+pc
+ = 
+¡©ic_¶ugš_commÚ
+;
+
+748 
+¡©ic_¶ugš_commÚ
+ = 
+NULL
+;
+
+749 ià(
+pc
+)
+
+751 
+i
+;
+
+753 
+i
+ = 0; i < 
+pc
+->
+n
+; ++i)
+
+754 
+	`¶ugš_abÜt_™em
+ (&
+pc
+->
+¶ugšs
+[
+i
+]);
+
+756 
+	}
+}
+
+758 
+boÞ
+
+
+759 
+	$¶ugš_defšed
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+, cÚ¡ 
+ty³
+)
+
+761 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+763 ià(
+¶
+)
+
+765 cÚ¡ 
+¶ugš_commÚ
+ *
+pc
+ = 
+¶
+->
+commÚ
+;
+
+767 ià(
+pc
+)
+
+769 
+i
+;
+
+770 cÚ¡ 
+mask
+ = 
+	`OPENVPN_PLUGIN_MASK
+ (
+ty³
+);
+
+771 
+i
+ = 0; i < 
+pc
+->
+n
+; ++i)
+
+773 ià(
+pc
+->
+¶ugšs
+[
+i
+].
+¶ugš_ty³_mask
+ & 
+mask
+)
+
+775 
+»t
+ = 
+Œue
+;
+
+781  
+»t
+;
+
+782 
+	}
+}
+
+789 
+	$Ý’v²_¶ugš_¡ršg_li¡_™em_ä“
+ (
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+l
+)
+
+791 ià(
+l
+)
+
+793 
+	`ä“
+ (
+l
+->
+Çme
+);
+
+794 
+	`¡ršg_þ—r
+ (
+l
+->
+v®ue
+);
+
+795 
+	`ä“
+ (
+l
+->
+v®ue
+);
+
+796 
+	`ä“
+ (
+l
+);
+
+798 
+	}
+}
+
+801 
+	$Ý’v²_¶ugš_¡ršg_li¡_ä“
+ (
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+l
+)
+
+803 
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+Ãxt
+;
+
+804 
+l
+)
+
+806 
+Ãxt
+ = 
+l
+->next;
+
+807 
+	`Ý’v²_¶ugš_¡ršg_li¡_™em_ä“
+ (
+l
+);
+
+808 
+l
+ = 
+Ãxt
+;
+
+810 
+	}
+}
+
+812 
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+
+813 
+	$Ý’v²_¶ugš_¡ršg_li¡_fšd
+ (
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+l
+, cÚ¡ *
+Çme
+)
+
+815 
+l
+)
+
+817 ià(!
+	`¡rcmp
+ (
+l
+->
+Çme
+,‚ame))
+
+818  
+l
+;
+
+819 
+l
+ =†->
+Ãxt
+;
+
+821  
+NULL
+;
+
+822 
+	}
+}
+
+825 
+	$¶ugš_»tuº_g‘_cÞumn
+ (cÚ¡ 
+¶ugš_»tuº
+ *
+¤c
+,
+
+826 
+¶ugš_»tuº
+ *
+de¡
+,
+
+827 cÚ¡ *
+cÞÇme
+)
+
+829 
+i
+;
+
+831 
+de¡
+->
+n
+ = 0;
+
+832 
+i
+ = 0; i < 
+¤c
+->
+n
+; ++i)
+
+833 
+de¡
+->
+li¡
+[
+i
+] = 
+	`Ý’v²_¶ugš_¡ršg_li¡_fšd
+ (
+¤c
+->li¡[i], 
+cÞÇme
+);
+
+834 
+de¡
+->
+n
+ = 
+i
+;
+
+835 
+	}
+}
+
+838 
+	$¶ugš_»tuº_ä“
+ (
+¶ugš_»tuº
+ *
+´
+)
+
+840 
+i
+;
+
+841 
+i
+ = 0; i < 
+´
+->
+n
+; ++i)
+
+842 
+	`Ý’v²_¶ugš_¡ršg_li¡_ä“
+ (
+´
+->
+li¡
+[
+i
+]);
+
+843 
+´
+->
+n
+ = 0;
+
+844 
+	}
+}
+
+846 #ifdeà
+ENABLE_DEBUG
+
+
+848 
+	$¶ugš_»tuº_´št
+ (cÚ¡ 
+msgËv–
+, cÚ¡ *
+´efix
+, cÚ¡ 
+¶ugš_»tuº
+ *
+´
+)
+
+850 
+i
+;
+
+851 
+	`msg
+ (
+msgËv–
+, "PLUGIN_RETURN_PRINT %s", 
+´efix
+);
+
+852 
+i
+ = 0; i < 
+´
+->
+n
+; ++i)
+
+854 
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+l
+ = 
+´
+->
+li¡
+[
+i
+];
+
+855 
+couÁ
+ = 0;
+
+857 
+	`msg
+ (
+msgËv–
+, "PLUGIN #%d (%s)", 
+i
+, 
+´efix
+);
+
+858 
+l
+)
+
+860 
+	`msg
+ (
+msgËv–
+, "[%d] '%s' -> '%s'\n",
+
+861 ++
+couÁ
+,
+
+862 
+l
+->
+Çme
+,
+
+863 
+l
+->
+v®ue
+);
+
+864 
+l
+ =†->
+Ãxt
+;
+
+867 
+	}
+}
+
+871 
+	$dummy
+(è{
+	}
+}
+
+	@plugin.h
+
+29 #iâdeà
+OPENVPN_PLUGIN_H
+
+
+30 
+	#OPENVPN_PLUGIN_H
+
+
+	)
+
+32 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+33 
+	~"s¦_v”ify_Ý’s¦.h
+"
+
+35 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+36 
+	~"s¦_v”ify_pÞ¬s¦.h
+"
+
+38 
+	~"Ý’v²-¶ugš.h
+"
+
+40 #ifdeà
+ENABLE_PLUGIN
+
+
+42 
+	~"misc.h
+"
+
+44 
+	#MAX_PLUGINS
+ 16
+
+	)
+
+46 
+	s¶ugš_ÝtiÚ
+ {
+
+47 cÚ¡ *
+	mso_·thÇme
+;
+
+48 cÚ¡ **
+	m¬gv
+;
+
+51 
+	s¶ugš_ÝtiÚ_li¡
+ {
+
+52 
+	mn
+;
+
+53 
+¶ugš_ÝtiÚ
+ 
+	m¶ugšs
+[
+MAX_PLUGINS
+];
+
+56 
+	s¶ugš
+ {
+
+57 
+boÞ
+ 
+	mš™Ÿlized
+;
+
+58 cÚ¡ *
+	mso_·thÇme
+;
+
+59 
+	m¶ugš_ty³_mask
+;
+
+60 
+	m»que¡ed_š™Ÿliz©iÚ_pošt
+;
+
+62 #iâdeà
+WIN32
+
+
+63 *
+	mhªdË
+;
+
+65 
+HMODULE
+ 
+	mmoduË
+;
+
+68 
+Ý’v²_¶ugš_Ý’_v1
+ 
+	mÝ’1
+;
+
+69 
+Ý’v²_¶ugš_Ý’_v2
+ 
+	mÝ’2
+;
+
+70 
+Ý’v²_¶ugš_Ý’_v3
+ 
+	mÝ’3
+;
+
+71 
+Ý’v²_¶ugš_func_v1
+ 
+	mfunc1
+;
+
+72 
+Ý’v²_¶ugš_func_v2
+ 
+	mfunc2
+;
+
+73 
+Ý’v²_¶ugš_func_v3
+ 
+	mfunc3
+;
+
+74 
+Ý’v²_¶ugš_þo£_v1
+ 
+	mþo£
+;
+
+75 
+Ý’v²_¶ugš_abÜt_v1
+ 
+	mabÜt
+;
+
+76 
+Ý’v²_¶ugš_þ›Á_cÚ¡ruùÜ_v1
+ 
+	mþ›Á_cÚ¡ruùÜ
+;
+
+77 
+Ý’v²_¶ugš_þ›Á_de¡ruùÜ_v1
+ 
+	mþ›Á_de¡ruùÜ
+;
+
+78 
+Ý’v²_¶ugš_mš_v”siÚ_»quœed_v1
+ 
+	mmš_v”siÚ_»quœed
+;
+
+79 
+Ý’v²_¶ugš_£Ëù_š™Ÿliz©iÚ_pošt_v1
+ 
+	mš™Ÿliz©iÚ_pošt
+;
+
+81 
+Ý’v²_¶ugš_hªdË_t
+ 
+	m¶ugš_hªdË
+;
+
+84 
+	s¶ugš_³r_þ›Á
+
+
+86 *
+	m³r_þ›Á_cÚ‹xt
+[
+MAX_PLUGINS
+];
+
+89 
+	s¶ugš_commÚ
+
+
+91 
+	mn
+;
+
+92 
+¶ugš
+ 
+	m¶ugšs
+[
+MAX_PLUGINS
+];
+
+95 
+	s¶ugš_li¡
+
+
+97 
+¶ugš_³r_þ›Á
+ 
+	m³r_þ›Á
+;
+
+98 
+¶ugš_commÚ
+ *
+	mcommÚ
+;
+
+99 
+boÞ
+ 
+	mcommÚ_owÃd
+;
+
+102 
+	s¶ugš_»tuº
+
+
+104 
+	mn
+;
+
+105 
+Ý’v²_¶ugš_¡ršg_li¡
+ *
+	mli¡
+[
+MAX_PLUGINS
+];
+
+108 
+¶ugš_ÝtiÚ_li¡
+ *
+¶ugš_ÝtiÚ_li¡_Ãw
+ (
+gc_¬’a
+ *
+gc
+);
+
+109 
+boÞ
+ 
+¶ugš_ÝtiÚ_li¡_add
+ (
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+, **
+p
+, 
+gc_¬’a
+ *
+gc
+);
+
+111 #iâdeà
+ENABLE_SMALL
+
+
+112 
+¶ugš_ÝtiÚ_li¡_´št
+ (cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+, 
+msgËv–
+);
+
+115 
+¶ugš_li¡
+ *
+¶ugš_li¡_š™
+ (cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+);
+
+117 
+¶ugš_li¡_Ý’
+ (
+¶ugš_li¡
+ *
+¶
+,
+
+118 cÚ¡ 
+¶ugš_ÝtiÚ_li¡
+ *
+li¡
+,
+
+119 
+¶ugš_»tuº
+ *
+´
+,
+
+120 cÚ¡ 
+’v_£t
+ *
+es
+,
+
+121 cÚ¡ 
+š™_pošt
+);
+
+123 
+¶ugš_li¡
+ *
+¶ugš_li¡_šh”™
+ (cÚ¡ ¶ugš_li¡ *
+¤c
+);
+
+125 
+¶ugš_ÿÎ_s¦
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+,
+
+126 cÚ¡ 
+ty³
+,
+
+127 cÚ¡ 
+¬gv
+ *
+av
+,
+
+128 
+¶ugš_»tuº
+ *
+´
+,
+
+129 
+’v_£t
+ *
+es
+
+
+130 #ifdeà
+ENABLE_SSL
+
+
+131 , 
+cu¼’t_û¹_d•th
+,
+
+132 
+Ý’v²_x509_û¹_t
+ *
+cu¼’t_û¹
+
+
+136 
+¶ugš_li¡_þo£
+ (
+¶ugš_li¡
+ *
+¶
+);
+
+137 
+boÞ
+ 
+¶ugš_defšed
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+, cÚ¡ 
+ty³
+);
+
+139 
+¶ugš_»tuº_g‘_cÞumn
+ (cÚ¡ 
+¶ugš_»tuº
+ *
+¤c
+,
+
+140 
+¶ugš_»tuº
+ *
+de¡
+,
+
+141 cÚ¡ *
+cÞÇme
+);
+
+143 
+¶ugš_»tuº_ä“
+ (
+¶ugš_»tuº
+ *
+´
+);
+
+145 #ifdeà
+ENABLE_DEBUG
+
+
+146 
+¶ugš_»tuº_´št
+ (cÚ¡ 
+msgËv–
+, cÚ¡ *
+´efix
+, cÚ¡ 
+¶ugš_»tuº
+ *
+´
+);
+
+149 
+šlše
+ 
+
+150 
+	$¶ugš_n
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+)
+
+152 ià(
+¶
+ &&…l->
+commÚ
+)
+
+153  
+¶
+->
+commÚ
+->
+n
+;
+
+156 
+	}
+}
+
+158 
+šlše
+ 
+boÞ
+
+
+159 
+	$¶ugš_»tuº_defšed
+ (cÚ¡ 
+¶ugš_»tuº
+ *
+´
+)
+
+161  
+´
+->
+n
+ >= 0;
+
+162 
+	}
+}
+
+164 
+šlše
+ 
+
+165 
+	$¶ugš_»tuº_š™
+ (
+¶ugš_»tuº
+ *
+´
+)
+
+167 
+´
+->
+n
+ = 0;
+
+168 
+	}
+}
+
+171 
+	s¶ugš_li¡
+ { 
+	mdummy
+; };
+
+172 
+	s¶ugš_»tuº
+ { 
+	mdummy
+; };
+
+174 
+šlše
+ 
+boÞ
+
+
+175 
+	$¶ugš_defšed
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+, cÚ¡ 
+ty³
+)
+
+177  
+çl£
+;
+
+178 
+	}
+}
+
+180 
+šlše
+ 
+
+181 
+¶ugš_ÿÎ_s¦
+ (cÚ¡ 
+¶ugš_li¡
+ *
+¶
+,
+
+182 cÚ¡ 
+ty³
+,
+
+183 cÚ¡ 
+¬gv
+ *
+av
+,
+
+184 
+¶ugš_»tuº
+ *
+´
+,
+
+185 
+’v_£t
+ *
+es
+
+
+186 #ifdeà
+ENABLE_SSL
+
+
+187 , 
+cu¼’t_û¹_d•th
+,
+
+188 
+Ý’v²_x509_û¹_t
+ *
+cu¼’t_û¹
+
+
+197 
+šlše
+ 
+
+198 
+	$¶ugš_ÿÎ
+(cÚ¡ 
+¶ugš_li¡
+ *
+¶
+,
+
+199 cÚ¡ 
+ty³
+,
+
+200 cÚ¡ 
+¬gv
+ *
+av
+,
+
+201 
+¶ugš_»tuº
+ *
+´
+,
+
+202 
+’v_£t
+ *
+es
+)
+
+204  
+	`¶ugš_ÿÎ_s¦
+(
+¶
+, 
+ty³
+, 
+av
+, 
+´
+, 
+es
+
+
+205 #ifdeà
+ENABLE_SSL
+
+
+206 , -1, 
+NULL
+
+
+209 
+	}
+}
+
+	@pool.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"poÞ.h
+"
+
+34 
+	~"bufãr.h
+"
+
+35 
+	~"”rÜ.h
+"
+
+36 
+	~"sock‘.h
+"
+
+37 
+	~"Ùime.h
+"
+
+39 
+	~"memdbg.h
+"
+
+41 #ià
+P2MP
+
+
+44 
+	$ifcÚfig_poÞ_’Œy_ä“
+ (
+ifcÚfig_poÞ_’Œy
+ *
+�e
+, 
+boÞ
+ 
+h¬d
+)
+
+46 
+�e
+->
+š_u£
+ = 
+çl£
+;
+
+47 ià(
+h¬d
+ && 
+�e
+->
+commÚ_Çme
+)
+
+49 
+	`ä“
+ (
+�e
+->
+commÚ_Çme
+);
+
+50 
+�e
+->
+commÚ_Çme
+ = 
+NULL
+;
+
+52 ià(
+h¬d
+)
+
+53 
+�e
+->
+Ï¡_»Ëa£
+ = 0;
+
+55 
+�e
+->
+Ï¡_»Ëa£
+ = 
+now
+;
+
+56 
+	}
+}
+
+59 
+	$ifcÚfig_poÞ_fšd
+ (
+ifcÚfig_poÞ
+ *
+poÞ
+, cÚ¡ *
+commÚ_Çme
+)
+
+61 
+i
+;
+
+62 
+time_t
+ 
+—¾›¡_»Ëa£
+ = 0;
+
+63 
+´evious_u§ge
+ = -1;
+
+64 
+Ãw_u§ge
+ = -1;
+
+66 
+i
+ = 0; i < 
+poÞ
+->
+size
+; ++i)
+
+68 
+ifcÚfig_poÞ_’Œy
+ *
+�e
+ = &
+poÞ
+->
+li¡
+[
+i
+];
+
+69 ià(!
+�e
+->
+š_u£
+)
+
+74 ià(
+poÞ
+->
+du¶iÿ‹_ú
+)
+
+76 
+Ãw_u§ge
+ = 
+i
+;
+
+84 ià((
+Ãw_u§ge
+ =ð-1 || 
+�e
+->
+Ï¡_»Ëa£
+ < 
+—¾›¡_»Ëa£
+è&& !�e->
+fixed
+)
+
+86 
+—¾›¡_»Ëa£
+ = 
+�e
+->
+Ï¡_»Ëa£
+;
+
+87 
+Ãw_u§ge
+ = 
+i
+;
+
+94 ià(
+´evious_u§ge
+ < 0
+
+95 && 
+commÚ_Çme
+
+
+96 && 
+�e
+->
+commÚ_Çme
+
+
+97 && !
+	`¡rcmp
+ (
+commÚ_Çme
+, 
+�e
+->common_name))
+
+98 
+´evious_u§ge
+ = 
+i
+;
+
+103 ià(
+´evious_u§ge
+ >= 0)
+
+104  
+´evious_u§ge
+;
+
+106 ià(
+Ãw_u§ge
+ >= 0)
+
+107  
+Ãw_u§ge
+;
+
+110 
+	}
+}
+
+115 
+boÞ
+
+
+116 
+	$ifcÚfig_poÞ_v”ify_¿nge
+ (cÚ¡ 
+msgËv–
+, cÚ¡ 
+š_addr_t
+ 
+¡¬t
+, cÚ¡ in_addr_ˆ
+’d
+)
+
+118 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+119 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+121 ià(
+¡¬t
+ > 
+’d
+)
+
+123 
+	`msg
+ (
+msgËv–
+, "--ifconfig-pool start IP [%s] is greater�hanƒnd IP [%s]",
+
+124 
+	`´št_š_addr_t
+ (
+¡¬t
+, 0, &
+gc
+),
+
+125 
+	`´št_š_addr_t
+ (
+’d
+, 0, &
+gc
+));
+
+126 
+»t
+ = 
+çl£
+;
+
+128 ià(
+’d
+ - 
+¡¬t
+ >ð
+IFCONFIG_POOL_MAX
+)
+
+130 
+	`msg
+ (
+msgËv–
+, "--ifconfig-pool‡ddress„ange is�oo†arge [%s -> %s]. Current maximum is %d‡ddresses,‡s defined by IFCONFIG_POOL_MAX variable.",
+
+131 
+	`´št_š_addr_t
+ (
+¡¬t
+, 0, &
+gc
+),
+
+132 
+	`´št_š_addr_t
+ (
+’d
+, 0, &
+gc
+),
+
+133 
+IFCONFIG_POOL_MAX
+);
+
+134 
+»t
+ = 
+çl£
+;
+
+136 
+	`gc_ä“
+ (&
+gc
+);
+
+137  
+»t
+;
+
+138 
+	}
+}
+
+140 
+ifcÚfig_poÞ
+ *
+
+141 
+	$ifcÚfig_poÞ_š™
+ (
+ty³
+, 
+š_addr_t
+ 
+¡¬t
+, in_addr_ˆ
+’d
+,
+
+142 cÚ¡ 
+boÞ
+ 
+du¶iÿ‹_ú
+,
+
+143 cÚ¡ 
+boÞ
+ 
+�v6_poÞ
+, cÚ¡ 
+š6_addr
+ 
+�v6_ba£
+,
+
+144 cÚ¡ 
+�v6_Ãtb™s
+ )
+
+146 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+147 
+ifcÚfig_poÞ
+ *
+poÞ
+ = 
+NULL
+;
+
+149 
+	`ASSERT
+ (
+¡¬t
+ <ð
+’d
+ &&ƒnd - s�¹ < 
+IFCONFIG_POOL_MAX
+);
+
+150 
+	`ALLOC_OBJ_CLEAR
+ (
+poÞ
+, 
+ifcÚfig_poÞ
+);
+
+152 
+poÞ
+->
+ty³
+ =�ype;
+
+153 
+poÞ
+->
+du¶iÿ‹_ú
+ = duplicate_cn;
+
+155 
+ty³
+)
+
+157 
+IFCONFIG_POOL_30NET
+:
+
+158 
+poÞ
+->
+ba£
+ = 
+¡¬t
+ & ~3;
+
+159 
+poÞ
+->
+size
+ = (((
+’d
+ | 3è+ 1è-…oÞ->
+ba£
+) >> 2;
+
+161 
+IFCONFIG_POOL_INDIV
+:
+
+162 
+poÞ
+->
+ba£
+ = 
+¡¬t
+;
+
+163 
+poÞ
+->
+size
+ = 
+’d
+ - 
+¡¬t
+ + 1;
+
+166 
+	`ASSERT
+ (0);
+
+170 
+poÞ
+->
+�v6
+ = 
+�v6_poÞ
+;
+
+172 iàÐ
+poÞ
+->
+�v6
+ )
+
+174 
+poÞ
+->
+ba£_�v6
+ = 
+�v6_ba£
+;
+
+175 
+poÞ
+->
+size_�v6
+ = 
+�v6_Ãtb™s
+>96? ( 1<<(128-ipv6_netbits) )
+
+176 : 
+IFCONFIG_POOL_MAX
+;
+
+178 
+	`msg
+Ð
+D_IFCONFIG_POOL
+, "IFCONFIG POOL IPv6: (IPv4) size=%d, size_ipv6=%d,‚etbits=%d, base_ipv6=%s",
+
+179 
+poÞ
+->
+size
+,…oÞ->
+size_�v6
+, 
+�v6_Ãtb™s
+,
+
+180 
+	`´št_š6_addr
+Ð
+poÞ
+->
+ba£_�v6
+, 0, &
+gc
+ ));
+
+186 
+	`ASSERT
+Ð
+poÞ
+->
+size
+ <…oÞ->
+size_�v6
+ );
+
+189 
+	`ALLOC_ARRAY_CLEAR
+ (
+poÞ
+->
+li¡
+, 
+ifcÚfig_poÞ_’Œy
+,…oÞ->
+size
+);
+
+191 
+	`msg
+ (
+D_IFCONFIG_POOL
+, "IFCONFIG POOL: base=%s size=%d, ipv6=%d",
+
+192 
+	`´št_š_addr_t
+ (
+poÞ
+->
+ba£
+, 0, &
+gc
+),
+
+193 
+poÞ
+->
+size
+,…oÞ->
+�v6
+ );
+
+195 
+	`gc_ä“
+ (&
+gc
+);
+
+196  
+poÞ
+;
+
+197 
+	}
+}
+
+200 
+	$ifcÚfig_poÞ_ä“
+ (
+ifcÚfig_poÞ
+ *
+poÞ
+)
+
+202 ià(
+poÞ
+)
+
+204 
+i
+;
+
+205 
+i
+ = 0; i < 
+poÞ
+->
+size
+; ++i)
+
+206 
+	`ifcÚfig_poÞ_’Œy_ä“
+ (&
+poÞ
+->
+li¡
+[
+i
+], 
+Œue
+);
+
+207 
+	`ä“
+ (
+poÞ
+->
+li¡
+);
+
+208 
+	`ä“
+ (
+poÞ
+);
+
+210 
+	}
+}
+
+212 
+ifcÚfig_poÞ_hªdË
+
+
+213 
+	$ifcÚfig_poÞ_acquœe
+ (
+ifcÚfig_poÞ
+ *
+poÞ
+, 
+š_addr_t
+ *
+loÿl
+, in_addr_ˆ*
+»mÙe
+, 
+š6_addr
+ *
+»mÙe_�v6
+, cÚ¡ *
+commÚ_Çme
+)
+
+215 
+i
+;
+
+217 
+i
+ = 
+	`ifcÚfig_poÞ_fšd
+ (
+poÞ
+, 
+commÚ_Çme
+);
+
+218 ià(
+i
+ >= 0)
+
+220 
+ifcÚfig_poÞ_’Œy
+ *
+�e
+ = &
+poÞ
+->
+li¡
+[
+i
+];
+
+221 
+	`ASSERT
+ (!
+�e
+->
+š_u£
+);
+
+222 
+	`ifcÚfig_poÞ_’Œy_ä“
+ (
+�e
+, 
+Œue
+);
+
+223 
+�e
+->
+š_u£
+ = 
+Œue
+;
+
+224 ià(
+commÚ_Çme
+)
+
+225 
+�e
+->
+commÚ_Çme
+ = 
+	`¡ršg_®loc
+ (commÚ_Çme, 
+NULL
+);
+
+227 
+poÞ
+->
+ty³
+)
+
+229 
+IFCONFIG_POOL_30NET
+:
+
+231 
+š_addr_t
+ 
+b
+ = 
+poÞ
+->
+ba£
+ + (
+i
+ << 2);
+
+232 *
+loÿl
+ = 
+b
+ + 1;
+
+233 *
+»mÙe
+ = 
+b
+ + 2;
+
+236 
+IFCONFIG_POOL_INDIV
+:
+
+238 
+š_addr_t
+ 
+b
+ = 
+poÞ
+->
+ba£
+ + 
+i
+;
+
+239 *
+loÿl
+ = 0;
+
+240 *
+»mÙe
+ = 
+b
+;
+
+244 
+	`ASSERT
+ (0);
+
+248 iàÐ
+poÞ
+->
+�v6
+ && 
+»mÙe_�v6
+ )
+
+250 *
+»mÙe_�v6
+ = 
+	`add_š6_addr
+Ð
+poÞ
+->
+ba£_�v6
+, 
+i
+ );
+
+253  
+i
+;
+
+254 
+	}
+}
+
+256 
+boÞ
+
+
+257 
+	$ifcÚfig_poÞ_»Ëa£
+ (
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+ifcÚfig_poÞ_hªdË
+ 
+hªd
+, cÚ¡ 
+boÞ
+ 
+h¬d
+)
+
+259 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+260 ià(
+poÞ
+ && 
+hªd
+ >ð0 && hªd <…oÞ->
+size
+)
+
+262 
+	`ifcÚfig_poÞ_’Œy_ä“
+ (&
+poÞ
+->
+li¡
+[
+hªd
+], 
+h¬d
+);
+
+263 
+»t
+ = 
+Œue
+;
+
+265  
+»t
+;
+
+266 
+	}
+}
+
+272 
+ifcÚfig_poÞ_hªdË
+
+
+273 
+	$ifcÚfig_poÞ_�_ba£_to_hªdË
+ (cÚ¡ 
+ifcÚfig_poÞ
+* 
+poÞ
+, cÚ¡ 
+š_addr_t
+ 
+addr
+)
+
+275 
+ifcÚfig_poÞ_hªdË
+ 
+»t
+ = -1;
+
+277 
+poÞ
+->
+ty³
+)
+
+279 
+IFCONFIG_POOL_30NET
+:
+
+281 
+»t
+ = (
+addr
+ - 
+poÞ
+->
+ba£
+) >> 2;
+
+284 
+IFCONFIG_POOL_INDIV
+:
+
+286 
+»t
+ = (
+addr
+ - 
+poÞ
+->
+ba£
+);
+
+290 
+	`ASSERT
+ (0);
+
+293 ià(
+»t
+ < 0 ||„‘ >ð
+poÞ
+->
+size
+)
+
+294 
+»t
+ = -1;
+
+296  
+»t
+;
+
+297 
+	}
+}
+
+299 
+š_addr_t
+
+
+300 
+	$ifcÚfig_poÞ_hªdË_to_�_ba£
+ (cÚ¡ 
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+ifcÚfig_poÞ_hªdË
+ 
+hªd
+)
+
+302 
+š_addr_t
+ 
+»t
+ = 0;
+
+304 ià(
+hªd
+ >ð0 && hªd < 
+poÞ
+->
+size
+)
+
+306 
+poÞ
+->
+ty³
+)
+
+308 
+IFCONFIG_POOL_30NET
+:
+
+310 
+»t
+ = 
+poÞ
+->
+ba£
+ + (
+hªd
+ << 2);;
+
+313 
+IFCONFIG_POOL_INDIV
+:
+
+315 
+»t
+ = 
+poÞ
+->
+ba£
+ + 
+hªd
+;
+
+319 
+	`ASSERT
+ (0);
+
+323  
+»t
+;
+
+324 
+	}
+}
+
+326 
+š6_addr
+
+
+327 
+	$ifcÚfig_poÞ_hªdË_to_�v6_ba£
+ (cÚ¡ 
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+ifcÚfig_poÞ_hªdË
+ 
+hªd
+)
+
+329 
+š6_addr
+ 
+»t
+ = 
+š6addr_ªy
+;
+
+332 ià(
+hªd
+ >ð0 && hªd < 
+poÞ
+->
+size_�v6
+ )
+
+334 
+»t
+ = 
+	`add_š6_addr
+Ð
+poÞ
+->
+ba£_�v6
+, 
+hªd
+ );
+
+336  
+»t
+;
+
+337 
+	}
+}
+
+340 
+	$ifcÚfig_poÞ_£t
+ (
+ifcÚfig_poÞ
+* 
+poÞ
+, cÚ¡ *
+ú
+, cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+boÞ
+ 
+fixed
+)
+
+342 
+ifcÚfig_poÞ_hªdË
+ 
+h
+ = 
+	`ifcÚfig_poÞ_�_ba£_to_hªdË
+ (
+poÞ
+, 
+addr
+);
+
+343 ià(
+h
+ >= 0)
+
+345 
+ifcÚfig_poÞ_’Œy
+ *
+e
+ = &
+poÞ
+->
+li¡
+[
+h
+];
+
+346 
+	`ifcÚfig_poÞ_’Œy_ä“
+ (
+e
+, 
+Œue
+);
+
+347 
+e
+->
+š_u£
+ = 
+çl£
+;
+
+348 
+e
+->
+commÚ_Çme
+ = 
+	`¡ršg_®loc
+ (
+ú
+, 
+NULL
+);
+
+349 
+e
+->
+Ï¡_»Ëa£
+ = 
+now
+;
+
+350 
+e
+->
+fixed
+ = fixed;
+
+352 
+	}
+}
+
+355 
+	$ifcÚfig_poÞ_li¡
+ (cÚ¡ 
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+¡©us_ou�ut
+ *
+out
+)
+
+357 ià(
+poÞ
+ && 
+out
+)
+
+359 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+360 
+i
+;
+
+362 
+i
+ = 0; i < 
+poÞ
+->
+size
+; ++i)
+
+364 cÚ¡ 
+ifcÚfig_poÞ_’Œy
+ *
+e
+ = &
+poÞ
+->
+li¡
+[
+i
+];
+
+365 ià(
+e
+->
+commÚ_Çme
+)
+
+367 cÚ¡ 
+š_addr_t
+ 
+�
+ = 
+	`ifcÚfig_poÞ_hªdË_to_�_ba£
+ (
+poÞ
+, 
+i
+);
+
+368 iàÐ
+poÞ
+->
+�v6
+ )
+
+370 
+š6_addr
+ 
+�6
+ = 
+	`ifcÚfig_poÞ_hªdË_to_�v6_ba£
+ (
+poÞ
+, 
+i
+);
+
+371 
+	`¡©us_´štf
+ (
+out
+, "%s,%s,%s",
+
+372 
+e
+->
+commÚ_Çme
+,
+
+373 
+	`´št_š_addr_t
+ (
+�
+, 0, &
+gc
+),
+
+374 
+	`´št_š6_addr
+ (
+�6
+, 0, &
+gc
+));
+
+378 
+	`¡©us_´štf
+ (
+out
+, "%s,%s",
+
+379 
+e
+->
+commÚ_Çme
+,
+
+380 
+	`´št_š_addr_t
+ (
+�
+, 0, &
+gc
+));
+
+384 
+	`gc_ä“
+ (&
+gc
+);
+
+386 
+	}
+}
+
+389 
+	$ifcÚfig_poÞ_msg
+ (cÚ¡ 
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+msgËv–
+)
+
+391 
+¡©us_ou�ut
+ *
+so
+ = 
+	`¡©us_Ý’
+ (
+NULL
+, 0, 
+msgËv–
+, NULL, 0);
+
+392 
+	`ASSERT
+ (
+so
+);
+
+393 
+	`¡©us_´štf
+ (
+so
+, "IFCONFIG POOL LIST");
+
+394 
+	`ifcÚfig_poÞ_li¡
+ (
+poÞ
+, 
+so
+);
+
+395 
+	`¡©us_þo£
+ (
+so
+);
+
+396 
+	}
+}
+
+402 
+ifcÚfig_poÞ_³rsi¡
+ *
+
+403 
+	$ifcÚfig_poÞ_³rsi¡_š™
+ (cÚ¡ *
+fž’ame
+, 
+»äesh_äeq
+)
+
+405 
+ifcÚfig_poÞ_³rsi¡
+ *
+»t
+;
+
+407 
+	`ASSERT
+ (
+fž’ame
+);
+
+409 
+	`ALLOC_OBJ_CLEAR
+ (
+»t
+, 
+ifcÚfig_poÞ_³rsi¡
+);
+
+410 ià(
+»äesh_äeq
+ > 0)
+
+412 
+»t
+->
+fixed
+ = 
+çl£
+;
+
+413 
+»t
+->
+fže
+ = 
+	`¡©us_Ý’
+ (
+fž’ame
+, 
+»äesh_äeq
+, -1, 
+NULL
+, 
+STATUS_OUTPUT_READ
+|
+STATUS_OUTPUT_WRITE
+);
+
+417 
+»t
+->
+fixed
+ = 
+Œue
+;
+
+418 
+»t
+->
+fže
+ = 
+	`¡©us_Ý’
+ (
+fž’ame
+, 0, -1, 
+NULL
+, 
+STATUS_OUTPUT_READ
+);
+
+420  
+»t
+;
+
+421 
+	}
+}
+
+424 
+	$ifcÚfig_poÞ_³rsi¡_þo£
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+)
+
+426 ià(
+³rsi¡
+)
+
+428 ià(
+³rsi¡
+->
+fže
+)
+
+429 
+	`¡©us_þo£
+ (
+³rsi¡
+->
+fže
+);
+
+430 
+	`ä“
+ (
+³rsi¡
+);
+
+432 
+	}
+}
+
+434 
+boÞ
+
+
+435 
+	$ifcÚfig_poÞ_wr™e_Œigg”
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+)
+
+437 ià(
+³rsi¡
+->
+fže
+)
+
+438  
+	`¡©us_Œigg”
+ (
+³rsi¡
+->
+fže
+);
+
+440  
+çl£
+;
+
+441 
+	}
+}
+
+444 
+	$ifcÚfig_poÞ_»ad
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+, 
+ifcÚfig_poÞ
+ *
+poÞ
+)
+
+446 cÚ¡ 
+buf_size
+ = 128;
+
+448 
+	`upd©e_time
+ ();
+
+449 ià(
+³rsi¡
+ &&…”si¡->
+fže
+ && 
+poÞ
+)
+
+451 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+452 
+bufãr
+ 
+š
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+453 *
+ú_buf
+;
+
+454 *
+�_buf
+;
+
+455 
+lše
+ = 0;
+
+457 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+ú_buf
+, , 
+buf_size
+, &
+gc
+);
+
+458 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+�_buf
+, , 
+buf_size
+, &
+gc
+);
+
+460 
+Œue
+)
+
+462 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+š
+, 0));
+
+463 ià(!
+	`¡©us_»ad
+ (
+³rsi¡
+->
+fže
+, &
+š
+))
+
+465 ++
+lše
+;
+
+466 ià(
+	`BLEN
+ (&
+š
+))
+
+468 
+c
+ = *
+	`BSTR
+(&
+š
+);
+
+469 ià(
+c
+ == '#' || c == ';')
+
+471 
+	`msg
+Ð
+M_INFO
+, "ifconfig_pool_read(), in='%s', TODO: IPv6",
+
+472 
+	`BSTR
+(&
+š
+) );
+
+474 ià(
+	`buf_·r£
+ (&
+š
+, ',', 
+ú_buf
+, 
+buf_size
+)
+
+475 && 
+	`buf_·r£
+ (&
+š
+, ',', 
+�_buf
+, 
+buf_size
+))
+
+477 
+boÞ
+ 
+sucûeded
+;
+
+478 cÚ¡ 
+š_addr_t
+ 
+addr
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+�_buf
+, 0, &
+sucûeded
+, 
+NULL
+);
+
+479 ià(
+sucûeded
+)
+
+481 
+	`msg
+Ð
+M_INFO
+, "succeeded -> ifconfig_pool_set()");
+
+482 
+	`ifcÚfig_poÞ_£t
+ (
+poÞ
+, 
+ú_buf
+, 
+addr
+, 
+³rsi¡
+->
+fixed
+);
+
+488 
+	`ifcÚfig_poÞ_msg
+ (
+poÞ
+, 
+D_IFCONFIG_POOL
+);
+
+490 
+	`gc_ä“
+ (&
+gc
+);
+
+492 
+	}
+}
+
+495 
+	$ifcÚfig_poÞ_wr™e
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+, cÚ¡ 
+ifcÚfig_poÞ
+ *
+poÞ
+)
+
+497 ià(
+³rsi¡
+ &&…”si¡->
+fže
+ && (
+	`¡©us_rw_æags
+ (³rsi¡->fžeè& 
+STATUS_OUTPUT_WRITE
+è&& 
+poÞ
+)
+
+499 
+	`¡©us_»£t
+ (
+³rsi¡
+->
+fže
+);
+
+500 
+	`ifcÚfig_poÞ_li¡
+ (
+poÞ
+, 
+³rsi¡
+->
+fže
+);
+
+501 
+	`¡©us_æush
+ (
+³rsi¡
+->
+fže
+);
+
+503 
+	}
+}
+
+509 #ifdeà
+IFCONFIG_POOL_TEST
+
+
+511 
+	#DUP_CN
+
+
+	)
+
+514 
+	$ifcÚfig_poÞ_‹¡
+ (
+š_addr_t
+ 
+¡¬t
+, in_addr_ˆ
+’d
+)
+
+516 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+517 
+ifcÚfig_poÞ
+ *
+p
+ = 
+	`ifcÚfig_poÞ_š™
+ (
+IFCONFIG_POOL_30NET
+, 
+¡¬t
+, 
+’d
+);
+
+519 
+ifcÚfig_poÞ_hªdË
+ 
+¬¿y
+[256];
+
+520 
+i
+;
+
+522 
+	`CLEAR
+ (
+¬¿y
+);
+
+524 
+	`msg
+ (
+M_INFO
+ | 
+M_NOPREFIX
+, "************ 1");
+
+525 
+i
+ = 0; i < (è
+	`SIZE
+ (
+¬¿y
+); ++i)
+
+527 *
+ú
+;
+
+528 
+ifcÚfig_poÞ_hªdË
+ 
+h
+;
+
+529 
+š_addr_t
+ 
+loÿl
+, 
+»mÙe
+;
+
+530 
+buf
+[256];
+
+531 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "commÚ-Çme-%d", 
+i
+);
+
+532 #ifdeà
+DUP_CN
+
+
+533 
+ú
+ = 
+NULL
+;
+
+535 
+ú
+ = 
+buf
+;
+
+537 
+h
+ = 
+	`ifcÚfig_poÞ_acquœe
+ (
+p
+, &
+loÿl
+, &
+»mÙe
+, 
+NULL
+, 
+ú
+);
+
+538 ià(
+h
+ < 0)
+
+540 
+	`msg
+ (
+M_INFO
+ | 
+M_NOPREFIX
+, "IFCONFIG_POOL TEST…ass 1:†=%s„=%s cn=%s",
+
+541 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+542 
+	`´št_š_addr_t
+ (
+»mÙe
+, 0, &
+gc
+),
+
+543 
+ú
+);
+
+544 
+¬¿y
+[
+i
+] = 
+h
+;
+
+548 
+	`msg
+ (
+M_INFO
+ | 
+M_NOPREFIX
+, "************* 2");
+
+549 
+i
+ = (è
+	`SIZE
+ (
+¬¿y
+) / 16; i < () SIZE (array) / 8; ++i)
+
+551 
+	`msg
+ (
+M_INFO
+, "A‰em±�Ø»Ëa£ %d cn=%s", 
+¬¿y
+[
+i
+], 
+p
+->
+li¡
+[i].
+commÚ_Çme
+);
+
+552 ià(!
+	`ifcÚfig_poÞ_»Ëa£
+ (
+p
+, 
+¬¿y
+[
+i
+]))
+
+554 
+	`msg
+ (
+M_INFO
+, "Succeeded");
+
+557 
+	`CLEAR
+ (
+¬¿y
+);
+
+559 
+	`msg
+ (
+M_INFO
+ | 
+M_NOPREFIX
+, "**************** 3");
+
+560 
+i
+ = 0; i < (è
+	`SIZE
+ (
+¬¿y
+); ++i)
+
+562 *
+ú
+;
+
+563 
+ifcÚfig_poÞ_hªdË
+ 
+h
+;
+
+564 
+š_addr_t
+ 
+loÿl
+, 
+»mÙe
+;
+
+565 
+buf
+[256];
+
+566 
+	`¢´štf
+ (
+buf
+, (buf), "commÚ-Çme-%d", 
+i
++24);
+
+567 #ifdeà
+DUP_CN
+
+
+568 
+ú
+ = 
+NULL
+;
+
+570 
+ú
+ = 
+buf
+;
+
+572 
+h
+ = 
+	`ifcÚfig_poÞ_acquœe
+ (
+p
+, &
+loÿl
+, &
+»mÙe
+, 
+NULL
+, 
+ú
+);
+
+573 ià(
+h
+ < 0)
+
+575 
+	`msg
+ (
+M_INFO
+ | 
+M_NOPREFIX
+, "IFCONFIG_POOL TEST…ass 3:†=%s„=%s cn=%s",
+
+576 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+577 
+	`´št_š_addr_t
+ (
+»mÙe
+, 0, &
+gc
+),
+
+578 
+ú
+);
+
+579 
+¬¿y
+[
+i
+] = 
+h
+;
+
+583 
+	`ifcÚfig_poÞ_ä“
+ (
+p
+);
+
+584 
+	`gc_ä“
+ (&
+gc
+);
+
+585 
+	}
+}
+
+	@pool.h
+
+25 #iâdeà
+POOL_H
+
+
+26 
+	#POOL_H
+
+
+	)
+
+28 #ià
+P2MP
+
+
+32 
+	~"basic.h
+"
+
+33 
+	~"¡©us.h
+"
+
+35 
+	#IFCONFIG_POOL_MAX
+ 65536
+
+	)
+
+36 
+	#IFCONFIG_POOL_MIN_NETBITS
+ 16
+
+	)
+
+38 
+	#IFCONFIG_POOL_30NET
+ 0
+
+	)
+
+39 
+	#IFCONFIG_POOL_INDIV
+ 1
+
+	)
+
+41 
+	sifcÚfig_poÞ_’Œy
+
+
+43 
+boÞ
+ 
+	mš_u£
+;
+
+44 *
+	mcommÚ_Çme
+;
+
+45 
+time_t
+ 
+	mÏ¡_»Ëa£
+;
+
+46 
+boÞ
+ 
+	mfixed
+;
+
+49 
+	sifcÚfig_poÞ
+
+
+51 
+š_addr_t
+ 
+	mba£
+;
+
+52 
+	msize
+;
+
+53 
+	mty³
+;
+
+54 
+boÞ
+ 
+	mdu¶iÿ‹_ú
+;
+
+55 
+boÞ
+ 
+	m�v6
+;
+
+56 
+š6_addr
+ 
+	mba£_�v6
+;
+
+57 
+	msize_�v6
+;
+
+58 
+ifcÚfig_poÞ_’Œy
+ *
+	mli¡
+;
+
+61 
+	sifcÚfig_poÞ_³rsi¡
+
+
+63 
+¡©us_ou�ut
+ *
+	mfže
+;
+
+64 
+boÞ
+ 
+	mfixed
+;
+
+67 
+	tifcÚfig_poÞ_hªdË
+;
+
+69 
+ifcÚfig_poÞ
+ *
+ifcÚfig_poÞ_š™
+ (
+ty³
+, 
+š_addr_t
+ 
+¡¬t
+, in_addr_ˆ
+’d
+, cÚ¡ 
+boÞ
+ 
+du¶iÿ‹_ú
+, cÚ¡ boÞ 
+�v6_poÞ
+, cÚ¡ 
+š6_addr
+ 
+�v6_ba£
+, cÚ¡ 
+�v6_Ãtb™s
+ );
+
+71 
+ifcÚfig_poÞ_ä“
+ (
+ifcÚfig_poÞ
+ *
+poÞ
+);
+
+73 
+boÞ
+ 
+ifcÚfig_poÞ_v”ify_¿nge
+ (cÚ¡ 
+msgËv–
+, cÚ¡ 
+š_addr_t
+ 
+¡¬t
+, cÚ¡ in_addr_ˆ
+’d
+);
+
+75 
+ifcÚfig_poÞ_hªdË
+ 
+ifcÚfig_poÞ_acquœe
+ (
+ifcÚfig_poÞ
+ *
+poÞ
+, 
+š_addr_t
+ *
+loÿl
+, in_addr_ˆ*
+»mÙe
+, 
+š6_addr
+ *
+»mÙe_�v6
+, cÚ¡ *
+commÚ_Çme
+);
+
+77 
+boÞ
+ 
+ifcÚfig_poÞ_»Ëa£
+ (
+ifcÚfig_poÞ
+* 
+poÞ
+, 
+ifcÚfig_poÞ_hªdË
+ 
+hªd
+, cÚ¡ boÞ 
+h¬d
+);
+
+79 
+ifcÚfig_poÞ_³rsi¡
+ *
+ifcÚfig_poÞ_³rsi¡_š™
+ (cÚ¡ *
+fž’ame
+, 
+»äesh_äeq
+);
+
+80 
+ifcÚfig_poÞ_³rsi¡_þo£
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+);
+
+81 
+boÞ
+ 
+ifcÚfig_poÞ_wr™e_Œigg”
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+);
+
+83 
+ifcÚfig_poÞ_»ad
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+, 
+ifcÚfig_poÞ
+ *
+poÞ
+);
+
+84 
+ifcÚfig_poÞ_wr™e
+ (
+ifcÚfig_poÞ_³rsi¡
+ *
+³rsi¡
+, cÚ¡ 
+ifcÚfig_poÞ
+ *
+poÞ
+);
+
+86 #ifdeà
+IFCONFIG_POOL_TEST
+
+
+87 
+ifcÚfig_poÞ_‹¡
+ (
+š_addr_t
+ 
+¡¬t
+, in_addr_ˆ
+’d
+);
+
+	@proto.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"´Ùo.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+36 
+	~"memdbg.h
+"
+
+43 
+boÞ
+
+
+44 
+	$is_�v_X
+ ( 
+tuÂ–_ty³
+, 
+bufãr
+ *
+buf
+, 
+�_v”
+ )
+
+46 
+off£t
+;
+
+47 cÚ¡ 
+Ý’v²_�hdr
+ *
+ih
+;
+
+49 
+	`v”ify_®ign_4
+ (
+buf
+);
+
+50 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+52 ià(
+	`BLEN
+ (
+buf
+è< (è (
+Ý’v²_�hdr
+))
+
+53  
+çl£
+;
+
+54 
+off£t
+ = 0;
+
+56 ià(
+tuÂ–_ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+58 cÚ¡ 
+Ý’v²_‘hhdr
+ *
+eh
+;
+
+59 ià(
+	`BLEN
+ (
+buf
+è< ()( (
+Ý’v²_‘hhdr
+)
+
+60 +  (
+Ý’v²_�hdr
+)))
+
+61  
+çl£
+;
+
+62 
+eh
+ = (cÚ¡ 
+Ý’v²_‘hhdr
+ *è
+	`BPTR
+ (
+buf
+);
+
+63 ià(
+	`Áohs
+ (
+eh
+->
+´Ùo
+è!ð(
+�_v”
+ =ð6 ? 
+OPENVPN_ETH_P_IPV6
+ : 
+OPENVPN_ETH_P_IPV4
+))
+
+64  
+çl£
+;
+
+65 
+off£t
+ =  (
+Ý’v²_‘hhdr
+);
+
+68  
+çl£
+;
+
+70 
+ih
+ = (cÚ¡ 
+Ý’v²_�hdr
+ *è(
+	`BPTR
+ (
+buf
+è+ 
+off£t
+);
+
+73 ià(
+	`OPENVPN_IPH_GET_VER
+ (
+ih
+->
+v”siÚ_Ën
+è=ð
+�_v”
+)
+
+74  
+	`buf_advªû
+ (
+buf
+, 
+off£t
+);
+
+76  
+çl£
+;
+
+77 
+	}
+}
+
+79 
+boÞ
+
+
+80 
+	$is_�v4
+ (
+tuÂ–_ty³
+, 
+bufãr
+ *
+buf
+)
+
+82  
+	`is_�v_X
+Ð
+tuÂ–_ty³
+, 
+buf
+, 4 );
+
+83 
+	}
+}
+
+84 
+boÞ
+
+
+85 
+	$is_�v6
+ (
+tuÂ–_ty³
+, 
+bufãr
+ *
+buf
+)
+
+87  
+	`is_�v_X
+Ð
+tuÂ–_ty³
+, 
+buf
+, 6 );
+
+88 
+	}
+}
+
+90 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+93 
+	$�v4_·ck‘_size_v”ify
+ (cÚ¡ 
+ušt8_t
+ *
+d©a
+,
+
+94 cÚ¡ 
+size
+,
+
+95 cÚ¡ 
+tuÂ–_ty³
+,
+
+96 cÚ¡ *
+´efix
+,
+
+97 
+couÁ”_ty³
+ *
+”rÜs
+)
+
+99 ià(
+size
+ > 0)
+
+101 
+bufãr
+ 
+buf
+;
+
+103 
+	`buf_£t_»ad
+ (&
+buf
+, 
+d©a
+, 
+size
+);
+
+105 ià(
+	`is_�v4
+ (
+tuÂ–_ty³
+, &
+buf
+))
+
+107 cÚ¡ 
+Ý’v²_�hdr
+ *
+p�
+;
+
+108 
+hËn
+;
+
+109 
+tÙËn
+;
+
+110 cÚ¡ *
+msg¡r
+ = "PACKET SIZE INFO";
+
+111 
+msgËv–
+ = 
+D_PACKET_TRUNC_DEBUG
+;
+
+113 ià(
+	`BLEN
+ (&
+buf
+è< (è (
+Ý’v²_�hdr
+))
+
+116 
+	`v”ify_®ign_4
+ (&
+buf
+);
+
+117 
+p�
+ = (
+Ý’v²_�hdr
+ *è
+	`BPTR
+ (&
+buf
+);
+
+119 
+hËn
+ = 
+	`OPENVPN_IPH_GET_LEN
+ (
+p�
+->
+v”siÚ_Ën
+);
+
+120 
+tÙËn
+ = 
+	`Áohs
+ (
+p�
+->
+tÙ_Ën
+);
+
+122 ià(
+	`BLEN
+ (&
+buf
+è!ð
+tÙËn
+)
+
+124 
+msg¡r
+ = "PACKET TRUNCATION ERROR";
+
+125 
+msgËv–
+ = 
+D_PACKET_TRUNC_ERR
+;
+
+126 ià(
+”rÜs
+)
+
+127 ++(*
+”rÜs
+);
+
+130 
+	`msg
+ (
+msgËv–
+, "% %s: size=%d�ÙËn=%d hËn=%dƒ¼couÁ=" 
+couÁ”_fÜm©
+,
+
+131 
+msg¡r
+,
+
+132 
+´efix
+,
+
+133 
+	`BLEN
+ (&
+buf
+),
+
+134 
+tÙËn
+,
+
+135 
+hËn
+,
+
+136 
+”rÜs
+ ? *”rÜ : (
+couÁ”_ty³
+)0);
+
+139 
+	}
+}
+
+	@proto.h
+
+25 #iâdeà
+PROTO_H
+
+
+26 
+	#PROTO_H
+
+
+	)
+
+28 
+	~"commÚ.h
+"
+
+29 
+	~"bufãr.h
+"
+
+31 #´agm¨
+·ck
+(1)
+
+36 
+	#DEV_TYPE_UNDEF
+ 0
+
+	)
+
+37 
+	#DEV_TYPE_NULL
+ 1
+
+	)
+
+38 
+	#DEV_TYPE_TUN
+ 2
+
+	)
+
+39 
+	#DEV_TYPE_TAP
+ 3
+
+	)
+
+43 
+	#TOP_UNDEF
+ 0
+
+	)
+
+44 
+	#TOP_NET30
+ 1
+
+	)
+
+45 
+	#TOP_P2P
+ 2
+
+	)
+
+46 
+	#TOP_SUBNET
+ 3
+
+	)
+
+55 
+	#OPENVPN_ETH_ALEN
+ 6
+
+	)
+
+56 
+	sÝ’v²_‘hhdr
+
+
+58 
+ušt8_t
+ 
+	mde¡
+[
+OPENVPN_ETH_ALEN
+];
+
+59 
+ušt8_t
+ 
+	msourû
+[
+OPENVPN_ETH_ALEN
+];
+
+61 
+	#OPENVPN_ETH_P_IPV4
+ 0x0800
+
+	)
+
+62 
+	#OPENVPN_ETH_P_IPV6
+ 0x86DD
+
+	)
+
+63 
+	#OPENVPN_ETH_P_ARP
+ 0x0806
+
+	)
+
+64 
+ušt16_t
+ 
+	m´Ùo
+;
+
+67 
+	sÝ’v²_¬p
+ {
+
+68 
+	#ARP_MAC_ADDR_TYPE
+ 0x0001
+
+	)
+
+69 
+ušt16_t
+ 
+	mmac_addr_ty³
+;
+
+71 
+ušt16_t
+ 
+	m´Ùo_addr_ty³
+;
+
+72 
+ušt8_t
+ 
+	mmac_addr_size
+;
+
+73 
+ušt8_t
+ 
+	m´Ùo_addr_size
+;
+
+75 
+	#ARP_REQUEST
+ 0x0001
+
+	)
+
+76 
+	#ARP_REPLY
+ 0x0002
+
+	)
+
+77 
+ušt16_t
+ 
+	m¬p_commªd
+;
+
+79 
+ušt8_t
+ 
+	mmac_¤c
+[
+OPENVPN_ETH_ALEN
+];
+
+80 
+š_addr_t
+ 
+	m�_¤c
+;
+
+81 
+ušt8_t
+ 
+	mmac_de¡
+[
+OPENVPN_ETH_ALEN
+];
+
+82 
+š_addr_t
+ 
+	m�_de¡
+;
+
+85 
+	sÝ’v²_�hdr
+ {
+
+86 
+	#OPENVPN_IPH_GET_VER
+(
+v
+è(((vè>> 4è& 0x0F)
+
+	)
+
+87 
+	#OPENVPN_IPH_GET_LEN
+(
+v
+è(((vè& 0x0Fè<< 2)
+
+	)
+
+88 
+ušt8_t
+ 
+	mv”siÚ_Ën
+;
+
+90 
+ušt8_t
+ 
+	mtos
+;
+
+91 
+ušt16_t
+ 
+	mtÙ_Ën
+;
+
+92 
+ušt16_t
+ 
+	mid
+;
+
+94 
+	#OPENVPN_IP_OFFMASK
+ 0x1fff
+
+	)
+
+95 
+ušt16_t
+ 
+	mäag_off
+;
+
+97 
+ušt8_t
+ 
+	m‰l
+;
+
+99 
+	#OPENVPN_IPPROTO_IGMP
+ 2
+
+	)
+
+100 
+	#OPENVPN_IPPROTO_TCP
+ 6
+
+	)
+
+101 
+	#OPENVPN_IPPROTO_UDP
+ 17
+
+	)
+
+102 
+ušt8_t
+ 
+	m´ÙocÞ
+;
+
+104 
+ušt16_t
+ 
+	mcheck
+;
+
+105 
+ušt32_t
+ 
+	m§ddr
+;
+
+106 
+ušt32_t
+ 
+	mdaddr
+;
+
+113 
+	sÝ’v²_�v6hdr
+ {
+
+114 
+ušt8_t
+ 
+	mv”siÚ_´io
+;
+
+115 
+ušt8_t
+ 
+	mæow_lbl
+[3];
+
+116 
+ušt16_t
+ 
+	m·ylßd_Ën
+;
+
+117 
+ušt8_t
+ 
+	mÃxthdr
+;
+
+118 
+ušt8_t
+ 
+	mhÝ_lim™
+;
+
+120 
+š6_addr
+ 
+	m§ddr
+;
+
+121 
+š6_addr
+ 
+	mdaddr
+;
+
+128 
+	sÝ’v²_udphdr
+ {
+
+129 
+ušt16_t
+ 
+	msourû
+;
+
+130 
+ušt16_t
+ 
+	mde¡
+;
+
+131 
+ušt16_t
+ 
+	mËn
+;
+
+132 
+ušt16_t
+ 
+	mcheck
+;
+
+138 
+	sÝ’v²_týhdr
+ {
+
+139 
+ušt16_t
+ 
+	msourû
+;
+
+140 
+ušt16_t
+ 
+	mde¡
+;
+
+141 
+ušt32_t
+ 
+	m£q
+;
+
+142 
+ušt32_t
+ 
+	mack_£q
+;
+
+144 
+	#OPENVPN_TCPH_GET_DOFF
+(
+d
+è(((dè& 0xF0è>> 2)
+
+	)
+
+145 
+ušt8_t
+ 
+	mdoff_»s
+;
+
+147 
+	#OPENVPN_TCPH_FIN_MASK
+ (1<<0)
+
+	)
+
+148 
+	#OPENVPN_TCPH_SYN_MASK
+ (1<<1)
+
+	)
+
+149 
+	#OPENVPN_TCPH_RST_MASK
+ (1<<2)
+
+	)
+
+150 
+	#OPENVPN_TCPH_PSH_MASK
+ (1<<3)
+
+	)
+
+151 
+	#OPENVPN_TCPH_ACK_MASK
+ (1<<4)
+
+	)
+
+152 
+	#OPENVPN_TCPH_URG_MASK
+ (1<<5)
+
+	)
+
+153 
+	#OPENVPN_TCPH_ECE_MASK
+ (1<<6)
+
+	)
+
+154 
+	#OPENVPN_TCPH_CWR_MASK
+ (1<<7)
+
+	)
+
+155 
+ušt8_t
+ 
+	mæags
+;
+
+157 
+ušt16_t
+ 
+	mwšdow
+;
+
+158 
+ušt16_t
+ 
+	mcheck
+;
+
+159 
+ušt16_t
+ 
+	murg_±r
+;
+
+162 
+	#OPENVPN_TCPOPT_EOL
+ 0
+
+	)
+
+163 
+	#OPENVPN_TCPOPT_NOP
+ 1
+
+	)
+
+164 
+	#OPENVPN_TCPOPT_MAXSEG
+ 2
+
+	)
+
+165 
+	#OPENVPN_TCPOLEN_MAXSEG
+ 4
+
+	)
+
+167 
+	s�_tý_udp_hdr
+ {
+
+168 
+Ý’v²_�hdr
+ 
+	m�
+;
+
+170 
+Ý’v²_týhdr
+ 
+	mtý
+;
+
+171 
+Ý’v²_udphdr
+ 
+	mudp
+;
+
+172 } 
+	mu
+;
+
+175 #´agm¨
+·ck
+()
+
+185 
+	#ADJUST_CHECKSUM
+(
+acc
+, 
+cksum
+) { \
+
+186 
+_acc
+ = 
+acc
+; \
+
+187 
+_acc
+ +ð(
+cksum
+); \
+
+188 ià(
+_acc
+ < 0) { \
+
+189 
+_acc
+ = -_acc; \
+
+190 
+_acc
+ = (_acc >> 16) + (_acc & 0xffff); \
+
+191 
+_acc
+ += _acc >> 16; \
+
+192 (
+cksum
+èð(
+ušt16_t
+è~
+_acc
+; \
+
+194 
+_acc
+ = (_acc >> 16) + (_acc & 0xffff); \
+
+195 
+_acc
+ += _acc >> 16; \
+
+196 (
+cksum
+èð(
+ušt16_t
+è
+_acc
+; \
+
+198 }
+
+	)
+
+200 
+	#ADD_CHECKSUM_32
+(
+acc
+, 
+u32
+) { \
+
+201 
+acc
+ +ð(
+u32
+) & 0xffff; \
+
+202 
+acc
+ +ð(
+u32
+) >> 16; \
+
+203 }
+
+	)
+
+205 
+	#SUB_CHECKSUM_32
+(
+acc
+, 
+u32
+) { \
+
+206 
+acc
+ -ð(
+u32
+) & 0xffff; \
+
+207 
+acc
+ -ð(
+u32
+) >> 16; \
+
+208 }
+
+	)
+
+218 
+	#MTU_TO_MSS
+(
+mtu
+è(mtu - (
+Ý’v²_�hdr
+) \
+
+219 - (
+Ý’v²_týhdr
+))
+
+	)
+
+225 
+boÞ
+ 
+is_�v4
+ (
+tuÂ–_ty³
+, 
+bufãr
+ *
+buf
+);
+
+226 
+boÞ
+ 
+is_�v6
+ (
+tuÂ–_ty³
+, 
+bufãr
+ *
+buf
+);
+
+228 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+229 
+�v4_·ck‘_size_v”ify
+ (cÚ¡ 
+ušt8_t
+ *
+d©a
+,
+
+230 cÚ¡ 
+size
+,
+
+231 cÚ¡ 
+tuÂ–_ty³
+,
+
+233 *
+´efix
+,
+
+234 
+couÁ”_ty³
+ *
+”rÜs
+);
+
+	@proxy.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"commÚ.h
+"
+
+34 
+	~"misc.h
+"
+
+35 
+	~"üy±o.h
+"
+
+36 
+	~"wš32.h
+"
+
+37 
+	~"sock‘.h
+"
+
+38 
+	~"fdmisc.h
+"
+
+39 
+	~"´oxy.h
+"
+
+40 
+	~"ba£64.h
+"
+
+41 
+	~"h‰pdige¡.h
+"
+
+42 
+	~"Álm.h
+"
+
+43 
+	~"memdbg.h
+"
+
+45 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+47 
+	#UP_TYPE_PROXY
+ "HTTP Proxy"
+
+	)
+
+49 
+h‰p_´oxy_ÝtiÚs
+ *
+
+50 
+	$š™_h‰p_´oxy_ÝtiÚs_Úû
+ (
+h‰p_´oxy_ÝtiÚs
+ **
+hpo
+,
+
+51 
+gc_¬’a
+ *
+gc
+)
+
+53 ià(!*
+hpo
+)
+
+55 
+	`ALLOC_OBJ_CLEAR_GC
+ (*
+hpo
+, 
+h‰p_´oxy_ÝtiÚs
+, 
+gc
+);
+
+57 (*
+hpo
+)->
+timeout
+ = 5;
+
+58 (*
+hpo
+)->
+h‰p_v”siÚ
+ = "1.0";
+
+60  *
+hpo
+;
+
+61 
+	}
+}
+
+65 
+u£r_·ss
+ 
+	g¡©ic_´oxy_u£r_·ss
+;
+
+67 
+boÞ
+
+
+68 
+	$»cv_lše
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+69 *
+buf
+,
+
+70 
+Ën
+,
+
+71 cÚ¡ 
+timeout_£c
+,
+
+72 cÚ¡ 
+boÞ
+ 
+v”bo£
+,
+
+73 
+bufãr
+ *
+lookah—d
+,
+
+74 vÞ©ž�*
+sigÇl_»ûived
+)
+
+76 
+bufãr
+ 
+Ï
+;
+
+77 
+Ï¡c
+ = 0;
+
+79 
+	`CLEAR
+ (
+Ï
+);
+
+80 ià(
+lookah—d
+)
+
+81 
+Ï
+ = *
+lookah—d
+;
+
+83 
+Œue
+)
+
+85 
+¡©us
+;
+
+86 
+ssize_t
+ 
+size
+;
+
+87 
+fd_£t
+ 
+»ads
+;
+
+88 
+timev®
+ 
+tv
+;
+
+89 
+ušt8_t
+ 
+c
+;
+
+91 ià(
+	`buf_defšed
+ (&
+Ï
+))
+
+93 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+Ï
+, 0));
+
+96 
+	`FD_ZERO
+ (&
+»ads
+);
+
+97 
+	`FD_SET
+ (
+sd
+, &
+»ads
+);
+
+98 
+tv
+.
+tv_£c
+ = 
+timeout_£c
+;
+
+99 
+tv
+.
+tv_u£c
+ = 0;
+
+101 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, &
+»ads
+, 
+NULL
+, NULL, &
+tv
+);
+
+103 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+104 ià(*
+sigÇl_»ûived
+)
+
+105 
+”rÜ
+;
+
+108 ià(
+¡©us
+ == 0)
+
+110 ià(
+v”bo£
+)
+
+111 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_line: TCP…ort„ead�imeoutƒxpired");
+
+112 
+”rÜ
+;
+
+116 ià(
+¡©us
+ < 0)
+
+118 ià(
+v”bo£
+)
+
+119 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_line: TCP…ort„ead failed on select()");
+
+120 
+”rÜ
+;
+
+124 
+size
+ = 
+	`»cv
+ (
+sd
+, &
+c
+, 1, 
+MSG_NOSIGNAL
+);
+
+127 ià(
+size
+ != 1)
+
+129 ià(
+v”bo£
+)
+
+130 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_line: TCP…ort„ead failed on„ecv()");
+
+131 
+”rÜ
+;
+
+135 ià(
+	`i¥ršt
+(
+c
+))
+
+136 
+	`msg
+ (
+M_INFO
+, "PROXY:„—d '%c' (%d)", 
+c
+, ()c);
+
+138 
+	`msg
+ (
+M_INFO
+, "PROXY:„—d (%d)", ()
+c
+);
+
+142 ià(
+Ën
+ > 1)
+
+144 *
+buf
+++ = 
+c
+;
+
+145 --
+Ën
+;
+
+149 ià(
+	`buf_defšed
+ (&
+Ï
+))
+
+151 
+	`buf_wr™e_u8
+ (&
+Ï
+, 
+c
+);
+
+152 ià(!
+	`i¥ršt
+(
+c
+è&& !
+	`is¥aû
+(c))
+
+154 ià(
+v”bo£
+)
+
+155 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "»cv_lše: NÚ-ASCII ch¬aù” (%dè»ad oÀ»cv()", ()
+c
+);
+
+156 *
+lookah—d
+ = 
+Ï
+;
+
+157  
+çl£
+;
+
+162 ià(
+Ï¡c
+ =ð'\r' && 
+c
+ == '\n')
+
+165 
+Ï¡c
+ = 
+c
+;
+
+169 ià(
+Ën
+ > 0)
+
+170 *
+buf
+++ = '\0';
+
+172  
+Œue
+;
+
+174 
+”rÜ
+:
+
+175  
+çl£
+;
+
+176 
+	}
+}
+
+178 
+boÞ
+
+
+179 
+	$£nd_lše
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+180 cÚ¡ *
+buf
+)
+
+182 cÚ¡ 
+ssize_t
+ 
+size
+ = 
+	`£nd
+ (
+sd
+, 
+buf
+, 
+	`¡¾’
+ (buf), 
+MSG_NOSIGNAL
+);
+
+183 ià(
+size
+ !ð(
+ssize_t
+è
+	`¡¾’
+ (
+buf
+))
+
+185 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "send_line: TCP…ort write failed on send()");
+
+186  
+çl£
+;
+
+188  
+Œue
+;
+
+189 
+	}
+}
+
+191 
+boÞ
+
+
+192 
+	$£nd_lše_ülf
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+193 cÚ¡ *
+¤c
+)
+
+195 
+boÞ
+ 
+»t
+;
+
+197 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf
+ (
+	`¡¾’
+ (
+¤c
+) + 3);
+
+198 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+buf
+, 
+¤c
+, 
+	`¡¾’
+ (src)));
+
+199 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+buf
+, "\r\n", 3));
+
+200 
+»t
+ = 
+	`£nd_lše
+ (
+sd
+, 
+	`BSTR
+ (&
+buf
+));
+
+201 
+	`ä“_buf
+ (&
+buf
+);
+
+202  
+»t
+;
+
+203 
+	}
+}
+
+205 
+boÞ
+
+
+206 
+	$£nd_ülf
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+208  
+	`£nd_lše_ülf
+ (
+sd
+, "");
+
+209 
+	}
+}
+
+211 
+ušt8_t
+ *
+
+212 
+	$make_ba£64_¡ršg2
+ (cÚ¡ 
+ušt8_t
+ *
+¡r
+, 
+¤c_Ën
+, 
+gc_¬’a
+ *
+gc
+)
+
+214 
+ušt8_t
+ *
+»t
+ = 
+NULL
+;
+
+215 *
+b64out
+ = 
+NULL
+;
+
+216 
+	`ASSERT
+ (
+	`Ý’v²_ba£64_’code
+ ((cÚ¡ *)
+¡r
+, 
+¤c_Ën
+, &
+b64out
+) >= 0);
+
+217 
+»t
+ = (
+ušt8_t
+ *è
+	`¡ršg_®loc
+ (
+b64out
+, 
+gc
+);
+
+218 
+	`ä“
+ (
+b64out
+);
+
+219  
+»t
+;
+
+220 
+	}
+}
+
+222 
+ušt8_t
+ *
+
+223 
+	$make_ba£64_¡ršg
+ (cÚ¡ 
+ušt8_t
+ *
+¡r
+, 
+gc_¬’a
+ *
+gc
+)
+
+225  
+	`make_ba£64_¡ršg2
+ (
+¡r
+, 
+	`¡¾’
+ ((cÚ¡ *)¡r), 
+gc
+);
+
+226 
+	}
+}
+
+229 
+	$u£ºame_·sswÜd_as_ba£64
+ (cÚ¡ 
+h‰p_´oxy_šfo
+ *
+p
+,
+
+230 
+gc_¬’a
+ *
+gc
+)
+
+232 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (
+	`¡¾’
+ (
+p
+->
+up
+.
+u£ºame
+è+ sŒËÀÕ->up.
+·sswÜd
+è+ 2, 
+gc
+);
+
+233 
+	`ASSERT
+ (
+	`¡¾’
+ (
+p
+->
+up
+.
+u£ºame
+) > 0);
+
+234 
+	`buf_´štf
+ (&
+out
+, "%s:%s", 
+p
+->
+up
+.
+u£ºame
+,…->up.
+·sswÜd
+);
+
+235  (cÚ¡ *)
+	`make_ba£64_¡ršg
+ ((cÚ¡ 
+ušt8_t
+*)
+	`BSTR
+ (&
+out
+), 
+gc
+);
+
+236 
+	}
+}
+
+239 
+	$g‘_u£r_·ss_h‰p
+ (
+h‰p_´oxy_šfo
+ *
+p
+, cÚ¡ 
+boÞ
+ 
+fÜû
+)
+
+241 ià(!
+¡©ic_´oxy_u£r_·ss
+.
+defšed
+ || 
+fÜû
+)
+
+243 
+æags
+ = 
+GET_USER_PASS_MANAGEMENT
+;
+
+244 ià(
+p
+->
+qu”›d_üeds
+)
+
+245 
+æags
+ |ð
+GET_USER_PASS_PREVIOUS_CREDS_FAILED
+;
+
+246 
+	`g‘_u£r_·ss
+ (&
+¡©ic_´oxy_u£r_·ss
+,
+
+247 
+p
+->
+ÝtiÚs
+.
+auth_fže
+,
+
+248 
+UP_TYPE_PROXY
+,
+
+249 
+æags
+);
+
+250 
+p
+->
+qu”›d_üeds
+ = 
+Œue
+;
+
+251 
+p
+->
+up
+ = 
+¡©ic_´oxy_u£r_·ss
+;
+
+253 
+	}
+}
+
+255 
+	$þ—r_u£r_·ss_h‰p
+ ()
+
+257 
+	`purge_u£r_·ss
+ (&
+¡©ic_´oxy_u£r_·ss
+, 
+Œue
+);
+
+258 
+	}
+}
+
+261 
+	$dump_»sidu®
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+262 
+timeout
+,
+
+263 vÞ©ž�*
+sigÇl_»ûived
+)
+
+265 
+buf
+[256];
+
+266 
+Œue
+)
+
+268 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+,  (buf), 
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+270 
+	`chomp
+ (
+buf
+);
+
+271 
+	`msg
+ (
+D_PROXY
+, "PROXY HEADER: '%s'", 
+buf
+);
+
+273 
+	}
+}
+
+280 
+	$g‘_´oxy_auth’tiÿ‹
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+281 
+timeout
+,
+
+282 **
+d©a
+,
+
+283 
+gc_¬’a
+ *
+gc
+,
+
+284 vÞ©ž�*
+sigÇl_»ûived
+)
+
+286 
+buf
+[256];
+
+287 
+»t
+ = 
+HTTP_AUTH_NONE
+;
+
+288 
+Œue
+)
+
+290 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+,  (buf), 
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+292 *
+d©a
+ = 
+NULL
+;
+
+293  
+HTTP_AUTH_NONE
+;
+
+295 
+	`chomp
+ (
+buf
+);
+
+296 ià(!
+	`¡¾’
+(
+buf
+))
+
+297  
+»t
+;
+
+298 ià(
+»t
+ =ð
+HTTP_AUTH_NONE
+ && !
+	`¡ºcmp
+(
+buf
+, "Proxy-Authenticate: ", 20))
+
+300 ià(!
+	`¡ºcmp
+(
+buf
++20, "Basic ", 6))
+
+302 
+	`msg
+ (
+D_PROXY
+, "PROXY AUTH BASIC: '%s'", 
+buf
+);
+
+303 *
+d©a
+ = 
+	`¡ršg_®loc
+(
+buf
++26, 
+gc
+);
+
+304 
+»t
+ = 
+HTTP_AUTH_BASIC
+;
+
+306 #ià
+PROXY_DIGEST_AUTH
+
+
+307 ià(!
+	`¡ºcmp
+(
+buf
++20, "Digest ", 7))
+
+309 
+	`msg
+ (
+D_PROXY
+, "PROXY AUTH DIGEST: '%s'", 
+buf
+);
+
+310 *
+d©a
+ = 
+	`¡ršg_®loc
+(
+buf
++27, 
+gc
+);
+
+311 
+»t
+ = 
+HTTP_AUTH_DIGEST
+;
+
+314 #ià
+NTLM
+
+
+315 ià(!
+	`¡ºcmp
+(
+buf
++20, "NTLM", 4))
+
+317 
+	`msg
+ (
+D_PROXY
+, "PROXY AUTH HTLM: '%s'", 
+buf
+);
+
+318 *
+d©a
+ = 
+NULL
+;
+
+319 
+»t
+ = 
+HTTP_AUTH_NTLM
+;
+
+324 
+	}
+}
+
+327 
+	$¡Üe_´oxy_auth’tiÿ‹
+ (
+h‰p_´oxy_šfo
+ *
+p
+, *
+d©a
+)
+
+329 ià(
+p
+->
+´oxy_auth’tiÿ‹
+)
+
+330 
+	`ä“
+ (
+p
+->
+´oxy_auth’tiÿ‹
+);
+
+331 
+p
+->
+´oxy_auth’tiÿ‹
+ = 
+d©a
+;
+
+332 
+	}
+}
+
+338 
+boÞ
+
+
+339 
+	$g‘_key_v®ue
+(cÚ¡ *
+¡r
+,
+
+340 *
+key
+,
+
+341 *
+v®ue
+,
+
+342 
+max_key_Ën
+,
+
+343 
+max_v®ue_Ën
+,
+
+344 cÚ¡ **
+’d±r
+)
+
+346 
+c
+;
+
+347 
+boÞ
+ 
+¡¬ts_w™h_quÙe
+ = 
+çl£
+;
+
+348 
+boÞ
+ 
+esÿ³
+ = 
+çl£
+;
+
+350 
+c
+ = 
+max_key_Ën
+-1; (*
+¡r
+ && (*str != '=') && c--); )
+
+351 *
+key
+++ = *
+¡r
+++;
+
+352 *
+key
+ = '\0';
+
+354 if('=' !ð*
+¡r
+++)
+
+356  
+çl£
+;
+
+358 if('\"' =ð*
+¡r
+)
+
+361 
+¡r
+++;
+
+362 
+¡¬ts_w™h_quÙe
+ = 
+Œue
+;
+
+365 
+c
+ = 
+max_v®ue_Ën
+-1; *
+¡r
+ && c--; str++)
+
+367 *
+¡r
+)
+
+370 ià(!
+esÿ³
+)
+
+373 
+esÿ³
+ = 
+Œue
+;
+
+374 *
+v®ue
+++ = '\\';
+
+380 ià(!
+¡¬ts_w™h_quÙe
+)
+
+384 
+c
+=0;
+
+391 
+c
+=0;
+
+394 ià(!
+esÿ³
+ && 
+¡¬ts_w™h_quÙe
+)
+
+397 
+c
+=0;
+
+402 
+esÿ³
+ = 
+çl£
+;
+
+403 *
+v®ue
+++ = *
+¡r
+;
+
+405 *
+v®ue
+ = '\0';
+
+407 *
+’d±r
+ = 
+¡r
+;
+
+409  
+Œue
+;
+
+410 
+	}
+}
+
+413 
+	$g‘_·_v¬
+ (cÚ¡ *
+key
+, cÚ¡ *
+·
+, 
+gc_¬’a
+ *
+gc
+)
+
+415 
+k
+[64];
+
+416 
+v
+[256];
+
+417 cÚ¡ *
+cÚ‹Á
+ = 
+·
+;
+
+419 
+Œue
+)
+
+421 cÚ¡ 
+¡©us
+ = 
+	`g‘_key_v®ue
+(
+cÚ‹Á
+, 
+k
+, 
+v
+, (k), (v), &content);
+
+422 ià(
+¡©us
+)
+
+424 ià(!
+	`¡rcmp
+(
+key
+, 
+k
+))
+
+425  
+	`¡ršg_®loc
+(
+v
+, 
+gc
+);
+
+428  
+NULL
+;
+
+431 ià(*
+cÚ‹Á
+ == ',')
+
+432 ++
+cÚ‹Á
+;
+
+433 *
+cÚ‹Á
+ && 
+	`is¥aû
+(*content))
+
+434 ++
+cÚ‹Á
+;
+
+436 
+	}
+}
+
+438 
+h‰p_´oxy_šfo
+ *
+
+439 
+	$h‰p_´oxy_Ãw
+ (cÚ¡ 
+h‰p_´oxy_ÝtiÚs
+ *
+o
+)
+
+441 
+h‰p_´oxy_šfo
+ *
+p
+;
+
+442 
+h‰p_´oxy_ÝtiÚs
+ 
+Ýt
+;
+
+444 ià(!
+o
+ || !o->
+£rv”
+)
+
+445 
+	`msg
+ (
+M_FATAL
+, "HTTP_PROXY: server‚ot specified");
+
+447 
+	`ASSERT
+ (
+	`Ëg®_�v4_pÜt
+ (
+o
+->
+pÜt
+));
+
+449 
+	`ALLOC_OBJ_CLEAR
+ (
+p
+, 
+h‰p_´oxy_šfo
+);
+
+450 
+p
+->
+ÝtiÚs
+ = *
+o
+;
+
+453 
+p
+->
+auth_m‘hod
+ = 
+HTTP_AUTH_NONE
+;
+
+454 ià(
+o
+->
+auth_m‘hod_¡ršg
+)
+
+456 ià(!
+	`¡rcmp
+ (
+o
+->
+auth_m‘hod_¡ršg
+, "none"))
+
+457 
+p
+->
+auth_m‘hod
+ = 
+HTTP_AUTH_NONE
+;
+
+458 ià(!
+	`¡rcmp
+ (
+o
+->
+auth_m‘hod_¡ršg
+, "basic"))
+
+459 
+p
+->
+auth_m‘hod
+ = 
+HTTP_AUTH_BASIC
+;
+
+460 #ià
+NTLM
+
+
+461 ià(!
+	`¡rcmp
+ (
+o
+->
+auth_m‘hod_¡ršg
+, "ntlm"))
+
+462 
+p
+->
+auth_m‘hod
+ = 
+HTTP_AUTH_NTLM
+;
+
+463 ià(!
+	`¡rcmp
+ (
+o
+->
+auth_m‘hod_¡ršg
+, "ntlm2"))
+
+464 
+p
+->
+auth_m‘hod
+ = 
+HTTP_AUTH_NTLM2
+;
+
+467 
+	`msg
+ (
+M_FATAL
+, "ERROR: unknown HTTP‡uthentication method: '%s'",
+
+468 
+o
+->
+auth_m‘hod_¡ršg
+);
+
+472 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_BASIC
+ ||…->auth_m‘hod =ð
+HTTP_AUTH_NTLM
+ ||…->auth_m‘hod =ð
+HTTP_AUTH_NTLM2
+)
+
+474 
+	`g‘_u£r_·ss_h‰p
+ (
+p
+, 
+Œue
+);
+
+477 #ià!
+NTLM
+
+
+478 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_NTLM
+ ||…->auth_m‘hod =ð
+HTTP_AUTH_NTLM2
+)
+
+479 
+	`msg
+ (
+M_FATAL
+, "SÜry,�hi v”siÚ oà" 
+PACKAGE_NAME
+ " was built without NTLM Proxy support.");
+
+482 
+p
+->
+defšed
+ = 
+Œue
+;
+
+483  
+p
+;
+
+484 
+	}
+}
+
+487 
+	$h‰p_´oxy_þo£
+ (
+h‰p_´oxy_šfo
+ *
+hp
+)
+
+489 
+	`ä“
+ (
+hp
+);
+
+490 
+	}
+}
+
+492 
+boÞ
+
+
+493 
+	$e¡ablish_h‰p_´oxy_·s¡hru
+ (
+h‰p_´oxy_šfo
+ *
+p
+,
+
+494 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+495 cÚ¡ *
+ho¡
+,
+
+496 cÚ¡ 
+pÜt
+,
+
+497 
+bufãr
+ *
+lookah—d
+,
+
+498 vÞ©ž�*
+sigÇl_»ûived
+)
+
+500 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+501 
+buf
+[512];
+
+502 
+buf2
+[129];
+
+503 
+g‘
+[80];
+
+504 
+¡©us
+;
+
+505 
+Å¬ms
+;
+
+506 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+507 
+boÞ
+ 
+´oûs£d
+ = 
+çl£
+;
+
+510 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_BASIC
+
+
+511 || 
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_DIGEST
+
+
+512 || 
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_NTLM
+)
+
+513 
+	`g‘_u£r_·ss_h‰p
+ (
+p
+, 
+çl£
+);
+
+516 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_DIGEST
+ &&…->
+´oxy_auth’tiÿ‹
+)
+
+518 
+Å¬ms
+ = 1;
+
+519 
+¡©us
+ = 407;
+
+524 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "CONNECT %s:%d HTTP/%s",
+
+525 
+ho¡
+,
+
+526 
+pÜt
+,
+
+527 
+p
+->
+ÝtiÚs
+.
+h‰p_v”siÚ
+);
+
+529 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+532 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+533 
+”rÜ
+;
+
+535 
+	`Ý’v²_¢´štf
+(
+buf
+, (buf), "Ho¡: %s", 
+ho¡
+);
+
+536 ià(!
+	`£nd_lše_ülf
+(
+sd
+, 
+buf
+))
+
+537 
+”rÜ
+;
+
+540 ià(
+p
+->
+ÝtiÚs
+.
+u£r_ag’t
+)
+
+542 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "User-Agent: %s",
+
+543 
+p
+->
+ÝtiÚs
+.
+u£r_ag’t
+);
+
+544 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+545 
+”rÜ
+;
+
+549 
+p
+->
+auth_m‘hod
+)
+
+551 
+HTTP_AUTH_NONE
+:
+
+554 
+HTTP_AUTH_BASIC
+:
+
+555 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-Authorization: Basic %s",
+
+556 
+	`u£ºame_·sswÜd_as_ba£64
+ (
+p
+, &
+gc
+));
+
+557 
+	`msg
+ (
+D_PROXY
+, "Attempting Basic Proxy-Authorization");
+
+558 
+	`dmsg
+ (
+D_SHOW_KEYS
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+559 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+560 
+”rÜ
+;
+
+563 #ià
+NTLM
+
+
+564 
+HTTP_AUTH_NTLM
+:
+
+565 
+HTTP_AUTH_NTLM2
+:
+
+567 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-Connection: Keep-Alive");
+
+568 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+569 
+”rÜ
+;
+
+571 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-Authorization: NTLM %s",
+
+572 
+	`Álm_pha£_1
+ (
+p
+, &
+gc
+));
+
+573 
+	`msg
+ (
+D_PROXY
+, "Attempting NTLM Proxy-Authorization…hase 1");
+
+574 
+	`dmsg
+ (
+D_SHOW_KEYS
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+575 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+576 
+”rÜ
+;
+
+581 
+	`ASSERT
+ (0);
+
+585 ià(!
+	`£nd_ülf
+ (
+sd
+))
+
+586 
+”rÜ
+;
+
+589 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+, (buf), 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+590 
+”rÜ
+;
+
+593 
+	`chomp
+ (
+buf
+);
+
+595 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy„‘uºed: '%s'", 
+buf
+);
+
+598 
+Å¬ms
+ = 
+	`ssÿnf
+ (
+buf
+, "%* %d", &
+¡©us
+);
+
+603 
+Å¬ms
+ >ð1 && 
+¡©us
+ == 407)
+
+605 
+	`msg
+ (
+D_PROXY
+, "Proxy„equires‡uthentication");
+
+607 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_BASIC
+ && !
+´oûs£d
+)
+
+609 
+´oûs£d
+ = 
+Œue
+;
+
+611 ià((
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_NTLM
+ ||…->auth_m‘hod =ð
+HTTP_AUTH_NTLM2
+è&& !
+´oûs£d
+)
+
+613 #ià
+NTLM
+
+
+616 
+Œue
+)
+
+618 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+, (buf), 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+619 
+”rÜ
+;
+
+620 
+	`chomp
+ (
+buf
+);
+
+621 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy„‘uºed: '%s'", 
+buf
+);
+
+623 
+	`Ý’v²_¢´štf
+ (
+g‘
+,  g‘, "%%* NTLM %%%ds", (è (
+buf2
+) - 1);
+
+624 
+Å¬ms
+ = 
+	`ssÿnf
+ (
+buf
+, 
+g‘
+, 
+buf2
+);
+
+625 
+buf2
+[128] = 0;
+
+628 ià(
+Å¬ms
+ == 1)
+
+631 
+	`msg
+ (
+D_PROXY
+, "auth sŒšg: '%s'", 
+buf2
+);
+
+636 
+	`msg
+ (
+D_PROXY
+, "Received NTLM Proxy-Authorization…hase 2„esponse");
+
+639 
+	`»cv_lše
+ (
+sd
+, 
+NULL
+, 0, 2, 
+Œue
+, NULL, 
+sigÇl_»ûived
+))
+
+645 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "CONNECT %s:%d HTTP/%s",
+
+646 
+ho¡
+,
+
+647 
+pÜt
+,
+
+648 
+p
+->
+ÝtiÚs
+.
+h‰p_v”siÚ
+);
+
+650 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+653 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+654 
+”rÜ
+;
+
+657 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-Connection: Keep-Alive");
+
+658 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+659 
+”rÜ
+;
+
+663 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Ho¡: %s", 
+ho¡
+);
+
+664 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+665 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+666 
+”rÜ
+;
+
+668 
+	`msg
+ (
+D_PROXY
+, "Attempting NTLM Proxy-Authorization…hase 3");
+
+670 cÚ¡ *
+Å3
+ = 
+	`Álm_pha£_3
+ (
+p
+, 
+buf2
+, &
+gc
+);
+
+671 ià(!
+Å3
+)
+
+673 
+	`msg
+ (
+D_PROXY
+, "NTLM Proxy-Authorization…hase 3 failed:„eceived corrupted data from…roxy server");
+
+674 
+”rÜ
+;
+
+676 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-AuthÜiz©iÚ: NTLM %s", 
+Å3
+);
+
+679 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+680 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+681 
+”rÜ
+;
+
+684 ià(!
+	`£nd_ülf
+ (
+sd
+))
+
+685 
+”rÜ
+;
+
+688 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+, (buf), 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+689 
+”rÜ
+;
+
+692 
+	`chomp
+ (
+buf
+);
+
+694 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy„‘uºed: '%s'", 
+buf
+);
+
+697 
+Å¬ms
+ = 
+	`ssÿnf
+ (
+buf
+, "%* %d", &
+¡©us
+);
+
+698 
+´oûs£d
+ = 
+Œue
+;
+
+701 #ià
+PROXY_DIGEST_AUTH
+
+
+702 ià(
+p
+->
+auth_m‘hod
+ =ð
+HTTP_AUTH_DIGEST
+ && !
+´oûs£d
+)
+
+704 *
+·
+ = 
+p
+->
+´oxy_auth’tiÿ‹
+;
+
+705 cÚ¡ 
+m‘hod
+ = 
+p
+->
+auth_m‘hod
+;
+
+706 
+	`ASSERT
+(
+·
+);
+
+708 ià(
+m‘hod
+ =ð
+HTTP_AUTH_DIGEST
+)
+
+710 cÚ¡ *
+h‰p_m‘hod
+ = "CONNECT";
+
+711 cÚ¡ *
+nÚû_couÁ
+ = "00000001";
+
+712 cÚ¡ *
+qÝ
+ = "auth";
+
+713 cÚ¡ *
+u£ºame
+ = 
+p
+->
+up
+.username;
+
+714 cÚ¡ *
+·sswÜd
+ = 
+p
+->
+up
+.password;
+
+715 *
+Ýaque_kv
+ = "";
+
+716 
+uri
+[128];
+
+717 
+ušt8_t
+ 
+úÚû_¿w
+[8];
+
+718 
+ušt8_t
+ *
+úÚû
+;
+
+719 
+HASHHEX
+ 
+£ssiÚ_key
+;
+
+720 
+HASHHEX
+ 
+»¥Ú£
+;
+
+722 cÚ¡ *
+»®m
+ = 
+	`g‘_·_v¬
+("»®m", 
+·
+, &
+gc
+);
+
+723 cÚ¡ *
+nÚû
+ = 
+	`g‘_·_v¬
+("nÚû", 
+·
+, &
+gc
+);
+
+724 cÚ¡ *
+®gÜ
+ = 
+	`g‘_·_v¬
+("®gÜ™hm", 
+·
+, &
+gc
+);
+
+725 cÚ¡ *
+Ýaque
+ = 
+	`g‘_·_v¬
+("Ýaque", 
+·
+, &
+gc
+);
+
+728 
+	`ASSERT
+(
+	`¿nd_by‹s
+(
+úÚû_¿w
+, (cnonce_raw)));
+
+729 
+úÚû
+ = 
+	`make_ba£64_¡ršg2
+(
+úÚû_¿w
+, (úÚû_¿w), &
+gc
+);
+
+733 
+	`Ý’v²_¢´štf
+ (
+uri
+, (uri), "%s:%d",
+
+734 
+ho¡
+,
+
+735 
+pÜt
+);
+
+737 ià(
+Ýaque
+)
+
+739 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+(
+Ýaque
+)+16;
+
+740 
+Ýaque_kv
+ = 
+	`gc_m®loc
+(
+Ën
+, 
+çl£
+, &
+gc
+);
+
+741 
+	`Ý’v²_¢´štf
+ (
+Ýaque_kv
+, 
+Ën
+, ", o·que=\"%s\"", 
+Ýaque
+);
+
+744 
+	`Dige¡C®cHA1
+(
+®gÜ
+,
+
+745 
+u£ºame
+,
+
+746 
+»®m
+,
+
+747 
+·sswÜd
+,
+
+748 
+nÚû
+,
+
+749 (*)
+úÚû
+,
+
+750 
+£ssiÚ_key
+);
+
+751 
+	`Dige¡C®cRe¥Ú£
+(
+£ssiÚ_key
+,
+
+752 
+nÚû
+,
+
+753 
+nÚû_couÁ
+,
+
+754 (*)
+úÚû
+,
+
+755 
+qÝ
+,
+
+756 
+h‰p_m‘hod
+,
+
+757 
+uri
+,
+
+758 
+NULL
+,
+
+759 
+»¥Ú£
+);
+
+762 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "%s %s HTTP/%s",
+
+763 
+h‰p_m‘hod
+,
+
+764 
+uri
+,
+
+765 
+p
+->
+ÝtiÚs
+.
+h‰p_v”siÚ
+);
+
+767 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+770 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+771 
+”rÜ
+;
+
+774 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Ho¡: %s", 
+ho¡
+);
+
+775 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+776 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+777 
+”rÜ
+;
+
+780 
+	`Ý’v²_¢´štf
+ (
+buf
+, (buf), "Proxy-Authorization: Digest username=\"%s\",„ealm=\"%s\",‚once=\"%s\", uri=\"%s\", qop=%s,‚c=%s, cnonce=\"%s\",„esponse=\"%s\"%s",
+
+781 
+u£ºame
+,
+
+782 
+»®m
+,
+
+783 
+nÚû
+,
+
+784 
+uri
+,
+
+785 
+qÝ
+,
+
+786 
+nÚû_couÁ
+,
+
+787 
+úÚû
+,
+
+788 
+»¥Ú£
+,
+
+789 
+Ýaque_kv
+
+
+791 
+	`msg
+ (
+D_PROXY
+, "S’d�ØHTTP…roxy: '%s'", 
+buf
+);
+
+792 ià(!
+	`£nd_lše_ülf
+ (
+sd
+, 
+buf
+))
+
+793 
+”rÜ
+;
+
+794 ià(!
+	`£nd_ülf
+ (
+sd
+))
+
+795 
+”rÜ
+;
+
+798 ià(!
+	`»cv_lše
+ (
+sd
+, 
+buf
+, (buf), 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+Œue
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+799 
+”rÜ
+;
+
+802 
+	`chomp
+ (
+buf
+);
+
+804 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy„‘uºed: '%s'", 
+buf
+);
+
+807 
+Å¬ms
+ = 
+	`ssÿnf
+ (
+buf
+, "%* %d", &
+¡©us
+);
+
+808 
+´oûs£d
+ = 
+Œue
+;
+
+812 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy: digest method‚ot supported");
+
+813 
+”rÜ
+;
+
+817 ià(
+p
+->
+ÝtiÚs
+.
+auth_»Œy
+)
+
+820 *
+·
+ = 
+NULL
+;
+
+821 cÚ¡ 
+m‘hod
+ = 
+	`g‘_´oxy_auth’tiÿ‹
+(
+sd
+,
+
+822 
+p
+->
+ÝtiÚs
+.
+timeout
+,
+
+823 &
+·
+,
+
+824 
+NULL
+,
+
+825 
+sigÇl_»ûived
+);
+
+826 ià(
+m‘hod
+ !ð
+HTTP_AUTH_NONE
+)
+
+828 ià(
+·
+)
+
+829 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy‡uth’tiÿ‹ '%s'", 
+·
+);
+
+830 ià(
+p
+->
+ÝtiÚs
+.
+auth_»Œy
+ =ð
+PAR_NCT
+ && 
+m‘hod
+ =ð
+HTTP_AUTH_BASIC
+)
+
+832 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy: support for basic‡uth‡nd other cleartext…roxy‡uth methods is disabled");
+
+833 
+”rÜ
+;
+
+835 
+p
+->
+auth_m‘hod
+ = 
+m‘hod
+;
+
+836 
+	`¡Üe_´oxy_auth’tiÿ‹
+(
+p
+, 
+·
+);
+
+837 
+»t
+ = 
+Œue
+;
+
+838 
+dÚe
+;
+
+842 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy: do‚ot„ecognize�he‡uthentication method„equired by…roxy");
+
+843 
+	`ä“
+ (
+·
+);
+
+844 
+”rÜ
+;
+
+849 ià(!
+´oûs£d
+)
+
+850 
+	`msg
+ (
+D_PROXY
+, "HTTP…roxy:‚o support for…roxy‡uthentication method");
+
+851 
+”rÜ
+;
+
+855 ià(
+p
+->
+ÝtiÚs
+.
+auth_»Œy
+)
+
+856 
+	`þ—r_u£r_·ss_h‰p
+();
+
+857 
+	`¡Üe_´oxy_auth’tiÿ‹
+(
+p
+, 
+NULL
+);
+
+861 ià(
+Å¬ms
+ < 1 || 
+¡©us
+ != 200)
+
+863 
+	`msg
+ (
+D_LINK_ERRORS
+, "HTTP…roxy„eturned bad status");
+
+866 
+	`dump_»sidu®
+(
+sd
+, 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+sigÇl_»ûived
+);
+
+868 
+”rÜ
+;
+
+874 ià(!
+	`»cv_lše
+ (
+sd
+, 
+NULL
+, 0, 
+p
+->
+ÝtiÚs
+.
+timeout
+, 
+Œue
+, NULL, 
+sigÇl_»ûived
+))
+
+875 
+”rÜ
+;
+
+881 
+	`»cv_lše
+ (
+sd
+, 
+NULL
+, 0, 2, 
+çl£
+, 
+lookah—d
+, 
+sigÇl_»ûived
+))
+
+885 
+p
+->
+qu”›d_üeds
+ = 
+çl£
+;
+
+888 ià(
+lookah—d
+ && 
+	`BLEN
+ (lookahead))
+
+889 
+	`msg
+ (
+M_INFO
+, "HTTP PROXY:†ookah—d: %s", 
+	`fÜm©_hex
+ (
+	`BPTR
+ (
+lookah—d
+), 
+	`BLEN
+ (lookahead), 0));
+
+892 
+dÚe
+:
+
+893 
+	`gc_ä“
+ (&
+gc
+);
+
+894  
+»t
+;
+
+896 
+”rÜ
+:
+
+898 ià(!*
+sigÇl_»ûived
+)
+
+899 *
+sigÇl_»ûived
+ = (
+p
+->
+ÝtiÚs
+.
+»Œy
+ ? 
+SIGUSR1
+ : 
+SIGTERM
+);
+
+900 
+	`gc_ä“
+ (&
+gc
+);
+
+901  
+»t
+;
+
+902 
+	}
+}
+
+905 
+	$dummy
+(è{
+	}
+}
+
+	@proxy.h
+
+25 #iâdeà
+PROXY_H
+
+
+26 
+	#PROXY_H
+
+
+	)
+
+28 
+	~"bufãr.h
+"
+
+29 
+	~"misc.h
+"
+
+31 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+34 
+	#HTTP_AUTH_NONE
+ 0
+
+	)
+
+35 
+	#HTTP_AUTH_BASIC
+ 1
+
+	)
+
+36 
+	#HTTP_AUTH_DIGEST
+ 2
+
+	)
+
+37 
+	#HTTP_AUTH_NTLM
+ 3
+
+	)
+
+38 
+	#HTTP_AUTH_NTLM2
+ 4
+
+	)
+
+39 
+	#HTTP_AUTH_N
+ 5
+
+	)
+
+41 
+	sh‰p_´oxy_ÝtiÚs
+ {
+
+42 cÚ¡ *
+	m£rv”
+;
+
+43 
+	mpÜt
+;
+
+44 
+boÞ
+ 
+	m»Œy
+;
+
+45 
+	mtimeout
+;
+
+47 
+	#PAR_NO
+ 0
+
+	)
+
+48 
+	#PAR_ALL
+ 1
+
+	)
+
+49 
+	#PAR_NCT
+ 2
+
+	)
+
+50 
+	mauth_»Œy
+;
+
+52 cÚ¡ *
+	mauth_m‘hod_¡ršg
+;
+
+53 cÚ¡ *
+	mauth_fže
+;
+
+54 cÚ¡ *
+	mh‰p_v”siÚ
+;
+
+55 cÚ¡ *
+	mu£r_ag’t
+;
+
+58 
+	sh‰p_´oxy_ÝtiÚs_sim¶e
+ {
+
+59 cÚ¡ *
+	m£rv”
+;
+
+60 
+	mpÜt
+;
+
+61 
+	mauth_»Œy
+;
+
+64 
+	sh‰p_´oxy_šfo
+ {
+
+65 
+boÞ
+ 
+	mdefšed
+;
+
+66 
+	mauth_m‘hod
+;
+
+67 
+h‰p_´oxy_ÝtiÚs
+ 
+	mÝtiÚs
+;
+
+68 
+u£r_·ss
+ 
+	mup
+;
+
+69 *
+	m´oxy_auth’tiÿ‹
+;
+
+70 
+boÞ
+ 
+	mqu”›d_üeds
+;
+
+73 
+h‰p_´oxy_ÝtiÚs
+ *
+š™_h‰p_´oxy_ÝtiÚs_Úû
+ (h‰p_´oxy_ÝtiÚ **
+hpo
+,
+
+74 
+gc_¬’a
+ *
+gc
+);
+
+76 
+h‰p_´oxy_šfo
+ *
+h‰p_´oxy_Ãw
+ (cÚ¡ 
+h‰p_´oxy_ÝtiÚs
+ *
+o
+);
+
+78 
+h‰p_´oxy_þo£
+ (
+h‰p_´oxy_šfo
+ *
+hp
+);
+
+80 
+boÞ
+ 
+e¡ablish_h‰p_´oxy_·s¡hru
+ (
+h‰p_´oxy_šfo
+ *
+p
+,
+
+81 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+82 cÚ¡ *
+ho¡
+,
+
+83 cÚ¡ 
+pÜt
+,
+
+84 
+bufãr
+ *
+lookah—d
+,
+
+85 vÞ©ž�*
+sigÇl_»ûived
+);
+
+87 
+ušt8_t
+ *
+make_ba£64_¡ršg2
+ (cÚ¡ ušt8_ˆ*
+¡r
+, 
+¡r_Ën
+, 
+gc_¬’a
+ *
+gc
+);
+
+88 
+ušt8_t
+ *
+make_ba£64_¡ršg
+ (cÚ¡ ušt8_ˆ*
+¡r
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@ps.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+PORT_SHARE
+
+
+35 
+	~"ev’t.h
+"
+
+36 
+	~"sock‘.h
+"
+
+37 
+	~"fdmisc.h
+"
+
+38 
+	~"üy±o.h
+"
+
+39 
+	~"ps.h
+"
+
+41 
+	~"memdbg.h
+"
+
+43 
+pÜt_sh¬e
+ *
+	gpÜt_sh¬e
+ = 
+NULL
+;
+
+46 
+	#PROXY_CONNECTION_BUFFER_SIZE
+ 1500
+
+	)
+
+49 
+	#COMMAND_REDIRECT
+ 10
+
+	)
+
+50 
+	#COMMAND_EXIT
+ 11
+
+	)
+
+53 
+	#RESPONSE_INIT_SUCCEEDED
+ 20
+
+	)
+
+54 
+	#RESPONSE_INIT_FAILED
+ 21
+
+	)
+
+60 
+	#IOSTAT_EAGAIN_ON_READ
+ 0
+
+	)
+
+61 
+	#IOSTAT_EAGAIN_ON_WRITE
+ 1
+
+	)
+
+62 
+	#IOSTAT_READ_ERROR
+ 2
+
+	)
+
+63 
+	#IOSTAT_WRITE_ERROR
+ 3
+
+	)
+
+64 
+	#IOSTAT_GOOD
+ 4
+
+	)
+
+70 
+	s´oxy_cÚÃùiÚ
+ {
+
+71 
+boÞ
+ 
+	mdefšed
+;
+
+72 
+´oxy_cÚÃùiÚ
+ *
+	mÃxt
+;
+
+73 
+´oxy_cÚÃùiÚ
+ *
+	mcouÁ”·¹
+;
+
+74 
+bufãr
+ 
+	mbuf
+;
+
+75 
+boÞ
+ 
+	mbufãr_š™Ÿl
+;
+
+76 
+	mrwæags
+;
+
+77 
+	msd
+;
+
+78 *
+	mjâ
+;
+
+83 
+	$h—dc
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+85 
+foo
+[16];
+
+86 
+	`¡ºýy
+ (
+foo
+, 
+	`BSTR
+(
+buf
+), 15);
+
+87 
+foo
+[15] = 0;
+
+88  
+foo
+;
+
+89 
+	}
+}
+
+92 
+šlše
+ 
+
+93 
+	$þo£_sock‘_if_defšed
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+95 ià(
+	`sock‘_defšed
+ (
+sd
+))
+
+96 
+	`Ý’v²_þo£_sock‘
+ (
+sd
+);
+
+97 
+	}
+}
+
+110 
+	$þo£_fds_exû±
+ (
+k“p
+)
+
+112 
+sock‘_desü�tÜ_t
+ 
+i
+;
+
+113 
+	`þo£log
+ ();
+
+114 
+i
+ = 3; i <= 100; ++i)
+
+116 ià(
+i
+ !ð
+k“p
+)
+
+117 
+	`Ý’v²_þo£_sock‘
+ (
+i
+);
+
+119 
+	}
+}
+
+126 
+	$£t_sigÇls
+ ()
+
+128 
+	`sigÇl
+ (
+SIGTERM
+, 
+SIG_DFL
+);
+
+130 
+	`sigÇl
+ (
+SIGINT
+, 
+SIG_IGN
+);
+
+131 
+	`sigÇl
+ (
+SIGHUP
+, 
+SIG_IGN
+);
+
+132 
+	`sigÇl
+ (
+SIGUSR1
+, 
+SIG_IGN
+);
+
+133 
+	`sigÇl
+ (
+SIGUSR2
+, 
+SIG_IGN
+);
+
+134 
+	`sigÇl
+ (
+SIGPIPE
+, 
+SIG_IGN
+);
+
+135 
+	}
+}
+
+142 
+	$»cv_cÚŒÞ
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+fd
+)
+
+144 
+c
+;
+
+145 cÚ¡ 
+ssize_t
+ 
+size
+ = 
+	`»ad
+ (
+fd
+, &
+c
+,  (c));
+
+146 ià(
+size
+ =ð (
+c
+))
+
+147  
+c
+;
+
+152 
+	}
+}
+
+155 
+	$£nd_cÚŒÞ
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+fd
+, 
+code
+)
+
+157 
+c
+ = (è
+code
+;
+
+158 cÚ¡ 
+ssize_t
+ 
+size
+ = 
+	`wr™e
+ (
+fd
+, &
+c
+,  (c));
+
+159 ià(
+size
+ =ð (
+c
+))
+
+160  (è
+size
+;
+
+163 
+	}
+}
+
+166 
+	$cmsg_size
+ ()
+
+168  
+	`CMSG_SPACE
+((
+sock‘_desü�tÜ_t
+));
+
+169 
+	}
+}
+
+179 
+	$pÜt_sh¬e_£ndmsg
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+180 cÚ¡ 
+commªd
+,
+
+181 cÚ¡ 
+bufãr
+ *
+h—d
+,
+
+182 cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd_£nd
+)
+
+184 ià(
+	`sock‘_defšed
+ (
+sd
+))
+
+186 
+msghdr
+ 
+mesg
+;
+
+187 
+cmsghdr
+* 
+h
+;
+
+188 
+iovec
+ 
+iov
+[2];
+
+189 
+sock‘_desü�tÜ_t
+ 
+sd_nuÎ
+[2] = { 
+SOCKET_UNDEFINED
+, SOCKET_UNDEFINED };
+
+190 
+cmd
+;
+
+191 
+ssize_t
+ 
+¡©us
+;
+
+193 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE: sendmsg sd=%d†en=%d",
+
+194 ()
+sd_£nd
+,
+
+195 
+h—d
+ ? 
+	`BLEN
+(head) : -1);
+
+197 
+	`CLEAR
+ (
+mesg
+);
+
+199 
+cmd
+ = 
+commªd
+;
+
+201 
+iov
+[0].
+iov_ba£
+ = &
+cmd
+;
+
+202 
+iov
+[0].
+iov_Ën
+ =  (
+cmd
+);
+
+203 
+mesg
+.
+msg_iovËn
+ = 1;
+
+205 ià(
+h—d
+)
+
+207 
+iov
+[1].
+iov_ba£
+ = 
+	`BPTR
+ (
+h—d
+);
+
+208 
+iov
+[1].
+iov_Ën
+ = 
+	`BLEN
+ (
+h—d
+);
+
+209 
+mesg
+.
+msg_iovËn
+ = 2;
+
+212 
+mesg
+.
+msg_iov
+ = 
+iov
+;
+
+214 
+mesg
+.
+msg_cÚŒÞËn
+ = 
+	`cmsg_size
+ ();
+
+215 
+mesg
+.
+msg_cÚŒÞ
+ = (*è
+	`m®loc
+ (mesg.
+msg_cÚŒÞËn
+);
+
+216 
+	`check_m®loc_»tuº
+ (
+mesg
+.
+msg_cÚŒÞ
+);
+
+217 
+mesg
+.
+msg_æags
+ = 0;
+
+219 
+h
+ = 
+	`CMSG_FIRSTHDR
+(&
+mesg
+);
+
+220 
+h
+->
+cmsg_Ëv–
+ = 
+SOL_SOCKET
+;
+
+221 
+h
+->
+cmsg_ty³
+ = 
+SCM_RIGHTS
+;
+
+222 
+h
+->
+cmsg_Ën
+ = 
+	`CMSG_LEN
+((
+sock‘_desü�tÜ_t
+));
+
+224 ià(
+	`sock‘_defšed
+ (
+sd_£nd
+))
+
+226 *((
+sock‘_desü�tÜ_t
+*)
+	`CMSG_DATA
+(
+h
+)èð
+sd_£nd
+;
+
+230 
+	`sock‘·œ
+ (
+PF_UNIX
+, 
+SOCK_DGRAM
+, 0, 
+sd_nuÎ
+);
+
+231 *((
+sock‘_desü�tÜ_t
+*)
+	`CMSG_DATA
+(
+h
+)èð
+sd_nuÎ
+[0];
+
+234 
+¡©us
+ = 
+	`£ndmsg
+ (
+sd
+, &
+mesg
+, 
+MSG_NOSIGNAL
+);
+
+235 ià(
+¡©us
+ == -1)
+
+236 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "PORT SHARE: sendmsg failed -- unable�o communicate with background…rocess (%d,%d,%d,%d)",
+
+237 
+sd
+, 
+sd_£nd
+, 
+sd_nuÎ
+[0], sd_null[1]
+
+240 
+	`þo£_sock‘_if_defšed
+ (
+sd_nuÎ
+[0]);
+
+241 
+	`þo£_sock‘_if_defšed
+ (
+sd_nuÎ
+[1]);
+
+242 
+	`ä“
+ (
+mesg
+.
+msg_cÚŒÞ
+);
+
+244 
+	}
+}
+
+247 
+	$´oxy_’Œy_þo£_sd
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+, 
+ev’t_£t
+ *
+es
+)
+
+249 ià(
+pc
+->
+defšed
+ && 
+	`sock‘_defšed
+ (pc->
+sd
+))
+
+251 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: d–‘�sd=%d", ()
+pc
+->
+sd
+);
+
+252 ià(
+es
+)
+
+253 
+	`ev’t_d–
+ (
+es
+, 
+pc
+->
+sd
+);
+
+254 
+	`Ý’v²_þo£_sock‘
+ (
+pc
+->
+sd
+);
+
+255 
+pc
+->
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+257 
+	}
+}
+
+263 
+	$´oxy_’Œy_m¬k_fÜ_þo£
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+, 
+ev’t_£t
+ *
+es
+)
+
+265 ià(
+pc
+->
+defšed
+)
+
+267 
+´oxy_cÚÃùiÚ
+ *
+ý
+ = 
+pc
+->
+couÁ”·¹
+;
+
+268 
+	`´oxy_’Œy_þo£_sd
+ (
+pc
+, 
+es
+);
+
+269 
+	`ä“_buf
+ (&
+pc
+->
+buf
+);
+
+270 
+pc
+->
+bufãr_š™Ÿl
+ = 
+çl£
+;
+
+271 
+pc
+->
+rwæags
+ = 0;
+
+272 
+pc
+->
+defšed
+ = 
+çl£
+;
+
+273 ià(
+pc
+->
+jâ
+)
+
+275 
+	`uÆšk
+ (
+pc
+->
+jâ
+);
+
+276 
+	`ä“
+ (
+pc
+->
+jâ
+);
+
+277 
+pc
+->
+jâ
+ = 
+NULL
+;
+
+279 ià(
+ý
+ && cp->
+defšed
+ && cp->
+couÁ”·¹
+ =ð
+pc
+)
+
+280 
+	`´oxy_’Œy_m¬k_fÜ_þo£
+ (
+ý
+, 
+es
+);
+
+282 
+	}
+}
+
+289 
+	$´oxy_li¡_hou£k“pšg
+ (
+´oxy_cÚÃùiÚ
+ **
+li¡
+)
+
+291 ià(
+li¡
+)
+
+293 
+´oxy_cÚÃùiÚ
+ *
+´ev
+ = 
+NULL
+;
+
+294 
+´oxy_cÚÃùiÚ
+ *
+pc
+ = *
+li¡
+;
+
+296 
+pc
+)
+
+298 
+´oxy_cÚÃùiÚ
+ *
+Ãxt
+ = 
+pc
+->next;
+
+299 ià(!
+pc
+->
+defšed
+)
+
+301 
+	`ä“
+ (
+pc
+);
+
+302 ià(
+´ev
+)
+
+303 
+´ev
+->
+Ãxt
+ =‚ext;
+
+305 *
+li¡
+ = 
+Ãxt
+;
+
+308 
+´ev
+ = 
+pc
+;
+
+309 
+pc
+ = 
+Ãxt
+;
+
+312 
+	}
+}
+
+319 
+	$jouº®_add
+ (cÚ¡ *
+jouº®_dœ
+, 
+´oxy_cÚÃùiÚ
+ *
+pc
+, ´oxy_cÚÃùiÚ *
+ý
+)
+
+321 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+322 
+Ý’v²_sockaddr
+ 
+äom
+, 
+to
+;
+
+323 
+sockËn_t
+ 
+¦’
+, 
+dËn
+;
+
+324 
+âËn
+;
+
+325 *
+jâ
+;
+
+326 
+fd
+;
+
+328 
+¦’
+ = (
+äom
+.
+addr
+.
+§
+);
+
+329 
+dËn
+ = (
+to
+.
+addr
+.
+§
+);
+
+330 ià(!
+	`g‘³”Çme
+ (
+pc
+->
+sd
+, (
+sockaddr
+ *è&
+äom
+.
+addr
+.
+§
+, &
+¦’
+)
+
+331 && !
+	`g‘sockÇme
+ (
+ý
+->
+sd
+, (
+sockaddr
+ *è&
+to
+.
+addr
+.
+§
+, &
+dËn
+))
+
+333 cÚ¡ *
+f
+ = 
+	`´št_sockaddr_ex
+ (&
+äom
+, ":", 
+PS_SHOW_PORT
+, &
+gc
+);
+
+334 cÚ¡ *
+t
+ = 
+	`´št_sockaddr_ex
+ (&
+to
+, ":", 
+PS_SHOW_PORT
+, &
+gc
+);
+
+335 
+âËn
+ = 
+	`¡¾’
+(
+jouº®_dœ
+è+ sŒËn(
+t
+) + 2;
+
+336 
+jâ
+ = (*è
+	`m®loc
+(
+âËn
+);
+
+337 
+	`check_m®loc_»tuº
+ (
+jâ
+);
+
+338 
+	`Ý’v²_¢´štf
+ (
+jâ
+, 
+âËn
+, "%s/%s", 
+jouº®_dœ
+, 
+t
+);
+
+339 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: cl›Á origš % -> %s", 
+jâ
+, 
+f
+);
+
+340 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+jâ
+, 
+O_CREAT
+ | 
+O_TRUNC
+ | 
+O_WRONLY
+, 
+S_IRUSR
+ | 
+S_IWUSR
+ | 
+S_IRGRP
+);
+
+341 ià(
+fd
+ != -1)
+
+343 
+	`wr™e
+(
+fd
+, 
+f
+, 
+	`¡¾’
+(f));
+
+344 
+	`þo£
+ (
+fd
+);
+
+345 
+ý
+->
+jâ
+ = jfn;
+
+349 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "PORT SHARE: uÇbË�Øwr™�jouº® fž�š %s", 
+jâ
+);
+
+350 
+	`ä“
+ (
+jâ
+);
+
+353 
+	`gc_ä“
+ (&
+gc
+);
+
+354 
+	}
+}
+
+360 
+	$´oxy_li¡_þo£
+ (
+´oxy_cÚÃùiÚ
+ **
+li¡
+)
+
+362 ià(
+li¡
+)
+
+364 
+´oxy_cÚÃùiÚ
+ *
+pc
+ = *
+li¡
+;
+
+365 
+pc
+)
+
+367 
+	`´oxy_’Œy_m¬k_fÜ_þo£
+ (
+pc
+, 
+NULL
+);
+
+368 
+pc
+ =…c->
+Ãxt
+;
+
+370 
+	`´oxy_li¡_hou£k“pšg
+ (
+li¡
+);
+
+372 
+	}
+}
+
+375 
+	$sock_addr_£t
+ (
+Ý’v²_sockaddr
+ *
+o§ddr
+,
+
+376 cÚ¡ 
+š_addr_t
+ 
+addr
+,
+
+377 cÚ¡ 
+pÜt
+)
+
+379 
+	`CLEAR
+ (*
+o§ddr
+);
+
+380 
+o§ddr
+->
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+381 
+o§ddr
+->
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (addr);
+
+382 
+o§ddr
+->
+addr
+.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (
+pÜt
+);
+
+383 
+	}
+}
+
+385 
+šlše
+ 
+
+386 
+	$´oxy_cÚÃùiÚ_io_»queue
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+, cÚ¡ 
+rwæags_Ãw
+, 
+ev’t_£t
+ *
+es
+)
+
+388 ià(
+	`sock‘_defšed
+ (
+pc
+->
+sd
+è&&…c->
+rwæags
+ !ð
+rwæags_Ãw
+)
+
+391 
+	`ev’t_ùl
+ (
+es
+, 
+pc
+->
+sd
+, 
+rwæags_Ãw
+, (*)pc);
+
+392 
+pc
+->
+rwæags
+ = 
+rwæags_Ãw
+;
+
+394 
+	}
+}
+
+403 
+boÞ
+
+
+404 
+	$´oxy_’Œy_Ãw
+ (
+´oxy_cÚÃùiÚ
+ **
+li¡
+,
+
+405 
+ev’t_£t
+ *
+es
+,
+
+406 cÚ¡ 
+š_addr_t
+ 
+£rv”_addr
+,
+
+407 cÚ¡ 
+£rv”_pÜt
+,
+
+408 cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd_þ›Á
+,
+
+409 
+bufãr
+ *
+š™Ÿl_d©a
+,
+
+410 cÚ¡ *
+jouº®_dœ
+)
+
+412 
+Ý’v²_sockaddr
+ 
+o§ddr
+;
+
+413 
+sock‘_desü�tÜ_t
+ 
+sd_£rv”
+;
+
+414 
+¡©us
+;
+
+415 
+´oxy_cÚÃùiÚ
+ *
+pc
+;
+
+416 
+´oxy_cÚÃùiÚ
+ *
+ý
+;
+
+419 
+	`sock_addr_£t
+ (&
+o§ddr
+, 
+£rv”_addr
+, 
+£rv”_pÜt
+);
+
+420 ià((
+sd_£rv”
+ = 
+	`sock‘
+ (
+PF_INET
+, 
+SOCK_STREAM
+, 
+IPPROTO_TCP
+)) < 0)
+
+422 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "PORT SHARE PROXY: cannot create socket");
+
+423  
+çl£
+;
+
+425 
+¡©us
+ = 
+	`Ý’v²_cÚÃù
+ (
+sd_£rv”
+, &
+o§ddr
+, 5, 
+NULL
+);
+
+426 ià(
+¡©us
+)
+
+428 
+	`msg
+ (
+M_WARN
+, "PORT SHARE PROXY: connect�o…ort-share server failed");
+
+429 
+	`Ý’v²_þo£_sock‘
+ (
+sd_£rv”
+);
+
+430  
+çl£
+;
+
+432 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: connect�o…ort-share server succeeded");
+
+434 
+	`£t_nÚblock
+ (
+sd_þ›Á
+);
+
+435 
+	`£t_nÚblock
+ (
+sd_£rv”
+);
+
+438 
+	`ALLOC_OBJ_CLEAR
+ (
+pc
+, 
+´oxy_cÚÃùiÚ
+);
+
+439 
+	`ALLOC_OBJ_CLEAR
+ (
+ý
+, 
+´oxy_cÚÃùiÚ
+);
+
+442 
+pc
+->
+defšed
+ = 
+Œue
+;
+
+443 
+pc
+->
+Ãxt
+ = 
+ý
+;
+
+444 
+pc
+->
+couÁ”·¹
+ = 
+ý
+;
+
+445 
+pc
+->
+buf
+ = *
+š™Ÿl_d©a
+;
+
+446 
+pc
+->
+bufãr_š™Ÿl
+ = 
+Œue
+;
+
+447 
+pc
+->
+rwæags
+ = 
+EVENT_UNDEF
+;
+
+448 
+pc
+->
+sd
+ = 
+sd_þ›Á
+;
+
+451 
+ý
+->
+defšed
+ = 
+Œue
+;
+
+452 
+ý
+->
+Ãxt
+ = *
+li¡
+;
+
+453 
+ý
+->
+couÁ”·¹
+ = 
+pc
+;
+
+454 
+ý
+->
+buf
+ = 
+	`®loc_buf
+ (
+PROXY_CONNECTION_BUFFER_SIZE
+);
+
+455 
+ý
+->
+bufãr_š™Ÿl
+ = 
+çl£
+;
+
+456 
+ý
+->
+rwæags
+ = 
+EVENT_UNDEF
+;
+
+457 
+ý
+->
+sd
+ = 
+sd_£rv”
+;
+
+460 *
+li¡
+ = 
+pc
+;
+
+463 ià(
+jouº®_dœ
+)
+
+464 
+	`jouº®_add
+ (
+jouº®_dœ
+, 
+pc
+, 
+ý
+);
+
+466 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: NEW CONNECTION [c=%d s=%d]", ()
+sd_þ›Á
+, ()
+sd_£rv”
+);
+
+469 
+	`´oxy_cÚÃùiÚ_io_»queue
+ (
+pc
+, 
+EVENT_READ
+, 
+es
+);
+
+470 
+	`´oxy_cÚÃùiÚ_io_»queue
+ (
+ý
+, 
+EVENT_READ
+|
+EVENT_WRITE
+, 
+es
+);
+
+472  
+Œue
+;
+
+473 
+	}
+}
+
+481 
+boÞ
+
+
+482 
+	$cÚŒÞ_mes§ge_äom_·»Á
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd_cÚŒÞ
+,
+
+483 
+´oxy_cÚÃùiÚ
+ **
+li¡
+,
+
+484 
+ev’t_£t
+ *
+es
+,
+
+485 cÚ¡ 
+š_addr_t
+ 
+£rv”_addr
+,
+
+486 cÚ¡ 
+£rv”_pÜt
+,
+
+487 cÚ¡ 
+max_š™Ÿl_buf
+,
+
+488 cÚ¡ *
+jouº®_dœ
+)
+
+492 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf
+ (
+max_š™Ÿl_buf
+);
+
+494 
+msghdr
+ 
+mesg
+;
+
+495 
+cmsghdr
+* 
+h
+;
+
+496 
+iovec
+ 
+iov
+[2];
+
+497 
+commªd
+ = 0;
+
+498 
+ssize_t
+ 
+¡©us
+;
+
+499 
+»t
+ = 
+Œue
+;
+
+501 
+	`CLEAR
+ (
+mesg
+);
+
+503 
+iov
+[0].
+iov_ba£
+ = &
+commªd
+;
+
+504 
+iov
+[0].
+iov_Ën
+ =  (
+commªd
+);
+
+505 
+iov
+[1].
+iov_ba£
+ = 
+	`BPTR
+ (&
+buf
+);
+
+506 
+iov
+[1].
+iov_Ën
+ = 
+	`BCAP
+ (&
+buf
+);
+
+507 
+mesg
+.
+msg_iov
+ = 
+iov
+;
+
+508 
+mesg
+.
+msg_iovËn
+ = 2;
+
+510 
+mesg
+.
+msg_cÚŒÞËn
+ = 
+	`cmsg_size
+ ();
+
+511 
+mesg
+.
+msg_cÚŒÞ
+ = (*è
+	`m®loc
+ (mesg.
+msg_cÚŒÞËn
+);
+
+512 
+	`check_m®loc_»tuº
+ (
+mesg
+.
+msg_cÚŒÞ
+);
+
+513 
+mesg
+.
+msg_æags
+ = 0;
+
+515 
+h
+ = 
+	`CMSG_FIRSTHDR
+(&
+mesg
+);
+
+516 
+h
+->
+cmsg_Ën
+ = 
+	`CMSG_LEN
+((
+sock‘_desü�tÜ_t
+));
+
+517 
+h
+->
+cmsg_Ëv–
+ = 
+SOL_SOCKET
+;
+
+518 
+h
+->
+cmsg_ty³
+ = 
+SCM_RIGHTS
+;
+
+519 *((
+sock‘_desü�tÜ_t
+*)
+	`CMSG_DATA
+(
+h
+)èð
+SOCKET_UNDEFINED
+;
+
+521 
+¡©us
+ = 
+	`»cvmsg
+ (
+sd_cÚŒÞ
+, &
+mesg
+, 
+MSG_NOSIGNAL
+);
+
+522 ià(
+¡©us
+ != -1)
+
+524 iàÐ
+h
+ =ð
+NULL
+
+
+525 || 
+h
+->
+cmsg_Ën
+ !ð
+	`CMSG_LEN
+((
+sock‘_desü�tÜ_t
+))
+
+526 || 
+h
+->
+cmsg_Ëv–
+ !ð
+SOL_SOCKET
+
+
+527 || 
+h
+->
+cmsg_ty³
+ !ð
+SCM_RIGHTS
+ )
+
+529 
+	`msg
+ (
+M_WARN
+, "PORT SHARE PROXY:„eceived unknown message");
+
+533 cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+»ûived_fd
+ = *((sock‘_desü�tÜ_t*)
+	`CMSG_DATA
+(
+h
+));
+
+534 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: RECEIVED sd=%d", ()
+»ûived_fd
+);
+
+536 ià(
+¡©us
+ >ð2 && 
+commªd
+ =ð
+COMMAND_REDIRECT
+)
+
+538 
+buf
+.
+Ën
+ = 
+¡©us
+ - 1;
+
+539 ià(
+	`´oxy_’Œy_Ãw
+ (
+li¡
+,
+
+540 
+es
+,
+
+541 
+£rv”_addr
+,
+
+542 
+£rv”_pÜt
+,
+
+543 
+»ûived_fd
+,
+
+544 &
+buf
+,
+
+545 
+jouº®_dœ
+))
+
+547 
+	`CLEAR
+ (
+buf
+);
+
+551 
+	`Ý’v²_þo£_sock‘
+ (
+»ûived_fd
+);
+
+554 ià(
+¡©us
+ >ð1 && 
+commªd
+ =ð
+COMMAND_EXIT
+)
+
+556 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: RECEIVED COMMAND_EXIT");
+
+557 
+	`Ý’v²_þo£_sock‘
+ (
+»ûived_fd
+);
+
+558 
+»t
+ = 
+çl£
+;
+
+562 
+	`ä“
+ (
+mesg
+.
+msg_cÚŒÞ
+);
+
+563 
+	`ä“_buf
+ (&
+buf
+);
+
+564  
+»t
+;
+
+565 
+	}
+}
+
+568 
+	$´oxy_cÚÃùiÚ_io_»cv
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+)
+
+571 cÚ¡ 
+¡©us
+ = 
+	`»cv
+ (
+pc
+->
+sd
+, 
+	`BPTR
+(&pc->
+buf
+), 
+	`BCAP
+(&pc->buf), 
+MSG_NOSIGNAL
+);
+
+572 ià(
+¡©us
+ < 0)
+
+574  (
+”ºo
+ =ð
+EAGAIN
+è? 
+IOSTAT_EAGAIN_ON_READ
+ : 
+IOSTAT_READ_ERROR
+;
+
+578 ià(!
+¡©us
+)
+
+579  
+IOSTAT_READ_ERROR
+;
+
+580 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY:„—d[%d] %d", ()
+pc
+->
+sd
+, 
+¡©us
+);
+
+581 
+pc
+->
+buf
+.
+Ën
+ = 
+¡©us
+;
+
+583  
+IOSTAT_GOOD
+;
+
+584 
+	}
+}
+
+587 
+	$´oxy_cÚÃùiÚ_io_£nd
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+, *
+by‹s_£Á
+)
+
+589 cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+ = 
+pc
+->
+couÁ”·¹
+->sd;
+
+590 cÚ¡ 
+¡©us
+ = 
+	`£nd
+ (
+sd
+, 
+	`BPTR
+(&
+pc
+->
+buf
+), 
+	`BLEN
+(&pc->buf), 
+MSG_NOSIGNAL
+);
+
+592 ià(
+¡©us
+ < 0)
+
+594 cÚ¡ 
+e
+ = 
+”ºo
+;
+
+595  (
+e
+ =ð
+EAGAIN
+è? 
+IOSTAT_EAGAIN_ON_WRITE
+ : 
+IOSTAT_WRITE_ERROR
+;
+
+599 *
+by‹s_£Á
+ +ð
+¡©us
+;
+
+600 ià(
+¡©us
+ !ð
+pc
+->
+buf
+.
+Ën
+)
+
+602 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY:…¬tŸÈwr™e[%d],�r›d=%d gÙ=%d", ()
+sd
+, 
+pc
+->
+buf
+.
+Ën
+, 
+¡©us
+);
+
+603 
+	`buf_advªû
+ (&
+pc
+->
+buf
+, 
+¡©us
+);
+
+604  
+IOSTAT_EAGAIN_ON_WRITE
+;
+
+608 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY: wrÙe[%d] %d", ()
+sd
+, 
+¡©us
+);
+
+609 
+pc
+->
+buf
+.
+Ën
+ = 0;
+
+610 
+pc
+->
+buf
+.
+off£t
+ = 0;
+
+615 ià(
+pc
+->
+bufãr_š™Ÿl
+)
+
+617 
+	`ä“_buf
+ (&
+pc
+->
+buf
+);
+
+618 
+pc
+->
+buf
+ = 
+	`®loc_buf
+ (
+PROXY_CONNECTION_BUFFER_SIZE
+);
+
+619 
+pc
+->
+bufãr_š™Ÿl
+ = 
+çl£
+;
+
+621  
+IOSTAT_GOOD
+;
+
+622 
+	}
+}
+
+629 
+	$´oxy_cÚÃùiÚ_io_xãr
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+, cÚ¡ 
+max_Œªsãr
+)
+
+631 
+Œªsã¼ed
+ = 0;
+
+632 
+Œªsã¼ed
+ < 
+max_Œªsãr
+)
+
+634 ià(!
+	`BLEN
+ (&
+pc
+->
+buf
+))
+
+636 cÚ¡ 
+¡©us
+ = 
+	`´oxy_cÚÃùiÚ_io_»cv
+ (
+pc
+);
+
+637 ià(
+¡©us
+ !ð
+IOSTAT_GOOD
+)
+
+638  
+¡©us
+;
+
+641 ià(
+	`BLEN
+ (&
+pc
+->
+buf
+))
+
+643 cÚ¡ 
+¡©us
+ = 
+	`´oxy_cÚÃùiÚ_io_£nd
+ (
+pc
+, &
+Œªsã¼ed
+);
+
+644 ià(
+¡©us
+ !ð
+IOSTAT_GOOD
+)
+
+645  
+¡©us
+;
+
+648  
+IOSTAT_EAGAIN_ON_READ
+;
+
+649 
+	}
+}
+
+654 
+boÞ
+
+
+655 
+	$´oxy_cÚÃùiÚ_io_¡©us
+ (cÚ¡ 
+¡©us
+, *
+rwæags_pc
+, *
+rwæags_ý
+)
+
+657 
+¡©us
+)
+
+659 
+IOSTAT_EAGAIN_ON_READ
+:
+
+660 *
+rwæags_pc
+ |ð
+EVENT_READ
+;
+
+661 *
+rwæags_ý
+ &ð~
+EVENT_WRITE
+;
+
+662  
+Œue
+;
+
+663 
+IOSTAT_EAGAIN_ON_WRITE
+:
+
+664 *
+rwæags_pc
+ &ð~
+EVENT_READ
+;
+
+665 *
+rwæags_ý
+ |ð
+EVENT_WRITE
+;
+
+666  
+Œue
+;
+
+667 
+IOSTAT_READ_ERROR
+:
+
+668  
+çl£
+;
+
+669 
+IOSTAT_WRITE_ERROR
+:
+
+670  
+çl£
+;
+
+672 
+	`msg
+ (
+M_FATAL
+, "PORT SHARE PROXY: uÃx³ùed s�tus=%d", 
+¡©us
+);
+
+674  
+çl£
+;
+
+675 
+	}
+}
+
+682 
+	$´oxy_cÚÃùiÚ_io_di¥©ch
+ (
+´oxy_cÚÃùiÚ
+ *
+pc
+,
+
+683 cÚ¡ 
+rwæags
+,
+
+684 
+ev’t_£t
+ *
+es
+)
+
+686 cÚ¡ 
+max_Œªsãr_³r_™”©iÚ
+ = 10000;
+
+687 
+´oxy_cÚÃùiÚ
+ *
+ý
+ = 
+pc
+->
+couÁ”·¹
+;
+
+688 
+rwæags_pc
+ = 
+pc
+->
+rwæags
+;
+
+689 
+rwæags_ý
+ = 
+ý
+->
+rwæags
+;
+
+691 
+	`ASSERT
+(
+pc
+->
+defšed
+ && 
+ý
+->defšed && cp->
+couÁ”·¹
+ ==…c);
+
+693 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+695 cÚ¡ 
+¡©us
+ = 
+	`´oxy_cÚÃùiÚ_io_xãr
+ (
+pc
+, 
+max_Œªsãr_³r_™”©iÚ
+);
+
+696 ià(!
+	`´oxy_cÚÃùiÚ_io_¡©us
+ (
+¡©us
+, &
+rwæags_pc
+, &
+rwæags_ý
+))
+
+697 
+bad
+;
+
+699 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+701 cÚ¡ 
+¡©us
+ = 
+	`´oxy_cÚÃùiÚ_io_xãr
+ (
+ý
+, 
+max_Œªsãr_³r_™”©iÚ
+);
+
+702 ià(!
+	`´oxy_cÚÃùiÚ_io_¡©us
+ (
+¡©us
+, &
+rwæags_ý
+, &
+rwæags_pc
+))
+
+703 
+bad
+;
+
+705 
+	`´oxy_cÚÃùiÚ_io_»queue
+ (
+pc
+, 
+rwæags_pc
+, 
+es
+);
+
+706 
+	`´oxy_cÚÃùiÚ_io_»queue
+ (
+ý
+, 
+rwæags_ý
+, 
+es
+);
+
+708  
+Œue
+;
+
+710 
+bad
+:
+
+711 
+	`´oxy_’Œy_m¬k_fÜ_þo£
+ (
+pc
+, 
+es
+);
+
+712  
+çl£
+;
+
+713 
+	}
+}
+
+719 
+	$pÜt_sh¬e_´oxy
+ (cÚ¡ 
+š_addr_t
+ 
+ho¡addr
+,
+
+720 cÚ¡ 
+pÜt
+,
+
+721 cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd_cÚŒÞ
+,
+
+722 cÚ¡ 
+max_š™Ÿl_buf
+,
+
+723 cÚ¡ *
+jouº®_dœ
+)
+
+725 ià(
+	`£nd_cÚŒÞ
+ (
+sd_cÚŒÞ
+, 
+RESPONSE_INIT_SUCCEEDED
+) >= 0)
+
+727 *
+sd_cÚŒÞ_m¬k”
+ = (*)1;
+
+728 
+maxev’ts
+ = 256;
+
+729 
+ev’t_£t
+ *
+es
+;
+
+730 
+ev’t_£t_»tuº
+ 
+e¤
+[64];
+
+731 
+´oxy_cÚÃùiÚ
+ *
+li¡
+ = 
+NULL
+;
+
+732 
+time_t
+ 
+Ï¡_hou£k“pšg
+ = 0;
+
+734 
+	`msg
+ (
+D_PS_PROXY
+, "PORT SHARE PROXY:…roxy starting");
+
+736 
+es
+ = 
+	`ev’t_£t_š™
+ (&
+maxev’ts
+, 0);
+
+737 
+	`ev’t_ùl
+ (
+es
+, 
+sd_cÚŒÞ
+, 
+EVENT_READ
+, 
+sd_cÚŒÞ_m¬k”
+);
+
+738 
+Œue
+)
+
+740 
+n_ev’ts
+;
+
+741 
+timev®
+ 
+tv
+;
+
+742 
+time_t
+ 
+cu¼’t
+;
+
+744 
+tv
+.
+tv_£c
+ = 10;
+
+745 
+tv
+.
+tv_u£c
+ = 0;
+
+746 
+n_ev’ts
+ = 
+	`ev’t_wa™
+ (
+es
+, &
+tv
+, 
+e¤
+, 
+	`SIZE
+(esr));
+
+748 
+cu¼’t
+ = 
+	`time
+(
+NULL
+);
+
+749 ià(
+n_ev’ts
+ > 0)
+
+751 
+i
+;
+
+752 
+i
+ = 0; i < 
+n_ev’ts
+; ++i)
+
+754 cÚ¡ 
+ev’t_£t_»tuº
+ *
+e
+ = &
+e¤
+[
+i
+];
+
+755 ià(
+e
+->
+¬g
+ =ð
+sd_cÚŒÞ_m¬k”
+)
+
+757 ià(!
+	`cÚŒÞ_mes§ge_äom_·»Á
+ (
+sd_cÚŒÞ
+, &
+li¡
+, 
+es
+, 
+ho¡addr
+, 
+pÜt
+, 
+max_š™Ÿl_buf
+, 
+jouº®_dœ
+))
+
+758 
+dÚe
+;
+
+762 
+´oxy_cÚÃùiÚ
+ *
+pc
+ = (´oxy_cÚÃùiÚ *)
+e
+->
+¬g
+;
+
+763 ià(
+pc
+->
+defšed
+)
+
+764 
+	`´oxy_cÚÃùiÚ_io_di¥©ch
+ (
+pc
+, 
+e
+->
+rwæags
+, 
+es
+);
+
+768 ià(
+n_ev’ts
+ < 0)
+
+770 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE PROXY:ƒvent_wait failed");
+
+772 ià(
+cu¼’t
+ > 
+Ï¡_hou£k“pšg
+)
+
+774 
+	`´oxy_li¡_hou£k“pšg
+ (&
+li¡
+);
+
+775 
+Ï¡_hou£k“pšg
+ = 
+cu¼’t
+;
+
+779 
+dÚe
+:
+
+780 
+	`´oxy_li¡_þo£
+ (&
+li¡
+);
+
+781 
+	`ev’t_ä“
+ (
+es
+);
+
+783 
+	`msg
+ (
+M_INFO
+, "PORT SHARE PROXY:…roxyƒxiting");
+
+784 
+	}
+}
+
+790 
+pÜt_sh¬e
+ *
+
+791 
+	$pÜt_sh¬e_Ý’
+ (cÚ¡ *
+ho¡
+,
+
+792 cÚ¡ 
+pÜt
+,
+
+793 cÚ¡ 
+max_š™Ÿl_buf
+,
+
+794 cÚ¡ *
+jouº®_dœ
+)
+
+796 
+pid_t
+ 
+pid
+;
+
+797 
+sock‘_desü�tÜ_t
+ 
+fd
+[2];
+
+798 
+š_addr_t
+ 
+ho¡addr
+;
+
+799 
+pÜt_sh¬e
+ *
+ps
+;
+
+801 
+	`ALLOC_OBJ_CLEAR
+ (
+ps
+, 
+pÜt_sh¬e
+);
+
+802 
+ps
+->
+fÜeground_fd
+ = -1;
+
+803 
+ps
+->
+background_pid
+ = -1;
+
+808 
+ho¡addr
+ = 
+	`g‘addr
+ (
+GETADDR_RESOLVE
+|
+GETADDR_HOST_ORDER
+|
+GETADDR_FATAL
+, 
+ho¡
+, 0, 
+NULL
+, NULL);
+
+814 ià(
+	`sock‘·œ
+ (
+PF_UNIX
+, 
+SOCK_DGRAM
+, 0, 
+fd
+) == -1)
+
+816 
+	`msg
+ (
+M_WARN
+, "PORT SHARE: socketpair call failed");
+
+817 
+”rÜ
+;
+
+823 
+pid
+ = 
+	`fÜk
+ ();
+
+825 ià(
+pid
+)
+
+827 
+¡©us
+;
+
+833 
+ps
+->
+background_pid
+ = 
+pid
+;
+
+836 
+	`Ý’v²_þo£_sock‘
+ (
+fd
+[1]);
+
+839 
+	`£t_þÛxec
+ (
+fd
+[0]);
+
+842 
+¡©us
+ = 
+	`»cv_cÚŒÞ
+ (
+fd
+[0]);
+
+843 ià(
+¡©us
+ =ð
+RESPONSE_INIT_SUCCEEDED
+)
+
+847 
+	`£t_nÚblock
+ (
+fd
+[0]);
+
+849 
+ps
+->
+fÜeground_fd
+ = 
+fd
+[0];
+
+850  
+ps
+;
+
+854 
+	`msg
+ (
+M_ERR
+, "PORT SHARE: uÃx³ùed in™„ecv_cÚŒÞ s�tus=%d", 
+¡©us
+);
+
+864 
+	`£t_sigÇls
+ ();
+
+867 
+	`msg_fÜked
+ ();
+
+869 #ifdeà
+ENABLE_MANAGEMENT
+
+
+871 
+mªagem’t
+ = 
+NULL
+;
+
+875 
+	`þo£_fds_exû±
+ (
+fd
+[1]);
+
+878 
+	`£t_nÚblock
+ (
+fd
+[1]);
+
+881 
+	`´ng_š™
+ (
+NULL
+, 0);
+
+884 
+	`pÜt_sh¬e_´oxy
+ (
+ho¡addr
+, 
+pÜt
+, 
+fd
+[1], 
+max_š™Ÿl_buf
+, 
+jouº®_dœ
+);
+
+886 
+	`Ý’v²_þo£_sock‘
+ (
+fd
+[1]);
+
+888 
+	`ex™
+ (0);
+
+892 
+”rÜ
+:
+
+893 
+	`pÜt_sh¬e_þo£
+ (
+ps
+);
+
+894  
+NULL
+;
+
+895 
+	}
+}
+
+898 
+	$pÜt_sh¬e_þo£
+ (
+pÜt_sh¬e
+ *
+ps
+)
+
+900 ià(
+ps
+)
+
+902 ià(
+ps
+->
+fÜeground_fd
+ >= 0)
+
+905 
+	`pÜt_sh¬e_£ndmsg
+ (
+ps
+->
+fÜeground_fd
+, 
+COMMAND_EXIT
+, 
+NULL
+, 
+SOCKET_UNDEFINED
+);
+
+908 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE: waiting for background…rocess�oƒxit");
+
+909 ià(
+ps
+->
+background_pid
+ > 0)
+
+910 
+	`wa™pid
+ (
+ps
+->
+background_pid
+, 
+NULL
+, 0);
+
+911 
+	`dmsg
+ (
+D_PS_PROXY_DEBUG
+, "PORT SHARE: background…rocessƒxited");
+
+913 
+	`Ý’v²_þo£_sock‘
+ (
+ps
+->
+fÜeground_fd
+);
+
+914 
+ps
+->
+fÜeground_fd
+ = -1;
+
+917 
+	`ä“
+ (
+ps
+);
+
+919 
+	}
+}
+
+922 
+	$pÜt_sh¬e_abÜt
+ (
+pÜt_sh¬e
+ *
+ps
+)
+
+924 ià(
+ps
+)
+
+927 ià(
+ps
+->
+fÜeground_fd
+ >= 0)
+
+929 
+	`£nd_cÚŒÞ
+ (
+ps
+->
+fÜeground_fd
+, 
+COMMAND_EXIT
+);
+
+930 
+	`Ý’v²_þo£_sock‘
+ (
+ps
+->
+fÜeground_fd
+);
+
+931 
+ps
+->
+fÜeground_fd
+ = -1;
+
+934 
+	}
+}
+
+941 
+boÞ
+
+
+942 
+	$is_Ý’v²_´ÙocÞ
+ (cÚ¡ 
+bufãr
+ *
+buf
+)
+
+944 cÚ¡ *
+p
+ = (cÚ¡ *è
+	`BSTR
+ (
+buf
+);
+
+945 cÚ¡ 
+Ën
+ = 
+	`BLEN
+ (
+buf
+);
+
+946 ià(
+Ën
+ >= 3)
+
+948  
+p
+[0] == 0
+
+949 && 
+p
+[1] >= 14
+
+950 && 
+p
+[2] =ð(
+P_CONTROL_HARD_RESET_CLIENT_V2
+<<
+P_OPCODE_SHIFT
+);
+
+952 ià(
+Ën
+ >= 2)
+
+954  
+p
+[0] == 0 &&…[1] >= 14;
+
+957  
+Œue
+;
+
+958 
+	}
+}
+
+966 
+	$pÜt_sh¬e_»dœeù
+ (
+pÜt_sh¬e
+ *
+ps
+, cÚ¡ 
+bufãr
+ *
+h—d
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+968 ià(
+ps
+)
+
+970 
+	`pÜt_sh¬e_£ndmsg
+ (
+ps
+->
+fÜeground_fd
+, 
+COMMAND_REDIRECT
+, 
+h—d
+, 
+sd
+);
+
+972 
+	}
+}
+
+	@ps.h
+
+25 #iâdeà
+PS_H
+
+
+26 
+	#PS_H
+
+
+	)
+
+28 #ià
+PORT_SHARE
+
+
+30 
+	~"basic.h
+"
+
+31 
+	~"bufãr.h
+"
+
+32 
+	~"s¦.h
+"
+
+34 (*
+	tpo¡_fÜk_þ—nup_func_t
+)(*
+	t¬g
+);
+
+36 
+	spÜt_sh¬e
+ {
+
+38 
+sock‘_desü�tÜ_t
+ 
+fÜeground_fd
+;
+
+41 
+pid_t
+ 
+background_pid
+;
+
+44 

+pÜt_sh¬e
+ *port_share;
+
+46 
+pÜt_sh¬e
+ *
+	`pÜt_sh¬e_Ý’
+ (cÚ¡ *
+ho¡
+,
+
+47 cÚ¡ 
+pÜt
+,
+
+48 cÚ¡ 
+max_š™Ÿl_buf
+,
+
+49 cÚ¡ *
+jouº®_dœ
+);
+
+51 
+	`pÜt_sh¬e_þo£
+ (
+pÜt_sh¬e
+ *
+ps
+);
+
+52 
+	`pÜt_sh¬e_abÜt
+ (
+pÜt_sh¬e
+ *
+ps
+);
+
+54 
+boÞ
+ 
+	`is_Ý’v²_´ÙocÞ
+ (cÚ¡ 
+bufãr
+ *
+buf
+);
+
+56 
+	`pÜt_sh¬e_»dœeù
+ (
+pÜt_sh¬e
+ *
+ps
+, cÚ¡ 
+bufãr
+ *
+h—d
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+);
+
+	@push.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"push.h
+"
+
+34 
+	~"ÝtiÚs.h
+"
+
+35 
+	~"s¦.h
+"
+
+36 
+	~"mªage.h
+"
+
+38 
+	~"memdbg.h
+"
+
+40 #ià
+P2MP
+
+
+49 
+	$»ûive_auth_çžed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr
+ *buffer)
+
+51 
+	`msg
+ (
+M_VERB0
+, "AUTH: Reûived cÚŒÞ mes§ge: %s", 
+	`BSTR
+(
+bufãr
+));
+
+52 
+	`cÚÃùiÚ_li¡_£t_no_advªû
+(&
+c
+->
+ÝtiÚs
+);
+
+53 ià(
+c
+->
+ÝtiÚs
+.
+puÎ
+)
+
+55 
+	`auth_»Œy_g‘
+ ())
+
+57 
+AR_NONE
+:
+
+58 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+60 
+AR_INTERACT
+:
+
+61 
+	`s¦_purge_auth
+ (
+çl£
+);
+
+62 
+AR_NOINTERACT
+:
+
+63 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+66 
+	`ASSERT
+ (0);
+
+68 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "auth-failure";
+
+69 #ifdeà
+ENABLE_MANAGEMENT
+
+
+70 ià(
+mªagem’t
+)
+
+72 cÚ¡ *
+»asÚ
+ = 
+NULL
+;
+
+73 
+bufãr
+ 
+buf
+ = *buffer;
+
+74 ià(
+	`buf_¡ršg_com·»_advªû
+ (&
+buf
+, "AUTH_FAILED,"è&& 
+	`BLEN
+ (&buf))
+
+75 
+»asÚ
+ = 
+	`BSTR
+ (&
+buf
+);
+
+76 
+	`mªagem’t_auth_çžu»
+ (
+mªagem’t
+, 
+UP_TYPE_AUTH
+, 
+»asÚ
+);
+
+80 #ifdeà
+ENABLE_CLIENT_CR
+
+
+81 
+bufãr
+ 
+buf
+ = *buffer;
+
+82 ià(
+	`buf_¡ršg_m©ch_h—d_¡r
+ (&
+buf
+, "AUTH_FAILED,CRV1:"è&& 
+	`BLEN
+ (&buf))
+
+84 
+	`buf_advªû
+ (&
+buf
+, 12);
+
+85 
+	`s¦_put_auth_ch®Ënge
+ (
+	`BSTR
+ (&
+buf
+));
+
+90 
+	}
+}
+
+96 
+	$£rv”_pushed_sigÇl
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr
+ *bufãr, cÚ¡ 
+boÞ
+ 
+»¡¬t
+, cÚ¡ 
+adv
+)
+
+98 ià(
+c
+->
+ÝtiÚs
+.
+puÎ
+)
+
+100 
+bufãr
+ 
+buf
+ = *buffer;
+
+101 cÚ¡ *
+m
+ = "";
+
+102 ià(
+	`buf_advªû
+ (&
+buf
+, 
+adv
+è&& 
+	`buf_»ad_u8
+ (&bufè=ð',' && 
+	`BLEN
+ (&buf))
+
+103 
+m
+ = 
+	`BSTR
+ (&
+buf
+);
+
+107 
+boÞ
+ 
+purge
+ = 
+Œue
+;
+
+109 ià(
+m
+[0] == '[')
+
+111 
+i
+;
+
+112 
+i
+ = 1; 
+m
+[i] != '\0' && m[i] != ']'; ++i)
+
+114 ià(
+m
+[
+i
+] == 'P')
+
+115 
+purge
+ = 
+çl£
+;
+
+118 ià(
+purge
+)
+
+119 
+	`s¦_purge_auth
+ (
+Œue
+);
+
+122 ià(
+»¡¬t
+)
+
+124 
+	`msg
+ (
+D_STREAM_ERRORS
+, "CÚÃùiÚ„e£ˆcommªd wa pushed by s”v” ('%s')", 
+m
+);
+
+125 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+126 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "server-pushed-connection-reset";
+
+130 
+	`msg
+ (
+D_STREAM_ERRORS
+, "H®ˆcommªd wa pushed by s”v” ('%s')", 
+m
+);
+
+131 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+132 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "server-pushed-halt";
+
+134 #ifdeà
+ENABLE_MANAGEMENT
+
+
+135 ià(
+mªagem’t
+)
+
+136 
+	`mªagem’t_nÙify
+ (
+mªagem’t
+, "šfo", 
+c
+->
+sig
+->
+sigÇl_‹xt
+, 
+m
+);
+
+139 
+	}
+}
+
+141 #ià
+P2MP_SERVER
+
+
+147 
+	$£nd_auth_çžed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+þ›Á_»asÚ
+)
+
+149 if(!
+	`scheduË_ex™
+(
+c
+))
+
+151 
+	`msg
+(
+M_INFO
+, "exit‡lready scheduled for context");
+
+154 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+155 cÚ¡ 
+auth_çžed
+[] = "AUTH_FAILED";
+
+156 
+size_t
+ 
+Ën
+;
+
+159 
+Ën
+ = (
+þ›Á_»asÚ
+ ? 
+	`¡¾’
+(þ›Á_»asÚ)+1 : 0è+ (
+auth_çžed
+);
+
+160 ià(
+Ën
+ > 
+PUSH_BUNDLE_SIZE
+)
+
+161 
+Ën
+ = 
+PUSH_BUNDLE_SIZE
+;
+
+164 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf_gc
+ (
+Ën
+, &
+gc
+);
+
+165 
+	`buf_´štf
+ (&
+buf
+, 
+auth_çžed
+);
+
+166 ià(
+þ›Á_»asÚ
+)
+
+167 
+	`buf_´štf
+ (&
+buf
+, ",%s", 
+þ›Á_»asÚ
+);
+
+168 
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, 
+	`BSTR
+ (&
+buf
+), 
+D_PUSH
+);
+
+171 
+	`gc_ä“
+ (&
+gc
+);
+
+172 
+	}
+}
+
+178 
+	$£nd_»¡¬t
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+kžl_msg
+)
+
+180 
+	`scheduË_ex™
+ (
+c
+);
+
+181 
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, 
+kžl_msg
+ ? kžl_msg : "RESTART", 
+D_PUSH
+);
+
+182 
+	}
+}
+
+191 
+	$šcomšg_push_mes§ge
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr
+ *buffer)
+
+193 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+194 
+ÝtiÚ_ty³s_found
+ = 0;
+
+195 
+¡©us
+;
+
+197 
+	`msg
+ (
+D_PUSH
+, "PUSH: Reûived cÚŒÞ mes§ge: '%s'", 
+	`§n™ize_cÚŒÞ_mes§ge
+(
+	`BSTR
+(
+bufãr
+), &
+gc
+));
+
+199 
+¡©us
+ = 
+	`´oûss_šcomšg_push_msg
+ (
+c
+,
+
+200 
+bufãr
+,
+
+201 
+c
+->
+ÝtiÚs
+.
+puÎ
+,
+
+202 
+	`puÎ_³rmissiÚ_mask
+ (
+c
+),
+
+203 &
+ÝtiÚ_ty³s_found
+);
+
+205 ià(
+¡©us
+ =ð
+PUSH_MSG_ERROR
+)
+
+206 
+	`msg
+ (
+D_PUSH_ERRORS
+, "WARNING: Reûived bad…ush/puÎ mes§ge: %s", 
+	`§n™ize_cÚŒÞ_mes§ge
+(
+	`BSTR
+(
+bufãr
+), &
+gc
+));
+
+207 ià(
+¡©us
+ =ð
+PUSH_MSG_REPLY
+ || s�tu =ð
+PUSH_MSG_CONTINUATION
+)
+
+209 
+c
+->
+ÝtiÚs
+.
+push_ÝtiÚ_ty³s_found
+ |ð
+ÝtiÚ_ty³s_found
+;
+
+211 ià(
+¡©us
+ =ð
+PUSH_MSG_REPLY
+)
+
+212 
+	`do_up
+ (
+c
+, 
+Œue
+, c->
+ÝtiÚs
+.
+push_ÝtiÚ_ty³s_found
+ );
+
+213 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+push_»que¡_š‹rv®
+);
+
+216 
+	`gc_ä“
+ (&
+gc
+);
+
+217 
+	}
+}
+
+219 
+boÞ
+
+
+220 
+	$£nd_push_»que¡
+ (
+cÚ‹xt
+ *
+c
+)
+
+222 cÚ¡ 
+max_push_»que¡s
+ = 
+c
+->
+ÝtiÚs
+.
+hªdshake_wšdow
+ / 
+PUSH_REQUEST_INTERVAL
+;
+
+223 ià(++
+c
+->
+c2
+.
+n_£Á_push_»que¡s
+ <ð
+max_push_»que¡s
+)
+
+225  
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, "PUSH_REQUEST", 
+D_PUSH
+);
+
+229 
+	`msg
+ (
+D_STREAM_ERRORS
+, "NØ»¶y from s”v”‡á” s’dšg %d…ush„eque¡s", 
+max_push_»que¡s
+);
+
+230 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+231 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "no-push-reply";
+
+232  
+çl£
+;
+
+234 
+	}
+}
+
+236 #ià
+P2MP_SERVER
+
+
+238 
+boÞ
+
+
+239 
+	$£nd_push_»¶y
+ (
+cÚ‹xt
+ *
+c
+)
+
+241 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+242 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf_gc
+ (
+PUSH_BUNDLE_SIZE
+, &
+gc
+);
+
+243 
+push_’Œy
+ *
+e
+ = 
+c
+->
+ÝtiÚs
+.
+push_li¡
+.
+h—d
+;
+
+244 
+boÞ
+ 
+muÉi_push
+ = 
+çl£
+;
+
+245 
+cmd
+[] = "PUSH_REPLY";
+
+246 cÚ¡ 
+exŒa
+ = 84;
+
+247 cÚ¡ 
+§ã_ÿp
+ = 
+	`BCAP
+ (&
+buf
+è- 
+exŒa
+;
+
+248 
+boÞ
+ 
+push_£Á
+ = 
+çl£
+;
+
+250 
+	`msg
+Ð
+M_INFO
+, "£nd_push_»¶y(): saã_ÿp=%d", 
+§ã_ÿp
+ );
+
+252 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+cmd
+);
+
+254 iàÐ
+c
+->
+c2
+.
+push_ifcÚfig_�v6_defšed
+ )
+
+257 
+	`buf_´štf
+Ð&
+buf
+, ",ifconfig-ipv6 %s/%d %s",
+
+258 
+	`´št_š6_addr
+Ð
+c
+->
+c2
+.
+push_ifcÚfig_�v6_loÿl
+, 0, &
+gc
+),
+
+259 
+c
+->
+c2
+.
+push_ifcÚfig_�v6_Ãtb™s
+,
+
+260 
+	`´št_š6_addr
+Ð
+c
+->
+c2
+.
+push_ifcÚfig_�v6_»mÙe
+, 0, &
+gc
+) );
+
+261 ià(
+	`BLEN
+ (&
+buf
+è>ð
+§ã_ÿp
+)
+
+263 
+	`msg
+ (
+M_WARN
+, "--push ifconfig-ipv6 option is�oo†ong");
+
+264 
+çž
+;
+
+268 
+e
+)
+
+270 ià(
+e
+->
+’abË
+)
+
+272 cÚ¡ 
+l
+ = 
+	`¡¾’
+ (
+e
+->
+ÝtiÚ
+);
+
+273 ià(
+	`BLEN
+ (&
+buf
+è+ 
+l
+ >ð
+§ã_ÿp
+)
+
+275 
+	`buf_´štf
+ (&
+buf
+, ",push-continuation 2");
+
+277 cÚ¡ 
+boÞ
+ 
+¡©us
+ = 
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, 
+	`BSTR
+ (&
+buf
+), 
+D_PUSH
+);
+
+278 ià(!
+¡©us
+)
+
+279 
+çž
+;
+
+280 
+push_£Á
+ = 
+Œue
+;
+
+281 
+muÉi_push
+ = 
+Œue
+;
+
+282 
+	`buf_»£t_Ën
+ (&
+buf
+);
+
+283 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+cmd
+);
+
+286 ià(
+	`BLEN
+ (&
+buf
+è+ 
+l
+ >ð
+§ã_ÿp
+)
+
+288 
+	`msg
+ (
+M_WARN
+, "--push option is�oo†ong");
+
+289 
+çž
+;
+
+291 
+	`buf_´štf
+ (&
+buf
+, ",%s", 
+e
+->
+ÝtiÚ
+);
+
+293 
+e
+ =ƒ->
+Ãxt
+;
+
+296 ià(
+c
+->
+c2
+.
+push_ifcÚfig_defšed
+ && c->c2.
+push_ifcÚfig_loÿl
+ && c->c2.
+push_ifcÚfig_»mÙe_Ãtmask
+)
+
+298 
+š_addr_t
+ 
+ifcÚfig_loÿl
+ = 
+c
+->
+c2
+.
+push_ifcÚfig_loÿl
+;
+
+299 #ifdeà
+ENABLE_CLIENT_NAT
+
+
+300 ià(
+c
+->
+c2
+.
+push_ifcÚfig_loÿl_®Ÿs
+)
+
+301 
+ifcÚfig_loÿl
+ = 
+c
+->
+c2
+.
+push_ifcÚfig_loÿl_®Ÿs
+;
+
+303 
+	`buf_´štf
+ (&
+buf
+, ",ifconfig %s %s",
+
+304 
+	`´št_š_addr_t
+ (
+ifcÚfig_loÿl
+, 0, &
+gc
+),
+
+305 
+	`´št_š_addr_t
+ (
+c
+->
+c2
+.
+push_ifcÚfig_»mÙe_Ãtmask
+, 0, &
+gc
+));
+
+307 ià(
+muÉi_push
+)
+
+308 
+	`buf_´štf
+ (&
+buf
+, ",push-continuation 1");
+
+310 ià(
+	`BLEN
+ (&
+buf
+è> (
+cmd
+)-1)
+
+312 cÚ¡ 
+boÞ
+ 
+¡©us
+ = 
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, 
+	`BSTR
+ (&
+buf
+), 
+D_PUSH
+);
+
+313 ià(!
+¡©us
+)
+
+314 
+çž
+;
+
+315 
+push_£Á
+ = 
+Œue
+;
+
+321 ià(!
+push_£Á
+)
+
+323 
+boÞ
+ 
+¡©us
+ = 
+çl£
+;
+
+325 
+	`buf_»£t_Ën
+ (&
+buf
+);
+
+326 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+cmd
+);
+
+327 
+¡©us
+ = 
+	`£nd_cÚŒÞ_chªÃl_¡ršg
+ (
+c
+, 
+	`BSTR
+(&
+buf
+), 
+D_PUSH
+);
+
+328 ià(!
+¡©us
+)
+
+329 
+çž
+;
+
+332 
+	`gc_ä“
+ (&
+gc
+);
+
+333  
+Œue
+;
+
+335 
+çž
+:
+
+336 
+	`gc_ä“
+ (&
+gc
+);
+
+337  
+çl£
+;
+
+338 
+	}
+}
+
+341 
+	$push_ÝtiÚ_ex
+ (
+ÝtiÚs
+ *
+o
+, cÚ¡ *
+Ýt
+, 
+boÞ
+ 
+’abË
+, 
+msgËv–
+)
+
+343 ià(!
+	`¡ršg_þass
+ (
+Ýt
+, 
+CC_ANY
+, 
+CC_COMMA
+))
+
+345 
+	`msg
+ (
+msgËv–
+, "PUSH OPTION FAILED (žËg® comm¨(','èš sŒšg): '%s'", 
+Ýt
+);
+
+349 
+push_’Œy
+ *
+e
+;
+
+350 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+e
+, 
+push_’Œy
+, &
+o
+->
+gc
+);
+
+351 
+e
+->
+’abË
+ = 
+Œue
+;
+
+352 
+e
+->
+ÝtiÚ
+ = 
+Ýt
+;
+
+353 ià(
+o
+->
+push_li¡
+.
+h—d
+)
+
+355 
+	`ASSERT
+(
+o
+->
+push_li¡
+.
+�ž
+);
+
+356 
+o
+->
+push_li¡
+.
+�ž
+->
+Ãxt
+ = 
+e
+;
+
+357 
+o
+->
+push_li¡
+.
+�ž
+ = 
+e
+;
+
+361 
+	`ASSERT
+(!
+o
+->
+push_li¡
+.
+�ž
+);
+
+362 
+o
+->
+push_li¡
+.
+h—d
+ = 
+e
+;
+
+363 
+o
+->
+push_li¡
+.
+�ž
+ = 
+e
+;
+
+366 
+	}
+}
+
+369 
+	$push_ÝtiÚ
+ (
+ÝtiÚs
+ *
+o
+, cÚ¡ *
+Ýt
+, 
+msgËv–
+)
+
+371 
+	`push_ÝtiÚ_ex
+ (
+o
+, 
+Ýt
+, 
+Œue
+, 
+msgËv–
+);
+
+372 
+	}
+}
+
+375 
+	$þÚe_push_li¡
+ (
+ÝtiÚs
+ *
+o
+)
+
+377 ià(
+o
+->
+push_li¡
+.
+h—d
+)
+
+379 cÚ¡ 
+push_’Œy
+ *
+e
+ = 
+o
+->
+push_li¡
+.
+h—d
+;
+
+380 
+	`push_»£t
+ (
+o
+);
+
+381 
+e
+)
+
+383 
+	`push_ÝtiÚ_ex
+ (
+o
+, 
+	`¡ršg_®loc
+ (
+e
+->
+ÝtiÚ
+, &o->
+gc
+), 
+Œue
+, 
+M_FATAL
+);
+
+384 
+e
+ =ƒ->
+Ãxt
+;
+
+387 
+	}
+}
+
+390 
+	$push_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+, **
+p
+, 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+)
+
+392 cÚ¡ **
+¬gv
+ = 
+	`make_ex‹nded_¬g_¬¿y
+ (
+p
+, 
+gc
+);
+
+393 *
+Ýt
+ = 
+	`´št_¬gv
+ (
+¬gv
+, 
+gc
+, 0);
+
+394 
+	`push_ÝtiÚ
+ (
+o
+, 
+Ýt
+, 
+msgËv–
+);
+
+395 
+	}
+}
+
+398 
+	$push_»£t
+ (
+ÝtiÚs
+ *
+o
+)
+
+400 
+	`CLEAR
+ (
+o
+->
+push_li¡
+);
+
+401 
+	}
+}
+
+405 
+	$´oûss_šcomšg_push_msg
+ (
+cÚ‹xt
+ *
+c
+,
+
+406 cÚ¡ 
+bufãr
+ *buffer,
+
+407 
+boÞ
+ 
+hÚÜ_»ûived_ÝtiÚs
+,
+
+408 
+³rmissiÚ_mask
+,
+
+409 *
+ÝtiÚ_ty³s_found
+)
+
+411 
+»t
+ = 
+PUSH_MSG_ERROR
+;
+
+412 
+bufãr
+ 
+buf
+ = *buffer;
+
+414 #ià
+P2MP_SERVER
+
+
+415 ià(
+	`buf_¡ršg_com·»_advªû
+ (&
+buf
+, "PUSH_REQUEST"))
+
+417 ià(
+	`Žs_auth’tiÿtiÚ_¡©us
+ (
+c
+->
+c2
+.
+Žs_muÉi
+, 0è=ð
+TLS_AUTHENTICATION_FAILED
+ || c->c2.
+cÚ‹xt_auth
+ =ð
+CAS_FAILED
+)
+
+419 cÚ¡ *
+þ›Á_»asÚ
+ = 
+	`Žs_þ›Á_»asÚ
+ (
+c
+->
+c2
+.
+Žs_muÉi
+);
+
+420 
+	`£nd_auth_çžed
+ (
+c
+, 
+þ›Á_»asÚ
+);
+
+421 
+»t
+ = 
+PUSH_MSG_AUTH_FAILURE
+;
+
+423 ià(!
+c
+->
+c2
+.
+push_»¶y_deã¼ed
+ && c->c2.
+cÚ‹xt_auth
+ =ð
+CAS_SUCCEEDED
+)
+
+425 
+time_t
+ 
+now
+;
+
+427 
+	`Ý’v²_time
+(&
+now
+);
+
+428 ià(
+c
+->
+c2
+.
+£Á_push_»¶y_expœy
+ > 
+now
+)
+
+430 
+»t
+ = 
+PUSH_MSG_ALREADY_REPLIED
+;
+
+434 ià(
+	`£nd_push_»¶y
+ (
+c
+))
+
+436 
+»t
+ = 
+PUSH_MSG_REQUEST
+;
+
+437 
+c
+->
+c2
+.
+£Á_push_»¶y_expœy
+ = 
+now
+ + 30;
+
+443 
+»t
+ = 
+PUSH_MSG_REQUEST_DEFERRED
+;
+
+449 ià(
+hÚÜ_»ûived_ÝtiÚs
+ && 
+	`buf_¡ršg_com·»_advªû
+ (&
+buf
+, "PUSH_REPLY"))
+
+451 cÚ¡ 
+ušt8_t
+ 
+ch
+ = 
+	`buf_»ad_u8
+ (&
+buf
+);
+
+452 ià(
+ch
+ == ',')
+
+454 
+bufãr
+ 
+buf_Üig
+ = 
+buf
+;
+
+455 ià(!
+c
+->
+c2
+.
+puÎed_ÝtiÚs_md5_š™_dÚe
+)
+
+457 
+	`md5_¡©e_š™
+ (&
+c
+->
+c2
+.
+puÎed_ÝtiÚs_¡©e
+);
+
+458 
+c
+->
+c2
+.
+puÎed_ÝtiÚs_md5_š™_dÚe
+ = 
+Œue
+;
+
+460 ià(!
+c
+->
+c2
+.
+did_´e_puÎ_»¡Üe
+)
+
+462 
+	`´e_puÎ_»¡Üe
+ (&
+c
+->
+ÝtiÚs
+);
+
+463 
+c
+->
+c2
+.
+did_´e_puÎ_»¡Üe
+ = 
+Œue
+;
+
+465 ià(
+	`­¶y_push_ÝtiÚs
+ (&
+c
+->
+ÝtiÚs
+,
+
+466 &
+buf
+,
+
+467 
+³rmissiÚ_mask
+,
+
+468 
+ÝtiÚ_ty³s_found
+,
+
+469 
+c
+->
+c2
+.
+es
+))
+
+470 
+c
+->
+ÝtiÚs
+.
+push_cÚtšu©iÚ
+)
+
+474 
+	`md5_¡©e_upd©e
+ (&
+c
+->
+c2
+.
+puÎed_ÝtiÚs_¡©e
+, 
+	`BPTR
+(&
+buf_Üig
+), 
+	`BLEN
+(&buf_orig));
+
+475 
+	`md5_¡©e_fš®
+ (&
+c
+->
+c2
+.
+puÎed_ÝtiÚs_¡©e
+, &c->c2.
+puÎed_ÝtiÚs_dige¡
+);
+
+476 
+c
+->
+c2
+.
+puÎed_ÝtiÚs_md5_š™_dÚe
+ = 
+çl£
+;
+
+477 
+»t
+ = 
+PUSH_MSG_REPLY
+;
+
+480 
+	`md5_¡©e_upd©e
+ (&
+c
+->
+c2
+.
+puÎed_ÝtiÚs_¡©e
+, 
+	`BPTR
+(&
+buf_Üig
+), 
+	`BLEN
+(&buf_orig));
+
+481 
+»t
+ = 
+PUSH_MSG_CONTINUATION
+;
+
+485 ià(
+ch
+ == '\0')
+
+487 
+»t
+ = 
+PUSH_MSG_REPLY
+;
+
+491  
+»t
+;
+
+492 
+	}
+}
+
+494 #ià
+P2MP_SERVER
+
+
+500 
+	$»move_œou‹s_äom_push_rou‹_li¡
+ (
+ÝtiÚs
+ *
+o
+)
+
+502 ià(
+o
+ && o->
+push_li¡
+.
+h—d
+ && o->
+œou‹s
+)
+
+504 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+505 
+push_’Œy
+ *
+e
+ = 
+o
+->
+push_li¡
+.
+h—d
+;
+
+508 
+e
+)
+
+510 *
+p
+[
+MAX_PARMS
+];
+
+511 
+boÞ
+ 
+’abË
+ = 
+Œue
+;
+
+514 
+	`CLEAR
+ (
+p
+);
+
+515 ià(
+	`·r£_lše
+ (
+e
+->
+ÝtiÚ
+, 
+p
+, 
+	`SIZE
+ (p), "[PUSH_ROUTE_REMOVE]", 1, 
+D_ROUTE_DEBUG
+, &
+gc
+))
+
+518 ià(
+p
+[0] && !
+	`¡rcmp
+ (p[0], "route") && !p[3])
+
+521 
+boÞ
+ 
+¡©us1
+, 
+¡©us2
+;
+
+522 cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+p
+[1], 0, &
+¡©us1
+, 
+NULL
+);
+
+523 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+p
+[2] ?…[2] : "255.255.255.255", 0, &
+¡©us2
+, 
+NULL
+);
+
+526 ià(
+¡©us1
+ && 
+¡©us2
+)
+
+528 cÚ¡ 
+œou‹
+ *
+œ
+;
+
+531 
+œ
+ = 
+o
+->
+œou‹s
+; i¸!ð
+NULL
+; i¸ðœ->
+Ãxt
+)
+
+533 ià(
+ÃtwÜk
+ =ð
+œ
+->ÃtwÜk && 
+Ãtmask
+ =ð
+	`Ãtb™s_to_Ãtmask
+ (œ->
+Ãtb™s
+ >= 0 ? ir->netbits : 32))
+
+535 
+’abË
+ = 
+çl£
+;
+
+544 
+e
+->
+’abË
+ =ƒnable;
+
+545 ià(!
+’abË
+)
+
+546 
+	`msg
+ (
+D_PUSH
+, "REMOVE PUSH ROUTE: '%s'", 
+e
+->
+ÝtiÚ
+);
+
+548 
+e
+ =ƒ->
+Ãxt
+;
+
+551 
+	`gc_ä“
+ (&
+gc
+);
+
+553 
+	}
+}
+
+	@push.h
+
+25 #iâdeà
+PUSH_H
+
+
+26 
+	#PUSH_H
+
+
+	)
+
+28 #ià
+P2MP
+
+
+30 
+	~"fÜw¬d.h
+"
+
+32 
+	#PUSH_MSG_ERROR
+ 0
+
+	)
+
+33 
+	#PUSH_MSG_REQUEST
+ 1
+
+	)
+
+34 
+	#PUSH_MSG_REPLY
+ 2
+
+	)
+
+35 
+	#PUSH_MSG_REQUEST_DEFERRED
+ 3
+
+	)
+
+36 
+	#PUSH_MSG_AUTH_FAILURE
+ 4
+
+	)
+
+37 
+	#PUSH_MSG_CONTINUATION
+ 5
+
+	)
+
+38 
+	#PUSH_MSG_ALREADY_REPLIED
+ 6
+
+	)
+
+40 
+šcomšg_push_mes§ge
+ (
+cÚ‹xt
+ *
+c
+,
+
+41 cÚ¡ 
+bufãr
+ *buffer);
+
+43 
+´oûss_šcomšg_push_msg
+ (
+cÚ‹xt
+ *
+c
+,
+
+44 cÚ¡ 
+bufãr
+ *buffer,
+
+45 
+boÞ
+ 
+hÚÜ_»ûived_ÝtiÚs
+,
+
+46 
+³rmissiÚ_mask
+,
+
+47 *
+ÝtiÚ_ty³s_found
+);
+
+49 
+boÞ
+ 
+£nd_push_»que¡
+ (
+cÚ‹xt
+ *
+c
+);
+
+51 
+»ûive_auth_çžed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr
+ *buffer);
+
+53 
+£rv”_pushed_sigÇl
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ 
+bufãr
+ *bufãr, cÚ¡ 
+boÞ
+ 
+»¡¬t
+, cÚ¡ 
+adv
+);
+
+55 #ià
+P2MP_SERVER
+
+
+57 
+þÚe_push_li¡
+ (
+ÝtiÚs
+ *
+o
+);
+
+59 
+push_ÝtiÚ
+ (
+ÝtiÚs
+ *
+o
+, cÚ¡ *
+Ýt
+, 
+msgËv–
+);
+
+60 
+push_ÝtiÚs
+ (
+ÝtiÚs
+ *
+o
+, **
+p
+, 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+);
+
+62 
+push_»£t
+ (
+ÝtiÚs
+ *
+o
+);
+
+64 
+boÞ
+ 
+£nd_push_»¶y
+ (
+cÚ‹xt
+ *
+c
+);
+
+66 
+»move_œou‹s_äom_push_rou‹_li¡
+ (
+ÝtiÚs
+ *
+o
+);
+
+68 
+£nd_auth_çžed
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+þ›Á_»asÚ
+);
+
+70 
+£nd_»¡¬t
+ (
+cÚ‹xt
+ *
+c
+, cÚ¡ *
+kžl_msg
+);
+
+	@pushlist.h
+
+25 #ià!
+defšed
+(
+PUSHLIST_H
+è&& 
+P2MP
+ && 
+P2MP_SERVER
+
+
+26 
+	#PUSHLIST_H
+
+
+	)
+
+30 
+	spush_’Œy
+ {
+
+31 
+push_’Œy
+ *
+	mÃxt
+;
+
+32 
+boÞ
+ 
+	m’abË
+;
+
+33 cÚ¡ *
+	mÝtiÚ
+;
+
+36 
+	spush_li¡
+ {
+
+37 
+push_’Œy
+ *
+	mh—d
+;
+
+38 
+push_’Œy
+ *
+	m�ž
+;
+
+	@reliable.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+40 
+	~"bufãr.h
+"
+
+41 
+	~"”rÜ.h
+"
+
+42 
+	~"commÚ.h
+"
+
+43 
+	~"»lŸbË.h
+"
+
+45 
+	~"memdbg.h
+"
+
+50 
+šlše
+ 
+boÞ
+
+
+51 
+	$»lŸbË_pid_š_¿nge1
+ (cÚ¡ 
+·ck‘_id_ty³
+ 
+‹¡
+,
+
+52 cÚ¡ 
+·ck‘_id_ty³
+ 
+ba£
+,
+
+53 cÚ¡ 
+ex‹Á
+)
+
+55 ià(
+‹¡
+ >ð
+ba£
+)
+
+57 ià(
+‹¡
+ - 
+ba£
+ < 
+ex‹Á
+)
+
+58  
+Œue
+;
+
+62 ià((
+‹¡
++0x80000000uè- (
+ba£
++0x80000000uè< 
+ex‹Á
+)
+
+63  
+Œue
+;
+
+66  
+çl£
+;
+
+67 
+	}
+}
+
+72 
+šlše
+ 
+boÞ
+
+
+73 
+	$»lŸbË_pid_š_¿nge2
+ (cÚ¡ 
+·ck‘_id_ty³
+ 
+‹¡
+,
+
+74 cÚ¡ 
+·ck‘_id_ty³
+ 
+ba£
+,
+
+75 cÚ¡ 
+ex‹Á
+)
+
+77 ià(
+ba£
+ + 
+ex‹Á
+ >= base)
+
+79 ià(
+‹¡
+ < 
+ba£
+ + 
+ex‹Á
+)
+
+80  
+Œue
+;
+
+84 ià((
+‹¡
++0x80000000uè< (
+ba£
++0x80000000uè+ 
+ex‹Á
+)
+
+85  
+Œue
+;
+
+88  
+çl£
+;
+
+89 
+	}
+}
+
+94 
+šlše
+ 
+boÞ
+
+
+95 
+	$»lŸbË_pid_mš
+ (cÚ¡ 
+·ck‘_id_ty³
+ 
+p1
+,
+
+96 cÚ¡ 
+·ck‘_id_ty³
+ 
+p2
+)
+
+98  !
+	`»lŸbË_pid_š_¿nge1
+ (
+p1
+, 
+p2
+, 0x80000000u);
+
+99 
+	}
+}
+
+102 
+šlše
+ 
+boÞ
+
+
+103 
+	$»lŸbË_ack_·ck‘_id_´e£Á
+ (
+»lŸbË_ack
+ *
+ack
+, 
+·ck‘_id_ty³
+ 
+pid
+)
+
+105 
+i
+;
+
+106 
+i
+ = 0; i < 
+ack
+->
+Ën
+; ++i)
+
+107 ià(
+ack
+->
+·ck‘_id
+[
+i
+] =ð
+pid
+)
+
+108  
+Œue
+;
+
+109  
+çl£
+;
+
+110 
+	}
+}
+
+113 
+boÞ
+
+
+114 
+	$»lŸbË_ack_»ad_·ck‘_id
+ (
+bufãr
+ *
+buf
+, 
+·ck‘_id_ty³
+ *
+pid
+)
+
+116 
+·ck‘_id_ty³
+ 
+Ãt_pid
+;
+
+118 ià(
+	`buf_»ad
+ (
+buf
+, &
+Ãt_pid
+,  (net_pid)))
+
+120 *
+pid
+ = 
+	`Áohpid
+ (
+Ãt_pid
+);
+
+121 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK„—d ID " 
+·ck‘_id_fÜm©
+ " (buf->len=%d)",
+
+122 (
+·ck‘_id_´št_ty³
+)*
+pid
+, 
+buf
+->
+Ën
+);
+
+123  
+Œue
+;
+
+126 
+	`dmsg
+ (
+D_REL_LOW
+, "ACK„—d ID FAILED (buf->Ën=%d)", 
+buf
+->
+Ën
+);
+
+127  
+çl£
+;
+
+128 
+	}
+}
+
+131 
+boÞ
+
+
+132 
+	$»lŸbË_ack_acknowËdge_·ck‘_id
+ (
+»lŸbË_ack
+ *
+ack
+, 
+·ck‘_id_ty³
+ 
+pid
+)
+
+134 ià(!
+	`»lŸbË_ack_·ck‘_id_´e£Á
+ (
+ack
+, 
+pid
+è&&‡ck->
+Ën
+ < 
+RELIABLE_ACK_SIZE
+)
+
+136 
+ack
+->
+·ck‘_id
+[ack->
+Ën
+++] = 
+pid
+;
+
+137 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK‡cknowËdg�ID " 
+·ck‘_id_fÜm©
+ " (ack->len=%d)",
+
+138 (
+·ck‘_id_´št_ty³
+)
+pid
+, 
+ack
+->
+Ën
+);
+
+139  
+Œue
+;
+
+142 
+	`dmsg
+ (
+D_REL_LOW
+, "ACK‡cknowËdg�ID " 
+·ck‘_id_fÜm©
+ " FAILED (ack->len=%d)",
+
+143 (
+·ck‘_id_´št_ty³
+)
+pid
+, 
+ack
+->
+Ën
+);
+
+144  
+çl£
+;
+
+145 
+	}
+}
+
+148 
+boÞ
+
+
+149 
+	$»lŸbË_ack_»ad
+ (
+»lŸbË_ack
+ * 
+ack
+,
+
+150 
+bufãr
+ * 
+buf
+, cÚ¡ 
+£ssiÚ_id
+ * 
+sid
+)
+
+152 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+153 
+i
+;
+
+154 
+ušt8_t
+ 
+couÁ
+;
+
+155 
+·ck‘_id_ty³
+ 
+Ãt_pid
+;
+
+156 
+·ck‘_id_ty³
+ 
+pid
+;
+
+157 
+£ssiÚ_id
+ 
+£ssiÚ_id_»mÙe
+;
+
+159 ià(!
+	`buf_»ad
+ (
+buf
+, &
+couÁ
+,  (count)))
+
+160 
+”rÜ
+;
+
+161 
+i
+ = 0; i < 
+couÁ
+; ++i)
+
+163 ià(!
+	`buf_»ad
+ (
+buf
+, &
+Ãt_pid
+,  (net_pid)))
+
+164 
+”rÜ
+;
+
+165 ià(
+ack
+->
+Ën
+ >ð
+RELIABLE_ACK_SIZE
+)
+
+166 
+”rÜ
+;
+
+167 
+pid
+ = 
+	`Áohpid
+ (
+Ãt_pid
+);
+
+168 
+ack
+->
+·ck‘_id
+[ack->
+Ën
+++] = 
+pid
+;
+
+170 ià(
+couÁ
+)
+
+172 ià(!
+	`£ssiÚ_id_»ad
+ (&
+£ssiÚ_id_»mÙe
+, 
+buf
+))
+
+173 
+”rÜ
+;
+
+174 ià(!
+	`£ssiÚ_id_defšed
+ (&
+£ssiÚ_id_»mÙe
+) ||
+
+175 !
+	`£ssiÚ_id_equ®
+ (&
+£ssiÚ_id_»mÙe
+, 
+sid
+))
+
+177 
+	`dmsg
+ (
+D_REL_LOW
+,
+
+179 
+	`£ssiÚ_id_´št
+ (
+sid
+, &
+gc
+), sessiÚ_id_´šˆ(&
+£ssiÚ_id_»mÙe
+, &gc));
+
+180 
+”rÜ
+;
+
+183 
+	`gc_ä“
+ (&
+gc
+);
+
+184  
+Œue
+;
+
+186 
+”rÜ
+:
+
+187 
+	`gc_ä“
+ (&
+gc
+);
+
+188  
+çl£
+;
+
+189 
+	}
+}
+
+191 
+	#ACK_SIZE
+(
+n
+è( (
+ušt8_t
+è+ (Òè? 
+SID_SIZE
+ : 0è+  (
+·ck‘_id_ty³
+è* (n))
+
+	)
+
+195 
+boÞ
+
+
+196 
+	$»lŸbË_ack_wr™e
+ (
+»lŸbË_ack
+ * 
+ack
+,
+
+197 
+bufãr
+ * 
+buf
+,
+
+198 cÚ¡ 
+£ssiÚ_id
+ * 
+sid
+, 
+max
+, 
+boÞ
+ 
+´•’d
+)
+
+200 
+i
+, 
+j
+;
+
+201 
+ušt8_t
+ 
+n
+;
+
+202 
+bufãr
+ 
+sub
+;
+
+204 
+n
+ = 
+ack
+->
+Ën
+;
+
+205 ià(
+n
+ > 
+max
+)
+
+206 
+n
+ = 
+max
+;
+
+207 
+sub
+ = 
+	`buf_sub
+ (
+buf
+, 
+	`ACK_SIZE
+(
+n
+), 
+´•’d
+);
+
+208 ià(!
+	`BDEF
+ (&
+sub
+))
+
+209 
+”rÜ
+;
+
+210 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+sub
+, &
+n
+,  (n)));
+
+211 
+i
+ = 0; i < 
+n
+; ++i)
+
+213 
+·ck‘_id_ty³
+ 
+pid
+ = 
+ack
+->
+·ck‘_id
+[
+i
+];
+
+214 
+·ck‘_id_ty³
+ 
+Ãt_pid
+ = 
+	`htÚpid
+ (
+pid
+);
+
+215 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+sub
+, &
+Ãt_pid
+,  (net_pid)));
+
+216 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK wr™�ID " 
+·ck‘_id_fÜm©
+ " (ack->Ën=%d,‚=%d)", (
+·ck‘_id_´št_ty³
+)
+pid
+, 
+ack
+->
+Ën
+, 
+n
+);
+
+218 ià(
+n
+)
+
+220 
+	`ASSERT
+ (
+	`£ssiÚ_id_defšed
+ (
+sid
+));
+
+221 
+	`ASSERT
+ (
+	`£ssiÚ_id_wr™e
+ (
+sid
+, &
+sub
+));
+
+222 
+i
+ = 0, 
+j
+ = 
+n
+; j < 
+ack
+->
+Ën
+;)
+
+223 
+ack
+->
+·ck‘_id
+[
+i
+++] =‡ck->·ck‘_id[
+j
+++];
+
+224 
+ack
+->
+Ën
+ = 
+i
+;
+
+227  
+Œue
+;
+
+229 
+”rÜ
+:
+
+230  
+çl£
+;
+
+231 
+	}
+}
+
+235 
+	$»lŸbË_ack_adju¡_äame_·¿m‘”s
+ (
+äame
+* f¿me, 
+max
+)
+
+237 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, 
+	`ACK_SIZE
+ (
+max
+));
+
+238 
+	}
+}
+
+242 
+	$»lŸbË_ack_´št
+ (
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+v”bo£
+, 
+gc_¬’a
+ *
+gc
+)
+
+244 
+i
+;
+
+245 
+ušt8_t
+ 
+n_ack
+;
+
+246 
+£ssiÚ_id
+ 
+sid_ack
+;
+
+247 
+·ck‘_id_ty³
+ 
+pid
+;
+
+248 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+250 
+	`buf_´štf
+ (&
+out
+, "[");
+
+251 ià(!
+	`buf_»ad
+ (
+buf
+, &
+n_ack
+,  (n_ack)))
+
+252 
+dÚe
+;
+
+253 
+i
+ = 0; i < 
+n_ack
+; ++i)
+
+255 ià(!
+	`buf_»ad
+ (
+buf
+, &
+pid
+,  (pid)))
+
+256 
+dÚe
+;
+
+257 
+pid
+ = 
+	`Áohpid
+ (pid);
+
+258 
+	`buf_´štf
+ (&
+out
+, " " 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+pid
+);
+
+260 ià(
+n_ack
+)
+
+262 ià(!
+	`£ssiÚ_id_»ad
+ (&
+sid_ack
+, 
+buf
+))
+
+263 
+dÚe
+;
+
+264 ià(
+v”bo£
+)
+
+265 
+	`buf_´štf
+ (&
+out
+, " sid=%s", 
+	`£ssiÚ_id_´št
+ (&
+sid_ack
+, 
+gc
+));
+
+268 
+dÚe
+:
+
+269 
+	`buf_´štf
+ (&
+out
+, " ]");
+
+270  
+	`BSTR
+ (&
+out
+);
+
+271 
+	}
+}
+
+278 
+	$»lŸbË_š™
+ (
+»lŸbË
+ *
+»l
+, 
+buf_size
+, 
+off£t
+, 
+¬¿y_size
+, 
+boÞ
+ 
+hÞd
+)
+
+280 
+i
+;
+
+282 
+	`CLEAR
+ (*
+»l
+);
+
+283 
+	`ASSERT
+ (
+¬¿y_size
+ > 0 &&‡¼ay_siz�<ð
+RELIABLE_CAPACITY
+);
+
+284 
+»l
+->
+hÞd
+ = hold;
+
+285 
+»l
+->
+size
+ = 
+¬¿y_size
+;
+
+286 
+»l
+->
+off£t
+ = offset;
+
+287 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+289 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+290 
+e
+->
+buf
+ = 
+	`®loc_buf
+ (
+buf_size
+);
+
+291 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+e
+->
+buf
+, 
+off£t
+));
+
+293 
+	}
+}
+
+296 
+	$»lŸbË_ä“
+ (
+»lŸbË
+ *
+»l
+)
+
+298 
+i
+;
+
+299 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+301 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+302 
+	`ä“_buf
+ (&
+e
+->
+buf
+);
+
+304 
+	}
+}
+
+307 
+boÞ
+
+
+308 
+	$»lŸbË_em±y
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+)
+
+310 
+i
+;
+
+311 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+313 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+314 ià(
+e
+->
+aùive
+)
+
+315  
+çl£
+;
+
+317  
+Œue
+;
+
+318 
+	}
+}
+
+322 
+	$»lŸbË_£nd_purge
+ (
+»lŸbË
+ *
+»l
+, 
+»lŸbË_ack
+ *
+ack
+)
+
+324 
+i
+, 
+j
+;
+
+325 
+i
+ = 0; i < 
+ack
+->
+Ën
+; ++i)
+
+327 
+·ck‘_id_ty³
+ 
+pid
+ = 
+ack
+->
+·ck‘_id
+[
+i
+];
+
+328 
+j
+ = 0; j < 
+»l
+->
+size
+; ++j)
+
+330 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+j
+];
+
+331 ià(
+e
+->
+aùive
+ &&ƒ->
+·ck‘_id
+ =ð
+pid
+)
+
+333 
+	`dmsg
+ (
+D_REL_DEBUG
+,
+
+334 "ACK„eûived fÜ…id " 
+·ck‘_id_fÜm©
+ ", deleting from send buffer",
+
+335 (
+·ck‘_id_´št_ty³
+)
+pid
+);
+
+339 ià(
+e
+->
+Ãxt_Œy
+)
+
+341 cÚ¡ 
+š‹rv®_t
+ 
+wake
+ = 
+e
+->
+Ãxt_Œy
+ - 
+now
+;
+
+342 
+	`msg
+ (
+M_INFO
+, "ACK " 
+·ck‘_id_fÜm©
+ ", wake=%d", 
+pid
+, 
+wake
+);
+
+346 
+e
+->
+aùive
+ = 
+çl£
+;
+
+351 
+	}
+}
+
+355 
+	$»lŸbË_´št_ids
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, 
+gc_¬’a
+ *
+gc
+)
+
+357 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+358 
+i
+;
+
+360 
+	`buf_´štf
+ (&
+out
+, "[" 
+·ck‘_id_fÜm©
+ "]", (
+·ck‘_id_´št_ty³
+)
+»l
+->
+·ck‘_id
+);
+
+361 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+363 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+364 ià(
+e
+->
+aùive
+)
+
+365 
+	`buf_´štf
+ (&
+out
+, " " 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+e
+->
+·ck‘_id
+);
+
+367  
+	`BSTR
+ (&
+out
+);
+
+368 
+	}
+}
+
+371 
+boÞ
+
+
+372 
+	$»lŸbË_ÿn_g‘
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+)
+
+374 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+375 
+i
+;
+
+376 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+378 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+379 ià(!
+e
+->
+aùive
+)
+
+380  
+Œue
+;
+
+382 
+	`dmsg
+ (
+D_REL_LOW
+, "ACK‚Øä“„eûiv�bufã¸avažabË: %s", 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+383 
+	`gc_ä“
+ (&
+gc
+);
+
+384  
+çl£
+;
+
+385 
+	}
+}
+
+388 
+boÞ
+
+
+389 
+	$»lŸbË_nÙ_»¶ay
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, 
+·ck‘_id_ty³
+ 
+id
+)
+
+391 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+392 
+i
+;
+
+393 ià(
+	`»lŸbË_pid_mš
+ (
+id
+, 
+»l
+->
+·ck‘_id
+))
+
+394 
+bad
+;
+
+395 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+397 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+398 ià(
+e
+->
+aùive
+ &&ƒ->
+·ck‘_id
+ =ð
+id
+)
+
+399 
+bad
+;
+
+401 
+	`gc_ä“
+ (&
+gc
+);
+
+402  
+Œue
+;
+
+404 
+bad
+:
+
+405 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK " 
+·ck‘_id_fÜm©
+ " i ¨»¶ay: %s", (
+·ck‘_id_´št_ty³
+)
+id
+, 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+406 
+	`gc_ä“
+ (&
+gc
+);
+
+407  
+çl£
+;
+
+408 
+	}
+}
+
+411 
+boÞ
+
+
+412 
+	$»lŸbË_wÚt_b»ak_£qu’tŸl™y
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, 
+·ck‘_id_ty³
+ 
+id
+)
+
+414 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+416 cÚ¡ 
+»t
+ = 
+	`»lŸbË_pid_š_¿nge2
+ (
+id
+, 
+»l
+->
+·ck‘_id
+,„–->
+size
+);
+
+418 ià(!
+»t
+)
+
+420 
+	`dmsg
+ (
+D_REL_LOW
+, "ACK " 
+·ck‘_id_fÜm©
+ " breaks sequentiality: %s",
+
+421 (
+·ck‘_id_´št_ty³
+)
+id
+, 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+424 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK RWBS„–->size=%d„–->·ck‘_id=%08x id=%08x„‘=%d\n", 
+»l
+->
+size
+,„–->
+·ck‘_id
+, 
+id
+, 
+»t
+);
+
+426 
+	`gc_ä“
+ (&
+gc
+);
+
+427  
+»t
+;
+
+428 
+	}
+}
+
+431 
+bufãr
+ *
+
+432 
+	$»lŸbË_g‘_buf
+ (
+»lŸbË
+ *
+»l
+)
+
+434 
+i
+;
+
+435 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+437 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+438 ià(!
+e
+->
+aùive
+)
+
+440 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+e
+->
+buf
+, 
+»l
+->
+off£t
+));
+
+441  &
+e
+->
+buf
+;
+
+444  
+NULL
+;
+
+445 
+	}
+}
+
+448 
+bufãr
+ *
+
+449 
+	$»lŸbË_g‘_buf_ou�ut_£qu’ûd
+ (
+»lŸbË
+ *
+»l
+)
+
+451 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+452 
+i
+;
+
+453 
+·ck‘_id_ty³
+ 
+mš_id
+ = 0;
+
+454 
+boÞ
+ 
+mš_id_defšed
+ = 
+çl£
+;
+
+455 
+bufãr
+ *
+»t
+ = 
+NULL
+;
+
+458 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+460 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+461 ià(
+e
+->
+aùive
+)
+
+463 ià(!
+mš_id_defšed
+ || 
+	`»lŸbË_pid_mš
+ (
+e
+->
+·ck‘_id
+, 
+mš_id
+))
+
+465 
+mš_id_defšed
+ = 
+Œue
+;
+
+466 
+mš_id
+ = 
+e
+->
+·ck‘_id
+;
+
+471 ià(!
+mš_id_defšed
+ || 
+	`»lŸbË_pid_š_¿nge1
+ (
+»l
+->
+·ck‘_id
+, 
+mš_id
+,„–->
+size
+))
+
+473 
+»t
+ = 
+	`»lŸbË_g‘_buf
+ (
+»l
+);
+
+477 
+	`dmsg
+ (
+D_REL_LOW
+, "ACK ou�uˆ£qu’û brok’: %s", 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+479 
+	`gc_ä“
+ (&
+gc
+);
+
+480  
+»t
+;
+
+481 
+	}
+}
+
+484 
+bufãr
+ *
+
+485 
+	$»lŸbË_g‘_buf_£qu’ûd
+ (
+»lŸbË
+ *
+»l
+)
+
+487 
+i
+;
+
+488 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+490 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+491 ià(
+e
+->
+aùive
+ &&ƒ->
+·ck‘_id
+ =ð
+»l
+->packet_id)
+
+493  &
+e
+->
+buf
+;
+
+496  
+NULL
+;
+
+497 
+	}
+}
+
+500 
+boÞ
+
+
+501 
+	$»lŸbË_ÿn_£nd
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+)
+
+503 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+504 
+i
+;
+
+505 
+n_aùive
+ = 0, 
+n_cu¼’t
+ = 0;
+
+506 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+508 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+509 ià(
+e
+->
+aùive
+)
+
+511 ++
+n_aùive
+;
+
+512 ià(
+now
+ >ð
+e
+->
+Ãxt_Œy
+)
+
+513 ++
+n_cu¼’t
+;
+
+516 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK„eliable_can_send‡ctive=%d current=%d : %s",
+
+517 
+n_aùive
+,
+
+518 
+n_cu¼’t
+,
+
+519 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+521 
+	`gc_ä“
+ (&
+gc
+);
+
+522  
+n_cu¼’t
+ > 0 && !
+»l
+->
+hÞd
+;
+
+523 
+	}
+}
+
+525 #ifdeà
+EXPONENTIAL_BACKOFF
+
+
+527 
+time_t
+
+
+528 
+	$»lŸbË_unique_»Œy
+ (
+»lŸbË
+ *
+»l
+, 
+time_t
+ 
+»Œy
+)
+
+530 
+i
+;
+
+531 
+Œue
+)
+
+533 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+535 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+536 ià(
+e
+->
+aùive
+ &&ƒ->
+Ãxt_Œy
+ =ð
+»Œy
+)
+
+537 
+agaš
+;
+
+540 
+agaš
+:
+
+541 ++
+»Œy
+;
+
+543  
+»Œy
+;
+
+544 
+	}
+}
+
+548 
+bufãr
+ *
+
+549 
+	$»lŸbË_£nd
+ (
+»lŸbË
+ *
+»l
+, *
+Ýcode
+)
+
+551 
+i
+;
+
+552 
+»lŸbË_’Œy
+ *
+be¡
+ = 
+NULL
+;
+
+553 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+555 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+557 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+558 ià(
+e
+->
+aùive
+ && 
+loÿl_now
+ >ðe->
+Ãxt_Œy
+)
+
+560 ià(!
+be¡
+ || 
+	`»lŸbË_pid_mš
+ (
+e
+->
+·ck‘_id
+, best->packet_id))
+
+561 
+be¡
+ = 
+e
+;
+
+564 ià(
+be¡
+)
+
+566 #ifdeà
+EXPONENTIAL_BACKOFF
+
+
+568 
+be¡
+->
+Ãxt_Œy
+ = 
+	`»lŸbË_unique_»Œy
+ (
+»l
+, 
+loÿl_now
+ + be¡->
+timeout
+);
+
+569 
+be¡
+->
+timeout
+ *= 2;
+
+572 
+be¡
+->
+Ãxt_Œy
+ = 
+loÿl_now
+ + be¡->
+timeout
+;
+
+574 *
+Ýcode
+ = 
+be¡
+->opcode;
+
+575 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK„–ŸbË_£nd ID " 
+·ck‘_id_fÜm©
+ " (size=%d�o=%d)",
+
+576 (
+·ck‘_id_´št_ty³
+)
+be¡
+->
+·ck‘_id
+, be¡->
+buf
+.
+Ën
+,
+
+577 ()(
+be¡
+->
+Ãxt_Œy
+ - 
+loÿl_now
+));
+
+578  &
+be¡
+->
+buf
+;
+
+580  
+NULL
+;
+
+581 
+	}
+}
+
+585 
+	$»lŸbË_scheduË_now
+ (
+»lŸbË
+ *
+»l
+)
+
+587 
+i
+;
+
+588 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK„eliable_schedule_now");
+
+589 
+»l
+->
+hÞd
+ = 
+çl£
+;
+
+590 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+592 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+593 ià(
+e
+->
+aùive
+)
+
+595 
+e
+->
+Ãxt_Œy
+ = 
+now
+;
+
+596 
+e
+->
+timeout
+ = 
+»l
+->
+š™Ÿl_timeout
+;
+
+599 
+	}
+}
+
+603 
+š‹rv®_t
+
+
+604 
+	$»lŸbË_£nd_timeout
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+)
+
+606 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+607 
+š‹rv®_t
+ 
+»t
+ = 
+BIG_TIMEOUT
+;
+
+608 
+i
+;
+
+609 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+611 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+613 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+614 ià(
+e
+->
+aùive
+)
+
+616 ià(
+e
+->
+Ãxt_Œy
+ <ð
+loÿl_now
+)
+
+618 
+»t
+ = 0;
+
+623 
+»t
+ = 
+	`mš_št
+ (»t, 
+e
+->
+Ãxt_Œy
+ - 
+loÿl_now
+);
+
+628 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK„eliable_send_timeout %d %s",
+
+629 (è
+»t
+,
+
+630 
+	`»lŸbË_´št_ids
+ (
+»l
+, &
+gc
+));
+
+632 
+	`gc_ä“
+ (&
+gc
+);
+
+633  
+»t
+;
+
+634 
+	}
+}
+
+641 
+	$»lŸbË_m¬k_aùive_šcomšg
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+,
+
+642 
+·ck‘_id_ty³
+ 
+pid
+, 
+Ýcode
+)
+
+644 
+i
+;
+
+645 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+647 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+648 ià(
+buf
+ =ð&
+e
+->buf)
+
+650 
+e
+->
+aùive
+ = 
+Œue
+;
+
+653 
+e
+->
+·ck‘_id
+ = 
+pid
+;
+
+656 
+	`ASSERT
+ (!
+	`»lŸbË_pid_mš
+ (
+pid
+, 
+»l
+->
+·ck‘_id
+));
+
+658 
+e
+->
+Ýcode
+ = opcode;
+
+659 
+e
+->
+Ãxt_Œy
+ = 0;
+
+660 
+e
+->
+timeout
+ = 0;
+
+661 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK m¬k‡ùiv�šcomšg ID " 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+e
+->
+·ck‘_id
+);
+
+665 
+	`ASSERT
+ (0);
+
+666 
+	}
+}
+
+673 
+	$»lŸbË_m¬k_aùive_outgošg
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+, 
+Ýcode
+)
+
+675 
+i
+;
+
+676 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+678 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+679 ià(
+buf
+ =ð&
+e
+->buf)
+
+683 
+·ck‘_id_ty³
+ 
+Ãt_pid
+;
+
+684 
+e
+->
+·ck‘_id
+ = 
+»l
+->packet_id++;
+
+685 
+Ãt_pid
+ = 
+	`htÚpid
+ (
+e
+->
+·ck‘_id
+);
+
+686 
+	`ASSERT
+ (
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+Ãt_pid
+,  (net_pid)));
+
+687 
+e
+->
+aùive
+ = 
+Œue
+;
+
+688 
+e
+->
+Ýcode
+ = opcode;
+
+689 
+e
+->
+Ãxt_Œy
+ = 0;
+
+690 
+e
+->
+timeout
+ = 
+»l
+->
+š™Ÿl_timeout
+;
+
+691 
+	`dmsg
+ (
+D_REL_DEBUG
+, "ACK m¬k‡ùiv�outgošg ID " 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+e
+->
+·ck‘_id
+);
+
+695 
+	`ASSERT
+ (0);
+
+696 
+	}
+}
+
+700 
+	$»lŸbË_m¬k_d–‘ed
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+šc_pid
+)
+
+702 
+i
+;
+
+703 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+705 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+706 ià(
+buf
+ =ð&
+e
+->buf)
+
+708 
+e
+->
+aùive
+ = 
+çl£
+;
+
+709 ià(
+šc_pid
+)
+
+710 
+»l
+->
+·ck‘_id
+ = 
+e
+->packet_id + 1;
+
+714 
+	`ASSERT
+ (0);
+
+715 
+	}
+}
+
+720 
+	$»lŸbË_ack_debug_´št
+ (cÚ¡ 
+»lŸbË_ack
+ *
+ack
+, *
+desc
+)
+
+722 
+i
+;
+
+724 
+	`´štf
+ ("********* sŒuù„–ŸbË_ack %s\n", 
+desc
+);
+
+725 
+i
+ = 0; i < 
+ack
+->
+Ën
+; ++i)
+
+727 
+	`´štf
+ (" %d: " 
+·ck‘_id_fÜm©
+ "\n", 
+i
+, (
+·ck‘_id_´št_ty³
+è
+ack
+->
+·ck‘_id
+[i]);
+
+729 
+	}
+}
+
+732 
+	$»lŸbË_debug_´št
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, *
+desc
+)
+
+734 
+i
+;
+
+735 
+	`upd©e_time
+ ();
+
+737 
+	`´štf
+ ("********* sŒuù„–ŸbË %s\n", 
+desc
+);
+
+738 
+	`´štf
+ (" in™Ÿl_timeout=%d\n", ()
+»l
+->
+š™Ÿl_timeout
+);
+
+739 
+	`´štf
+ ("…ack‘_id=" 
+·ck‘_id_fÜm©
+ "\n", 
+»l
+->
+·ck‘_id
+);
+
+740 
+	`´štf
+ ("‚ow=" 
+time_fÜm©
+ "\n", 
+now
+);
+
+741 
+i
+ = 0; i < 
+»l
+->
+size
+; ++i)
+
+743 cÚ¡ 
+»lŸbË_’Œy
+ *
+e
+ = &
+»l
+->
+¬¿y
+[
+i
+];
+
+744 ià(
+e
+->
+aùive
+)
+
+746 
+	`´štf
+ (" %d:…ack‘_id=" 
+·ck‘_id_fÜm©
+ "†’=%d", 
+i
+, 
+e
+->
+·ck‘_id
+,ƒ->
+buf
+.
+Ën
+);
+
+747 
+	`´štf
+ ("‚ext_Œy=" 
+time_fÜm©
+, 
+e
+->
+Ãxt_Œy
+);
+
+748 
+	`´štf
+ ("\n");
+
+751 
+	}
+}
+
+756 
+	$dummy
+(è{
+	}
+}
+
+	@reliable.h
+
+32 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+34 #iâdeà
+RELIABLE_H
+
+
+35 
+	#RELIABLE_H
+
+
+	)
+
+37 
+	~"basic.h
+"
+
+38 
+	~"bufãr.h
+"
+
+39 
+	~"·ck‘_id.h
+"
+
+40 
+	~"£ssiÚ_id.h
+"
+
+41 
+	~"mtu.h
+"
+
+47 
+	#EXPONENTIAL_BACKOFF
+
+
+	)
+
+49 
+	#RELIABLE_ACK_SIZE
+ 8
+
+	)
+
+54 
+	#RELIABLE_CAPACITY
+ 8
+
+	)
+
+62 
+	s»lŸbË_ack
+
+
+64 
+	mËn
+;
+
+65 
+·ck‘_id_ty³
+ 
+	m·ck‘_id
+[
+RELIABLE_ACK_SIZE
+];
+
+72 
+	s»lŸbË_’Œy
+
+
+74 
+boÞ
+ 
+	maùive
+;
+
+75 
+š‹rv®_t
+ 
+	mtimeout
+;
+
+76 
+time_t
+ 
+	mÃxt_Œy
+;
+
+77 
+·ck‘_id_ty³
+ 
+	m·ck‘_id
+;
+
+78 
+	mÝcode
+;
+
+79 
+bufãr
+ 
+	mbuf
+;
+
+86 
+	s»lŸbË
+
+
+88 
+	msize
+;
+
+89 
+š‹rv®_t
+ 
+	mš™Ÿl_timeout
+;
+
+90 
+·ck‘_id_ty³
+ 
+	m·ck‘_id
+;
+
+91 
+	moff£t
+;
+
+92 
+boÞ
+ 
+	mhÞd
+;
+
+93 
+»lŸbË_’Œy
+ 
+	m¬¿y
+[
+RELIABLE_CAPACITY
+];
+
+119 
+boÞ
+ 
+»lŸbË_ack_»ad
+ (
+»lŸbË_ack
+ *
+ack
+,
+
+120 
+bufãr
+ *
+buf
+, cÚ¡ 
+£ssiÚ_id
+ *
+sid
+);
+
+129 
+»lŸbË_£nd_purge
+ (
+»lŸbË
+ *
+»l
+, 
+»lŸbË_ack
+ *
+ack
+);
+
+148 
+šlše
+ 
+boÞ
+
+
+149 
+	$»lŸbË_ack_em±y
+ (
+»lŸbË_ack
+ *
+ack
+)
+
+151  !
+ack
+->
+Ën
+;
+
+152 
+	}
+}
+
+172 
+boÞ
+ 
+»lŸbË_ack_wr™e
+ (
+»lŸbË_ack
+ *
+ack
+,
+
+173 
+bufãr
+ *
+buf
+,
+
+174 cÚ¡ 
+£ssiÚ_id
+ *
+sid
+, 
+max
+, 
+boÞ
+ 
+´•’d
+);
+
+195 
+»lŸbË_š™
+ (
+»lŸbË
+ *
+»l
+, 
+buf_size
+, 
+off£t
+, 
+¬¿y_size
+, 
+boÞ
+ 
+hÞd
+);
+
+202 
+»lŸbË_ä“
+ (
+»lŸbË
+ *
+»l
+);
+
+205 
+»lŸbË_ack_adju¡_äame_·¿m‘”s
+ (
+äame
+* f¿me, 
+max
+);
+
+224 
+boÞ
+ 
+»lŸbË_ÿn_g‘
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+);
+
+237 
+boÞ
+ 
+»lŸbË_nÙ_»¶ay
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, 
+·ck‘_id_ty³
+ 
+id
+);
+
+261 
+boÞ
+ 
+»lŸbË_wÚt_b»ak_£qu’tŸl™y
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, 
+·ck‘_id_ty³
+ 
+id
+);
+
+273 
+boÞ
+ 
+»lŸbË_ack_»ad_·ck‘_id
+ (
+bufãr
+ *
+buf
+, 
+·ck‘_id_ty³
+ *
+pid
+);
+
+286 
+bufãr
+ *
+»lŸbË_g‘_buf
+ (
+»lŸbË
+ *
+»l
+);
+
+297 
+»lŸbË_m¬k_aùive_šcomšg
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+,
+
+298 
+·ck‘_id_ty³
+ 
+pid
+, 
+Ýcode
+);
+
+313 
+boÞ
+ 
+»lŸbË_ack_acknowËdge_·ck‘_id
+ (
+»lŸbË_ack
+ *
+ack
+, 
+·ck‘_id_ty³
+ 
+pid
+);
+
+332 
+bufãr
+ *
+»lŸbË_g‘_buf_£qu’ûd
+ (
+»lŸbË
+ *
+»l
+);
+
+342 
+»lŸbË_m¬k_d–‘ed
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+šc_pid
+);
+
+363 
+bufãr
+ *
+»lŸbË_g‘_buf_ou�ut_£qu’ûd
+ (
+»lŸbË
+ *
+»l
+);
+
+376 
+»lŸbË_m¬k_aùive_outgošg
+ (
+»lŸbË
+ *
+»l
+, 
+bufãr
+ *
+buf
+, 
+Ýcode
+);
+
+397 
+boÞ
+ 
+»lŸbË_ÿn_£nd
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+);
+
+416 
+bufãr
+ *
+»lŸbË_£nd
+ (
+»lŸbË
+ *
+»l
+, *
+Ýcode
+);
+
+435 
+boÞ
+ 
+»lŸbË_em±y
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+);
+
+448 
+š‹rv®_t
+ 
+»lŸbË_£nd_timeout
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+);
+
+457 
+»lŸbË_scheduË_now
+ (
+»lŸbË
+ *
+»l
+);
+
+459 
+»lŸbË_debug_´št
+ (cÚ¡ 
+»lŸbË
+ *
+»l
+, *
+desc
+);
+
+462 
+šlše
+ 
+
+463 
+	$»lŸbË_£t_timeout
+ (
+»lŸbË
+ *
+»l
+, 
+š‹rv®_t
+ 
+timeout
+)
+
+465 
+»l
+->
+š™Ÿl_timeout
+ = 
+timeout
+;
+
+466 
+	}
+}
+
+469 cÚ¡ *
+»lŸbË_ack_´št
+ (
+bufãr
+ *
+buf
+, 
+boÞ
+ 
+v”bo£
+, 
+gc_¬’a
+ *
+gc
+);
+
+471 
+»lŸbË_ack_debug_´št
+ (cÚ¡ 
+»lŸbË_ack
+ *
+ack
+, *
+desc
+);
+
+	@route.c
+
+29 #ifdeà
+HAVE_CONFIG_H
+
+
+30 
+	~"cÚfig.h
+"
+
+31 #–ià
+defšed
+(
+_MSC_VER
+)
+
+32 
+	~"cÚfig-msvc.h
+"
+
+35 
+	~"sysh—d.h
+"
+
+37 
+	~"commÚ.h
+"
+
+38 
+	~"”rÜ.h
+"
+
+39 
+	~"rou‹.h
+"
+
+40 
+	~"misc.h
+"
+
+41 
+	~"sock‘.h
+"
+
+42 
+	~"mªage.h
+"
+
+43 
+	~"wš32.h
+"
+
+44 
+	~"ÝtiÚs.h
+"
+
+46 
+	~"memdbg.h
+"
+
+48 #ifdeà
+WIN32
+
+
+49 
+	#METRIC_NOT_USED
+ ((
+DWORD
+)-1)
+
+	)
+
+52 
+d–‘e_rou‹
+ (
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+54 
+g‘_by·ss_add»s£s
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+æags
+);
+
+56 #ifdeà
+ENABLE_DEBUG
+
+
+59 
+	$´št_by·ss_add»s£s
+ (cÚ¡ 
+rou‹_by·ss
+ *
+rb
+)
+
+61 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+62 
+i
+;
+
+63 
+i
+ = 0; i < 
+rb
+->
+n_by·ss
+; ++i)
+
+65 
+	`msg
+ (
+D_ROUTE
+, "ROUTE: bypass_host_route[%d]=%s",
+
+66 
+i
+,
+
+67 
+	`´št_š_addr_t
+ (
+rb
+->
+by·ss
+[
+i
+], 0, &
+gc
+));
+
+69 
+	`gc_ä“
+ (&
+gc
+);
+
+70 
+	}
+}
+
+74 
+boÞ
+
+
+75 
+	$add_by·ss_add»ss
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+š_addr_t
+ 
+a
+)
+
+77 
+i
+;
+
+78 
+i
+ = 0; i < 
+rb
+->
+n_by·ss
+; ++i)
+
+80 ià(
+a
+ =ð
+rb
+->
+by·ss
+[
+i
+])
+
+81  
+Œue
+;
+
+83 ià(
+rb
+->
+n_by·ss
+ < 
+N_ROUTE_BYPASS
+)
+
+85 
+rb
+->
+by·ss
+[rb->
+n_by·ss
+++] = 
+a
+;
+
+86  
+Œue
+;
+
+90  
+çl£
+;
+
+92 
+	}
+}
+
+94 
+rou‹_ÝtiÚ_li¡
+ *
+
+95 
+	$Ãw_rou‹_ÝtiÚ_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+)
+
+97 
+rou‹_ÝtiÚ_li¡
+ *
+»t
+;
+
+98 
+	`ALLOC_VAR_ARRAY_CLEAR_GC
+ (
+»t
+, 
+rou‹_ÝtiÚ_li¡
+, 
+rou‹_ÝtiÚ
+, 
+max_rou‹s
+, 
+a
+);
+
+99 
+»t
+->
+ÿ·c™y
+ = 
+max_rou‹s
+;
+
+100  
+»t
+;
+
+101 
+	}
+}
+
+103 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+
+104 
+	$Ãw_rou‹_�v6_ÝtiÚ_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+)
+
+106 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+»t
+;
+
+107 
+	`ALLOC_VAR_ARRAY_CLEAR_GC
+ (
+»t
+, 
+rou‹_�v6_ÝtiÚ_li¡
+, 
+rou‹_�v6_ÝtiÚ
+, 
+max_rou‹s
+, 
+a
+);
+
+108 
+»t
+->
+ÿ·c™y
+ = 
+max_rou‹s
+;
+
+109  
+»t
+;
+
+110 
+	}
+}
+
+112 
+rou‹_ÝtiÚ_li¡
+ *
+
+113 
+	$þÚe_rou‹_ÝtiÚ_li¡
+ (cÚ¡ 
+rou‹_ÝtiÚ_li¡
+ *
+¤c
+, 
+gc_¬’a
+ *
+a
+)
+
+115 cÚ¡ 
+size_t
+ 
+¾_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_ÝtiÚ
+), 
+¤c
+->
+ÿ·c™y
+, (
+rou‹_ÝtiÚ_li¡
+));
+
+116 
+rou‹_ÝtiÚ_li¡
+ *
+»t
+ = 
+	`gc_m®loc
+ (
+¾_size
+, 
+çl£
+, 
+a
+);
+
+117 
+	`memýy
+ (
+»t
+, 
+¤c
+, 
+¾_size
+);
+
+118  
+»t
+;
+
+119 
+	}
+}
+
+121 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+
+122 
+	$þÚe_rou‹_�v6_ÝtiÚ_li¡
+ (cÚ¡ 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+¤c
+, 
+gc_¬’a
+ *
+a
+)
+
+124 cÚ¡ 
+size_t
+ 
+¾_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_�v6_ÝtiÚ
+), 
+¤c
+->
+ÿ·c™y
+, (
+rou‹_�v6_ÝtiÚ_li¡
+));
+
+125 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+»t
+ = 
+	`gc_m®loc
+ (
+¾_size
+, 
+çl£
+, 
+a
+);
+
+126 
+	`memýy
+ (
+»t
+, 
+¤c
+, 
+¾_size
+);
+
+127  
+»t
+;
+
+128 
+	}
+}
+
+131 
+	$cÝy_rou‹_ÝtiÚ_li¡
+ (
+rou‹_ÝtiÚ_li¡
+ *
+de¡
+, cÚ¡ rou‹_ÝtiÚ_li¡ *
+¤c
+)
+
+133 cÚ¡ 
+size_t
+ 
+¤c_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_ÝtiÚ
+), 
+¤c
+->
+ÿ·c™y
+, (
+rou‹_ÝtiÚ_li¡
+));
+
+134 ià(
+¤c
+->
+ÿ·c™y
+ > 
+de¡
+->capacity)
+
+135 
+	`msg
+ (
+M_FATAL
+, 
+PACKAGE_NAME
+ " ROUTE: (cÝyènumb” oàrou‹ o±iÚ š srø(%dèi g»©”�hª„ou‹†i¡ c­ac™y iÀde¡ (%d)", 
+¤c
+->
+ÿ·c™y
+, 
+de¡
+->capacity);
+
+136 
+	`memýy
+ (
+de¡
+, 
+¤c
+, 
+¤c_size
+);
+
+137 
+	}
+}
+
+140 
+	$cÝy_rou‹_�v6_ÝtiÚ_li¡
+ (
+rou‹_�v6_ÝtiÚ_li¡
+ *
+de¡
+,
+
+141 cÚ¡ 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+¤c
+)
+
+143 cÚ¡ 
+size_t
+ 
+¤c_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_�v6_ÝtiÚ
+), 
+¤c
+->
+ÿ·c™y
+, (
+rou‹_�v6_ÝtiÚ_li¡
+));
+
+144 ià(
+¤c
+->
+ÿ·c™y
+ > 
+de¡
+->capacity)
+
+145 
+	`msg
+ (
+M_FATAL
+, 
+PACKAGE_NAME
+ " ROUTE: (cÝyènumb” oàrou‹ o±iÚ š srø(%dèi g»©”�hª„ou‹†i¡ c­ac™y iÀde¡ (%d)", 
+¤c
+->
+ÿ·c™y
+, 
+de¡
+->capacity);
+
+146 
+	`memýy
+ (
+de¡
+, 
+¤c
+, 
+¤c_size
+);
+
+147 
+	}
+}
+
+149 
+rou‹_li¡
+ *
+
+150 
+	$Ãw_rou‹_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+)
+
+152 
+rou‹_li¡
+ *
+»t
+;
+
+153 
+	`ALLOC_VAR_ARRAY_CLEAR_GC
+ (
+»t
+, 
+rou‹_li¡
+, 
+rou‹_�v4
+, 
+max_rou‹s
+, 
+a
+);
+
+154 
+»t
+->
+ÿ·c™y
+ = 
+max_rou‹s
+;
+
+155  
+»t
+;
+
+156 
+	}
+}
+
+158 
+rou‹_�v6_li¡
+ *
+
+159 
+	$Ãw_rou‹_�v6_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+)
+
+161 
+rou‹_�v6_li¡
+ *
+»t
+;
+
+162 
+	`ALLOC_VAR_ARRAY_CLEAR_GC
+ (
+»t
+, 
+rou‹_�v6_li¡
+, 
+rou‹_�v6
+, 
+max_rou‹s
+, 
+a
+);
+
+163 
+»t
+->
+ÿ·c™y
+ = 
+max_rou‹s
+;
+
+164  
+»t
+;
+
+165 
+	}
+}
+
+168 
+	$rou‹_¡ršg
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, 
+gc_¬’a
+ *
+gc
+)
+
+170 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+171 
+	`buf_´štf
+ (&
+out
+, "ROUTE‚etwork %s‚etmask %s gateway %s",
+
+172 
+	`´št_š_addr_t
+ (
+r
+->
+ÃtwÜk
+, 0, 
+gc
+),
+
+173 
+	`´št_š_addr_t
+ (
+r
+->
+Ãtmask
+, 0, 
+gc
+),
+
+174 
+	`´št_š_addr_t
+ (
+r
+->
+g©eway
+, 0, 
+gc
+)
+
+176 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+177 
+	`buf_´štf
+ (&
+out
+, " m‘riø%d", 
+r
+->
+m‘ric
+);
+
+178  
+	`BSTR
+ (&
+out
+);
+
+179 
+	}
+}
+
+181 
+boÞ
+
+
+182 
+	$is_rou‹_·rm_defšed
+ (cÚ¡ *
+·rm
+)
+
+184 ià(!
+·rm
+)
+
+185  
+çl£
+;
+
+186 ià(!
+	`¡rcmp
+ (
+·rm
+, "default"))
+
+187  
+çl£
+;
+
+188  
+Œue
+;
+
+189 
+	}
+}
+
+192 
+	$£‹nv_rou‹_addr
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+key
+, cÚ¡ 
+š_addr_t
+ 
+addr
+, 
+i
+)
+
+194 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+195 
+bufãr
+ 
+Çme
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+196 ià(
+i
+ >= 0)
+
+197 
+	`buf_´štf
+ (&
+Çme
+, "rou‹_%s_%d", 
+key
+, 
+i
+);
+
+199 
+	`buf_´štf
+ (&
+Çme
+, "rou‹_%s", 
+key
+);
+
+200 
+	`£‹nv_¡r
+ (
+es
+, 
+	`BSTR
+ (&
+Çme
+), 
+	`´št_š_addr_t
+ (
+addr
+, 0, &
+gc
+));
+
+201 
+	`gc_ä“
+ (&
+gc
+);
+
+202 
+	}
+}
+
+204 
+boÞ
+
+
+205 
+	$g‘_¥ecŸl_addr
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+,
+
+206 cÚ¡ *
+¡ršg
+,
+
+207 
+š_addr_t
+ *
+out
+,
+
+208 
+boÞ
+ *
+¡©us
+)
+
+210 ià(
+¡©us
+)
+
+211 *
+¡©us
+ = 
+Œue
+;
+
+212 ià(!
+	`¡rcmp
+ (
+¡ršg
+, "vpn_gateway"))
+
+214 ià(
+¾
+)
+
+216 ià(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_ENDPOINT
+)
+
+217 *
+out
+ = 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+;
+
+220 
+	`msg
+ (
+M_INFO
+, 
+PACKAGE_NAME
+ " ROUTE: vpn_gateway undefined");
+
+221 ià(
+¡©us
+)
+
+222 *
+¡©us
+ = 
+çl£
+;
+
+225  
+Œue
+;
+
+227 ià(!
+	`¡rcmp
+ (
+¡ršg
+, "net_gateway"))
+
+229 ià(
+¾
+)
+
+231 ià(
+¾
+->
+rgi
+.
+æags
+ & 
+RGI_ADDR_DEFINED
+)
+
+232 *
+out
+ = 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+;
+
+235 
+	`msg
+ (
+M_INFO
+, 
+PACKAGE_NAME
+ " ROUTE:‚et_gateway undefined -- unable�o get default gateway from system");
+
+236 ià(
+¡©us
+)
+
+237 *
+¡©us
+ = 
+çl£
+;
+
+240  
+Œue
+;
+
+242 ià(!
+	`¡rcmp
+ (
+¡ršg
+, "remote_host"))
+
+244 ià(
+¾
+)
+
+246 ià(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_HOST
+)
+
+247 *
+out
+ = 
+¾
+->
+¥ec
+.
+»mÙe_ho¡
+;
+
+250 
+	`msg
+ (
+M_INFO
+, 
+PACKAGE_NAME
+ " ROUTE:„emote_host undefined");
+
+251 ià(
+¡©us
+)
+
+252 *
+¡©us
+ = 
+çl£
+;
+
+255  
+Œue
+;
+
+257  
+çl£
+;
+
+258 
+	}
+}
+
+260 
+boÞ
+
+
+261 
+	$is_¥ecŸl_addr
+ (cÚ¡ *
+addr_¡r
+)
+
+263 ià(
+addr_¡r
+)
+
+264  
+	`g‘_¥ecŸl_addr
+ (
+NULL
+, 
+addr_¡r
+, NULL, NULL);
+
+266  
+çl£
+;
+
+267 
+	}
+}
+
+269 
+boÞ
+
+
+270 
+	$š™_rou‹
+ (
+rou‹_�v4
+ *
+r
+,
+
+271 
+addršfo
+ **
+ÃtwÜk_li¡
+,
+
+272 cÚ¡ 
+rou‹_ÝtiÚ
+ *
+ro
+,
+
+273 cÚ¡ 
+rou‹_li¡
+ *
+¾
+)
+
+275 cÚ¡ 
+š_addr_t
+ 
+deçuÉ_Ãtmask
+ = 
+IPV4_NETMASK_HOST
+;
+
+276 
+boÞ
+ 
+¡©us
+;
+
+277 
+»t
+;
+
+278 
+š_addr
+ 
+¥ecŸl
+;
+
+280 
+	`CLEAR
+ (*
+r
+);
+
+281 
+r
+->
+ÝtiÚ
+ = 
+ro
+;
+
+285 ià(!
+	`is_rou‹_·rm_defšed
+ (
+ro
+->
+ÃtwÜk
+))
+
+287 
+çž
+;
+
+294 if(
+	`g‘_¥ecŸl_addr
+ (
+¾
+, 
+ro
+->
+ÃtwÜk
+, &
+¥ecŸl
+.
+s_addr
+, &
+¡©us
+))
+
+296 
+¥ecŸl
+.
+s_addr
+ = 
+	`htÚl
+(special.s_addr);
+
+297 
+»t
+ = 
+	`Ý’v²_g‘addršfo
+(0, 
+	`š‘_Áß
+(
+¥ecŸl
+), 0, 
+NULL
+,
+
+298 
+AF_INET
+, 
+ÃtwÜk_li¡
+);
+
+301 
+»t
+ = 
+	`Ý’v²_g‘addršfo
+(
+GETADDR_RESOLVE
+ | 
+GETADDR_WARN_ON_SIGNAL
+,
+
+302 
+ro
+->
+ÃtwÜk
+, 0, 
+NULL
+, 
+AF_INET
+, 
+ÃtwÜk_li¡
+);
+
+304 
+¡©us
+ = (
+»t
+ == 0);
+
+306 ià(!
+¡©us
+)
+
+307 
+çž
+;
+
+311 ià(
+	`is_rou‹_·rm_defšed
+ (
+ro
+->
+Ãtmask
+))
+
+313 
+r
+->
+Ãtmask
+ = 
+	`g‘addr
+ (
+
+314 
+GETADDR_HOST_ORDER
+
+
+315 | 
+GETADDR_WARN_ON_SIGNAL
+,
+
+316 
+ro
+->
+Ãtmask
+,
+
+318 &
+¡©us
+,
+
+319 
+NULL
+);
+
+320 ià(!
+¡©us
+)
+
+321 
+çž
+;
+
+324 
+r
+->
+Ãtmask
+ = 
+deçuÉ_Ãtmask
+;
+
+328 ià(
+	`is_rou‹_·rm_defšed
+ (
+ro
+->
+g©eway
+))
+
+330 ià(!
+	`g‘_¥ecŸl_addr
+ (
+¾
+, 
+ro
+->
+g©eway
+, &
+r
+->g©eway, &
+¡©us
+))
+
+332 
+r
+->
+g©eway
+ = 
+	`g‘addr
+ (
+
+333 
+GETADDR_RESOLVE
+
+
+334 | 
+GETADDR_HOST_ORDER
+
+
+335 | 
+GETADDR_WARN_ON_SIGNAL
+,
+
+336 
+ro
+->
+g©eway
+,
+
+338 &
+¡©us
+,
+
+339 
+NULL
+);
+
+341 ià(!
+¡©us
+)
+
+342 
+çž
+;
+
+346 ià(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_ENDPOINT
+)
+
+347 
+r
+->
+g©eway
+ = 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+;
+
+350 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE: " PACKAGE_NAME "‚eeds‡ gateway…arameter for‡ --route option‡nd‚o default was specified byƒither --route-gateway or --ifconfig options");
+
+351 
+çž
+;
+
+357 
+r
+->
+m‘ric
+ = 0;
+
+358 ià(
+	`is_rou‹_·rm_defšed
+ (
+ro
+->
+m‘ric
+))
+
+360 
+r
+->
+m‘ric
+ = 
+	`©oi
+ (
+ro
+->metric);
+
+361 ià(
+r
+->
+m‘ric
+ < 0)
+
+363 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE:„oute metric for‚etwork %s (%s) must be >= 0",
+
+364 
+ro
+->
+ÃtwÜk
+,
+
+365 
+ro
+->
+m‘ric
+);
+
+366 
+çž
+;
+
+368 
+r
+->
+æags
+ |ð
+RT_METRIC_DEFINED
+;
+
+370 ià(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_DEFAULT_METRIC
+)
+
+372 
+r
+->
+m‘ric
+ = 
+¾
+->
+¥ec
+.
+deçuÉ_m‘ric
+;
+
+373 
+r
+->
+æags
+ |ð
+RT_METRIC_DEFINED
+;
+
+376 
+r
+->
+æags
+ |ð
+RT_DEFINED
+;
+
+378  
+Œue
+;
+
+380 
+çž
+:
+
+381 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE: failed�o…arse/resolve„oute for host/network: %s",
+
+382 
+ro
+->
+ÃtwÜk
+);
+
+383  
+çl£
+;
+
+384 
+	}
+}
+
+386 
+boÞ
+
+
+387 
+	$š™_rou‹_�v6
+ (
+rou‹_�v6
+ *
+r6
+,
+
+388 cÚ¡ 
+rou‹_�v6_ÝtiÚ
+ *
+r6o
+,
+
+389 cÚ¡ 
+rou‹_�v6_li¡
+ *
+¾6
+ )
+
+391 
+r6
+->
+defšed
+ = 
+çl£
+;
+
+393 iàÐ!
+	`g‘_�v6_addr
+Ð
+r6o
+->
+´efix
+, &
+r6
+->
+ÃtwÜk
+, &r6->
+Ãtb™s
+, 
+NULL
+, 
+M_WARN
+ ))
+
+394 
+çž
+;
+
+397 ià(
+	`is_rou‹_·rm_defšed
+ (
+r6o
+->
+g©eway
+))
+
+399 iàÐ
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+r6o
+->
+g©eway
+, &
+r6
+->gateway ) != 1 )
+
+401 
+	`msg
+Ð
+M_WARN
+, 
+PACKAGE_NAME
+ "ROUTE6: cªnÙ…¬£ g©eway s³ø'%s'", 
+r6o
+->
+g©eway
+ );
+
+404 ià(
+¾6
+->
+»mÙe_’dpošt_defšed
+)
+
+406 
+r6
+->
+g©eway
+ = 
+¾6
+->
+»mÙe_’dpošt_�v6
+;
+
+410 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE6: " PACKAGE_NAME "‚eeds‡ gateway…arameter for‡ --route-ipv6 option‡nd‚o default was specified byƒither --route-ipv6-gateway or --ifconfig-ipv6 options");
+
+411 
+çž
+;
+
+416 
+r6
+->
+m‘ric_defšed
+ = 
+çl£
+;
+
+417 
+r6
+->
+m‘ric
+ = -1;
+
+418 ià(
+	`is_rou‹_·rm_defšed
+ (
+r6o
+->
+m‘ric
+))
+
+420 
+r6
+->
+m‘ric
+ = 
+	`©oi
+ (
+r6o
+->metric);
+
+421 ià(
+r6
+->
+m‘ric
+ < 0)
+
+423 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE:„oute metric for‚etwork %s (%s) must be >= 0",
+
+424 
+r6o
+->
+´efix
+,
+
+425 
+r6o
+->
+m‘ric
+);
+
+426 
+çž
+;
+
+428 
+r6
+->
+m‘ric_defšed
+ = 
+Œue
+;
+
+430 ià(
+¾6
+->
+deçuÉ_m‘ric_defšed
+)
+
+432 
+r6
+->
+m‘ric
+ = 
+¾6
+->
+deçuÉ_m‘ric
+;
+
+433 
+r6
+->
+m‘ric_defšed
+ = 
+Œue
+;
+
+436 
+r6
+->
+defšed
+ = 
+Œue
+;
+
+438  
+Œue
+;
+
+440 
+çž
+:
+
+441 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE: failed�o…arse/resolve„oute for host/network: %s",
+
+442 
+r6o
+->
+´efix
+);
+
+443 
+r6
+->
+defšed
+ = 
+çl£
+;
+
+444  
+çl£
+;
+
+445 
+	}
+}
+
+448 
+	$add_rou‹_to_ÝtiÚ_li¡
+ (
+rou‹_ÝtiÚ_li¡
+ *
+l
+,
+
+449 cÚ¡ *
+ÃtwÜk
+,
+
+450 cÚ¡ *
+Ãtmask
+,
+
+451 cÚ¡ *
+g©eway
+,
+
+452 cÚ¡ *
+m‘ric
+)
+
+454 
+rou‹_ÝtiÚ
+ *
+ro
+;
+
+455 ià(
+l
+->
+n
+ >ðl->
+ÿ·c™y
+)
+
+456 
+	`msg
+ (
+M_FATAL
+, 
+PACKAGE_NAME
+ " ROUTE: cannot‡dd more�han %d„outes --…lease increase�he max-routes option in�he client configuration file",
+
+457 
+l
+->
+ÿ·c™y
+);
+
+458 
+ro
+ = &
+l
+->
+rou‹s
+[l->
+n
+];
+
+459 
+ro
+->
+ÃtwÜk
+ =‚etwork;
+
+460 
+ro
+->
+Ãtmask
+ =‚etmask;
+
+461 
+ro
+->
+g©eway
+ = gateway;
+
+462 
+ro
+->
+m‘ric
+ = metric;
+
+463 ++
+l
+->
+n
+;
+
+464 
+	}
+}
+
+467 
+	$add_rou‹_�v6_to_ÝtiÚ_li¡
+ (
+rou‹_�v6_ÝtiÚ_li¡
+ *
+l
+,
+
+468 cÚ¡ *
+´efix
+,
+
+469 cÚ¡ *
+g©eway
+,
+
+470 cÚ¡ *
+m‘ric
+)
+
+472 
+rou‹_�v6_ÝtiÚ
+ *
+ro
+;
+
+473 ià(
+l
+->
+n
+ >ðl->
+ÿ·c™y
+)
+
+474 
+	`msg
+ (
+M_FATAL
+, 
+PACKAGE_NAME
+ " ROUTE: cannot‡dd more�han %d IPv6„outes --…lease increase�he max-routes option in�he client configuration file",
+
+475 
+l
+->
+ÿ·c™y
+);
+
+476 
+ro
+ = &
+l
+->
+rou‹s_�v6
+[l->
+n
+];
+
+477 
+ro
+->
+´efix
+ =…refix;
+
+478 
+ro
+->
+g©eway
+ = gateway;
+
+479 
+ro
+->
+m‘ric
+ = metric;
+
+480 ++
+l
+->
+n
+;
+
+481 
+	}
+}
+
+484 
+	$þ—r_rou‹_li¡
+ (
+rou‹_li¡
+ *
+¾
+)
+
+486 cÚ¡ 
+ÿ·c™y
+ = 
+¾
+->capacity;
+
+487 cÚ¡ 
+size_t
+ 
+¾_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_�v4
+), 
+ÿ·c™y
+, (
+rou‹_li¡
+));
+
+488 
+	`mem£t
+(
+¾
+, 0, 
+¾_size
+);
+
+489 
+¾
+->
+ÿ·c™y
+ = capacity;
+
+490 
+	}
+}
+
+493 
+	$þ—r_rou‹_�v6_li¡
+ (
+rou‹_�v6_li¡
+ *
+¾6
+)
+
+495 cÚ¡ 
+ÿ·c™y
+ = 
+¾6
+->capacity;
+
+496 cÚ¡ 
+size_t
+ 
+¾6_size
+ = 
+	`¬¿y_muÉ_§ã
+ ((
+rou‹_�v6
+), 
+ÿ·c™y
+, (
+rou‹_�v6_li¡
+));
+
+497 
+	`mem£t
+(
+¾6
+, 0, 
+¾6_size
+);
+
+498 
+¾6
+->
+ÿ·c™y
+ = capacity;
+
+499 
+	}
+}
+
+502 
+	$rou‹_li¡_add_v²_g©eway
+ (
+rou‹_li¡
+ *
+¾
+,
+
+503 
+’v_£t
+ *
+es
+,
+
+504 cÚ¡ 
+š_addr_t
+ 
+addr
+)
+
+506 
+	`ASSERT
+(
+¾
+);
+
+507 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+ = 
+addr
+;
+
+508 
+¾
+->
+¥ec
+.
+æags
+ |ð
+RTSA_REMOTE_ENDPOINT
+;
+
+509 
+	`£‹nv_rou‹_addr
+ (
+es
+, "v²_g©eway", 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+, -1);
+
+510 
+	}
+}
+
+513 
+	$add_block_loÿl_™em
+ (
+rou‹_li¡
+ *
+¾
+,
+
+514 cÚ¡ 
+rou‹_g©eway_add»ss
+ *
+g©eway
+,
+
+515 
+š_addr_t
+ 
+�rg‘
+)
+
+517 cÚ¡ 
+rgi_Ãeded
+ = (
+RGI_ADDR_DEFINED
+|
+RGI_NETMASK_DEFINED
+);
+
+518 ià((
+¾
+->
+rgi
+.
+æags
+ & 
+rgi_Ãeded
+) ==„gi_needed
+
+519 && 
+¾
+->
+rgi
+.
+g©eway
+.
+Ãtmask
+ < 0xFFFFFFFF
+
+520 && (
+¾
+->
+n
+)+2 <ð¾->
+ÿ·c™y
+)
+
+522 
+rou‹_�v4
+ 
+r
+;
+
+523 
+l2
+;
+
+526 
+	`CLEAR
+(
+r
+);
+
+527 
+r
+.
+æags
+ = 
+RT_DEFINED
+;
+
+528 
+r
+.
+g©eway
+ = 
+�rg‘
+;
+
+529 
+r
+.
+ÃtwÜk
+ = 
+g©eway
+->
+addr
+ & g©eway->
+Ãtmask
+;
+
+530 
+l2
+ = ((~
+g©eway
+->
+Ãtmask
+)+1)>>1;
+
+531 
+r
+.
+Ãtmask
+ = ~(
+l2
+-1);
+
+532 
+¾
+->
+rou‹s
+[¾->
+n
+++] = 
+r
+;
+
+533 
+r
+.
+ÃtwÜk
+ +ð
+l2
+;
+
+534 
+¾
+->
+rou‹s
+[¾->
+n
+++] = 
+r
+;
+
+536 
+	}
+}
+
+539 
+	$add_block_loÿl
+ (
+rou‹_li¡
+ *
+¾
+)
+
+541 cÚ¡ 
+rgi_Ãeded
+ = (
+RGI_ADDR_DEFINED
+|
+RGI_NETMASK_DEFINED
+);
+
+542 ià((
+¾
+->
+æags
+ & 
+RG_BLOCK_LOCAL
+)
+
+543 && (
+¾
+->
+rgi
+.
+æags
+ & 
+rgi_Ãeded
+) ==„gi_needed
+
+544 && (
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_ENDPOINT
+)
+
+545 && 
+¾
+->
+¥ec
+.
+»mÙe_ho¡_loÿl
+ !ð
+TLA_LOCAL
+)
+
+547 
+size_t
+ 
+i
+;
+
+550 
+	`add_by·ss_add»ss
+ (&
+¾
+->
+¥ec
+.
+by·ss
+,„l->
+rgi
+.
+g©eway
+.
+addr
+);
+
+553 
+	`add_block_loÿl_™em
+ (
+¾
+, &¾->
+rgi
+.
+g©eway
+,„l->
+¥ec
+.
+»mÙe_’dpošt
+);
+
+556 
+i
+ = 0; i < 
+¾
+->
+rgi
+.
+n_addrs
+; ++i)
+
+558 cÚ¡ 
+rou‹_g©eway_add»ss
+ *
+gwa
+ = &
+¾
+->
+rgi
+.
+addrs
+[
+i
+];
+
+560 ià(!((
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+ &„l->rgi.g©eway.
+Ãtmask
+è=ð(
+gwa
+->addr & gwa->netmask)
+
+561 && 
+¾
+->
+rgi
+.
+g©eway
+.
+Ãtmask
+ =ð
+gwa
+->netmask))
+
+562 
+	`add_block_loÿl_™em
+ (
+¾
+, 
+gwa
+,„l->
+¥ec
+.
+»mÙe_’dpošt
+);
+
+565 
+	}
+}
+
+567 
+boÞ
+
+
+568 
+	$š™_rou‹_li¡
+ (
+rou‹_li¡
+ *
+¾
+,
+
+569 cÚ¡ 
+rou‹_ÝtiÚ_li¡
+ *
+Ýt
+,
+
+570 cÚ¡ *
+»mÙe_’dpošt
+,
+
+571 
+deçuÉ_m‘ric
+,
+
+572 
+š_addr_t
+ 
+»mÙe_ho¡
+,
+
+573 
+’v_£t
+ *
+es
+)
+
+575 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+576 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+578 
+	`þ—r_rou‹_li¡
+ (
+¾
+);
+
+580 
+¾
+->
+æags
+ = 
+Ýt
+->flags;
+
+582 ià(
+»mÙe_ho¡
+)
+
+584 
+¾
+->
+¥ec
+.
+»mÙe_ho¡
+ =„emote_host;
+
+585 
+¾
+->
+¥ec
+.
+æags
+ |ð
+RTSA_REMOTE_HOST
+;
+
+588 ià(
+deçuÉ_m‘ric
+)
+
+590 
+¾
+->
+¥ec
+.
+deçuÉ_m‘ric
+ = default_metric;
+
+591 
+¾
+->
+¥ec
+.
+æags
+ |ð
+RTSA_DEFAULT_METRIC
+;
+
+594 
+	`g‘_deçuÉ_g©eway
+ (&
+¾
+->
+rgi
+);
+
+595 ià(
+¾
+->
+rgi
+.
+æags
+ & 
+RGI_ADDR_DEFINED
+)
+
+597 
+	`£‹nv_rou‹_addr
+ (
+es
+, "Ãt_g©eway", 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+, -1);
+
+598 #ià
+	`defšed
+(
+ENABLE_DEBUG
+è&& !defšed(
+ENABLE_SMALL
+)
+
+599 
+	`´št_deçuÉ_g©eway
+ (
+D_ROUTE
+, &
+¾
+->
+rgi
+);
+
+604 
+	`dmsg
+ (
+D_ROUTE
+, "ROUTE: default_gateway=UNDEF");
+
+607 ià(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_HOST
+)
+
+608 
+¾
+->
+¥ec
+.
+»mÙe_ho¡_loÿl
+ = 
+	`‹¡_loÿl_addr
+ (
+»mÙe_ho¡
+, &¾->
+rgi
+);
+
+610 ià(
+	`is_rou‹_·rm_defšed
+ (
+»mÙe_’dpošt
+))
+
+612 
+boÞ
+ 
+defšed
+ = 
+çl£
+;
+
+613 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+ = 
+	`g‘addr
+ (
+
+614 
+GETADDR_RESOLVE
+
+
+615 | 
+GETADDR_HOST_ORDER
+
+
+616 | 
+GETADDR_WARN_ON_SIGNAL
+,
+
+617 
+»mÙe_’dpošt
+,
+
+619 &
+defšed
+,
+
+620 
+NULL
+);
+
+622 ià(
+defšed
+)
+
+624 
+	`£‹nv_rou‹_addr
+ (
+es
+, "v²_g©eway", 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+, -1);
+
+625 
+¾
+->
+¥ec
+.
+æags
+ |ð
+RTSA_REMOTE_ENDPOINT
+;
+
+629 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE: failed�o…arse/resolve default gateway: %s",
+
+630 
+»mÙe_’dpošt
+);
+
+631 
+»t
+ = 
+çl£
+;
+
+635 ià(
+¾
+->
+æags
+ & 
+RG_ENABLE
+)
+
+637 
+	`add_block_loÿl
+ (
+¾
+);
+
+638 
+	`g‘_by·ss_add»s£s
+ (&
+¾
+->
+¥ec
+.
+by·ss
+,„l->
+æags
+);
+
+639 #ifdeà
+ENABLE_DEBUG
+
+
+640 
+	`´št_by·ss_add»s£s
+ (&
+¾
+->
+¥ec
+.
+by·ss
+);
+
+646 
+i
+ = 0;
+
+647 
+j
+ = 
+¾
+->
+n
+;
+
+648 
+boÞ
+ 
+w¬Ãd
+ = 
+çl£
+;
+
+649 
+i
+ = 0; i < 
+Ýt
+->
+n
+; ++i)
+
+651 
+addršfo
+* 
+ÃŽi¡
+;
+
+652 
+rou‹_�v4
+ 
+r
+;
+
+654 ià(!
+	`š™_rou‹
+ (&
+r
+,
+
+655 &
+ÃŽi¡
+,
+
+656 &
+Ýt
+->
+rou‹s
+[
+i
+],
+
+657 
+¾
+))
+
+658 
+»t
+ = 
+çl£
+;
+
+661 
+addršfo
+* 
+cu»Ë
+;
+
+662 
+cu»Ë
+ = 
+ÃŽi¡
+; cu»Ë; cu»Ë = cu»Ë->
+ai_Ãxt
+)
+
+664 ià(
+j
+ < 
+¾
+->
+ÿ·c™y
+)
+
+666 
+r
+.
+ÃtwÜk
+ = 
+	`Áohl
+(((
+sockaddr_š
+*)(
+cu»Ë
+)->
+ai_addr
+)->
+sš_addr
+.
+s_addr
+);
+
+667 
+¾
+->
+rou‹s
+[
+j
+++] = 
+r
+;
+
+671 ià(!
+w¬Ãd
+)
+
+673 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE:„ou‹ drÝ³d beÿu£‚umb” oàex·nded„ou‹ i g»©”�hª„ou‹†i¡ c­ac™y (%d)", 
+¾
+->
+ÿ·c™y
+);
+
+674 
+w¬Ãd
+ = 
+Œue
+;
+
+678 
+	`ä“addršfo
+(
+ÃŽi¡
+);
+
+681 
+¾
+->
+n
+ = 
+j
+;
+
+684 
+	`gc_ä“
+ (&
+gc
+);
+
+685  
+»t
+;
+
+686 
+	}
+}
+
+688 
+boÞ
+
+
+689 
+	$š™_rou‹_�v6_li¡
+ (
+rou‹_�v6_li¡
+ *
+¾6
+,
+
+690 cÚ¡ 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+Ýt6
+,
+
+691 cÚ¡ *
+»mÙe_’dpošt
+,
+
+692 
+deçuÉ_m‘ric
+,
+
+693 
+’v_£t
+ *
+es
+)
+
+695 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+696 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+698 
+	`þ—r_rou‹_�v6_li¡
+ (
+¾6
+);
+
+700 
+¾6
+->
+æags
+ = 
+Ýt6
+->flags;
+
+702 ià(
+deçuÉ_m‘ric
+ >= 0 )
+
+704 
+¾6
+->
+deçuÉ_m‘ric
+ = default_metric;
+
+705 
+¾6
+->
+deçuÉ_m‘ric_defšed
+ = 
+Œue
+;
+
+712 
+	`dmsg
+ (
+D_ROUTE
+, "ROUTE6: default_gateway=UNDEF");
+
+715 iàÐ
+	`is_rou‹_·rm_defšed
+Ð
+»mÙe_’dpošt
+ ))
+
+717 iàÐ
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+»mÙe_’dpošt
+,
+
+718 &
+¾6
+->
+»mÙe_’dpošt_�v6
+) == 1 )
+
+720 
+¾6
+->
+»mÙe_’dpošt_defšed
+ = 
+Œue
+;
+
+724 
+	`msg
+ (
+M_WARN
+, 
+PACKAGE_NAME
+ " ROUTE: fažed�Ø·r£/»sÞv�deçuÉ g©eway: %s", 
+»mÙe_’dpošt
+);
+
+725 
+»t
+ = 
+çl£
+;
+
+729 
+¾6
+->
+»mÙe_’dpošt_defšed
+ = 
+çl£
+;
+
+732 ià(!(
+Ýt6
+->
+n
+ >ð0 && o±6->À<ð
+¾6
+->
+ÿ·c™y
+))
+
+733 
+	`msg
+ (
+M_FATAL
+, 
+PACKAGE_NAME
+ " ROUTE6: (š™ènumb” oàrou‹ o±iÚ (%dèi g»©”�hª„ou‹†i¡ c­ac™y (%d)", 
+Ýt6
+->
+n
+, 
+¾6
+->
+ÿ·c™y
+);
+
+737 
+i
+, 
+j
+ = 0;
+
+738 
+i
+ = 0; i < 
+Ýt6
+->
+n
+; ++i)
+
+740 ià(!
+	`š™_rou‹_�v6
+ (&
+¾6
+->
+rou‹s_�v6
+[
+j
+],
+
+741 &
+Ýt6
+->
+rou‹s_�v6
+[
+i
+],
+
+742 
+¾6
+ ))
+
+743 
+»t
+ = 
+çl£
+;
+
+745 ++
+j
+;
+
+747 
+¾6
+->
+n
+ = 
+j
+;
+
+750 
+	`gc_ä“
+ (&
+gc
+);
+
+751  
+»t
+;
+
+752 
+	}
+}
+
+755 
+	$add_rou‹3
+ (
+š_addr_t
+ 
+ÃtwÜk
+,
+
+756 
+š_addr_t
+ 
+Ãtmask
+,
+
+757 
+š_addr_t
+ 
+g©eway
+,
+
+758 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+759 
+æags
+,
+
+760 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+761 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+763 
+rou‹_�v4
+ 
+r
+;
+
+764 
+	`CLEAR
+ (
+r
+);
+
+765 
+r
+.
+æags
+ = 
+RT_DEFINED
+;
+
+766 
+r
+.
+ÃtwÜk
+ =‚etwork;
+
+767 
+r
+.
+Ãtmask
+ =‚etmask;
+
+768 
+r
+.
+g©eway
+ = gateway;
+
+769 
+	`add_rou‹
+ (&
+r
+, 
+‰
+, 
+æags
+, 
+rgi
+, 
+es
+);
+
+770 
+	}
+}
+
+773 
+	$d–_rou‹3
+ (
+š_addr_t
+ 
+ÃtwÜk
+,
+
+774 
+š_addr_t
+ 
+Ãtmask
+,
+
+775 
+š_addr_t
+ 
+g©eway
+,
+
+776 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+777 
+æags
+,
+
+778 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+779 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+781 
+rou‹_�v4
+ 
+r
+;
+
+782 
+	`CLEAR
+ (
+r
+);
+
+783 
+r
+.
+æags
+ = 
+RT_DEFINED
+|
+RT_ADDED
+;
+
+784 
+r
+.
+ÃtwÜk
+ =‚etwork;
+
+785 
+r
+.
+Ãtmask
+ =‚etmask;
+
+786 
+r
+.
+g©eway
+ = gateway;
+
+787 
+	`d–‘e_rou‹
+ (&
+r
+, 
+‰
+, 
+æags
+, 
+rgi
+, 
+es
+);
+
+788 
+	}
+}
+
+791 
+	$add_by·ss_rou‹s
+ (
+rou‹_by·ss
+ *
+rb
+,
+
+792 
+š_addr_t
+ 
+g©eway
+,
+
+793 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+794 
+æags
+,
+
+795 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+796 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+798 
+i
+;
+
+799 
+i
+ = 0; i < 
+rb
+->
+n_by·ss
+; ++i)
+
+801 ià(
+rb
+->
+by·ss
+[
+i
+])
+
+802 
+	`add_rou‹3
+ (
+rb
+->
+by·ss
+[
+i
+],
+
+803 
+IPV4_NETMASK_HOST
+,
+
+804 
+g©eway
+,
+
+805 
+‰
+,
+
+806 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+807 
+rgi
+,
+
+808 
+es
+);
+
+810 
+	}
+}
+
+813 
+	$d–_by·ss_rou‹s
+ (
+rou‹_by·ss
+ *
+rb
+,
+
+814 
+š_addr_t
+ 
+g©eway
+,
+
+815 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+816 
+æags
+,
+
+817 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+818 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+820 
+i
+;
+
+821 
+i
+ = 0; i < 
+rb
+->
+n_by·ss
+; ++i)
+
+823 ià(
+rb
+->
+by·ss
+[
+i
+])
+
+824 
+	`d–_rou‹3
+ (
+rb
+->
+by·ss
+[
+i
+],
+
+825 
+IPV4_NETMASK_HOST
+,
+
+826 
+g©eway
+,
+
+827 
+‰
+,
+
+828 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+829 
+rgi
+,
+
+830 
+es
+);
+
+832 
+	}
+}
+
+835 
+	$»dœeù_deçuÉ_rou‹_to_v²
+ (
+rou‹_li¡
+ *
+¾
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+837 cÚ¡ 
+”r
+[] = "NOTE: unable�o„edirect default gateway --";
+
+839 iàÐ
+¾
+ &&„l->
+æags
+ & 
+RG_ENABLE
+ )
+
+841 ià(!(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_ENDPOINT
+è&& (¾->æag & 
+RG_REROUTE_GW
+))
+
+843 
+	`msg
+ (
+M_WARN
+, "% VPN g©eway…¬am‘” (--rou‹-g©eway o¸--ifcÚfigèi missšg", 
+”r
+);
+
+845 ià(!(
+¾
+->
+rgi
+.
+æags
+ & 
+RGI_ADDR_DEFINED
+))
+
+847 
+	`msg
+ (
+M_WARN
+, "% CªnÙ„—d cu¼’ˆdeçuÉ g©eway from sy¡em", 
+”r
+);
+
+849 ià(!(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_HOST
+))
+
+851 
+	`msg
+ (
+M_WARN
+, "% CªnÙ ob�š cu¼’ˆ»mÙ�ho¡‡dd»ss", 
+”r
+);
+
+855 
+boÞ
+ 
+loÿl
+ = 
+	`BOOL_CAST
+(
+¾
+->
+æags
+ & 
+RG_LOCAL
+);
+
+856 ià(
+¾
+->
+æags
+ & 
+RG_AUTO_LOCAL
+) {
+
+857 cÚ¡ 
+Ža
+ = 
+¾
+->
+¥ec
+.
+»mÙe_ho¡_loÿl
+;
+
+858 ià(
+Ža
+ =ð
+TLA_NONLOCAL
+)
+
+860 
+	`dmsg
+ (
+D_ROUTE
+, "ROUTE„emote_host is NOT LOCAL");
+
+861 
+loÿl
+ = 
+çl£
+;
+
+863 ià(
+Ža
+ =ð
+TLA_LOCAL
+)
+
+865 
+	`dmsg
+ (
+D_ROUTE
+, "ROUTE„emote_host is LOCAL");
+
+866 
+loÿl
+ = 
+Œue
+;
+
+869 ià(!
+loÿl
+)
+
+874 ià(
+¾
+->
+¥ec
+.
+»mÙe_ho¡
+ !ð
+IPV4_INVALID_ADDR
+) {
+
+875 
+	`add_rou‹3
+ (
+¾
+->
+¥ec
+.
+»mÙe_ho¡
+,
+
+876 
+IPV4_NETMASK_HOST
+,
+
+877 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+,
+
+878 
+‰
+,
+
+879 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+880 &
+¾
+->
+rgi
+,
+
+881 
+es
+);
+
+882 
+¾
+->
+iæags
+ |ð
+RL_DID_LOCAL
+;
+
+884 
+	`dmsg
+ (
+D_ROUTE
+, "ROUTE„emote_host…rotocol differs from�unneled");
+
+889 
+	`add_by·ss_rou‹s
+ (&
+¾
+->
+¥ec
+.
+by·ss
+,„l->
+rgi
+.
+g©eway
+.
+addr
+, 
+‰
+, 
+æags
+, &¾->rgi, 
+es
+);
+
+891 ià(
+¾
+->
+æags
+ & 
+RG_REROUTE_GW
+)
+
+893 ià(
+¾
+->
+æags
+ & 
+RG_DEF1
+)
+
+896 
+	`add_rou‹3
+ (0x00000000,
+
+898 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+899 
+‰
+,
+
+900 
+æags
+,
+
+901 &
+¾
+->
+rgi
+,
+
+902 
+es
+);
+
+905 
+	`add_rou‹3
+ (0x80000000,
+
+907 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+908 
+‰
+,
+
+909 
+æags
+,
+
+910 &
+¾
+->
+rgi
+,
+
+911 
+es
+);
+
+916 
+	`d–_rou‹3
+ (0,
+
+918 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+,
+
+919 
+‰
+,
+
+920 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+921 &
+¾
+->
+rgi
+,
+
+922 
+es
+);
+
+925 
+	`add_rou‹3
+ (0,
+
+927 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+928 
+‰
+,
+
+929 
+æags
+,
+
+930 &
+¾
+->
+rgi
+,
+
+931 
+es
+);
+
+936 
+¾
+->
+iæags
+ |ð
+RL_DID_REDIRECT_DEFAULT_GATEWAY
+;
+
+939 
+	}
+}
+
+942 
+	$undo_»dœeù_deçuÉ_rou‹_to_v²
+ (
+rou‹_li¡
+ *
+¾
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+944 iàÐ
+¾
+ &&„l->
+iæags
+ & 
+RL_DID_REDIRECT_DEFAULT_GATEWAY
+ )
+
+947 ià(
+¾
+->
+iæags
+ & 
+RL_DID_LOCAL
+)
+
+949 
+	`d–_rou‹3
+ (
+¾
+->
+¥ec
+.
+»mÙe_ho¡
+,
+
+950 
+IPV4_NETMASK_HOST
+,
+
+951 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+,
+
+952 
+‰
+,
+
+953 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+954 &
+¾
+->
+rgi
+,
+
+955 
+es
+);
+
+956 
+¾
+->
+iæags
+ &ð~
+RL_DID_LOCAL
+;
+
+960 
+	`d–_by·ss_rou‹s
+ (&
+¾
+->
+¥ec
+.
+by·ss
+,„l->
+rgi
+.
+g©eway
+.
+addr
+, 
+‰
+, 
+æags
+, &¾->rgi, 
+es
+);
+
+962 ià(
+¾
+->
+æags
+ & 
+RG_REROUTE_GW
+)
+
+964 ià(
+¾
+->
+æags
+ & 
+RG_DEF1
+)
+
+967 
+	`d–_rou‹3
+ (0x00000000,
+
+969 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+970 
+‰
+,
+
+971 
+æags
+,
+
+972 &
+¾
+->
+rgi
+,
+
+973 
+es
+);
+
+976 
+	`d–_rou‹3
+ (0x80000000,
+
+978 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+979 
+‰
+,
+
+980 
+æags
+,
+
+981 &
+¾
+->
+rgi
+,
+
+982 
+es
+);
+
+987 
+	`d–_rou‹3
+ (0,
+
+989 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+,
+
+990 
+‰
+,
+
+991 
+æags
+,
+
+992 &
+¾
+->
+rgi
+,
+
+993 
+es
+);
+
+996 
+	`add_rou‹3
+ (0,
+
+998 
+¾
+->
+rgi
+.
+g©eway
+.
+addr
+,
+
+999 
+‰
+,
+
+1000 
+æags
+ | 
+ROUTE_REF_GW
+,
+
+1001 &
+¾
+->
+rgi
+,
+
+1002 
+es
+);
+
+1006 
+¾
+->
+iæags
+ &ð~
+RL_DID_REDIRECT_DEFAULT_GATEWAY
+;
+
+1008 
+	}
+}
+
+1011 
+	$add_rou‹s
+ (
+rou‹_li¡
+ *
+¾
+, 
+rou‹_�v6_li¡
+ *
+¾6
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1013 
+	`»dœeù_deçuÉ_rou‹_to_v²
+ (
+¾
+, 
+‰
+, 
+æags
+, 
+es
+);
+
+1014 iàÐ
+¾
+ && !Ôl->
+iæags
+ & 
+RL_ROUTES_ADDED
+) )
+
+1016 
+i
+;
+
+1018 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1019 ià(
+mªagem’t
+ && 
+¾
+->
+n
+)
+
+1021 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+1022 
+OPENVPN_STATE_ADD_ROUTES
+,
+
+1023 
+NULL
+,
+
+1029 
+i
+ = 0; i < 
+¾
+->
+n
+; ++i)
+
+1031 
+rou‹_�v4
+ *
+r
+ = &
+¾
+->
+rou‹s
+[
+i
+];
+
+1032 
+	`check_subÃt_cÚæiù
+ (
+r
+->
+ÃtwÜk
+,„->
+Ãtmask
+, "route");
+
+1033 ià(
+æags
+ & 
+ROUTE_DELETE_FIRST
+)
+
+1034 
+	`d–‘e_rou‹
+ (
+r
+, 
+‰
+, 
+æags
+, &
+¾
+->
+rgi
+, 
+es
+);
+
+1035 
+	`add_rou‹
+ (
+r
+, 
+‰
+, 
+æags
+, &
+¾
+->
+rgi
+, 
+es
+);
+
+1037 
+¾
+->
+iæags
+ |ð
+RL_ROUTES_ADDED
+;
+
+1039 ià(
+¾6
+ && !¾6->
+rou‹s_added
+)
+
+1041 
+i
+;
+
+1043 
+i
+ = 0; i < 
+¾6
+->
+n
+; ++i)
+
+1045 
+rou‹_�v6
+ *
+r
+ = &
+¾6
+->
+rou‹s_�v6
+[
+i
+];
+
+1046 ià(
+æags
+ & 
+ROUTE_DELETE_FIRST
+)
+
+1047 
+	`d–‘e_rou‹_�v6
+ (
+r
+, 
+‰
+, 
+æags
+, 
+es
+);
+
+1048 
+	`add_rou‹_�v6
+ (
+r
+, 
+‰
+, 
+æags
+, 
+es
+);
+
+1050 
+¾6
+->
+rou‹s_added
+ = 
+Œue
+;
+
+1052 
+	}
+}
+
+1055 
+	$d–‘e_rou‹s
+ (
+rou‹_li¡
+ *
+¾
+, 
+rou‹_�v6_li¡
+ *
+¾6
+,
+
+1056 cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1058 iàÐ
+¾
+ &&„l->
+iæags
+ & 
+RL_ROUTES_ADDED
+ )
+
+1060 
+i
+;
+
+1061 
+i
+ = 
+¾
+->
+n
+ - 1; i >= 0; --i)
+
+1063 
+rou‹_�v4
+ * 
+r
+ = &
+¾
+->
+rou‹s
+[
+i
+];
+
+1064 
+	`d–‘e_rou‹
+ (
+r
+, 
+‰
+, 
+æags
+, &
+¾
+->
+rgi
+, 
+es
+);
+
+1066 
+¾
+->
+iæags
+ &ð~
+RL_ROUTES_ADDED
+;
+
+1069 
+	`undo_»dœeù_deçuÉ_rou‹_to_v²
+ (
+¾
+, 
+‰
+, 
+æags
+, 
+es
+);
+
+1071 iàÐ
+¾
+ )
+
+1073 
+	`þ—r_rou‹_li¡
+ (
+¾
+);
+
+1076 iàÐ
+¾6
+ &&„l6->
+rou‹s_added
+ )
+
+1078 
+i
+;
+
+1079 
+i
+ = 
+¾6
+->
+n
+ - 1; i >= 0; --i)
+
+1081 cÚ¡ 
+rou‹_�v6
+ *
+r6
+ = &
+¾6
+->
+rou‹s_�v6
+[
+i
+];
+
+1082 
+	`d–‘e_rou‹_�v6
+ (
+r6
+, 
+‰
+, 
+æags
+, 
+es
+);
+
+1084 
+¾6
+->
+rou‹s_added
+ = 
+çl£
+;
+
+1087 iàÐ
+¾6
+ )
+
+1089 
+	`þ—r_rou‹_�v6_li¡
+ (
+¾6
+);
+
+1091 
+	}
+}
+
+1093 #iâdeà
+ENABLE_SMALL
+
+
+1096 
+	$show_Ýt
+ (cÚ¡ *
+ÝtiÚ
+)
+
+1098 ià(!
+ÝtiÚ
+)
+
+1101  
+ÝtiÚ
+;
+
+1102 
+	}
+}
+
+1105 
+	$´št_rou‹_ÝtiÚ
+ (cÚ¡ 
+rou‹_ÝtiÚ
+ *
+ro
+, 
+Ëv–
+)
+
+1107 
+	`msg
+ (
+Ëv–
+, "„oute %s/%s/%s/%s",
+
+1108 
+	`show_Ýt
+ (
+ro
+->
+ÃtwÜk
+),
+
+1109 
+	`show_Ýt
+ (
+ro
+->
+Ãtmask
+),
+
+1110 
+	`show_Ýt
+ (
+ro
+->
+g©eway
+),
+
+1111 
+	`show_Ýt
+ (
+ro
+->
+m‘ric
+));
+
+1112 
+	}
+}
+
+1115 
+	$´št_rou‹_ÝtiÚs
+ (cÚ¡ 
+rou‹_ÝtiÚ_li¡
+ *
+rÞ
+,
+
+1116 
+Ëv–
+)
+
+1118 
+i
+;
+
+1119 ià(
+rÞ
+->
+æags
+ & 
+RG_ENABLE
+)
+
+1120 
+	`msg
+ (
+Ëv–
+, " [redirect_default_gateway†ocal=%d]",
+
+1121 (
+rÞ
+->
+æags
+ & 
+RG_LOCAL
+) != 0);
+
+1122 
+i
+ = 0; i < 
+rÞ
+->
+n
+; ++i)
+
+1123 
+	`´št_rou‹_ÝtiÚ
+ (&
+rÞ
+->
+rou‹s
+[
+i
+], 
+Ëv–
+);
+
+1124 
+	}
+}
+
+1127 
+	$´št_deçuÉ_g©eway
+(cÚ¡ 
+msgËv–
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+1129 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1130 ià(
+rgi
+->
+æags
+ & 
+RGI_ADDR_DEFINED
+)
+
+1132 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+1133 
+	`buf_´štf
+ (&
+out
+, "ROUTE_GATEWAY");
+
+1134 ià(
+rgi
+->
+æags
+ & 
+RGI_ON_LINK
+)
+
+1135 
+	`buf_´štf
+ (&
+out
+, " ON_LINK");
+
+1137 
+	`buf_´štf
+ (&
+out
+, " %s", 
+	`´št_š_addr_t
+ (
+rgi
+->
+g©eway
+.
+addr
+, 0, &
+gc
+));
+
+1138 ià(
+rgi
+->
+æags
+ & 
+RGI_NETMASK_DEFINED
+)
+
+1139 
+	`buf_´štf
+ (&
+out
+, "/%s", 
+	`´št_š_addr_t
+ (
+rgi
+->
+g©eway
+.
+Ãtmask
+, 0, &
+gc
+));
+
+1140 #ifdeà
+WIN32
+
+
+1141 ià(
+rgi
+->
+æags
+ & 
+RGI_IFACE_DEFINED
+)
+
+1142 
+	`buf_´štf
+ (&
+out
+, " I=%u", ()
+rgi
+->
+ad­‹r_šdex
+);
+
+1144 ià(
+rgi
+->
+æags
+ & 
+RGI_IFACE_DEFINED
+)
+
+1145 
+	`buf_´štf
+ (&
+out
+, " IFACE=%s", 
+rgi
+->
+içû
+);
+
+1147 ià(
+rgi
+->
+æags
+ & 
+RGI_HWADDR_DEFINED
+)
+
+1148 
+	`buf_´štf
+ (&
+out
+, " HWADDR=%s", 
+	`fÜm©_hex_ex
+ (
+rgi
+->
+hwaddr
+, 6, 0, 1, ":", &
+gc
+));
+
+1149 
+	`msg
+ (
+msgËv–
+, "%s", 
+	`BSTR
+ (&
+out
+));
+
+1151 
+	`gc_ä“
+ (&
+gc
+);
+
+1152 
+	}
+}
+
+1157 
+	$´št_rou‹
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, 
+Ëv–
+)
+
+1159 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1160 ià(
+r
+->
+æags
+ & 
+RT_DEFINED
+)
+
+1161 
+	`msg
+ (
+Ëv–
+, "%s", 
+	`rou‹_¡ršg
+ (
+r
+, &
+gc
+));
+
+1162 
+	`gc_ä“
+ (&
+gc
+);
+
+1163 
+	}
+}
+
+1166 
+	$´št_rou‹s
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+, 
+Ëv–
+)
+
+1168 
+i
+;
+
+1169 
+i
+ = 0; i < 
+¾
+->
+n
+; ++i)
+
+1170 
+	`´št_rou‹
+ (&
+¾
+->
+rou‹s
+[
+i
+], 
+Ëv–
+);
+
+1171 
+	}
+}
+
+1174 
+	$£‹nv_rou‹
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_�v4
+ *
+r
+, 
+i
+)
+
+1176 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1177 ià(
+r
+->
+æags
+ & 
+RT_DEFINED
+)
+
+1179 
+	`£‹nv_rou‹_addr
+ (
+es
+, "ÃtwÜk", 
+r
+->
+ÃtwÜk
+, 
+i
+);
+
+1180 
+	`£‹nv_rou‹_addr
+ (
+es
+, "Ãtmask", 
+r
+->
+Ãtmask
+, 
+i
+);
+
+1181 
+	`£‹nv_rou‹_addr
+ (
+es
+, "g©eway", 
+r
+->
+g©eway
+, 
+i
+);
+
+1183 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1185 
+bufãr
+ 
+Çme
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+1186 
+	`buf_´štf
+ (&
+Çme
+, "rou‹_m‘ric_%d", 
+i
+);
+
+1187 
+	`£‹nv_št
+ (
+es
+, 
+	`BSTR
+ (&
+Çme
+), 
+r
+->
+m‘ric
+);
+
+1190 
+	`gc_ä“
+ (&
+gc
+);
+
+1191 
+	}
+}
+
+1194 
+	$£‹nv_rou‹s
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_li¡
+ *
+¾
+)
+
+1196 
+i
+;
+
+1197 
+i
+ = 0; i < 
+¾
+->
+n
+; ++i)
+
+1198 
+	`£‹nv_rou‹
+ (
+es
+, &
+¾
+->
+rou‹s
+[
+i
+], i + 1);
+
+1199 
+	}
+}
+
+1202 
+	$£‹nv_rou‹_�v6
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_�v6
+ *
+r6
+, 
+i
+)
+
+1204 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1205 ià(
+r6
+->
+defšed
+)
+
+1207 
+bufãr
+ 
+Çme1
+ = 
+	`®loc_buf_gc
+Ð256, &
+gc
+ );
+
+1208 
+bufãr
+ 
+v®
+ = 
+	`®loc_buf_gc
+Ð256, &
+gc
+ );
+
+1209 
+bufãr
+ 
+Çme2
+ = 
+	`®loc_buf_gc
+Ð256, &
+gc
+ );
+
+1211 
+	`buf_´štf
+Ð&
+Çme1
+, "rou‹_�v6_ÃtwÜk_%d", 
+i
+ );
+
+1212 
+	`buf_´štf
+Ð&
+v®
+, "%s/%d", 
+	`´št_š6_addr
+Ð
+r6
+->
+ÃtwÜk
+, 0, &
+gc
+ ),
+
+1213 
+r6
+->
+Ãtb™s
+ );
+
+1214 
+	`£‹nv_¡r
+Ð
+es
+, 
+	`BSTR
+(&
+Çme1
+), BSTR(&
+v®
+) );
+
+1216 
+	`buf_´štf
+Ð&
+Çme2
+, "rou‹_�v6_g©eway_%d", 
+i
+ );
+
+1217 
+	`£‹nv_¡r
+Ð
+es
+, 
+	`BSTR
+(&
+Çme2
+), 
+	`´št_š6_addr
+Ð
+r6
+->
+g©eway
+, 0, &
+gc
+ ));
+
+1219 
+	`gc_ä“
+ (&
+gc
+);
+
+1220 
+	}
+}
+
+1222 
+	$£‹nv_rou‹s_�v6
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_�v6_li¡
+ *
+¾6
+)
+
+1224 
+i
+;
+
+1225 
+i
+ = 0; i < 
+¾6
+->
+n
+; ++i)
+
+1226 
+	`£‹nv_rou‹_�v6
+ (
+es
+, &
+¾6
+->
+rou‹s_�v6
+[
+i
+], i + 1);
+
+1227 
+	}
+}
+
+1248 
+	#LR_NOMATCH
+ 0
+
+	)
+
+1249 
+	#LR_MATCH
+ 1
+
+	)
+
+1250 
+	#LR_ERROR
+ 2
+
+	)
+
+1253 
+	$loÿl_rou‹
+ (
+š_addr_t
+ 
+ÃtwÜk
+,
+
+1254 
+š_addr_t
+ 
+Ãtmask
+,
+
+1255 
+š_addr_t
+ 
+g©eway
+,
+
+1256 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+1259 cÚ¡ 
+rgi_Ãeded
+ = (
+RGI_ADDR_DEFINED
+|
+RGI_NETMASK_DEFINED
+|
+RGI_IFACE_DEFINED
+);
+
+1260 ià(
+rgi
+
+
+1261 && (
+rgi
+->
+æags
+ & 
+rgi_Ãeded
+) ==„gi_needed
+
+1262 && 
+g©eway
+ =ð
+rgi
+->g©eway.
+addr
+
+
+1263 && 
+Ãtmask
+ == 0xFFFFFFFF)
+
+1265 ià(((
+ÃtwÜk
+ ^ 
+rgi
+->
+g©eway
+.
+addr
+è&„gi->g©eway.
+Ãtmask
+) == 0)
+
+1266  
+LR_MATCH
+;
+
+1270 
+size_t
+ 
+i
+;
+
+1271 
+i
+ = 0; i < 
+rgi
+->
+n_addrs
+; ++i)
+
+1273 cÚ¡ 
+rou‹_g©eway_add»ss
+ *
+gwa
+ = &
+rgi
+->
+addrs
+[
+i
+];
+
+1274 ià(((
+ÃtwÜk
+ ^ 
+gwa
+->
+addr
+è& gwa->
+Ãtmask
+) == 0)
+
+1275  
+LR_MATCH
+;
+
+1279  
+LR_NOMATCH
+;
+
+1280 
+	}
+}
+
+1284 
+šlše
+ 
+boÞ
+
+
+1285 
+	$is_Ú_lšk
+ (cÚ¡ 
+is_loÿl_rou‹
+, cÚ¡ 
+æags
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+1287  
+rgi
+ && (
+is_loÿl_rou‹
+ =ð
+LR_MATCH
+ || ((
+æags
+ & 
+ROUTE_REF_GW
+è&& (rgi->æag & 
+RGI_ON_LINK
+)));
+
+1288 
+	}
+}
+
+1291 
+	$add_rou‹
+ (
+rou‹_�v4
+ *
+r
+,
+
+1292 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+1293 
+æags
+,
+
+1294 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+1295 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1297 
+gc_¬’a
+ 
+gc
+;
+
+1298 
+¬gv
+‡rgv;
+
+1299 cÚ¡ *
+ÃtwÜk
+;
+
+1300 cÚ¡ *
+Ãtmask
+;
+
+1301 cÚ¡ *
+g©eway
+;
+
+1302 
+boÞ
+ 
+¡©us
+ = 
+çl£
+;
+
+1303 
+is_loÿl_rou‹
+;
+
+1305 ià(!(
+r
+->
+æags
+ & 
+RT_DEFINED
+))
+
+1308 
+	`gc_š™
+ (&
+gc
+);
+
+1309 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+1311 
+ÃtwÜk
+ = 
+	`´št_š_addr_t
+ (
+r
+->ÃtwÜk, 0, &
+gc
+);
+
+1312 
+Ãtmask
+ = 
+	`´št_š_addr_t
+ (
+r
+->Ãtmask, 0, &
+gc
+);
+
+1313 
+g©eway
+ = 
+	`´št_š_addr_t
+ (
+r
+->g©eway, 0, &
+gc
+);
+
+1315 
+is_loÿl_rou‹
+ = 
+	`loÿl_rou‹
+(
+r
+->
+ÃtwÜk
+,„->
+Ãtmask
+,„->
+g©eway
+, 
+rgi
+);
+
+1316 ià(
+is_loÿl_rou‹
+ =ð
+LR_ERROR
+)
+
+1317 
+dÚe
+;
+
+1319 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+1320 #ifdeà
+ENABLE_IPROUTE
+
+
+1321 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s„oute‡dd %s/%d",
+
+1322 
+�rou‹_·th
+,
+
+1323 
+ÃtwÜk
+,
+
+1324 
+	`couÁ_Ãtmask_b™s
+(
+Ãtmask
+));
+
+1326 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1327 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "m‘riø%d", 
+r
+->
+m‘ric
+);
+
+1329 ià(
+	`is_Ú_lšk
+ (
+is_loÿl_rou‹
+, 
+æags
+, 
+rgi
+))
+
+1330 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "dev %s", 
+rgi
+->
+içû
+);
+
+1332 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "vŸ %s", 
+g©eway
+);
+
+1334 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -net %s‚etmask %s",
+
+1335 
+ROUTE_PATH
+,
+
+1336 
+ÃtwÜk
+,
+
+1337 
+Ãtmask
+);
+
+1338 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1339 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "m‘riø%d", 
+r
+->
+m‘ric
+);
+
+1340 ià(
+	`is_Ú_lšk
+ (
+is_loÿl_rou‹
+, 
+æags
+, 
+rgi
+))
+
+1341 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "dev %s", 
+rgi
+->
+içû
+);
+
+1343 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "gw %s", 
+g©eway
+);
+
+1346 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1347 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Linux„oute‡dd command failed");
+
+1349 #–ià
+	`defšed
+ (
+WIN32
+)
+
+1351 
+DWORD
+ 
+ai
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+1352 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc ADD %s MASK %s %s",
+
+1353 
+	`g‘_wš_sys_·th
+(),
+
+1354 
+WIN_ROUTE_PATH_SUFFIX
+,
+
+1355 
+ÃtwÜk
+,
+
+1356 
+Ãtmask
+,
+
+1357 
+g©eway
+);
+
+1358 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1359 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "METRIC %d", 
+r
+->
+m‘ric
+);
+
+1360 ià(
+	`is_Ú_lšk
+ (
+is_loÿl_rou‹
+, 
+æags
+, 
+rgi
+))
+
+1362 
+ai
+ = 
+rgi
+->
+ad­‹r_šdex
+;
+
+1363 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "IF %u", ()
+ai
+);
+
+1366 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1368 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_IPAPI
+)
+
+1370 
+¡©us
+ = 
+	`add_rou‹_�­i
+ (
+r
+, 
+‰
+, 
+ai
+);
+
+1371 
+	`msg
+ (
+D_ROUTE
+, "Rou‹‡dd™iÚ vŸ IPAPI %s", 
+¡©us
+ ? "succeeded" : "failed");
+
+1373 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_EXE
+)
+
+1375 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1376 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute‡dd command failed");
+
+1377 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1379 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_ADAPTIVE
+)
+
+1381 
+¡©us
+ = 
+	`add_rou‹_�­i
+ (
+r
+, 
+‰
+, 
+ai
+);
+
+1382 
+	`msg
+ (
+D_ROUTE
+, "Rou‹‡dd™iÚ vŸ IPAPI % [ad­tive]", 
+¡©us
+ ? "succeeded" : "failed");
+
+1383 ià(!
+¡©us
+)
+
+1385 
+	`msg
+ (
+D_ROUTE
+, "Route‡ddition fallback�o„oute.exe");
+
+1386 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1387 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute‡dd command failed [adaptive]");
+
+1388 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1393 
+	`ASSERT
+ (0);
+
+1397 #–ià
+	`defšed
+ (
+TARGET_SOLARIS
+)
+
+1401 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd",
+
+1402 
+ROUTE_PATH
+);
+
+1404 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s -netmask %s %s",
+
+1405 
+ÃtwÜk
+,
+
+1406 
+Ãtmask
+,
+
+1407 
+g©eway
+);
+
+1416 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+ )
+
+1417 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%d", 
+r
+->
+m‘ric
+);
+
+1419 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1420 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Solaris„oute‡dd command failed");
+
+1422 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+)
+
+1424 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd",
+
+1425 
+ROUTE_PATH
+);
+
+1428 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1429 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-¹ˆ%d", 
+r
+->
+m‘ric
+);
+
+1432 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-net %s %s %s",
+
+1433 
+ÃtwÜk
+,
+
+1434 
+g©eway
+,
+
+1435 
+Ãtmask
+);
+
+1439 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1440 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: FreeBSD„oute‡dd command failed");
+
+1442 #–ià
+	`defšed
+(
+TARGET_DRAGONFLY
+)
+
+1444 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd",
+
+1445 
+ROUTE_PATH
+);
+
+1448 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1449 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-¹ˆ%d", 
+r
+->
+m‘ric
+);
+
+1452 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-net %s %s %s",
+
+1453 
+ÃtwÜk
+,
+
+1454 
+g©eway
+,
+
+1455 
+Ãtmask
+);
+
+1459 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1460 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: DragonFly„oute‡dd command failed");
+
+1462 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+1464 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd",
+
+1465 
+ROUTE_PATH
+);
+
+1468 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1469 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-¹ˆ%d", 
+r
+->
+m‘ric
+);
+
+1472 ià(
+	`is_Ú_lšk
+ (
+is_loÿl_rou‹
+, 
+æags
+, 
+rgi
+))
+
+1476 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-cloning -net %s -netmask %s -interface %s",
+
+1477 
+ÃtwÜk
+,
+
+1478 
+Ãtmask
+,
+
+1479 
+rgi
+->
+içû
+);
+
+1483 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-net %s %s %s",
+
+1484 
+ÃtwÜk
+,
+
+1485 
+g©eway
+,
+
+1486 
+Ãtmask
+);
+
+1489 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1490 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OS X„oute‡dd command failed");
+
+1492 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+è|| defšed(
+TARGET_NETBSD
+)
+
+1494 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd",
+
+1495 
+ROUTE_PATH
+);
+
+1498 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1499 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-¹ˆ%d", 
+r
+->
+m‘ric
+);
+
+1502 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-net %s %s -netmask %s",
+
+1503 
+ÃtwÜk
+,
+
+1504 
+g©eway
+,
+
+1505 
+Ãtmask
+);
+
+1509 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1510 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OpenBSD/NetBSD„oute‡dd command failed");
+
+1513 
+	`msg
+ (
+M_FATAL
+, "Sorry, but I don't know how�o do 'route' commands on�his operating system. Try…utting your„outes in‡ --route-up script");
+
+1516 
+dÚe
+:
+
+1517 ià(
+¡©us
+)
+
+1518 
+r
+->
+æags
+ |ð
+RT_ADDED
+;
+
+1520 
+r
+->
+æags
+ &ð~
+RT_ADDED
+;
+
+1521 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1522 
+	`gc_ä“
+ (&
+gc
+);
+
+1523 
+	}
+}
+
+1527 
+	$´št_š6_addr_Ãtb™s_Úly
+Ð
+š6_addr
+ 
+ÃtwÜk_cÝy
+, 
+Ãtb™s
+,
+
+1528 
+gc_¬’a
+ * 
+gc
+)
+
+1534 
+by‹
+ = 15;
+
+1535 
+b™s_to_þ—r
+ = 128 - 
+Ãtb™s
+;
+
+1537  
+by‹
+ >ð0 && 
+b™s_to_þ—r
+ > 0 )
+
+1539 iàÐ
+b™s_to_þ—r
+ >= 8 )
+
+1540 { 
+ÃtwÜk_cÝy
+.
+s6_addr
+[
+by‹
+--] = 0; 
+b™s_to_þ—r
+ -= 8; }
+
+1542 { 
+ÃtwÜk_cÝy
+.
+s6_addr
+[
+by‹
+--] &ð(0xfà<< 
+b™s_to_þ—r
+); bits_to_clear = 0; }
+
+1545  
+	`´št_š6_addr
+Ð
+ÃtwÜk_cÝy
+, 0, 
+gc
+);
+
+1546 
+	}
+}
+
+1549 
+	$add_rou‹_�v6
+ (
+rou‹_�v6
+ *
+r6
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1551 
+gc_¬’a
+ 
+gc
+;
+
+1552 
+¬gv
+‡rgv;
+
+1554 cÚ¡ *
+ÃtwÜk
+;
+
+1555 cÚ¡ *
+g©eway
+;
+
+1556 
+boÞ
+ 
+¡©us
+ = 
+çl£
+;
+
+1557 cÚ¡ *
+deviû
+ = 
+‰
+->
+aùu®_Çme
+;
+
+1559 
+boÞ
+ 
+g©eway_Ãeded
+ = 
+çl£
+;
+
+1561 ià(!
+r6
+->
+defšed
+)
+
+1564 
+	`gc_š™
+ (&
+gc
+);
+
+1565 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+1567 
+ÃtwÜk
+ = 
+	`´št_š6_addr_Ãtb™s_Úly
+Ð
+r6
+->ÃtwÜk,„6->
+Ãtb™s
+, &
+gc
+);
+
+1568 
+g©eway
+ = 
+	`´št_š6_addr
+Ð
+r6
+->g©eway, 0, &
+gc
+);
+
+1570 iàÐ!
+‰
+->
+�v6
+ )
+
+1572 
+	`msg
+Ð
+M_INFO
+, "add_route_ipv6():‚ot‡dding %s/%d,‚o IPv6 on if %s",
+
+1573 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+deviû
+ );
+
+1577 
+	`msg
+Ð
+M_INFO
+, "add_route_ipv6(%s/%d -> %s metric %d) dev %s",
+
+1578 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+g©eway
+,„6->
+m‘ric
+, 
+deviû
+ );
+
+1591 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ &&
+
+1592 !(
+r6
+->
+m‘ric_defšed
+ &&„6->
+m‘ric
+ == 0 ) )
+
+1594 
+g©eway_Ãeded
+ = 
+Œue
+;
+
+1597 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+1598 #ifdeà
+ENABLE_IPROUTE
+
+
+1599 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s -6„oute‡dd %s/%d dev %s",
+
+1600 
+�rou‹_·th
+,
+
+1601 
+ÃtwÜk
+,
+
+1602 
+r6
+->
+Ãtb™s
+,
+
+1603 
+deviû
+);
+
+1604 ià(
+g©eway_Ãeded
+)
+
+1605 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "vŸ %s", 
+g©eway
+);
+
+1606 ià(
+r6
+->
+m‘ric_defšed
+ &&„6->
+m‘ric
+ > 0 )
+
+1607 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, " m‘riø%d", 
+r6
+->
+m‘ric
+);
+
+1610 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s -A inet6‡dd %s/%d dev %s",
+
+1611 
+ROUTE_PATH
+,
+
+1612 
+ÃtwÜk
+,
+
+1613 
+r6
+->
+Ãtb™s
+,
+
+1614 
+deviû
+);
+
+1615 ià(
+g©eway_Ãeded
+)
+
+1616 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "gw %s", 
+g©eway
+);
+
+1617 ià(
+r6
+->
+m‘ric_defšed
+ &&„6->
+m‘ric
+ > 0 )
+
+1618 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, " m‘riø%d", 
+r6
+->
+m‘ric
+);
+
+1620 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1621 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Linux„oute -6/-A inet6‡dd command failed");
+
+1623 #–ià
+	`defšed
+ (
+WIN32
+)
+
+1626 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc interface ipv6‡dd„oute %s/%d %s",
+
+1627 
+	`g‘_wš_sys_·th
+(),
+
+1628 
+NETSH_PATH_SUFFIX
+,
+
+1629 
+ÃtwÜk
+,
+
+1630 
+r6
+->
+Ãtb™s
+,
+
+1631 
+deviû
+);
+
+1638 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+ )
+
+1639 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " %s", "fe80::8" );
+
+1641 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " %s", 
+g©eway
+ );
+
+1644 ià(
+r
+->
+m‘ric_defšed
+)
+
+1645 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, " METRIC %d", 
+r
+->
+m‘ric
+);
+
+1651 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " store=active" );
+
+1653 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1655 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1656 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute‡dd ipv6 command failed");
+
+1657 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1659 #–ià
+	`defšed
+ (
+TARGET_SOLARIS
+)
+
+1668 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -inet6 %s/%d %s 0",
+
+1669 
+ROUTE_PATH
+,
+
+1670 
+ÃtwÜk
+,
+
+1671 
+r6
+->
+Ãtb™s
+,
+
+1672 
+g©eway
+ );
+
+1674 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1675 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Solaris„oute‡dd -inet6 command failed");
+
+1677 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+è|| defšed(
+TARGET_DRAGONFLY
+)
+
+1679 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -inet6 %s/%d",
+
+1680 
+ROUTE_PATH
+,
+
+1681 
+ÃtwÜk
+,
+
+1682 
+r6
+->
+Ãtb™s
+);
+
+1684 ià(
+g©eway_Ãeded
+)
+
+1685 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+g©eway
+);
+
+1687 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-içû %s", 
+deviû
+);
+
+1689 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1690 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: *BSD„oute‡dd -inet6 command failed");
+
+1692 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+1694 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -inet6 %s -prefixlen %d",
+
+1695 
+ROUTE_PATH
+,
+
+1696 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+ );
+
+1698 ià(
+g©eway_Ãeded
+)
+
+1699 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+g©eway
+);
+
+1701 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-içû %s", 
+deviû
+);
+
+1703 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1704 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: MacOS X„oute‡dd -inet6 command failed");
+
+1706 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+1708 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -inet6 %s -prefixlen %d %s",
+
+1709 
+ROUTE_PATH
+,
+
+1710 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+g©eway
+ );
+
+1712 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1713 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OpenBSD„oute‡dd -inet6 command failed");
+
+1715 #–ià
+	`defšed
+(
+TARGET_NETBSD
+)
+
+1717 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s‡dd -inet6 %s/%d %s",
+
+1718 
+ROUTE_PATH
+,
+
+1719 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+g©eway
+ );
+
+1721 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1722 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: NetBSD„oute‡dd -inet6 command failed");
+
+1725 
+	`msg
+ (
+M_FATAL
+, "Sorry, but I don't know how�o do 'route ipv6' commands on�his operating system. Try…utting your„outes in‡ --route-up script");
+
+1728 
+r6
+->
+defšed
+ = 
+¡©us
+;
+
+1729 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1730 
+	`gc_ä“
+ (&
+gc
+);
+
+1731 
+	}
+}
+
+1734 
+	$d–‘e_rou‹
+ (
+rou‹_�v4
+ *
+r
+,
+
+1735 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+1736 
+æags
+,
+
+1737 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+1738 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1740 
+gc_¬’a
+ 
+gc
+;
+
+1741 
+¬gv
+‡rgv;
+
+1742 cÚ¡ *
+ÃtwÜk
+;
+
+1743 cÚ¡ *
+Ãtmask
+;
+
+1744 cÚ¡ *
+g©eway
+;
+
+1745 
+is_loÿl_rou‹
+;
+
+1747 ià((
+r
+->
+æags
+ & (
+RT_DEFINED
+|
+RT_ADDED
+)) != (RT_DEFINED|RT_ADDED))
+
+1750 
+	`gc_š™
+ (&
+gc
+);
+
+1751 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+1753 
+ÃtwÜk
+ = 
+	`´št_š_addr_t
+ (
+r
+->ÃtwÜk, 0, &
+gc
+);
+
+1754 
+Ãtmask
+ = 
+	`´št_š_addr_t
+ (
+r
+->Ãtmask, 0, &
+gc
+);
+
+1755 
+g©eway
+ = 
+	`´št_š_addr_t
+ (
+r
+->g©eway, 0, &
+gc
+);
+
+1757 
+is_loÿl_rou‹
+ = 
+	`loÿl_rou‹
+(
+r
+->
+ÃtwÜk
+,„->
+Ãtmask
+,„->
+g©eway
+, 
+rgi
+);
+
+1758 ià(
+is_loÿl_rou‹
+ =ð
+LR_ERROR
+)
+
+1759 
+dÚe
+;
+
+1761 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+1762 #ifdeà
+ENABLE_IPROUTE
+
+
+1763 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s„oute del %s/%d",
+
+1764 
+�rou‹_·th
+,
+
+1765 
+ÃtwÜk
+,
+
+1766 
+	`couÁ_Ãtmask_b™s
+(
+Ãtmask
+));
+
+1768 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s del -net %s‚etmask %s",
+
+1769 
+ROUTE_PATH
+,
+
+1770 
+ÃtwÜk
+,
+
+1771 
+Ãtmask
+);
+
+1773 ià(
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+)
+
+1774 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "m‘riø%d", 
+r
+->
+m‘ric
+);
+
+1775 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1776 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Linux„oute delete command failed");
+
+1778 #–ià
+	`defšed
+ (
+WIN32
+)
+
+1780 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc DELETE %s MASK %s %s",
+
+1781 
+	`g‘_wš_sys_·th
+(),
+
+1782 
+WIN_ROUTE_PATH_SUFFIX
+,
+
+1783 
+ÃtwÜk
+,
+
+1784 
+Ãtmask
+,
+
+1785 
+g©eway
+);
+
+1787 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1789 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_IPAPI
+)
+
+1791 cÚ¡ 
+boÞ
+ 
+¡©us
+ = 
+	`d–_rou‹_�­i
+ (
+r
+, 
+‰
+);
+
+1792 
+	`msg
+ (
+D_ROUTE
+, "Rou‹ d–‘iÚ vŸ IPAPI %s", 
+¡©us
+ ? "succeeded" : "failed");
+
+1794 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_EXE
+)
+
+1796 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1797 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute delete command failed");
+
+1798 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1800 ià((
+æags
+ & 
+ROUTE_METHOD_MASK
+è=ð
+ROUTE_METHOD_ADAPTIVE
+)
+
+1802 cÚ¡ 
+boÞ
+ 
+¡©us
+ = 
+	`d–_rou‹_�­i
+ (
+r
+, 
+‰
+);
+
+1803 
+	`msg
+ (
+D_ROUTE
+, "Rou‹ d–‘iÚ vŸ IPAPI % [ad­tive]", 
+¡©us
+ ? "succeeded" : "failed");
+
+1804 ià(!
+¡©us
+)
+
+1806 
+	`msg
+ (
+D_ROUTE
+, "Route deletion fallback�o„oute.exe");
+
+1807 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1808 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute delete command failed [adaptive]");
+
+1809 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1814 
+	`ASSERT
+ (0);
+
+1817 #–ià
+	`defšed
+ (
+TARGET_SOLARIS
+)
+
+1819 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete %s -netmask %s %s",
+
+1820 
+ROUTE_PATH
+,
+
+1821 
+ÃtwÜk
+,
+
+1822 
+Ãtmask
+,
+
+1823 
+g©eway
+);
+
+1825 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1826 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Solaris„oute delete command failed");
+
+1828 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+)
+
+1830 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -net %s %s %s",
+
+1831 
+ROUTE_PATH
+,
+
+1832 
+ÃtwÜk
+,
+
+1833 
+g©eway
+,
+
+1834 
+Ãtmask
+);
+
+1836 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1837 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: FreeBSD„oute delete command failed");
+
+1839 #–ià
+	`defšed
+(
+TARGET_DRAGONFLY
+)
+
+1841 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -net %s %s %s",
+
+1842 
+ROUTE_PATH
+,
+
+1843 
+ÃtwÜk
+,
+
+1844 
+g©eway
+,
+
+1845 
+Ãtmask
+);
+
+1847 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1848 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: DragonFly„oute delete command failed");
+
+1850 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+1852 ià(
+	`is_Ú_lšk
+ (
+is_loÿl_rou‹
+, 
+æags
+, 
+rgi
+))
+
+1854 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -cloning -net %s -netmask %s -interface %s",
+
+1855 
+ROUTE_PATH
+,
+
+1856 
+ÃtwÜk
+,
+
+1857 
+Ãtmask
+,
+
+1858 
+rgi
+->
+içû
+);
+
+1862 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -net %s %s %s",
+
+1863 
+ROUTE_PATH
+,
+
+1864 
+ÃtwÜk
+,
+
+1865 
+g©eway
+,
+
+1866 
+Ãtmask
+);
+
+1869 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1870 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OS X„oute delete command failed");
+
+1872 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+è|| defšed(
+TARGET_NETBSD
+)
+
+1874 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -net %s %s -netmask %s",
+
+1875 
+ROUTE_PATH
+,
+
+1876 
+ÃtwÜk
+,
+
+1877 
+g©eway
+,
+
+1878 
+Ãtmask
+);
+
+1880 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1881 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OpenBSD/NetBSD„oute delete command failed");
+
+1884 
+	`msg
+ (
+M_FATAL
+, "Sorry, but I don't know how�o do 'route' commands on�his operating system. Try…utting your„outes in‡ --route-up script");
+
+1887 
+dÚe
+:
+
+1888 
+r
+->
+æags
+ &ð~
+RT_ADDED
+;
+
+1889 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1890 
+	`gc_ä“
+ (&
+gc
+);
+
+1891 
+	}
+}
+
+1894 
+	$d–‘e_rou‹_�v6
+ (cÚ¡ 
+rou‹_�v6
+ *
+r6
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+)
+
+1896 
+gc_¬’a
+ 
+gc
+;
+
+1897 
+¬gv
+‡rgv;
+
+1898 cÚ¡ *
+ÃtwÜk
+;
+
+1899 cÚ¡ *
+g©eway
+;
+
+1900 cÚ¡ *
+deviû
+ = 
+‰
+->
+aùu®_Çme
+;
+
+1901 
+boÞ
+ 
+g©eway_Ãeded
+ = 
+çl£
+;
+
+1903 ià(!
+r6
+->
+defšed
+)
+
+1906 
+	`gc_š™
+ (&
+gc
+);
+
+1907 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+1909 
+ÃtwÜk
+ = 
+	`´št_š6_addr_Ãtb™s_Úly
+Ð
+r6
+->ÃtwÜk,„6->
+Ãtb™s
+, &
+gc
+);
+
+1910 
+g©eway
+ = 
+	`´št_š6_addr
+Ð
+r6
+->g©eway, 0, &
+gc
+);
+
+1912 iàÐ!
+‰
+->
+�v6
+ )
+
+1914 
+	`msg
+Ð
+M_INFO
+, "delete_route_ipv6():‚ot deleting %s/%d,‚o IPv6 on if %s",
+
+1915 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+deviû
+ );
+
+1919 
+	`msg
+Ð
+M_INFO
+, "d–‘e_rou‹_�v6(%s/%d)", 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+ );
+
+1924 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ &&
+
+1925 !(
+r6
+->
+m‘ric_defšed
+ &&„6->
+m‘ric
+ == 0 ) )
+
+1927 
+g©eway_Ãeded
+ = 
+Œue
+;
+
+1931 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+1932 #ifdeà
+ENABLE_IPROUTE
+
+
+1933 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s -6„oute del %s/%d dev %s",
+
+1934 
+�rou‹_·th
+,
+
+1935 
+ÃtwÜk
+,
+
+1936 
+r6
+->
+Ãtb™s
+,
+
+1937 
+deviû
+);
+
+1938 ià(
+g©eway_Ãeded
+)
+
+1939 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "vŸ %s", 
+g©eway
+);
+
+1941 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s -A inet6 del %s/%d dev %s",
+
+1942 
+ROUTE_PATH
+,
+
+1943 
+ÃtwÜk
+,
+
+1944 
+r6
+->
+Ãtb™s
+,
+
+1945 
+deviû
+);
+
+1946 ià(
+g©eway_Ãeded
+)
+
+1947 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "gw %s", 
+g©eway
+);
+
+1948 ià(
+r6
+->
+m‘ric_defšed
+ &&„6->
+m‘ric
+ > 0 )
+
+1949 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, " m‘riø%d", 
+r6
+->
+m‘ric
+);
+
+1951 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1952 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Linux„oute -6/-A inet6 del command failed");
+
+1954 #–ià
+	`defšed
+ (
+WIN32
+)
+
+1957 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc interface ipv6 delete„oute %s/%d %s",
+
+1958 
+	`g‘_wš_sys_·th
+(),
+
+1959 
+NETSH_PATH_SUFFIX
+,
+
+1960 
+ÃtwÜk
+,
+
+1961 
+r6
+->
+Ãtb™s
+,
+
+1962 
+deviû
+);
+
+1970 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+ )
+
+1971 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " %s", "fe80::8" );
+
+1973 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " %s", 
+g©eway
+ );
+
+1976 ià(
+r
+->
+m‘ric_defšed
+)
+
+1977 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "METRIC %d", 
+r
+->
+m‘ric
+);
+
+1984 
+	`¬gv_´štf_ÿt
+Ð&
+¬gv
+, " store=active" );
+
+1986 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+1988 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+1989 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Windows„oute delete ipv6 command failed");
+
+1990 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+1992 #–ià
+	`defšed
+ (
+TARGET_SOLARIS
+)
+
+1997 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s/%d %s",
+
+1998 
+ROUTE_PATH
+,
+
+1999 
+ÃtwÜk
+,
+
+2000 
+r6
+->
+Ãtb™s
+,
+
+2001 
+g©eway
+ );
+
+2003 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+2004 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: Solaris„oute delete -inet6 command failed");
+
+2006 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+è|| defšed(
+TARGET_DRAGONFLY
+)
+
+2008 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s/%d",
+
+2009 
+ROUTE_PATH
+,
+
+2010 
+ÃtwÜk
+,
+
+2011 
+r6
+->
+Ãtb™s
+ );
+
+2013 ià(
+g©eway_Ãeded
+)
+
+2014 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+g©eway
+);
+
+2016 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-içû %s", 
+deviû
+);
+
+2018 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+2019 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: *BSD„oute delete -inet6 command failed");
+
+2021 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+2023 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s -prefixlen %d",
+
+2024 
+ROUTE_PATH
+,
+
+2025 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+ );
+
+2027 ià(
+g©eway_Ãeded
+)
+
+2028 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "%s", 
+g©eway
+);
+
+2030 
+	`¬gv_´štf_ÿt
+ (&
+¬gv
+, "-içû %s", 
+deviû
+);
+
+2032 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+2033 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: MacOS X„oute delete -inet6 command failed");
+
+2035 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+2037 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s -prefixlen %d %s",
+
+2038 
+ROUTE_PATH
+,
+
+2039 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+g©eway
+ );
+
+2041 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+2042 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: OpenBSD„oute delete -inet6 command failed");
+
+2044 #–ià
+	`defšed
+(
+TARGET_NETBSD
+)
+
+2046 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s/%d %s",
+
+2047 
+ROUTE_PATH
+,
+
+2048 
+ÃtwÜk
+, 
+r6
+->
+Ãtb™s
+, 
+g©eway
+ );
+
+2050 
+	`¬gv_msg
+ (
+D_ROUTE
+, &
+¬gv
+);
+
+2051 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "ERROR: NetBSD„oute delete -inet6 command failed");
+
+2054 
+	`msg
+ (
+M_FATAL
+, "Sorry, but I don't know how�o do 'route ipv6' commands on�his operating system. Try…utting your„outes in‡ --route-down script");
+
+2057 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+2058 
+	`gc_ä“
+ (&
+gc
+);
+
+2059 
+	}
+}
+
+2066 #ià
+defšed
+(
+WIN32
+)
+
+2068 cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+
+2069 
+	$g‘_wšdows_routšg_�bË
+ (
+gc_¬’a
+ *
+gc
+)
+
+2071 
+ULONG
+ 
+size
+ = 0;
+
+2072 
+PMIB_IPFORWARDTABLE
+ 
+¹
+ = 
+NULL
+;
+
+2073 
+DWORD
+ 
+¡©us
+;
+
+2075 
+¡©us
+ = 
+	`G‘IpFÜw¬dTabË
+ (
+NULL
+, &
+size
+, 
+TRUE
+);
+
+2076 ià(
+¡©us
+ =ð
+ERROR_INSUFFICIENT_BUFFER
+)
+
+2078 
+¹
+ = (
+PMIB_IPFORWARDTABLE
+è
+	`gc_m®loc
+ (
+size
+, 
+çl£
+, 
+gc
+);
+
+2079 
+¡©us
+ = 
+	`G‘IpFÜw¬dTabË
+ (
+¹
+, &
+size
+, 
+TRUE
+);
+
+2080 ià(
+¡©us
+ !ð
+NO_ERROR
+)
+
+2082 
+	`msg
+ (
+D_ROUTE
+, "NOTE: GetIpForwardTable„eturnedƒrror: %s (code=%u)",
+
+2083 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+),
+
+2084 ()
+¡©us
+);
+
+2085 
+¹
+ = 
+NULL
+;
+
+2088  
+¹
+;
+
+2089 
+	}
+}
+
+2092 
+	$‹¡_rou‹
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ad­‹rs
+,
+
+2093 cÚ¡ 
+š_addr_t
+ 
+g©eway
+,
+
+2094 
+DWORD
+ *
+šdex
+)
+
+2096 
+couÁ
+ = 0;
+
+2097 
+DWORD
+ 
+i
+ = 
+	`ad­‹r_šdex_of_�
+ (
+ad­‹rs
+, 
+g©eway
+, &
+couÁ
+, 
+NULL
+);
+
+2098 ià(
+šdex
+)
+
+2099 *
+šdex
+ = 
+i
+;
+
+2100  
+couÁ
+;
+
+2101 
+	}
+}
+
+2104 
+	$‹¡_rou‹_h–³r
+ (
+boÞ
+ *
+»t
+,
+
+2105 *
+couÁ
+,
+
+2106 *
+good
+,
+
+2107 *
+ambig
+,
+
+2108 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ad­‹rs
+,
+
+2109 cÚ¡ 
+š_addr_t
+ 
+g©eway
+)
+
+2111 
+c
+;
+
+2113 ++*
+couÁ
+;
+
+2114 
+c
+ = 
+	`‹¡_rou‹
+ (
+ad­‹rs
+, 
+g©eway
+, 
+NULL
+);
+
+2115 ià(
+c
+ == 0)
+
+2116 *
+»t
+ = 
+çl£
+;
+
+2118 ++*
+good
+;
+
+2119 ià(
+c
+ > 1)
+
+2120 ++*
+ambig
+;
+
+2121 
+	}
+}
+
+2126 
+boÞ
+
+
+2127 
+	$‹¡_rou‹s
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+, cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+2129 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2130 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ad­‹rs
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+2131 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2132 
+couÁ
+ = 0;
+
+2133 
+good
+ = 0;
+
+2134 
+ambig
+ = 0;
+
+2135 
+boÞ
+ 
+ad­‹r_up
+ = 
+çl£
+;
+
+2137 ià(
+	`is_ad­‹r_up
+ (
+‰
+, 
+ad­‹rs
+))
+
+2139 
+»t
+ = 
+Œue
+;
+
+2140 
+ad­‹r_up
+ = 
+Œue
+;
+
+2142 ià(
+¾
+)
+
+2144 
+i
+;
+
+2145 
+i
+ = 0; i < 
+¾
+->
+n
+; ++i)
+
+2146 
+	`‹¡_rou‹_h–³r
+ (&
+»t
+, &
+couÁ
+, &
+good
+, &
+ambig
+, 
+ad­‹rs
+, 
+¾
+->
+rou‹s
+[
+i
+].
+g©eway
+);
+
+2148 ià((
+¾
+->
+æags
+ & 
+RG_ENABLE
+è&& (¾->
+¥ec
+.æag & 
+RTSA_REMOTE_ENDPOINT
+))
+
+2149 
+	`‹¡_rou‹_h–³r
+ (&
+»t
+, &
+couÁ
+, &
+good
+, &
+ambig
+, 
+ad­‹rs
+, 
+¾
+->
+¥ec
+.
+»mÙe_’dpošt
+);
+
+2153 
+	`msg
+ (
+D_ROUTE
+, "TEST ROUTES: %d/%d succeeded†en=%d„et=%d‡=%d u/d=%s",
+
+2154 
+good
+,
+
+2155 
+couÁ
+,
+
+2156 
+¾
+ ?„l->
+n
+ : -1,
+
+2157 ()
+»t
+,
+
+2158 
+ambig
+,
+
+2159 
+ad­‹r_up
+ ? "up" : "down");
+
+2161 
+	`gc_ä“
+ (&
+gc
+);
+
+2162  
+»t
+;
+
+2163 
+	}
+}
+
+2165 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+
+2166 
+	$g‘_deçuÉ_g©eway_row
+ (cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+rou‹s
+)
+
+2168 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2169 
+DWORD
+ 
+lowe¡_m‘ric
+ = 
+MAXDWORD
+;
+
+2170 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+»t
+ = 
+NULL
+;
+
+2171 
+i
+;
+
+2172 
+be¡
+ = -1;
+
+2174 ià(
+rou‹s
+)
+
+2176 
+i
+ = 0; i < 
+rou‹s
+->
+dwNumEÁr›s
+; ++i)
+
+2178 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+row
+ = &
+rou‹s
+->
+�bË
+[
+i
+];
+
+2179 cÚ¡ 
+š_addr_t
+ 
+Ãt
+ = 
+	`Áohl
+ (
+row
+->
+dwFÜw¬dDe¡
+);
+
+2180 cÚ¡ 
+š_addr_t
+ 
+mask
+ = 
+	`Áohl
+ (
+row
+->
+dwFÜw¬dMask
+);
+
+2181 cÚ¡ 
+DWORD
+ 
+šdex
+ = 
+row
+->
+dwFÜw¬dIfIndex
+;
+
+2182 cÚ¡ 
+DWORD
+ 
+m‘ric
+ = 
+row
+->
+dwFÜw¬dM‘ric1
+;
+
+2184 
+	`dmsg
+ (
+D_ROUTE_DEBUG
+, "GDGR:„oute[%d] %s/%s i=%d m=%d",
+
+2185 
+i
+,
+
+2186 
+	`´št_š_addr_t
+ ((
+š_addr_t
+è
+Ãt
+, 0, &
+gc
+),
+
+2187 
+	`´št_š_addr_t
+ ((
+š_addr_t
+è
+mask
+, 0, &
+gc
+),
+
+2188 ()
+šdex
+,
+
+2189 ()
+m‘ric
+);
+
+2191 ià(!
+Ãt
+ && !
+mask
+ && 
+m‘ric
+ < 
+lowe¡_m‘ric
+)
+
+2193 
+»t
+ = 
+row
+;
+
+2194 
+lowe¡_m‘ric
+ = 
+m‘ric
+;
+
+2195 
+be¡
+ = 
+i
+;
+
+2200 
+	`dmsg
+ (
+D_ROUTE_DEBUG
+, "GDGR: be¡=%d†m=%u", 
+be¡
+, ()
+lowe¡_m‘ric
+);
+
+2202 
+	`gc_ä“
+ (&
+gc
+);
+
+2203  
+»t
+;
+
+2204 
+	}
+}
+
+2207 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+2209 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2211 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ad­‹rs
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+2212 cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+rou‹s
+ = 
+	`g‘_wšdows_routšg_�bË
+ (&
+gc
+);
+
+2213 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+row
+ = 
+	`g‘_deçuÉ_g©eway_row
+ (
+rou‹s
+);
+
+2214 
+DWORD
+ 
+a_šdex
+;
+
+2215 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+;
+
+2217 
+	`CLEAR
+(*
+rgi
+);
+
+2219 ià(
+row
+)
+
+2221 
+rgi
+->
+g©eway
+.
+addr
+ = 
+	`Áohl
+ (
+row
+->
+dwFÜw¬dNextHÝ
+);
+
+2222 ià(
+rgi
+->
+g©eway
+.
+addr
+)
+
+2224 
+rgi
+->
+æags
+ |ð
+RGI_ADDR_DEFINED
+;
+
+2225 
+a_šdex
+ = 
+	`ad­‹r_šdex_of_�
+ (
+ad­‹rs
+, 
+rgi
+->
+g©eway
+.
+addr
+, 
+NULL
+, &rgi->g©eway.
+Ãtmask
+);
+
+2226 ià(
+a_šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+2228 
+rgi
+->
+ad­‹r_šdex
+ = 
+a_šdex
+;
+
+2229 
+rgi
+->
+æags
+ |ð(
+RGI_IFACE_DEFINED
+|
+RGI_NETMASK_DEFINED
+);
+
+2230 
+ai
+ = 
+	`g‘_ad­‹r
+ (
+ad­‹rs
+, 
+a_šdex
+);
+
+2231 ià(
+ai
+)
+
+2233 
+	`memýy
+ (
+rgi
+->
+hwaddr
+, 
+ai
+->
+Add»ss
+, 6);
+
+2234 
+rgi
+->
+æags
+ |ð
+RGI_HWADDR_DEFINED
+;
+
+2240 
+	`gc_ä“
+ (&
+gc
+);
+
+2241 
+	}
+}
+
+2243 
+DWORD
+
+
+2244 
+	$wšdows_rou‹_fšd_if_šdex
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+2246 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2247 
+DWORD
+ 
+»t
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+2248 
+couÁ
+ = 0;
+
+2249 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ad­‹rs
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+2250 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+tun_ad­‹r
+ = 
+	`g‘_tun_ad­‹r
+ (
+‰
+, 
+ad­‹rs
+);
+
+2251 
+boÞ
+ 
+Ú_tun
+ = 
+çl£
+;
+
+2254 ià(
+	`is_�_š_ad­‹r_subÃt
+ (
+tun_ad­‹r
+, 
+r
+->
+g©eway
+, 
+NULL
+))
+
+2256 
+»t
+ = 
+tun_ad­‹r
+->
+Index
+;
+
+2257 
+couÁ
+ = 1;
+
+2258 
+Ú_tun
+ = 
+Œue
+;
+
+2262 
+couÁ
+ = 
+	`‹¡_rou‹
+ (
+ad­‹rs
+, 
+r
+->
+g©eway
+, &
+»t
+);
+
+2265 ià(
+couÁ
+ == 0)
+
+2267 
+	`msg
+ (
+M_WARN
+, "Warning:„oute gateway is‚ot„eachable on‡ny‡ctive‚etwork‡dapters: %s",
+
+2268 
+	`´št_š_addr_t
+ (
+r
+->
+g©eway
+, 0, &
+gc
+));
+
+2269 
+»t
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+2271 ià(
+couÁ
+ > 1)
+
+2273 
+	`msg
+ (
+M_WARN
+, "Warning:„oute gateway is‡mbiguous: %s (%d matches)",
+
+2274 
+	`´št_š_addr_t
+ (
+r
+->
+g©eway
+, 0, &
+gc
+),
+
+2275 
+couÁ
+);
+
+2276 
+»t
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+2279 
+	`dmsg
+ (
+D_ROUTE_DEBUG
+, "DEBUG:„oute find if: on_tun=%d count=%d index=%d",
+
+2280 
+Ú_tun
+,
+
+2281 
+couÁ
+,
+
+2282 ()
+»t
+);
+
+2284 
+	`gc_ä“
+ (&
+gc
+);
+
+2285  
+»t
+;
+
+2286 
+	}
+}
+
+2288 
+boÞ
+
+
+2289 
+	$add_rou‹_�­i
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+DWORD
+ 
+ad­‹r_šdex
+)
+
+2291 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2292 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2293 
+DWORD
+ 
+¡©us
+;
+
+2294 cÚ¡ 
+DWORD
+ 
+if_šdex
+ = (
+ad­‹r_šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+è? 
+	`wšdows_rou‹_fšd_if_šdex
+ (
+r
+, 
+‰
+) :‡dapter_index;
+
+2296 ià(
+if_šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+2298 
+MIB_IPFORWARDROW
+ 
+ä
+;
+
+2299 
+	`CLEAR
+ (
+ä
+);
+
+2300 
+ä
+.
+dwFÜw¬dDe¡
+ = 
+	`htÚl
+ (
+r
+->
+ÃtwÜk
+);
+
+2301 
+ä
+.
+dwFÜw¬dMask
+ = 
+	`htÚl
+ (
+r
+->
+Ãtmask
+);
+
+2302 
+ä
+.
+dwFÜw¬dPÞicy
+ = 0;
+
+2303 
+ä
+.
+dwFÜw¬dNextHÝ
+ = 
+	`htÚl
+ (
+r
+->
+g©eway
+);
+
+2304 
+ä
+.
+dwFÜw¬dIfIndex
+ = 
+if_šdex
+;
+
+2305 
+ä
+.
+dwFÜw¬dTy³
+ = 4;
+
+2306 
+ä
+.
+dwFÜw¬dPrÙo
+ = 3;
+
+2307 
+ä
+.
+dwFÜw¬dAge
+ = 0;
+
+2308 
+ä
+.
+dwFÜw¬dNextHÝAS
+ = 0;
+
+2309 
+ä
+.
+dwFÜw¬dM‘ric1
+ = (
+r
+->
+æags
+ & 
+RT_METRIC_DEFINED
+è?„->
+m‘ric
+ : 1;
+
+2310 
+ä
+.
+dwFÜw¬dM‘ric2
+ = 
+METRIC_NOT_USED
+;
+
+2311 
+ä
+.
+dwFÜw¬dM‘ric3
+ = 
+METRIC_NOT_USED
+;
+
+2312 
+ä
+.
+dwFÜw¬dM‘ric4
+ = 
+METRIC_NOT_USED
+;
+
+2313 
+ä
+.
+dwFÜw¬dM‘ric5
+ = 
+METRIC_NOT_USED
+;
+
+2315 ià((
+r
+->
+ÃtwÜk
+ &„->
+Ãtmask
+) !=„->network)
+
+2316 
+	`msg
+ (
+M_WARN
+, "Warning:‡ddress %s is‚ot‡‚etwork‡ddress in„elation�o‚etmask %s",
+
+2317 
+	`´št_š_addr_t
+ (
+r
+->
+ÃtwÜk
+, 0, &
+gc
+),
+
+2318 
+	`´št_š_addr_t
+ (
+r
+->
+Ãtmask
+, 0, &
+gc
+));
+
+2320 
+¡©us
+ = 
+	`C»©eIpFÜw¬dEÁry
+ (&
+ä
+);
+
+2322 ià(
+¡©us
+ =ð
+NO_ERROR
+)
+
+2323 
+»t
+ = 
+Œue
+;
+
+2327 cÚ¡ 
+fÜw¬d_m‘ric_lim™
+ = 2048;
+
+2329  ; 
+ä
+.
+dwFÜw¬dM‘ric1
+ <ð
+fÜw¬d_m‘ric_lim™
+; ++fr.dwForwardMetric1)
+
+2333 
+ä
+.
+dwFÜw¬dTy³
+ = 4; fr.dwForwardType >= 3; --fr.dwForwardType)
+
+2335 
+¡©us
+ = 
+	`C»©eIpFÜw¬dEÁry
+ (&
+ä
+);
+
+2336 ià(
+¡©us
+ =ð
+NO_ERROR
+)
+
+2338 
+	`msg
+ (
+D_ROUTE
+, "ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=%u‡nd dwForwardType=%u",
+
+2339 ()
+ä
+.
+dwFÜw¬dM‘ric1
+,
+
+2340 ()
+ä
+.
+dwFÜw¬dTy³
+);
+
+2341 
+»t
+ = 
+Œue
+;
+
+2342 
+doubËb»ak
+;
+
+2344 ià(
+¡©us
+ !ð
+ERROR_BAD_ARGUMENTS
+)
+
+2345 
+doubËb»ak
+;
+
+2349 
+doubËb»ak
+:
+
+2350 ià(
+¡©us
+ !ð
+NO_ERROR
+)
+
+2351 
+	`msg
+ (
+M_WARN
+, "ROUTE:„oute‡ddition failed using CreateIpForwardEntry: %s [status=%u if_index=%u]",
+
+2352 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+),
+
+2353 ()
+¡©us
+,
+
+2354 ()
+if_šdex
+);
+
+2358 
+	`gc_ä“
+ (&
+gc
+);
+
+2359  
+»t
+;
+
+2360 
+	}
+}
+
+2362 
+boÞ
+
+
+2363 
+	$d–_rou‹_�­i
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+2365 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2366 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2367 
+DWORD
+ 
+¡©us
+;
+
+2368 cÚ¡ 
+DWORD
+ 
+if_šdex
+ = 
+	`wšdows_rou‹_fšd_if_šdex
+ (
+r
+, 
+‰
+);
+
+2370 ià(
+if_šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+2372 
+MIB_IPFORWARDROW
+ 
+ä
+;
+
+2373 
+	`CLEAR
+ (
+ä
+);
+
+2375 
+ä
+.
+dwFÜw¬dDe¡
+ = 
+	`htÚl
+ (
+r
+->
+ÃtwÜk
+);
+
+2376 
+ä
+.
+dwFÜw¬dMask
+ = 
+	`htÚl
+ (
+r
+->
+Ãtmask
+);
+
+2377 
+ä
+.
+dwFÜw¬dPÞicy
+ = 0;
+
+2378 
+ä
+.
+dwFÜw¬dNextHÝ
+ = 
+	`htÚl
+ (
+r
+->
+g©eway
+);
+
+2379 
+ä
+.
+dwFÜw¬dIfIndex
+ = 
+if_šdex
+;
+
+2381 
+¡©us
+ = 
+	`D–‘eIpFÜw¬dEÁry
+ (&
+ä
+);
+
+2383 ià(
+¡©us
+ =ð
+NO_ERROR
+)
+
+2384 
+»t
+ = 
+Œue
+;
+
+2386 
+	`msg
+ (
+M_WARN
+, "ROUTE:„oute deletion failed using DeleteIpForwardEntry: %s",
+
+2387 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+2390 
+	`gc_ä“
+ (&
+gc
+);
+
+2391  
+»t
+;
+
+2392 
+	}
+}
+
+2395 
+	$fÜm©_rou‹_’Œy
+ (cÚ¡ 
+MIB_IPFORWARDROW
+ *
+r
+, 
+gc_¬’a
+ *
+gc
+)
+
+2397 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+2398 
+	`buf_´štf
+ (&
+out
+, "%s %s %s…=%d i=%d�=%d…r=%d‡=%d h=%d m=%d/%d/%d/%d/%d",
+
+2399 
+	`´št_š_addr_t
+ (
+r
+->
+dwFÜw¬dDe¡
+, 
+IA_NET_ORDER
+, 
+gc
+),
+
+2400 
+	`´št_š_addr_t
+ (
+r
+->
+dwFÜw¬dMask
+, 
+IA_NET_ORDER
+, 
+gc
+),
+
+2401 
+	`´št_š_addr_t
+ (
+r
+->
+dwFÜw¬dNextHÝ
+, 
+IA_NET_ORDER
+, 
+gc
+),
+
+2402 ()
+r
+->
+dwFÜw¬dPÞicy
+,
+
+2403 ()
+r
+->
+dwFÜw¬dIfIndex
+,
+
+2404 ()
+r
+->
+dwFÜw¬dTy³
+,
+
+2405 ()
+r
+->
+dwFÜw¬dPrÙo
+,
+
+2406 ()
+r
+->
+dwFÜw¬dAge
+,
+
+2407 ()
+r
+->
+dwFÜw¬dNextHÝAS
+,
+
+2408 ()
+r
+->
+dwFÜw¬dM‘ric1
+,
+
+2409 ()
+r
+->
+dwFÜw¬dM‘ric2
+,
+
+2410 ()
+r
+->
+dwFÜw¬dM‘ric3
+,
+
+2411 ()
+r
+->
+dwFÜw¬dM‘ric4
+,
+
+2412 ()
+r
+->
+dwFÜw¬dM‘ric5
+);
+
+2413  
+	`BSTR
+ (&
+out
+);
+
+2414 
+	}
+}
+
+2420 
+	$show_rou‹s
+ (
+msgËv
+)
+
+2422 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2423 
+i
+;
+
+2425 cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+¹
+ = 
+	`g‘_wšdows_routšg_�bË
+ (&
+gc
+);
+
+2427 
+	`msg
+ (
+msgËv
+, "SYSTEM ROUTING TABLE");
+
+2428 ià(
+¹
+)
+
+2430 
+i
+ = 0; i < 
+¹
+->
+dwNumEÁr›s
+; ++i)
+
+2432 
+	`msg
+ (
+msgËv
+, "%s", 
+	`fÜm©_rou‹_’Œy
+ (&
+¹
+->
+�bË
+[
+i
+], &
+gc
+));
+
+2435 
+	`gc_ä“
+ (&
+gc
+);
+
+2436 
+	}
+}
+
+2438 #–ià
+defšed
+(
+TARGET_LINUX
+)
+
+2441 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+2443 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2444 
+sd
+ = -1;
+
+2445 
+be¡_Çme
+[16];
+
+2446 
+be¡_Çme
+[0] = 0;
+
+2448 
+	`CLEAR
+(*
+rgi
+);
+
+2452 
+FILE
+ *
+å
+ = 
+	`fÝ’
+ ("/proc/net/route", "r");
+
+2453 ià(
+å
+)
+
+2455 
+lše
+[256];
+
+2456 
+couÁ
+ = 0;
+
+2457 
+lowe¡_m‘ric
+ = 
+UINT_MAX
+;
+
+2458 
+š_addr_t
+ 
+be¡_gw
+ = 0;
+
+2459 
+boÞ
+ 
+found
+ = 
+çl£
+;
+
+2460 
+	`fg‘s
+ (
+lše
+,  (lše), 
+å
+è!ð
+NULL
+)
+
+2462 ià(
+couÁ
+)
+
+2464 
+Ãt_x
+ = 0;
+
+2465 
+mask_x
+ = 0;
+
+2466 
+gw_x
+ = 0;
+
+2467 
+m‘ric
+ = 0;
+
+2468 
+æags
+ = 0;
+
+2469 
+Çme
+[16];
+
+2470 
+Çme
+[0] = 0;
+
+2471 cÚ¡ 
+Å
+ = 
+	`ssÿnf
+ (
+lše
+, "%15s\t%x\t%x\t%x\t%*s\t%*s\t%d\t%x",
+
+2472 
+Çme
+,
+
+2473 &
+Ãt_x
+,
+
+2474 &
+gw_x
+,
+
+2475 &
+æags
+,
+
+2476 &
+m‘ric
+,
+
+2477 &
+mask_x
+);
+
+2478 ià(
+Å
+ =ð6 && (
+æags
+ & 
+IFF_UP
+))
+
+2480 cÚ¡ 
+š_addr_t
+ 
+Ãt
+ = 
+	`Áohl
+ (
+Ãt_x
+);
+
+2481 cÚ¡ 
+š_addr_t
+ 
+mask
+ = 
+	`Áohl
+ (
+mask_x
+);
+
+2482 cÚ¡ 
+š_addr_t
+ 
+gw
+ = 
+	`Áohl
+ (
+gw_x
+);
+
+2484 ià(!
+Ãt
+ && !
+mask
+ && 
+m‘ric
+ < 
+lowe¡_m‘ric
+)
+
+2486 
+found
+ = 
+Œue
+;
+
+2487 
+be¡_gw
+ = 
+gw
+;
+
+2488 
+	`¡rýy
+ (
+be¡_Çme
+, 
+Çme
+);
+
+2489 
+lowe¡_m‘ric
+ = 
+m‘ric
+;
+
+2493 ++
+couÁ
+;
+
+2495 
+	`fþo£
+ (
+å
+);
+
+2497 ià(
+found
+)
+
+2499 
+rgi
+->
+g©eway
+.
+addr
+ = 
+be¡_gw
+;
+
+2500 
+rgi
+->
+æags
+ |ð
+RGI_ADDR_DEFINED
+;
+
+2501 ià(!
+rgi
+->
+g©eway
+.
+addr
+ && 
+be¡_Çme
+[0])
+
+2502 
+rgi
+->
+æags
+ |ð
+RGI_ON_LINK
+;
+
+2508 ià(
+rgi
+->
+æags
+ & 
+RGI_ADDR_DEFINED
+)
+
+2510 
+iäeq
+ *
+iä
+, *
+iãnd
+;
+
+2511 
+š_addr_t
+ 
+addr
+, 
+Ãtmask
+;
+
+2512 
+iäeq
+ ifreq;
+
+2513 
+ifcÚf
+ 
+ifc
+;
+
+2514 
+iäeq
+ 
+ifs
+[20];
+
+2516 ià((
+sd
+ = 
+	`sock‘
+ (
+AF_INET
+, 
+SOCK_DGRAM
+, 0)) < 0)
+
+2518 
+	`msg
+ (
+M_WARN
+, "GDG: socket() failed");
+
+2519 
+dÚe
+;
+
+2521 
+ifc
+.
+ifc_Ën
+ =  (
+ifs
+);
+
+2522 
+ifc
+.
+ifc_»q
+ = 
+ifs
+;
+
+2523 ià(
+	`ioùl
+ (
+sd
+, 
+SIOCGIFCONF
+, &
+ifc
+) < 0)
+
+2525 
+	`msg
+ (
+M_WARN
+, "GDG: ioctl(SIOCGIFCONF) failed");
+
+2526 
+dÚe
+;
+
+2530 
+iãnd
+ = 
+ifs
+ + (
+ifc
+.
+ifc_Ën
+ /  (
+iäeq
+));
+
+2531 
+iä
+ = 
+ifc
+.
+ifc_»q
+; iä < 
+iãnd
+; ifr++)
+
+2533 ià(
+iä
+->
+iä_addr
+.
+§_çmžy
+ =ð
+AF_INET
+)
+
+2536 
+addr
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *è&
+iä
+->
+iä_addr
+)->
+sš_addr
+.
+s_addr
+);
+
+2539 
+	`¡ºýyÁ
+ (
+iäeq
+.
+iä_Çme
+, 
+iä
+->ifr_name,  (ifreq.ifr_name));
+
+2542 ià(
+	`ioùl
+ (
+sd
+, 
+SIOCGIFFLAGS
+, &
+iäeq
+) < 0)
+
+2544 ià(!(
+iäeq
+.
+iä_æags
+ & 
+IFF_UP
+))
+
+2547 ià(
+rgi
+->
+æags
+ & 
+RGI_ON_LINK
+)
+
+2551 ià(
+	`¡rcmp
+(
+iäeq
+.
+iä_Çme
+, 
+be¡_Çme
+))
+
+2555 ià((
+iäeq
+.
+iä_æags
+ & 
+IFF_POINTOPOINT
+è&& 
+	`ioùl
+ (
+sd
+, 
+SIOCGIFDSTADDR
+, &ifreq) >= 0)
+
+2557 
+rgi
+->
+g©eway
+.
+addr
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *è&
+iäeq
+.
+iä_addr
+)->
+sš_addr
+.
+s_addr
+);
+
+2558 ià(
+rgi
+->
+g©eway
+.
+addr
+)
+
+2559 
+rgi
+->
+æags
+ &ð~
+RGI_ON_LINK
+;
+
+2566 ià(
+	`ioùl
+ (
+sd
+, 
+SIOCGIFNETMASK
+, &
+iäeq
+) < 0)
+
+2568 
+Ãtmask
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *è&
+iäeq
+.
+iä_addr
+)->
+sš_addr
+.
+s_addr
+);
+
+2571 ià(((
+rgi
+->
+g©eway
+.
+addr
+ ^‡ddrè& 
+Ãtmask
+) != 0)
+
+2575 
+rgi
+->
+g©eway
+.
+Ãtmask
+ =‚etmask;
+
+2576 
+rgi
+->
+æags
+ |ð
+RGI_NETMASK_DEFINED
+;
+
+2580 
+	`¡ºýyÁ
+ (
+rgi
+->
+içû
+, 
+iäeq
+.
+iä_Çme
+, (rgi->iface));
+
+2581 
+rgi
+->
+æags
+ |ð
+RGI_IFACE_DEFINED
+;
+
+2584 
+	`mem£t
+ (&
+iäeq
+.
+iä_hwaddr
+, 0,  (
+sockaddr
+));
+
+2585 ià(
+	`ioùl
+ (
+sd
+, 
+SIOCGIFHWADDR
+, &
+iäeq
+) < 0)
+
+2587 
+	`msg
+ (
+M_WARN
+, "GDG: SIOCGIFHWADDR(%sèçžed", 
+iäeq
+.
+iä_Çme
+);
+
+2588 
+dÚe
+;
+
+2590 
+	`memýy
+ (
+rgi
+->
+hwaddr
+, &
+iäeq
+.
+iä_hwaddr
+.
+§_d©a
+, 6);
+
+2591 
+rgi
+->
+æags
+ |ð
+RGI_HWADDR_DEFINED
+;
+
+2598 
+dÚe
+:
+
+2599 ià(
+sd
+ >= 0)
+
+2600 
+	`þo£
+ (
+sd
+);
+
+2601 
+	`gc_ä“
+ (&
+gc
+);
+
+2602 
+	}
+}
+
+2604 #–ià
+defšed
+(
+TARGET_FREEBSD
+)||defšed(
+TARGET_DRAGONFLY
+)||defšed(
+TARGET_SOLARIS
+)
+
+2606 
+	~<sys/ty³s.h
+>
+
+2607 
+	~<sys/sock‘.h
+>
+
+2608 
+	~<Ãtš‘/š.h
+>
+
+2609 
+	~<Ãt/rou‹.h
+>
+
+2612 
+¹_msghdr
+ 
+	mm_¹m
+;
+
+2613 
+	mm_¥aû
+[512];
+
+2614 } 
+	gm_¹msg
+;
+
+2616 
+	#ROUNDUP
+(
+a
+) \
+
+2617 ((
+a
+è> 0 ? (1 + ((×è- 1è| ((è- 1))è: ())
+
+	)
+
+2623 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+2625 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2626 
+s
+, 
+£q
+, 
+l
+, 
+pid
+, 
+¹m_addrs
+, 
+i
+;
+
+2627 
+sockaddr
+ 
+so_d¡
+, 
+so_mask
+;
+
+2628 *
+ý
+ = 
+m_¹msg
+.
+m_¥aû
+;
+
+2629 
+sockaddr
+ *
+g©e
+ = 
+NULL
+, *
+§
+;
+
+2630 
+¹_msghdr
+ *
+¹m_aux
+;
+
+2632 #ià
+	`defšed
+(
+TARGET_FREEBSD
+)||defšed(
+TARGET_DRAGONFLY
+)
+
+2634 
+	#NEXTADDR
+(
+w
+, 
+u
+) \
+
+2635 ià(
+¹m_addrs
+ & (
+w
+)) {\
+
+2636 
+l
+ = 
+	`ROUNDUP
+(
+u
+.
+§_Ën
+); 
+	`memmove
+(
+ý
+, &(u),†); cp +=†;\
+
+2637 }
+
+	)
+
+2639 
+	#ADVANCE
+(
+x
+, 
+n
+è(x +ð
+	`ROUNDUP
+(Ò)->
+§_Ën
+))
+
+	)
+
+2643 
+	#NEXTADDR
+(
+w
+, 
+u
+) \
+
+2644 ià(
+¹m_addrs
+ & (
+w
+)) {\
+
+2645 
+l
+ = 
+	`ROUNDUP
+((
+sockaddr_š
+)); 
+	`memmove
+(
+ý
+, &(
+u
+),†); cp +=†;\
+
+2646 }
+
+	)
+
+2648 
+	#ADVANCE
+(
+x
+, 
+n
+è(x +ð
+	`ROUNDUP
+((
+sockaddr_š
+)))
+
+	)
+
+2653 
+	#¹m
+ 
+m_¹msg
+.
+m_¹m
+
+
+	)
+
+2655 
+	`CLEAR
+(*
+rgi
+);
+
+2657 
+pid
+ = 
+	`g‘pid
+();
+
+2658 
+£q
+ = 0;
+
+2659 
+¹m_addrs
+ = 
+RTA_DST
+ | 
+RTA_NETMASK
+;
+
+2661 
+	`bz”o
+(&
+so_d¡
+, (so_dst));
+
+2662 
+	`bz”o
+(&
+so_mask
+, (so_mask));
+
+2663 
+	`bz”o
+(&
+¹m
+, (
+¹_msghdr
+));
+
+2665 
+¹m
+.
+¹m_ty³
+ = 
+RTM_GET
+;
+
+2666 
+¹m
+.
+¹m_æags
+ = 
+RTF_UP
+ | 
+RTF_GATEWAY
+;
+
+2667 
+¹m
+.
+¹m_v”siÚ
+ = 
+RTM_VERSION
+;
+
+2668 
+¹m
+.
+¹m_£q
+ = ++
+£q
+;
+
+2669 
+¹m
+.
+¹m_addrs
+ =„tm_addrs;
+
+2671 
+so_d¡
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2672 
+so_mask
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2674 #ià
+	`defšed
+(
+TARGET_FREEBSD
+)||defšed(
+TARGET_DRAGONFLY
+)
+
+2675 
+so_d¡
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+2676 
+so_mask
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+2679 
+	`NEXTADDR
+(
+RTA_DST
+, 
+so_d¡
+);
+
+2680 
+	`NEXTADDR
+(
+RTA_NETMASK
+, 
+so_mask
+);
+
+2682 
+¹m
+.
+¹m_msgËn
+ = 
+l
+ = 
+ý
+ - (*)&
+m_¹msg
+;
+
+2684 
+s
+ = 
+	`sock‘
+(
+PF_ROUTE
+, 
+SOCK_RAW
+, 0);
+
+2686 ià(
+	`wr™e
+(
+s
+, (*)&
+m_¹msg
+, 
+l
+) < 0)
+
+2688 
+	`msg
+(
+M_WARN
+|
+M_ERRNO
+, "Could‚ot„etrieve default gateway from„oute socket:");
+
+2689 
+	`gc_ä“
+ (&
+gc
+);
+
+2690 
+	`þo£
+(
+s
+);
+
+2695 
+l
+ = 
+	`»ad
+(
+s
+, (*)&
+m_¹msg
+, (m_rtmsg));
+
+2696 } 
+l
+ > 0 && (
+¹m
+.
+¹m_£q
+ !ð
+£q
+ ||„tm.
+¹m_pid
+ !ð
+pid
+));
+
+2698 
+	`þo£
+(
+s
+);
+
+2700 
+¹m_aux
+ = &
+¹m
+;
+
+2702 
+ý
+ = ((*)(
+¹m_aux
+ + 1));
+
+2703 ià(
+¹m_aux
+->
+¹m_addrs
+) {
+
+2704 
+i
+ = 1; i; i <<= 1)
+
+2705 ià(
+i
+ & 
+¹m_aux
+->
+¹m_addrs
+) {
+
+2706 
+§
+ = (
+sockaddr
+ *)
+ý
+;
+
+2707 ià(
+i
+ =ð
+RTA_GATEWAY
+ )
+
+2708 
+g©e
+ = 
+§
+;
+
+2709 
+	`ADVANCE
+(
+ý
+, 
+§
+);
+
+2714 
+	`gc_ä“
+ (&
+gc
+);
+
+2719 ià(
+g©e
+ !ð
+NULL
+ )
+
+2721 
+rgi
+->
+g©eway
+.
+addr
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *)
+g©e
+)->
+sš_addr
+.
+s_addr
+);
+
+2722 
+rgi
+->
+æags
+ |ð
+RGI_ADDR_DEFINED
+;
+
+2724 
+	`gc_ä“
+ (&
+gc
+);
+
+2728 
+	`gc_ä“
+ (&
+gc
+);
+
+2730 
+	}
+}
+
+2732 #–ià
+defšed
+(
+TARGET_DARWIN
+)
+
+2734 
+	~<sys/ty³s.h
+>
+
+2735 
+	~<sys/sock‘.h
+>
+
+2736 
+	~<Ãtš‘/š.h
+>
+
+2737 
+	~<Ãt/rou‹.h
+>
+
+2738 
+	~<Ãt/if_dl.h
+>
+
+2740 
+	s¹msg
+ {
+
+2741 
+¹_msghdr
+ 
+	mm_¹m
+;
+
+2742 
+	mm_¥aû
+[512];
+
+2745 
+	#ROUNDUP
+(
+a
+) \
+
+2746 ((
+a
+è> 0 ? (1 + ((×è- 1è| ((
+ušt32_t
+è- 1))è: (ušt32_t))
+
+	)
+
+2748 
+	#NEXTADDR
+(
+w
+, 
+u
+) \
+
+2749 ià(
+¹m_addrs
+ & (
+w
+)) {\
+
+2750 
+l
+ = 
+	`ROUNDUP
+(
+u
+.
+§_Ën
+); 
+	`memmove
+(
+ý
+, &(u),†); cp +=†;\
+
+2751 }
+
+	)
+
+2753 
+	#ADVANCE
+(
+x
+, 
+n
+è(x +ð
+	`ROUNDUP
+(Ò)->
+§_Ën
+))
+
+	)
+
+2755 
+	#max
+(
+a
+,
+b
+è(×è> (bè? (aè: (b))
+
+	)
+
+2758 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+2760 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2761 
+¹msg
+ 
+m_¹msg
+;
+
+2762 
+sockfd
+ = -1;
+
+2763 
+£q
+, 
+l
+, 
+pid
+, 
+¹m_addrs
+, 
+i
+;
+
+2764 
+sockaddr
+ 
+so_d¡
+, 
+so_mask
+;
+
+2765 *
+ý
+ = 
+m_¹msg
+.
+m_¥aû
+;
+
+2766 
+sockaddr
+ *
+g©e
+ = 
+NULL
+, *
+iå
+ = NULL, *
+§
+;
+
+2767 
+¹_msghdr
+ *
+¹m_aux
+;
+
+2769 
+	#¹m
+ 
+m_¹msg
+.
+m_¹m
+
+
+	)
+
+2771 
+	`CLEAR
+(*
+rgi
+);
+
+2774 
+pid
+ = 
+	`g‘pid
+();
+
+2775 
+£q
+ = 0;
+
+2776 
+¹m_addrs
+ = 
+RTA_DST
+ | 
+RTA_NETMASK
+ | 
+RTA_IFP
+;
+
+2778 
+	`bz”o
+(&
+m_¹msg
+, (m_rtmsg));
+
+2779 
+	`bz”o
+(&
+so_d¡
+, (so_dst));
+
+2780 
+	`bz”o
+(&
+so_mask
+, (so_mask));
+
+2781 
+	`bz”o
+(&
+¹m
+, (
+¹_msghdr
+));
+
+2783 
+¹m
+.
+¹m_ty³
+ = 
+RTM_GET
+;
+
+2784 
+¹m
+.
+¹m_æags
+ = 
+RTF_UP
+ | 
+RTF_GATEWAY
+;
+
+2785 
+¹m
+.
+¹m_v”siÚ
+ = 
+RTM_VERSION
+;
+
+2786 
+¹m
+.
+¹m_£q
+ = ++
+£q
+;
+
+2787 
+¹m
+.
+¹m_addrs
+ =„tm_addrs;
+
+2789 
+so_d¡
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2790 
+so_d¡
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+2791 
+so_mask
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2792 
+so_mask
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+2794 
+	`NEXTADDR
+(
+RTA_DST
+, 
+so_d¡
+);
+
+2795 
+	`NEXTADDR
+(
+RTA_NETMASK
+, 
+so_mask
+);
+
+2797 
+¹m
+.
+¹m_msgËn
+ = 
+l
+ = 
+ý
+ - (*)&
+m_¹msg
+;
+
+2800 
+sockfd
+ = 
+	`sock‘
+(
+PF_ROUTE
+, 
+SOCK_RAW
+, 0);
+
+2801 ià(
+sockfd
+ < 0)
+
+2803 
+	`msg
+ (
+M_WARN
+, "GDG: socket #1 failed");
+
+2804 
+dÚe
+;
+
+2806 ià(
+	`wr™e
+(
+sockfd
+, (*)&
+m_¹msg
+, 
+l
+) < 0)
+
+2808 
+	`msg
+ (
+M_WARN
+, "GDG:…roblem writing�o„outing socket");
+
+2809 
+dÚe
+;
+
+2812 
+l
+ = 
+	`»ad
+(
+sockfd
+, (*)&
+m_¹msg
+, (m_rtmsg));
+
+2813 } 
+l
+ > 0 && (
+¹m
+.
+¹m_£q
+ !ð
+£q
+ ||„tm.
+¹m_pid
+ !ð
+pid
+));
+
+2814 
+	`þo£
+(
+sockfd
+);
+
+2815 
+sockfd
+ = -1;
+
+2818 
+¹m_aux
+ = &
+¹m
+;
+
+2819 
+ý
+ = ((*)(
+¹m_aux
+ + 1));
+
+2820 ià(
+¹m_aux
+->
+¹m_addrs
+)
+
+2822 
+i
+ = 1; i; i <<= 1)
+
+2824 ià(
+i
+ & 
+¹m_aux
+->
+¹m_addrs
+)
+
+2826 
+§
+ = (
+sockaddr
+ *)
+ý
+;
+
+2827 ià(
+i
+ =ð
+RTA_GATEWAY
+ )
+
+2828 
+g©e
+ = 
+§
+;
+
+2829 ià(
+i
+ =ð
+RTA_IFP
+)
+
+2830 
+iå
+ = 
+§
+;
+
+2831 
+	`ADVANCE
+(
+ý
+, 
+§
+);
+
+2836 
+dÚe
+;
+
+2839 ià(
+g©e
+ !ð
+NULL
+ )
+
+2842 
+rgi
+->
+g©eway
+.
+addr
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *)
+g©e
+)->
+sš_addr
+.
+s_addr
+);
+
+2843 ià(
+rgi
+->
+g©eway
+.
+addr
+)
+
+2844 
+rgi
+->
+æags
+ |ð
+RGI_ADDR_DEFINED
+;
+
+2846 ià(
+iå
+)
+
+2849 cÚ¡ 
+sockaddr_dl
+ *
+adl
+ = (sockaddr_dÈ*è
+iå
+;
+
+2850 
+Ën
+ = 
+adl
+->
+sdl_Æ’
+;
+
+2851 ià(
+adl
+->
+sdl_Æ’
+ &&‡dl->sdl_Æ’ < (
+rgi
+->
+içû
+))
+
+2853 
+	`memýy
+ (
+rgi
+->
+içû
+, 
+adl
+->
+sdl_d©a
+,‡dl->
+sdl_Æ’
+);
+
+2854 
+rgi
+->
+içû
+[
+adl
+->
+sdl_Æ’
+] = '\0';
+
+2855 
+rgi
+->
+æags
+ |ð
+RGI_IFACE_DEFINED
+;
+
+2861 ià(
+rgi
+->
+æags
+ & 
+RGI_IFACE_DEFINED
+) {
+
+2862 
+iäeq
+ 
+iä
+;
+
+2864 
+sockfd
+ = 
+	`sock‘
+(
+AF_INET
+, 
+SOCK_DGRAM
+, 0);
+
+2865 ià(
+sockfd
+ < 0)
+
+2867 
+	`msg
+ (
+M_WARN
+, "GDG: socket #2 failed");
+
+2868 
+dÚe
+;
+
+2871 
+	`CLEAR
+(
+iä
+);
+
+2872 
+iä
+.
+iä_addr
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2873 
+	`¡ºýyÁ
+(
+iä
+.
+iä_Çme
+, 
+rgi
+->
+içû
+, 
+IFNAMSIZ
+);
+
+2875 ià(
+	`ioùl
+(
+sockfd
+, 
+SIOCGIFNETMASK
+, (*)&
+iä
+) < 0)
+
+2877 
+	`msg
+ (
+M_WARN
+, "GDG: ioctl #1 failed");
+
+2878 
+dÚe
+;
+
+2880 
+	`þo£
+(
+sockfd
+);
+
+2881 
+sockfd
+ = -1;
+
+2883 
+rgi
+->
+g©eway
+.
+Ãtmask
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *)&
+iä
+.
+iä_addr
+)->
+sš_addr
+.
+s_addr
+);
+
+2884 
+rgi
+->
+æags
+ |ð
+RGI_NETMASK_DEFINED
+;
+
+2888 ià(
+rgi
+->
+æags
+ & 
+RGI_IFACE_DEFINED
+)
+
+2890 
+ifcÚf
+ 
+ifc
+;
+
+2891 
+iäeq
+ *
+iä
+;
+
+2892 cÚ¡ 
+bufsize
+ = 4096;
+
+2893 *
+bufãr
+;
+
+2895 
+bufãr
+ = (*è
+	`gc_m®loc
+ (
+bufsize
+, 
+Œue
+, &
+gc
+);
+
+2896 
+sockfd
+ = 
+	`sock‘
+(
+AF_INET
+, 
+SOCK_DGRAM
+, 0);
+
+2897 ià(
+sockfd
+ < 0)
+
+2899 
+	`msg
+ (
+M_WARN
+, "GDG: socket #3 failed");
+
+2900 
+dÚe
+;
+
+2903 
+ifc
+.
+ifc_Ën
+ = 
+bufsize
+;
+
+2904 
+ifc
+.
+ifc_buf
+ = 
+bufãr
+;
+
+2906 ià(
+	`ioùl
+(
+sockfd
+, 
+SIOCGIFCONF
+, (*)&
+ifc
+) < 0)
+
+2908 
+	`msg
+ (
+M_WARN
+, "GDG: ioctl #2 failed");
+
+2909 
+dÚe
+;
+
+2911 
+	`þo£
+(
+sockfd
+);
+
+2912 
+sockfd
+ = -1;
+
+2914 
+ý
+ = 
+bufãr
+; c°<ðbufã¸+ 
+ifc
+.
+ifc_Ën
+ - (
+iäeq
+); )
+
+2916 
+iä
+ = (
+iäeq
+ *)
+ý
+;
+
+2917 cÚ¡ 
+size_t
+ 
+Ën
+ = (
+iä
+->
+iä_Çme
+è+ 
+	`max
+((iä->
+iä_addr
+), iä->iä_addr.
+§_Ën
+);
+
+2918 ià(!
+iä
+->
+iä_addr
+.
+§_çmžy
+)
+
+2920 ià(!
+	`¡ºcmp
+(
+iä
+->
+iä_Çme
+, 
+rgi
+->
+içû
+, 
+IFNAMSIZ
+))
+
+2922 ià(
+iä
+->
+iä_addr
+.
+§_çmžy
+ =ð
+AF_LINK
+)
+
+2924 
+sockaddr_dl
+ *
+sdl
+ = (sockaddr_dÈ*)&
+iä
+->
+iä_addr
+;
+
+2925 
+	`memýy
+(
+rgi
+->
+hwaddr
+, 
+	`LLADDR
+(
+sdl
+), 6);
+
+2926 
+rgi
+->
+æags
+ |ð
+RGI_HWADDR_DEFINED
+;
+
+2929 
+ý
+ +ð
+Ën
+;
+
+2933 
+dÚe
+:
+
+2934 ià(
+sockfd
+ >= 0)
+
+2935 
+	`þo£
+(
+sockfd
+);
+
+2936 
+	`gc_ä“
+ (&
+gc
+);
+
+2937 
+	}
+}
+
+2939 #undeà
+max
+
+
+2941 #–ià
+defšed
+(
+TARGET_OPENBSD
+è|| defšed(
+TARGET_NETBSD
+)
+
+2943 
+	~<sys/ty³s.h
+>
+
+2944 
+	~<sys/sock‘.h
+>
+
+2945 
+	~<Ãtš‘/š.h
+>
+
+2946 
+	~<Ãt/rou‹.h
+>
+
+2949 
+¹_msghdr
+ 
+	mm_¹m
+;
+
+2950 
+	mm_¥aû
+[512];
+
+2951 } 
+	gm_¹msg
+;
+
+2953 
+	#ROUNDUP
+(
+a
+) \
+
+2954 ((
+a
+è> 0 ? (1 + ((×è- 1è| ((è- 1))è: ())
+
+	)
+
+2960 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+2962 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2963 
+s
+, 
+£q
+, 
+l
+, 
+¹m_addrs
+, 
+i
+;
+
+2964 
+pid_t
+ 
+pid
+;
+
+2965 
+sockaddr
+ 
+so_d¡
+, 
+so_mask
+;
+
+2966 *
+ý
+ = 
+m_¹msg
+.
+m_¥aû
+;
+
+2967 
+sockaddr
+ *
+g©e
+ = 
+NULL
+, *
+§
+;
+
+2968 
+¹_msghdr
+ *
+¹m_aux
+;
+
+2970 
+	#NEXTADDR
+(
+w
+, 
+u
+) \
+
+2971 ià(
+¹m_addrs
+ & (
+w
+)) {\
+
+2972 
+l
+ = 
+	`ROUNDUP
+(
+u
+.
+§_Ën
+); 
+	`memmove
+(
+ý
+, &(u),†); cp +=†;\
+
+2973 }
+
+	)
+
+2975 
+	#ADVANCE
+(
+x
+, 
+n
+è(x +ð
+	`ROUNDUP
+(Ò)->
+§_Ën
+))
+
+	)
+
+2977 
+	#¹m
+ 
+m_¹msg
+.
+m_¹m
+
+
+	)
+
+2979 
+	`CLEAR
+(*
+rgi
+);
+
+2981 
+pid
+ = 
+	`g‘pid
+();
+
+2982 
+£q
+ = 0;
+
+2983 
+¹m_addrs
+ = 
+RTA_DST
+ | 
+RTA_NETMASK
+;
+
+2985 
+	`bz”o
+(&
+so_d¡
+, (so_dst));
+
+2986 
+	`bz”o
+(&
+so_mask
+, (so_mask));
+
+2987 
+	`bz”o
+(&
+¹m
+, (
+¹_msghdr
+));
+
+2989 
+¹m
+.
+¹m_ty³
+ = 
+RTM_GET
+;
+
+2990 
+¹m
+.
+¹m_æags
+ = 
+RTF_UP
+ | 
+RTF_GATEWAY
+;
+
+2991 
+¹m
+.
+¹m_v”siÚ
+ = 
+RTM_VERSION
+;
+
+2992 
+¹m
+.
+¹m_£q
+ = ++
+£q
+;
+
+2993 
+¹m
+.
+¹m_addrs
+ =„tm_addrs;
+
+2995 
+so_d¡
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2996 
+so_d¡
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+2997 
+so_mask
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+2998 
+so_mask
+.
+§_Ën
+ = (
+sockaddr_š
+);
+
+3000 
+	`NEXTADDR
+(
+RTA_DST
+, 
+so_d¡
+);
+
+3001 
+	`NEXTADDR
+(
+RTA_NETMASK
+, 
+so_mask
+);
+
+3003 
+¹m
+.
+¹m_msgËn
+ = 
+l
+ = 
+ý
+ - (*)&
+m_¹msg
+;
+
+3005 
+s
+ = 
+	`sock‘
+(
+PF_ROUTE
+, 
+SOCK_RAW
+, 0);
+
+3007 ià(
+	`wr™e
+(
+s
+, (*)&
+m_¹msg
+, 
+l
+) < 0)
+
+3009 
+	`msg
+(
+M_WARN
+|
+M_ERRNO
+, "Could‚ot„etrieve default gateway from„oute socket:");
+
+3010 
+	`gc_ä“
+ (&
+gc
+);
+
+3011 
+	`þo£
+(
+s
+);
+
+3016 
+l
+ = 
+	`»ad
+(
+s
+, (*)&
+m_¹msg
+, (m_rtmsg));
+
+3017 } 
+l
+ > 0 && (
+¹m
+.
+¹m_£q
+ !ð
+£q
+ ||„tm.
+¹m_pid
+ !ð
+pid
+));
+
+3019 
+	`þo£
+(
+s
+);
+
+3021 
+¹m_aux
+ = &
+¹m
+;
+
+3023 
+ý
+ = ((*)(
+¹m_aux
+ + 1));
+
+3024 ià(
+¹m_aux
+->
+¹m_addrs
+) {
+
+3025 
+i
+ = 1; i; i <<= 1)
+
+3026 ià(
+i
+ & 
+¹m_aux
+->
+¹m_addrs
+) {
+
+3027 
+§
+ = (
+sockaddr
+ *)
+ý
+;
+
+3028 ià(
+i
+ =ð
+RTA_GATEWAY
+ )
+
+3029 
+g©e
+ = 
+§
+;
+
+3030 
+	`ADVANCE
+(
+ý
+, 
+§
+);
+
+3035 
+	`gc_ä“
+ (&
+gc
+);
+
+3040 ià(
+g©e
+ !ð
+NULL
+ )
+
+3042 
+rgi
+->
+g©eway
+.
+addr
+ = 
+	`Áohl
+(((
+sockaddr_š
+ *)
+g©e
+)->
+sš_addr
+.
+s_addr
+);
+
+3043 
+rgi
+->
+æags
+ |ð
+RGI_ADDR_DEFINED
+;
+
+3045 
+	`gc_ä“
+ (&
+gc
+);
+
+3049 
+	`gc_ä“
+ (&
+gc
+);
+
+3051 
+	}
+}
+
+3080 
+	$g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+3082 
+	`CLEAR
+(*
+rgi
+);
+
+3083 
+	}
+}
+
+3087 
+boÞ
+
+
+3088 
+	$Ãtmask_to_Ãtb™s
+ (cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+, cÚ¡ in_addr_ˆ
+Ãtmask
+, *
+Ãtb™s
+)
+
+3090 
+i
+;
+
+3091 cÚ¡ 
+add¾’
+ =  (
+š_addr_t
+) * 8;
+
+3093 ià((
+ÃtwÜk
+ & 
+Ãtmask
+) ==‚etwork)
+
+3095 
+i
+ = 0; i <ð
+add¾’
+; ++i)
+
+3097 
+š_addr_t
+ 
+mask
+ = 
+	`Ãtb™s_to_Ãtmask
+ (
+i
+);
+
+3098 ià(
+mask
+ =ð
+Ãtmask
+)
+
+3100 ià(
+i
+ =ð
+add¾’
+)
+
+3101 *
+Ãtb™s
+ = -1;
+
+3103 *
+Ãtb™s
+ = 
+i
+;
+
+3104  
+Œue
+;
+
+3108  
+çl£
+;
+
+3109 
+	}
+}
+
+3117 #ià
+defšed
+(
+WIN32
+)
+
+3120 
+	$add_ho¡_rou‹_if_nÚloÿl
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+š_addr_t
+ 
+addr
+)
+
+3122 ià(
+	`‹¡_loÿl_addr
+(
+addr
+, 
+NULL
+è=ð
+TLA_NONLOCAL
+ &&‡dd¸!ð0 &&‡dd¸!ð
+IPV4_NETMASK_HOST
+)
+
+3123 
+	`add_by·ss_add»ss
+ (
+rb
+, 
+addr
+);
+
+3124 
+	}
+}
+
+3127 
+	$add_ho¡_rou‹_¬¿y
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+IP_ADDR_STRING
+ *
+�li¡
+)
+
+3129 
+�li¡
+)
+
+3131 
+boÞ
+ 
+sucûed
+ = 
+çl£
+;
+
+3132 cÚ¡ 
+š_addr_t
+ 
+�
+ = 
+	`g‘addr
+ (
+GETADDR_HOST_ORDER
+, 
+�li¡
+->
+IpAdd»ss
+.
+SŒšg
+, 0, &
+sucûed
+, 
+NULL
+);
+
+3133 ià(
+sucûed
+)
+
+3135 
+	`add_ho¡_rou‹_if_nÚloÿl
+ (
+rb
+, 
+�
+);
+
+3137 
+�li¡
+ = i¶i¡->
+Next
+;
+
+3139 
+	}
+}
+
+3142 
+	$g‘_by·ss_add»s£s
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+æags
+)
+
+3144 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3148 cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+rou‹s
+ = 
+	`g‘_wšdows_routšg_�bË
+ (&
+gc
+);
+
+3151 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+row
+ = 
+	`g‘_deçuÉ_g©eway_row
+ (
+rou‹s
+);
+
+3153 ià(
+row
+)
+
+3156 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+dgi
+ = 
+	`g‘_ad­‹r_šfo
+ (
+row
+->
+dwFÜw¬dIfIndex
+, &
+gc
+);
+
+3159 cÚ¡ 
+IP_PER_ADAPTER_INFO
+ *
+·i
+ = 
+	`g‘_³r_ad­‹r_šfo
+ (
+row
+->
+dwFÜw¬dIfIndex
+, &
+gc
+);
+
+3162 ià((
+æags
+ & 
+RG_BYPASS_DHCP
+è&& 
+dgi
+ && dgi->
+DhýEÇbËd
+)
+
+3163 
+	`add_ho¡_rou‹_¬¿y
+ (
+rb
+, &
+dgi
+->
+DhýS”v”
+);
+
+3166 ià((
+æags
+ & 
+RG_BYPASS_DNS
+è&& 
+·i
+)
+
+3167 
+	`add_ho¡_rou‹_¬¿y
+ (
+rb
+, &
+·i
+->
+DnsS”v”Li¡
+);
+
+3170 
+	`gc_ä“
+ (&
+gc
+);
+
+3171 
+	}
+}
+
+3176 
+	$g‘_by·ss_add»s£s
+ (
+rou‹_by·ss
+ *
+rb
+, cÚ¡ 
+æags
+)
+
+3178 
+	}
+}
+
+3191 #ià
+defšed
+(
+WIN32
+)
+
+3194 
+	$‹¡_loÿl_addr
+ (cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+3196 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3197 cÚ¡ 
+š_addr_t
+ 
+nÚloÿl_Ãtmask
+ = 0x80000000L;
+
+3198 
+boÞ
+ 
+»t
+ = 
+TLA_NONLOCAL
+;
+
+3201 cÚ¡ 
+MIB_IPFORWARDTABLE
+ *
+¹
+ = 
+	`g‘_wšdows_routšg_�bË
+ (&
+gc
+);
+
+3202 ià(
+¹
+)
+
+3204 
+i
+;
+
+3205 
+i
+ = 0; i < 
+¹
+->
+dwNumEÁr›s
+; ++i)
+
+3207 cÚ¡ 
+MIB_IPFORWARDROW
+ *
+row
+ = &
+¹
+->
+�bË
+[
+i
+];
+
+3208 cÚ¡ 
+š_addr_t
+ 
+Ãt
+ = 
+	`Áohl
+ (
+row
+->
+dwFÜw¬dDe¡
+);
+
+3209 cÚ¡ 
+š_addr_t
+ 
+mask
+ = 
+	`Áohl
+ (
+row
+->
+dwFÜw¬dMask
+);
+
+3210 ià(
+mask
+ > 
+nÚloÿl_Ãtmask
+ && (
+addr
+ & maskè=ð
+Ãt
+)
+
+3212 
+»t
+ = 
+TLA_LOCAL
+;
+
+3218 
+	`gc_ä“
+ (&
+gc
+);
+
+3219  
+»t
+;
+
+3220 
+	}
+}
+
+3225 
+	$‹¡_loÿl_addr
+ (cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+)
+
+3227 ià(
+rgi
+)
+
+3229 ià(
+	`loÿl_rou‹
+ (
+addr
+, 0xFFFFFFFF, 
+rgi
+->
+g©eway
+.addr,„gi))
+
+3230  
+TLA_LOCAL
+;
+
+3232  
+TLA_NONLOCAL
+;
+
+3234  
+TLA_NOT_IMPLEMENTED
+;
+
+3235 
+	}
+}
+
+	@route.h
+
+29 #iâdeà
+ROUTE_H
+
+
+30 
+	#ROUTE_H
+
+
+	)
+
+32 
+	~"basic.h
+"
+
+33 
+	~"tun.h
+"
+
+34 
+	~"misc.h
+"
+
+36 
+	#MAX_ROUTES_DEFAULT
+ 100
+
+	)
+
+38 #ifdeà
+WIN32
+
+
+42 
+	#ROUTE_METHOD_ADAPTIVE
+ 0
+
+	)
+
+43 
+	#ROUTE_METHOD_IPAPI
+ 1
+
+	)
+
+44 
+	#ROUTE_METHOD_EXE
+ 2
+
+	)
+
+45 
+	#ROUTE_METHOD_MASK
+ 3
+
+	)
+
+51 
+	#ROUTE_DELETE_FIRST
+ (1<<2)
+
+	)
+
+52 
+	#ROUTE_REF_GW
+ (1<<3)
+
+	)
+
+54 
+	srou‹_by·ss
+
+
+56 
+	#N_ROUTE_BYPASS
+ 8
+
+	)
+
+57 
+	mn_by·ss
+;
+
+58 
+š_addr_t
+ 
+	mby·ss
+[
+N_ROUTE_BYPASS
+];
+
+61 
+	srou‹_¥ecŸl_addr
+
+
+64 
+	#RTSA_REMOTE_ENDPOINT
+ (1<<0)
+
+	)
+
+65 
+	#RTSA_REMOTE_HOST
+ (1<<1)
+
+	)
+
+66 
+	#RTSA_DEFAULT_METRIC
+ (1<<2)
+
+	)
+
+67 
+	mæags
+;
+
+69 
+š_addr_t
+ 
+	m»mÙe_’dpošt
+;
+
+70 
+š_addr_t
+ 
+	m»mÙe_ho¡
+;
+
+71 
+	m»mÙe_ho¡_loÿl
+;
+
+72 
+rou‹_by·ss
+ 
+	mby·ss
+;
+
+73 
+	mdeçuÉ_m‘ric
+;
+
+76 
+	srou‹_ÝtiÚ
+ {
+
+77 cÚ¡ *
+	mÃtwÜk
+;
+
+78 cÚ¡ *
+	mÃtmask
+;
+
+79 cÚ¡ *
+	mg©eway
+;
+
+80 cÚ¡ *
+	mm‘ric
+;
+
+84 
+	#RG_ENABLE
+ (1<<0)
+
+	)
+
+85 
+	#RG_LOCAL
+ (1<<1)
+
+	)
+
+86 
+	#RG_DEF1
+ (1<<2)
+
+	)
+
+87 
+	#RG_BYPASS_DHCP
+ (1<<3)
+
+	)
+
+88 
+	#RG_BYPASS_DNS
+ (1<<4)
+
+	)
+
+89 
+	#RG_REROUTE_GW
+ (1<<5)
+
+	)
+
+90 
+	#RG_AUTO_LOCAL
+ (1<<6)
+
+	)
+
+91 
+	#RG_BLOCK_LOCAL
+ (1<<7)
+
+	)
+
+93 
+	srou‹_ÝtiÚ_li¡
+ {
+
+94 
+	mæags
+;
+
+95 
+	mÿ·c™y
+;
+
+96 
+	mn
+;
+
+97 
+rou‹_ÝtiÚ
+ 
+	mrou‹s
+[
+EMPTY_ARRAY_SIZE
+];
+
+100 
+	srou‹_�v6_ÝtiÚ
+ {
+
+101 cÚ¡ *
+	m´efix
+;
+
+102 cÚ¡ *
+	mg©eway
+;
+
+103 cÚ¡ *
+	mm‘ric
+;
+
+106 
+	srou‹_�v6_ÝtiÚ_li¡
+ {
+
+107 
+	mæags
+;
+
+108 
+	mÿ·c™y
+;
+
+109 
+	mn
+;
+
+110 
+rou‹_�v6_ÝtiÚ
+ 
+	mrou‹s_�v6
+[
+EMPTY_ARRAY_SIZE
+];
+
+113 
+	srou‹_�v4
+ {
+
+114 
+	#RT_DEFINED
+ (1<<0)
+
+	)
+
+115 
+	#RT_ADDED
+ (1<<1)
+
+	)
+
+116 
+	#RT_METRIC_DEFINED
+ (1<<2)
+
+	)
+
+117 
+	mæags
+;
+
+118 cÚ¡ 
+rou‹_ÝtiÚ
+ *
+	mÝtiÚ
+;
+
+119 
+š_addr_t
+ 
+	mÃtwÜk
+;
+
+120 
+š_addr_t
+ 
+	mÃtmask
+;
+
+121 
+š_addr_t
+ 
+	mg©eway
+;
+
+122 
+	mm‘ric
+;
+
+125 
+	srou‹_�v6
+ {
+
+126 
+boÞ
+ 
+	mdefšed
+;
+
+127 
+š6_addr
+ 
+	mÃtwÜk
+;
+
+128 
+	mÃtb™s
+;
+
+129 
+š6_addr
+ 
+	mg©eway
+;
+
+130 
+boÞ
+ 
+	mm‘ric_defšed
+;
+
+131 
+	mm‘ric
+;
+
+134 
+	srou‹_�v6_li¡
+ {
+
+135 
+boÞ
+ 
+	mrou‹s_added
+;
+
+136 
+	mæags
+;
+
+137 
+	mdeçuÉ_m‘ric
+;
+
+138 
+boÞ
+ 
+	mdeçuÉ_m‘ric_defšed
+;
+
+139 
+š6_addr
+ 
+	m»mÙe_’dpošt_�v6
+;
+
+140 
+boÞ
+ 
+	m»mÙe_’dpošt_defšed
+;
+
+141 
+boÞ
+ 
+	mdid_»dœeù_deçuÉ_g©eway
+;
+
+142 
+boÞ
+ 
+	mdid_loÿl
+;
+
+143 
+	mÿ·c™y
+;
+
+144 
+	mn
+;
+
+145 
+rou‹_�v6
+ 
+	mrou‹s_�v6
+[
+EMPTY_ARRAY_SIZE
+];
+
+149 
+	srou‹_g©eway_add»ss
+ {
+
+150 
+š_addr_t
+ 
+	maddr
+;
+
+151 
+š_addr_t
+ 
+	mÃtmask
+;
+
+154 
+	srou‹_g©eway_šfo
+ {
+
+155 
+	#RGI_ADDR_DEFINED
+ (1<<0è
+
+	)
+
+156 
+	#RGI_NETMASK_DEFINED
+ (1<<1è
+
+	)
+
+157 
+	#RGI_HWADDR_DEFINED
+ (1<<2è
+
+	)
+
+158 
+	#RGI_IFACE_DEFINED
+ (1<<3è
+
+	)
+
+159 
+	#RGI_OVERFLOW
+ (1<<4è
+
+	)
+
+160 
+	#RGI_ON_LINK
+ (1<<5)
+
+	)
+
+161 
+	mæags
+;
+
+164 #ifdeà
+WIN32
+
+
+165 
+DWORD
+ 
+	mad­‹r_šdex
+;
+
+167 
+	miçû
+[16];
+
+171 
+ušt8_t
+ 
+	mhwaddr
+[6];
+
+174 
+rou‹_g©eway_add»ss
+ 
+	mg©eway
+;
+
+177 
+	#RGI_N_ADDRESSES
+ 8
+
+	)
+
+178 
+	mn_addrs
+;
+
+179 
+rou‹_g©eway_add»ss
+ 
+	maddrs
+[
+RGI_N_ADDRESSES
+];
+
+182 
+	srou‹_li¡
+ {
+
+183 
+	#RL_DID_REDIRECT_DEFAULT_GATEWAY
+ (1<<0)
+
+	)
+
+184 
+	#RL_DID_LOCAL
+ (1<<1)
+
+	)
+
+185 
+	#RL_ROUTES_ADDED
+ (1<<2)
+
+	)
+
+186 
+	miæags
+;
+
+188 
+rou‹_¥ecŸl_addr
+ 
+	m¥ec
+;
+
+189 
+rou‹_g©eway_šfo
+ 
+	mrgi
+;
+
+190 
+	mæags
+;
+
+191 
+	mÿ·c™y
+;
+
+192 
+	mn
+;
+
+193 
+rou‹_�v4
+ 
+	mrou‹s
+[
+EMPTY_ARRAY_SIZE
+];
+
+196 #ià
+P2MP
+
+
+198 
+	sœou‹
+ {
+
+199 
+š_addr_t
+ 
+	mÃtwÜk
+;
+
+200 
+	mÃtb™s
+;
+
+201 
+œou‹
+ *
+	mÃxt
+;
+
+204 
+	sœou‹_�v6
+ {
+
+205 
+š6_addr
+ 
+	mÃtwÜk
+;
+
+206 
+	mÃtb™s
+;
+
+207 
+œou‹_�v6
+ *
+	mÃxt
+;
+
+211 
+rou‹_ÝtiÚ_li¡
+ *
+Ãw_rou‹_ÝtiÚ_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+);
+
+212 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+Ãw_rou‹_�v6_ÝtiÚ_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+);
+
+214 
+rou‹_ÝtiÚ_li¡
+ *
+þÚe_rou‹_ÝtiÚ_li¡
+ (cÚ¡ rou‹_ÝtiÚ_li¡ *
+¤c
+, 
+gc_¬’a
+ *
+a
+);
+
+215 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+þÚe_rou‹_�v6_ÝtiÚ_li¡
+ (cÚ¡ rou‹_�v6_ÝtiÚ_li¡ *
+¤c
+, 
+gc_¬’a
+ *
+a
+);
+
+216 
+cÝy_rou‹_ÝtiÚ_li¡
+ (
+rou‹_ÝtiÚ_li¡
+ *
+de¡
+, cÚ¡ rou‹_ÝtiÚ_li¡ *
+¤c
+);
+
+217 
+cÝy_rou‹_�v6_ÝtiÚ_li¡
+ (
+rou‹_�v6_ÝtiÚ_li¡
+ *
+de¡
+,
+
+218 cÚ¡ 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+¤c
+);
+
+220 
+rou‹_li¡
+ *
+Ãw_rou‹_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+);
+
+221 
+rou‹_�v6_li¡
+ *
+Ãw_rou‹_�v6_li¡
+ (cÚ¡ 
+max_rou‹s
+, 
+gc_¬’a
+ *
+a
+);
+
+223 
+add_rou‹_�v6
+ (
+rou‹_�v6
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+224 
+d–‘e_rou‹_�v6
+ (cÚ¡ 
+rou‹_�v6
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+æags
+, cÚ¡ 
+’v_£t
+ *
+es
+);
+
+226 
+add_rou‹
+ (
+rou‹_�v4
+ *
+r
+,
+
+227 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+228 
+æags
+,
+
+229 cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+,
+
+230 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+232 
+add_rou‹_to_ÝtiÚ_li¡
+ (
+rou‹_ÝtiÚ_li¡
+ *
+l
+,
+
+233 cÚ¡ *
+ÃtwÜk
+,
+
+234 cÚ¡ *
+Ãtmask
+,
+
+235 cÚ¡ *
+g©eway
+,
+
+236 cÚ¡ *
+m‘ric
+);
+
+238 
+add_rou‹_�v6_to_ÝtiÚ_li¡
+ (
+rou‹_�v6_ÝtiÚ_li¡
+ *
+l
+,
+
+239 cÚ¡ *
+´efix
+,
+
+240 cÚ¡ *
+g©eway
+,
+
+241 cÚ¡ *
+m‘ric
+);
+
+243 
+boÞ
+ 
+š™_rou‹_li¡
+ (
+rou‹_li¡
+ *
+¾
+,
+
+244 cÚ¡ 
+rou‹_ÝtiÚ_li¡
+ *
+Ýt
+,
+
+245 cÚ¡ *
+»mÙe_’dpošt
+,
+
+246 
+deçuÉ_m‘ric
+,
+
+247 
+š_addr_t
+ 
+»mÙe_ho¡
+,
+
+248 
+’v_£t
+ *
+es
+);
+
+250 
+boÞ
+ 
+š™_rou‹_�v6_li¡
+ (
+rou‹_�v6_li¡
+ *
+¾6
+,
+
+251 cÚ¡ 
+rou‹_�v6_ÝtiÚ_li¡
+ *
+Ýt6
+,
+
+252 cÚ¡ *
+»mÙe_’dpošt
+,
+
+253 
+deçuÉ_m‘ric
+,
+
+254 
+’v_£t
+ *
+es
+);
+
+256 
+rou‹_li¡_add_v²_g©eway
+ (
+rou‹_li¡
+ *
+¾
+,
+
+257 
+’v_£t
+ *
+es
+,
+
+258 cÚ¡ 
+š_addr_t
+ 
+addr
+);
+
+260 
+add_rou‹s
+ (
+rou‹_li¡
+ *
+¾
+,
+
+261 
+rou‹_�v6_li¡
+ *
+¾6
+,
+
+262 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+263 
+æags
+,
+
+264 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+266 
+d–‘e_rou‹s
+ (
+rou‹_li¡
+ *
+¾
+,
+
+267 
+rou‹_�v6_li¡
+ *
+¾6
+,
+
+268 cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+269 
+æags
+,
+
+270 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+272 
+£‹nv_rou‹s
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_li¡
+ *
+¾
+);
+
+273 
+£‹nv_rou‹s_�v6
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+rou‹_�v6_li¡
+ *
+¾6
+);
+
+277 
+boÞ
+ 
+is_¥ecŸl_addr
+ (cÚ¡ *
+addr_¡r
+);
+
+279 
+g‘_deçuÉ_g©eway
+ (
+rou‹_g©eway_šfo
+ *
+rgi
+);
+
+280 
+´št_deçuÉ_g©eway
+(cÚ¡ 
+msgËv–
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+);
+
+288 
+	#TLA_NOT_IMPLEMENTED
+ 0
+
+	)
+
+289 
+	#TLA_NONLOCAL
+ 1
+
+	)
+
+290 
+	#TLA_LOCAL
+ 2
+
+	)
+
+291 
+‹¡_loÿl_addr
+ (cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+rou‹_g©eway_šfo
+ *
+rgi
+);
+
+293 #iâdeà
+ENABLE_SMALL
+
+
+294 
+´št_rou‹_ÝtiÚs
+ (cÚ¡ 
+rou‹_ÝtiÚ_li¡
+ *
+rÞ
+,
+
+295 
+Ëv–
+);
+
+298 
+´št_rou‹s
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+, 
+Ëv–
+);
+
+300 #ifdeà
+WIN32
+
+
+302 
+show_rou‹s
+ (
+msgËv
+);
+
+303 
+boÞ
+ 
+‹¡_rou‹s
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+, cÚ¡ 
+tuÁ­
+ *
+‰
+);
+
+304 
+boÞ
+ 
+add_rou‹_�­i
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+DWORD
+ 
+ad­‹r_šdex
+);
+
+305 
+boÞ
+ 
+d–_rou‹_�­i
+ (cÚ¡ 
+rou‹_�v4
+ *
+r
+, cÚ¡ 
+tuÁ­
+ *
+‰
+);
+
+308 
+šlše
+ 
+boÞ
+ 
+	$‹¡_rou‹s
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+, cÚ¡ 
+tuÁ­
+ *
+‰
+è{  
+Œue
+; 
+	}
+}
+
+311 
+boÞ
+ 
+Ãtmask_to_Ãtb™s
+ (cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+, cÚ¡ in_addr_ˆ
+Ãtmask
+, *
+Ãtb™s
+);
+
+313 
+šlše
+ 
+š_addr_t
+
+
+314 
+	$Ãtb™s_to_Ãtmask
+ (cÚ¡ 
+Ãtb™s
+)
+
+316 cÚ¡ 
+add¾’
+ =  (
+š_addr_t
+) * 8;
+
+317 
+š_addr_t
+ 
+mask
+ = 0;
+
+318 ià(
+Ãtb™s
+ > 0 &&‚‘b™ <ð
+add¾’
+)
+
+319 
+mask
+ = 
+IPV4_NETMASK_HOST
+ << (
+add¾’
+-
+Ãtb™s
+);
+
+320  
+mask
+;
+
+321 
+	}
+}
+
+323 
+šlše
+ 
+boÞ
+
+
+324 
+	$rou‹_li¡_v²_g©eway_Ãeded
+ (cÚ¡ 
+rou‹_li¡
+ *
+¾
+)
+
+326 ià(!
+¾
+)
+
+327  
+çl£
+;
+
+329  !(
+¾
+->
+¥ec
+.
+æags
+ & 
+RTSA_REMOTE_ENDPOINT
+);
+
+330 
+	}
+}
+
+332 
+šlše
+ 
+
+333 
+	$rou‹_did_»dœeù_deçuÉ_g©eway
+(cÚ¡ 
+rou‹_li¡
+ *
+¾
+)
+
+335  
+¾
+ && 
+	`BOOL_CAST
+Ôl->
+iæags
+ & 
+RL_DID_REDIRECT_DEFAULT_GATEWAY
+);
+
+336 
+	}
+}
+
+	@schedule.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 #ià
+P2MP_SERVER
+
+
+35 
+	~"bufãr.h
+"
+
+36 
+	~"misc.h
+"
+
+37 
+	~"üy±o.h
+"
+
+38 
+	~"scheduË.h
+"
+
+40 
+	~"memdbg.h
+"
+
+42 #ifdeà
+SCHEDULE_TEST
+
+
+44 
+	s¡©us
+
+
+46 
+	m¤u
+;
+
+47 
+	mšs
+;
+
+48 
+	mcÞl
+;
+
+49 
+	ml¡•s
+;
+
+52 
+¡©us
+ 
+	gz
+;
+
+56 #ifdeà
+ENABLE_DEBUG
+
+
+58 
+	$scheduË_’Œy_debug_šfo
+ (cÚ¡ *
+ÿÎ”
+, cÚ¡ 
+scheduË_’Œy
+ *
+e
+)
+
+60 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+61 ià(
+e
+)
+
+63 
+	`dmsg
+ (
+D_SCHEDULER
+, "SCHEDULE: %s wakeup=[%s]…ri=%u",
+
+64 
+ÿÎ”
+,
+
+65 
+	`tv_¡ršg_abs
+ (&
+e
+->
+tv
+, &
+gc
+),
+
+66 
+e
+->
+´i
+);
+
+70 
+	`dmsg
+ (
+D_SCHEDULER
+, "SCHEDULE: %s NULL",
+
+71 
+ÿÎ”
+);
+
+73 
+	`gc_ä“
+ (&
+gc
+);
+
+74 
+	}
+}
+
+77 
+šlše
+ 
+
+78 
+	$scheduË_£t_´i
+ (
+scheduË_’Œy
+ *
+e
+)
+
+80 
+e
+->
+´i
+ = 
+	`¿ndom
+ ();
+
+81 ià(
+e
+->
+´i
+ < 1)
+
+82 
+e
+->
+´i
+ = 1;
+
+83 
+	}
+}
+
+90 
+šlše
+ 
+
+91 
+	$scheduË_’Œy_com·»
+ (cÚ¡ 
+scheduË_’Œy
+ *
+e1
+,
+
+92 cÚ¡ 
+scheduË_’Œy
+ *
+e2
+)
+
+94 ià(
+e1
+->
+tv
+.
+tv_£c
+ < 
+e2
+->tv.tv_sec)
+
+96 ià(
+e1
+->
+tv
+.
+tv_£c
+ > 
+e2
+->tv.tv_sec)
+
+100 ià(
+e1
+->
+tv
+.
+tv_u£c
+ < 
+e2
+->tv.tv_usec)
+
+102 ià(
+e1
+->
+tv
+.
+tv_u£c
+ > 
+e2
+->tv.tv_usec)
+
+106 ià(
+e1
+->
+´i
+ < 
+e2
+->pri)
+
+108 ià(
+e1
+->
+´i
+ > 
+e2
+->pri)
+
+114 
+	}
+}
+
+119 
+šlše
+ 
+
+120 
+	$scheduË_d‘ach_·»Á
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+122 ià(
+e
+)
+
+124 ià(
+e
+->
+·»Á
+)
+
+126 ià(
+e
+->
+·»Á
+->
+É
+ ==ƒ)
+
+127 
+e
+->
+·»Á
+->
+É
+ = 
+NULL
+;
+
+128 ià(
+e
+->
+·»Á
+->
+gt
+ ==ƒ)
+
+129 
+e
+->
+·»Á
+->
+gt
+ = 
+NULL
+;
+
+133 
+	`ASSERT
+ (0);
+
+135 
+e
+->
+·»Á
+ = 
+NULL
+;
+
+139 ià(
+s
+->
+roÙ
+ =ð
+e
+)
+
+140 
+s
+->
+roÙ
+ = 
+NULL
+;
+
+143 
+	}
+}
+
+157 
+	$scheduË_rÙ©e_up
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+159 ià(
+e
+ &&ƒ->
+·»Á
+)
+
+161 
+scheduË_’Œy
+ *
+É
+ = 
+e
+->lt;
+
+162 
+scheduË_’Œy
+ *
+gt
+ = 
+e
+->gt;
+
+163 
+scheduË_’Œy
+ *
+p
+ = 
+e
+->
+·»Á
+;
+
+164 
+scheduË_’Œy
+ *
+gp
+ = 
+p
+->
+·»Á
+;
+
+166 ià(
+gp
+)
+
+168 ià(
+gp
+->
+gt
+ =ð
+p
+)
+
+169 
+gp
+->
+gt
+ = 
+e
+;
+
+170 ià(
+gp
+->
+É
+ =ð
+p
+)
+
+171 
+gp
+->
+É
+ = 
+e
+;
+
+174 
+	`ASSERT
+ (0);
+
+179 
+s
+->
+roÙ
+ = 
+e
+;
+
+183 
+e
+->
+·»Á
+ = 
+gp
+;
+
+186 
+p
+->
+·»Á
+ = 
+e
+;
+
+190 ià(
+p
+->
+gt
+ =ð
+e
+)
+
+192 
+e
+->
+É
+ = 
+p
+;
+
+193 
+p
+->
+gt
+ = 
+É
+;
+
+194 ià(
+É
+)
+
+195 
+É
+->
+·»Á
+ = 
+p
+;
+
+197 ià(
+p
+->
+É
+ =ð
+e
+)
+
+199 
+e
+->
+gt
+ = 
+p
+;
+
+200 
+p
+->
+É
+ = 
+gt
+;
+
+201 ià(
+gt
+)
+
+202 
+gt
+->
+·»Á
+ = 
+p
+;
+
+207 
+	`ASSERT
+ (0);
+
+210 #ifdeà
+SCHEDULE_TEST
+
+
+211 ++
+z
+.
+¤u
+;
+
+214 
+	}
+}
+
+223 
+	$scheduË_»move_node
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+225 
+e
+->
+É
+ ||ƒ->
+gt
+)
+
+227 ià(
+e
+->
+É
+)
+
+229 ià(
+e
+->
+gt
+)
+
+231 ià(
+e
+->
+É
+->
+´i
+ <ƒ->
+gt
+->pri)
+
+232 
+	`scheduË_rÙ©e_up
+ (
+s
+, 
+e
+->
+É
+);
+
+234 
+	`scheduË_rÙ©e_up
+ (
+s
+, 
+e
+->
+gt
+);
+
+237 
+	`scheduË_rÙ©e_up
+ (
+s
+, 
+e
+->
+É
+);
+
+239 ià(
+e
+->
+gt
+)
+
+240 
+	`scheduË_rÙ©e_up
+ (
+s
+, 
+e
+->
+gt
+);
+
+243 
+	`scheduË_d‘ach_·»Á
+ (
+s
+, 
+e
+);
+
+244 
+e
+->
+´i
+ = 0;
+
+245 
+	}
+}
+
+252 
+	$scheduË_š£¹
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+254 
+scheduË_’Œy
+ *
+c
+ = 
+s
+->
+roÙ
+;
+
+255 
+Œue
+)
+
+257 cÚ¡ 
+comp
+ = 
+	`scheduË_’Œy_com·»
+ (
+e
+, 
+c
+);
+
+259 #ifdeà
+SCHEDULE_TEST
+
+
+260 ++
+z
+.
+šs
+;
+
+263 ià(
+comp
+ == -1)
+
+265 ià(
+c
+->
+É
+)
+
+267 
+c
+ = c->
+É
+;
+
+272 
+c
+->
+É
+ = 
+e
+;
+
+273 
+e
+->
+·»Á
+ = 
+c
+;
+
+277 ià(
+comp
+ == 1)
+
+279 ià(
+c
+->
+gt
+)
+
+281 
+c
+ = c->
+gt
+;
+
+286 
+c
+->
+gt
+ = 
+e
+;
+
+287 
+e
+->
+·»Á
+ = 
+c
+;
+
+295 #ifdeà
+SCHEDULE_TEST
+
+
+296 ++
+z
+.
+cÞl
+;
+
+298 
+	`scheduË_£t_´i
+ (
+e
+);
+
+300 
+c
+ = 
+s
+->
+roÙ
+;
+
+304 
+	}
+}
+
+311 
+	$scheduË_add_modify
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+313 #ifdeà
+ENABLE_DEBUG
+
+
+314 ià(
+	`check_debug_Ëv–
+ (
+D_SCHEDULER
+))
+
+315 
+	`scheduË_’Œy_debug_šfo
+ ("scheduË_add_modify", 
+e
+);
+
+319 ià(
+	`IN_TREE
+ (
+e
+))
+
+320 
+	`scheduË_»move_node
+ (
+s
+, 
+e
+);
+
+323 
+	`scheduË_£t_´i
+ (
+e
+);
+
+325 ià(
+s
+->
+roÙ
+)
+
+326 
+	`scheduË_š£¹
+ (
+s
+, 
+e
+);
+
+328 
+s
+->
+roÙ
+ = 
+e
+;
+
+333 
+e
+->
+·»Á
+ &&ƒ->·»Á->
+´i
+ >ƒ->pri)
+
+334 
+	`scheduË_rÙ©e_up
+ (
+s
+, 
+e
+);
+
+335 
+	}
+}
+
+340 
+scheduË_’Œy
+ *
+
+341 
+	$scheduË_fšd_Ëa¡
+ (
+scheduË_’Œy
+ *
+e
+)
+
+343 ià(
+e
+)
+
+345 
+e
+->
+É
+)
+
+347 #ifdeà
+SCHEDULE_TEST
+
+
+348 ++
+z
+.
+l¡•s
+;
+
+350 
+e
+ =ƒ->
+É
+;
+
+354 #ifdeà
+ENABLE_DEBUG
+
+
+355 ià(
+	`check_debug_Ëv–
+ (
+D_SCHEDULER
+))
+
+356 
+	`scheduË_’Œy_debug_šfo
+ ("scheduË_fšd_Ëa¡", 
+e
+);
+
+359  
+e
+;
+
+360 
+	}
+}
+
+366 
+scheduË
+ *
+
+367 
+	$scheduË_š™
+ ()
+
+369 
+scheduË
+ *
+s
+;
+
+371 
+	`ALLOC_OBJ_CLEAR
+ (
+s
+, 
+scheduË
+);
+
+372  
+s
+;
+
+373 
+	}
+}
+
+376 
+	$scheduË_ä“
+ (
+scheduË
+ *
+s
+)
+
+378 
+	`ä“
+ (
+s
+);
+
+379 
+	}
+}
+
+382 
+	$scheduË_»move_’Œy
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+)
+
+384 
+s
+->
+—¾›¡_wakeup
+ = 
+NULL
+;
+
+385 
+	`scheduË_»move_node
+ (
+s
+, 
+e
+);
+
+386 
+	}
+}
+
+392 #ifdeà
+SCHEDULE_TEST
+
+
+394 
+šlše
+ 
+scheduË_’Œy
+ *
+
+395 
+	$scheduË_fšd_—¾›¡_wakeup
+ (
+scheduË
+ *
+s
+)
+
+397  
+	`scheduË_fšd_Ëa¡
+ (
+s
+->
+roÙ
+);
+
+398 
+	}
+}
+
+405 
+	$scheduË_debug_’Œy
+ (cÚ¡ 
+scheduË_’Œy
+* 
+e
+,
+
+406 
+d•th
+,
+
+407 *
+couÁ
+,
+
+408 
+timev®
+ *
+Ëa¡
+,
+
+409 cÚ¡ 
+timev®
+ *
+mš
+,
+
+410 cÚ¡ 
+timev®
+ *
+max
+)
+
+412 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+413 
+maxd•th
+ = 
+d•th
+;
+
+414 ià(
+e
+)
+
+416 
+d
+;
+
+418 
+	`ASSERT
+ (
+e
+ !ðe->
+É
+);
+
+419 
+	`ASSERT
+ (
+e
+ !ðe->
+gt
+);
+
+420 
+	`ASSERT
+ (
+e
+ !ðe->
+·»Á
+);
+
+421 
+	`ASSERT
+ (!
+e
+->
+·»Á
+ ||ƒ->·»Á !ðe->
+É
+);
+
+422 
+	`ASSERT
+ (!
+e
+->
+·»Á
+ ||ƒ->·»Á !ðe->
+gt
+);
+
+423 
+	`ASSERT
+ (!
+e
+->
+É
+ ||ƒ->É !ðe->
+gt
+);
+
+425 ià(
+e
+->
+É
+)
+
+427 
+	`ASSERT
+ (
+e
+->
+É
+->
+·»Á
+ ==ƒ);
+
+428 
+	`ASSERT
+ (
+	`scheduË_’Œy_com·»
+ (
+e
+->
+É
+,ƒ) == -1);
+
+429 
+	`ASSERT
+ (
+e
+->
+É
+->
+´i
+ >=ƒ->pri);
+
+432 ià(
+e
+->
+gt
+)
+
+434 
+	`ASSERT
+ (
+e
+->
+gt
+->
+·»Á
+ ==ƒ);
+
+435 
+	`ASSERT
+ (
+	`scheduË_’Œy_com·»
+ (
+e
+->
+gt
+,ƒ));
+
+436 
+	`ASSERT
+ (
+e
+->
+gt
+->
+´i
+ >=ƒ->pri);
+
+439 
+	`ASSERT
+ (
+	`tv_Ë
+ (
+mš
+, &
+e
+->
+tv
+));
+
+440 
+	`ASSERT
+ (
+	`tv_Ë
+ (&
+e
+->
+tv
+, 
+max
+));
+
+442 ià(
+couÁ
+)
+
+443 ++(*
+couÁ
+);
+
+445 ià(
+Ëa¡
+ && 
+	`tv_É
+ (&
+e
+->
+tv
+,†east))
+
+446 *
+Ëa¡
+ = 
+e
+->
+tv
+;
+
+448 
+d
+ = 
+	`scheduË_debug_’Œy
+ (
+e
+->
+É
+, 
+d•th
++1, 
+couÁ
+, 
+Ëa¡
+, 
+mš
+, &e->
+tv
+);
+
+449 ià(
+d
+ > 
+maxd•th
+)
+
+450 
+maxd•th
+ = 
+d
+;
+
+452 
+d
+ = 
+	`scheduË_debug_’Œy
+ (
+e
+->
+gt
+, 
+d•th
++1, 
+couÁ
+, 
+Ëa¡
+, &e->
+tv
+, 
+max
+);
+
+453 ià(
+d
+ > 
+maxd•th
+)
+
+454 
+maxd•th
+ = 
+d
+;
+
+456 
+	`gc_ä“
+ (&
+gc
+);
+
+457  
+maxd•th
+;
+
+458 
+	}
+}
+
+461 
+	$scheduË_debug
+ (
+scheduË
+ *
+s
+, *
+couÁ
+, 
+timev®
+ *
+Ëa¡
+)
+
+463 
+timev®
+ 
+mš
+;
+
+464 
+timev®
+ 
+max
+;
+
+466 
+mš
+.
+tv_£c
+ = 0;
+
+467 
+mš
+.
+tv_u£c
+ = 0;
+
+468 
+max
+.
+tv_£c
+ = 0x7FFFFFFF;
+
+469 
+max
+.
+tv_u£c
+ = 0x7FFFFFFF;
+
+471 ià(
+s
+->
+roÙ
+)
+
+473 
+	`ASSERT
+ (
+s
+->
+roÙ
+->
+·»Á
+ =ð
+NULL
+);
+
+475  
+	`scheduË_debug_’Œy
+ (
+s
+->
+roÙ
+, 0, 
+couÁ
+, 
+Ëa¡
+, &
+mš
+, &
+max
+);
+
+476 
+	}
+}
+
+481 
+	$tv_¿ndomize
+ (
+timev®
+ *
+tv
+)
+
+483 
+tv
+->
+tv_£c
+ +ð
+	`¿ndom
+() % 100;
+
+484 
+tv
+->
+tv_u£c
+ = 
+	`¿ndom
+ () % 100;
+
+485 
+	}
+}
+
+490 
+	$tv_¿ndomize
+ (
+timev®
+ *
+tv
+)
+
+492 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+493 
+choiû
+ = 
+	`g‘_¿ndom
+ ();
+
+494 ià((
+choiû
+ & 0xFF) == 0)
+
+495 
+tv
+->
+tv_u£c
+ +ð((
+choiû
+ >> 8) & 0xFF);
+
+497 
+	`´ng_by‹s
+ ((
+ušt8_t
+ *)
+tv
+,  (
+timev®
+));
+
+498 
+	`gc_ä“
+ (&
+gc
+);
+
+499 
+	}
+}
+
+504 
+	$scheduË_v”ify
+ (
+scheduË
+ *
+s
+)
+
+506 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+507 
+timev®
+ 
+Ëa¡
+;
+
+508 
+couÁ
+;
+
+509 
+maxËv
+;
+
+510 
+scheduË_’Œy
+* 
+e
+;
+
+511 cÚ¡ 
+¡©us
+ 
+zz
+ = 
+z
+;
+
+513 
+Ëa¡
+.
+tv_£c
+ =†—¡.
+tv_u£c
+ = 0x7FFFFFFF;
+
+515 
+couÁ
+ = 0;
+
+517 
+maxËv
+ = 
+	`scheduË_debug
+ (
+s
+, &
+couÁ
+, &
+Ëa¡
+);
+
+519 
+e
+ = 
+	`scheduË_fšd_—¾›¡_wakeup
+ (
+s
+);
+
+521 ià(
+e
+)
+
+523 
+	`´štf
+ ("Verification Phase count=%d maxlev=%d sru=%d ins=%d coll=%d†s=%d†=%s",
+
+524 
+couÁ
+,
+
+525 
+maxËv
+,
+
+526 
+zz
+.
+¤u
+,
+
+527 
+zz
+.
+šs
+,
+
+528 
+zz
+.
+cÞl
+,
+
+529 
+zz
+.
+l¡•s
+,
+
+530 
+	`tv_¡ršg
+ (&
+e
+->
+tv
+, &
+gc
+));
+
+532 ià(!
+	`tv_eq
+ (&
+Ëa¡
+, &
+e
+->
+tv
+))
+
+533 
+	`´štf
+ (" [COMPUTED DIFFERENT MIN VALUES!]");
+
+535 
+	`´štf
+ ("\n");
+
+538 
+	`CLEAR
+ (
+z
+);
+
+539 
+	`gc_ä“
+ (&
+gc
+);
+
+540 
+	}
+}
+
+543 
+	$scheduË_¿ndomize_¬¿y
+ (
+scheduË_’Œy
+ **
+¬¿y
+, 
+size
+)
+
+545 
+i
+;
+
+546 
+i
+ = 0; i < 
+size
+; ++i)
+
+548 cÚ¡ 
+¤c
+ = 
+	`g‘_¿ndom
+ (è% 
+size
+;
+
+549 
+scheduË_’Œy
+ *
+tmp
+ = 
+¬¿y
+ [
+i
+];
+
+550 ià(
+i
+ !ð
+¤c
+)
+
+552 
+¬¿y
+ [
+i
+] =‡¼ay [
+¤c
+];
+
+553 
+¬¿y
+ [
+¤c
+] = 
+tmp
+;
+
+556 
+	}
+}
+
+559 
+	$scheduË_´št_wÜk
+ (
+scheduË_’Œy
+ *
+e
+, 
+šd’t
+)
+
+561 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+562 
+i
+;
+
+563 
+i
+ = 0; i < 
+šd’t
+; ++i)
+
+564 
+	`´štf
+ (" ");
+
+565 ià(
+e
+)
+
+567 
+	`´štf
+ ("% [%u]ƒ=" 
+±r_fÜm©
+ ",…="…tr_format "†t="…tr_format " gt="…tr_format "\n",
+
+568 
+	`tv_¡ršg
+ (&
+e
+->
+tv
+, &
+gc
+),
+
+569 
+e
+->
+´i
+,
+
+570 (
+±r_ty³
+)
+e
+,
+
+571 (
+±r_ty³
+)
+e
+->
+·»Á
+,
+
+572 (
+±r_ty³
+)
+e
+->
+É
+,
+
+573 (
+±r_ty³
+)
+e
+->
+gt
+);
+
+574 
+	`scheduË_´št_wÜk
+ (
+e
+->
+É
+, 
+šd’t
++1);
+
+575 
+	`scheduË_´št_wÜk
+ (
+e
+->
+gt
+, 
+šd’t
++1);
+
+578 
+	`´štf
+ ("NULL\n");
+
+579 
+	`gc_ä“
+ (&
+gc
+);
+
+580 
+	}
+}
+
+583 
+	$scheduË_´št
+ (
+scheduË
+ *
+s
+)
+
+585 
+	`´štf
+ ("*************************\n");
+
+586 
+	`scheduË_´št_wÜk
+ (
+s
+->
+roÙ
+, 0);
+
+587 
+	}
+}
+
+590 
+	$scheduË_‹¡
+ ()
+
+592 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+593 
+n
+ = 1000;
+
+594 
+n_mod
+ = 25;
+
+596 
+i
+, 
+j
+;
+
+597 
+scheduË_’Œy
+ **
+¬¿y
+;
+
+598 
+scheduË
+ *
+s
+ = 
+	`scheduË_š™
+ ();
+
+599 
+scheduË_’Œy
+* 
+e
+;
+
+601 
+	`CLEAR
+ (
+z
+);
+
+602 
+	`ALLOC_ARRAY
+ (
+¬¿y
+, 
+scheduË_’Œy
+ *, 
+n
+);
+
+604 
+	`´štf
+ ("Creation/Insertion Phase\n");
+
+606 
+i
+ = 0; i < 
+n
+; ++i)
+
+608 
+	`ALLOC_OBJ_CLEAR
+ (
+¬¿y
+[
+i
+], 
+scheduË_’Œy
+);
+
+609 
+	`tv_¿ndomize
+ (&
+¬¿y
+[
+i
+]->
+tv
+);
+
+612 
+	`scheduË_add_modify
+ (
+s
+, 
+¬¿y
+[
+i
+]);
+
+615 
+	`scheduË_¿ndomize_¬¿y
+ (
+¬¿y
+, 
+n
+);
+
+618 
+	`scheduË_v”ify
+ (
+s
+);
+
+620 
+j
+ = 1; j <ð
+n_mod
+; ++j)
+
+622 
+	`´štf
+ ("ModifiÿtiÚ Pha£ Pas %d\n", 
+j
+);
+
+624 
+i
+ = 0; i < 
+n
+; ++i)
+
+626 
+e
+ = 
+	`scheduË_fšd_—¾›¡_wakeup
+ (
+s
+);
+
+628 
+	`tv_¿ndomize
+ (&
+e
+->
+tv
+);
+
+630 
+	`scheduË_add_modify
+ (
+s
+, 
+e
+);
+
+634 
+	`scheduË_v”ify
+ (
+s
+);
+
+640 (
+e
+ = 
+	`scheduË_fšd_—¾›¡_wakeup
+ (
+s
+)))
+
+642 
+	`scheduË_»move_node
+ (
+s
+, 
+e
+);
+
+645 
+	`scheduË_v”ify
+ (
+s
+);
+
+647 
+	`´štf
+ ("S->ROOT i %s\n", 
+s
+->
+roÙ
+ ? "NOT NULL" : "NULL");
+
+649 
+i
+ = 0; i < 
+n
+; ++i)
+
+651 
+	`ä“
+ (
+¬¿y
+[
+i
+]);
+
+653 
+	`ä“
+ (
+¬¿y
+);
+
+654 
+	`ä“
+ (
+s
+);
+
+655 
+	`gc_ä“
+ (&
+gc
+);
+
+656 
+	}
+}
+
+	@schedule.h
+
+25 #iâdeà
+SCHEDULE_H
+
+
+26 
+	#SCHEDULE_H
+
+
+	)
+
+39 #ià
+P2MP_SERVER
+
+
+44 
+	~"Ùime.h
+"
+
+45 
+	~"”rÜ.h
+"
+
+47 
+	sscheduË_’Œy
+
+
+49 
+timev®
+ 
+	mtv
+;
+
+50 
+	m´i
+;
+
+51 
+scheduË_’Œy
+ *
+	m·»Á
+;
+
+52 
+scheduË_’Œy
+ *
+	mÉ
+;
+
+53 
+scheduË_’Œy
+ *
+	mgt
+;
+
+56 
+	sscheduË
+
+
+58 
+scheduË_’Œy
+ *
+	m—¾›¡_wakeup
+;
+
+59 
+scheduË_’Œy
+ *
+	mroÙ
+;
+
+64 
+scheduË
+ *
+scheduË_š™
+ ();
+
+65 
+scheduË_ä“
+ (
+scheduË
+ *
+s
+);
+
+66 
+scheduË_»move_’Œy
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+);
+
+68 #ifdeà
+SCHEDULE_TEST
+
+
+69 
+scheduË_‹¡
+ ();
+
+75 
+	#IN_TREE
+(
+e
+è(Ó)->
+´i
+)
+
+	)
+
+77 
+scheduË_’Œy
+ *
+scheduË_fšd_Ëa¡
+ (scheduË_’Œy *
+e
+);
+
+78 
+scheduË_add_modify
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+);
+
+79 
+scheduË_»move_node
+ (
+scheduË
+ *
+s
+, 
+scheduË_’Œy
+ *
+e
+);
+
+95 
+šlše
+ 
+
+96 
+	$scheduË_add_’Œy
+ (
+scheduË
+ *
+s
+,
+
+97 
+scheduË_’Œy
+ *
+e
+,
+
+98 cÚ¡ 
+timev®
+ *
+tv
+,
+
+99 
+sigma
+)
+
+101 ià(!
+	`IN_TREE
+ (
+e
+è|| !
+sigma
+ || !
+	`tv_w™hš_sigma
+ (
+tv
+, &e->tv, sigma))
+
+103 
+e
+->
+tv
+ = *tv;
+
+104 
+	`scheduË_add_modify
+ (
+s
+, 
+e
+);
+
+105 
+s
+->
+—¾›¡_wakeup
+ = 
+NULL
+;
+
+107 
+	}
+}
+
+115 
+šlše
+ 
+scheduË_’Œy
+ *
+
+116 
+	$scheduË_g‘_—¾›¡_wakeup
+ (
+scheduË
+ *
+s
+,
+
+117 
+timev®
+ *
+wakeup
+)
+
+119 
+scheduË_’Œy
+ *
+»t
+;
+
+122 ià(!
+s
+->
+—¾›¡_wakeup
+)
+
+123 
+s
+->
+—¾›¡_wakeup
+ = 
+	`scheduË_fšd_Ëa¡
+ (s->
+roÙ
+);
+
+124 
+»t
+ = 
+s
+->
+—¾›¡_wakeup
+;
+
+125 ià(
+»t
+)
+
+126 *
+wakeup
+ = 
+»t
+->
+tv
+;
+
+128  
+»t
+;
+
+129 
+	}
+}
+
+	@session_id.c
+
+34 #ifdeà
+HAVE_CONFIG_H
+
+
+35 
+	~"cÚfig.h
+"
+
+36 #–ià
+defšed
+(
+_MSC_VER
+)
+
+37 
+	~"cÚfig-msvc.h
+"
+
+40 
+	~"sysh—d.h
+"
+
+42 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+44 
+	~"”rÜ.h
+"
+
+45 
+	~"commÚ.h
+"
+
+46 
+	~"üy±o.h
+"
+
+47 
+	~"£ssiÚ_id.h
+"
+
+49 
+	~"memdbg.h
+"
+
+51 cÚ¡ 
+£ssiÚ_id
+ 
+	gx_£ssiÚ_id_z”o
+;
+
+54 
+	$£ssiÚ_id_¿ndom
+ (
+£ssiÚ_id
+ *
+sid
+)
+
+56 
+	`´ng_by‹s
+ (
+sid
+->
+id
+, 
+SID_SIZE
+);
+
+57 
+	}
+}
+
+60 
+	$£ssiÚ_id_´št
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid
+, 
+gc_¬’a
+ *
+gc
+)
+
+62  
+	`fÜm©_hex
+ (
+sid
+->
+id
+, 
+SID_SIZE
+, 0, 
+gc
+);
+
+63 
+	}
+}
+
+66 
+	$dummy
+(è{
+	}
+}
+
+	@session_id.h
+
+33 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+35 #iâdeà
+SESSION_ID_H
+
+
+36 
+	#SESSION_ID_H
+
+
+	)
+
+38 
+	~"basic.h
+"
+
+39 
+	~"bufãr.h
+"
+
+41 
+	s£ssiÚ_id
+
+
+43 
+ušt8_t
+ 
+	mid
+[8];
+
+46 
cÚ¡ 
+£ssiÚ_id
+ 
+x_£ssiÚ_id_z”o
+;
+
+48 
+	#SID_SIZE
+ ( (
+x_£ssiÚ_id_z”o
+.
+id
+))
+
+	)
+
+50 
+šlše
+ 
+boÞ
+
+
+51 
+	$£ssiÚ_id_equ®
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid1
+,
+
+52 cÚ¡ 
+£ssiÚ_id
+ *
+sid2
+)
+
+54  !
+	`memcmp
+ (
+sid1
+->
+id
+, 
+sid2
+->id, 
+SID_SIZE
+);
+
+55 
+	}
+}
+
+57 
+šlše
+ 
+boÞ
+
+
+58 
+	$£ssiÚ_id_defšed
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid1
+)
+
+60  
+	`memcmp
+ (
+sid1
+->
+id
+, &
+x_£ssiÚ_id_z”o
+.id, 
+SID_SIZE
+) != 0;
+
+61 
+	}
+}
+
+63 
+šlše
+ 
+boÞ
+
+
+64 
+	$£ssiÚ_id_»ad
+ (
+£ssiÚ_id
+ *
+sid
+, 
+bufãr
+ *
+buf
+)
+
+66  
+	`buf_»ad
+ (
+buf
+, 
+sid
+->
+id
+, 
+SID_SIZE
+);
+
+67 
+	}
+}
+
+69 
+šlše
+ 
+boÞ
+
+
+70 
+	$£ssiÚ_id_wr™e_´•’d
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid
+, 
+bufãr
+ *
+buf
+)
+
+72  
+	`buf_wr™e_´•’d
+ (
+buf
+, 
+sid
+->
+id
+, 
+SID_SIZE
+);
+
+73 
+	}
+}
+
+75 
+šlše
+ 
+boÞ
+
+
+76 
+	$£ssiÚ_id_wr™e
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid
+, 
+bufãr
+ *
+buf
+)
+
+78  
+	`buf_wr™e
+ (
+buf
+, 
+sid
+->
+id
+, 
+SID_SIZE
+);
+
+79 
+	}
+}
+
+81 
+£ssiÚ_id_¿ndom
+ (
+£ssiÚ_id
+ *
+sid
+);
+
+83 cÚ¡ *
+£ssiÚ_id_´št
+ (cÚ¡ 
+£ssiÚ_id
+ *
+sid
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@shaper.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+32 
+	~"sh­”.h
+"
+
+33 
+	~"memdbg.h
+"
+
+35 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+41 
+boÞ
+
+
+42 
+	$sh­”_soÚe¡_ev’t
+ (
+timev®
+ *
+tv
+, 
+d–ay
+)
+
+44 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+45 ià(
+d–ay
+ < 1000000)
+
+47 ià(
+tv
+->
+tv_£c
+)
+
+49 
+tv
+->
+tv_£c
+ = 0;
+
+50 
+tv
+->
+tv_u£c
+ = 
+d–ay
+;
+
+51 
+»t
+ = 
+Œue
+;
+
+53 ià(
+d–ay
+ < 
+tv
+->
+tv_u£c
+)
+
+55 
+tv
+->
+tv_u£c
+ = 
+d–ay
+;
+
+56 
+»t
+ = 
+Œue
+;
+
+61 cÚ¡ 
+£c
+ = 
+d–ay
+ / 1000000;
+
+62 cÚ¡ 
+u£c
+ = 
+d–ay
+ % 1000000;
+
+64 ià(
+£c
+ < 
+tv
+->
+tv_£c
+)
+
+66 
+tv
+->
+tv_£c
+ = 
+£c
+;
+
+67 
+tv
+->
+tv_u£c
+ = 
+u£c
+;
+
+68 
+»t
+ = 
+Œue
+;
+
+70 ià(
+£c
+ =ð
+tv
+->
+tv_£c
+)
+
+72 ià(
+u£c
+ < 
+tv
+->
+tv_u£c
+)
+
+74 
+tv
+->
+tv_u£c
+ = 
+u£c
+;
+
+75 
+»t
+ = 
+Œue
+;
+
+79 #ifdeà
+SHAPER_DEBUG
+
+
+80 
+	`dmsg
+ (
+D_SHAPER_DEBUG
+, "SHAPER shaper_soonest_event sec=%d usec=%d„et=%d",
+
+81 ()
+tv
+->
+tv_£c
+, (év->
+tv_u£c
+, ()
+»t
+);
+
+83  
+»t
+;
+
+84 
+	}
+}
+
+87 
+	$sh­”_»£t_wakeup
+ (
+sh­”
+ *
+s
+)
+
+89 
+	`CLEAR
+ (
+s
+->
+wakeup
+);
+
+90 
+	}
+}
+
+93 
+	$sh­”_msg
+ (
+sh­”
+ *
+s
+)
+
+95 
+	`msg
+ (
+M_INFO
+, "Output Traffic Shaping initialized‡t %d bytes…er second",
+
+96 
+s
+->
+by‹s_³r_£cÚd
+);
+
+97 
+	}
+}
+
+100 
+	$dummy
+(è{
+	}
+}
+
+	@shaper.h
+
+25 #iâdeà
+SHAPER_H
+
+
+26 
+	#SHAPER_H
+
+
+	)
+
+30 #ifdeà
+ENABLE_FEATURE_SHAPER
+
+
+32 
+	~"basic.h
+"
+
+33 
+	~"š‹g”.h
+"
+
+34 
+	~"misc.h
+"
+
+35 
+	~"”rÜ.h
+"
+
+36 
+	~"š‹rv®.h
+"
+
+43 
+	#SHAPER_MIN
+ 100
+
+	)
+
+44 
+	#SHAPER_MAX
+ 100000000
+
+	)
+
+46 
+	#SHAPER_MAX_TIMEOUT
+ 10
+
+	)
+
+48 
+	#SHAPER_USE_FP
+
+
+	)
+
+50 
+	ssh­”
+
+
+52 
+	mby‹s_³r_£cÚd
+;
+
+53 
+timev®
+ 
+	mwakeup
+;
+
+55 #ifdeà
+SHAPER_USE_FP
+
+
+56 
+	mçùÜ
+;
+
+58 
+	mçùÜ
+;
+
+62 
+sh­”_msg
+ (
+sh­”
+ *
+s
+);
+
+63 
+sh­”_»£t_wakeup
+ (
+sh­”
+ *
+s
+);
+
+69 
+boÞ
+ 
+sh­”_soÚe¡_ev’t
+ (
+timev®
+ *
+tv
+, 
+d–ay
+);
+
+75 
+šlše
+ 
+
+76 
+	$sh­”_»£t
+ (
+sh­”
+ *
+s
+, 
+by‹s_³r_£cÚd
+)
+
+78 
+s
+->
+by‹s_³r_£cÚd
+ = by‹s_³r_£cÚd ? 
+	`cÚ¡¿š_št
+ (by‹s_³r_£cÚd, 
+SHAPER_MIN
+, 
+SHAPER_MAX
+) : 0;
+
+80 #ifdeà
+SHAPER_USE_FP
+
+
+81 
+s
+->
+çùÜ
+ = 1000000.0 / ()s->
+by‹s_³r_£cÚd
+;
+
+83 
+s
+->
+çùÜ
+ = 1000000 / s->
+by‹s_³r_£cÚd
+;
+
+85 
+	}
+}
+
+87 
+šlše
+ 
+
+88 
+	$sh­”_š™
+ (
+sh­”
+ *
+s
+, 
+by‹s_³r_£cÚd
+)
+
+90 
+	`sh­”_»£t
+ (
+s
+, 
+by‹s_³r_£cÚd
+);
+
+91 
+	`sh­”_»£t_wakeup
+ (
+s
+);
+
+92 
+	}
+}
+
+94 
+šlše
+ 
+
+95 
+	$sh­”_cu¼’t_bªdwidth
+ (
+sh­”
+ *
+s
+)
+
+97  
+s
+->
+by‹s_³r_£cÚd
+;
+
+98 
+	}
+}
+
+104 
+šlše
+ 
+
+105 
+	$sh­”_d–ay
+ (
+sh­”
+* 
+s
+)
+
+107 
+timev®
+ 
+tv
+;
+
+108 
+d–ay
+ = 0;
+
+110 ià(
+	`tv_defšed
+ (&
+s
+->
+wakeup
+))
+
+112 
+	`ASSERT
+ (!
+	`Ý’v²_g‘timeofday
+ (&
+tv
+, 
+NULL
+));
+
+113 
+d–ay
+ = 
+	`tv_subŒaù
+ (&
+s
+->
+wakeup
+, &
+tv
+, 
+SHAPER_MAX_TIMEOUT
+);
+
+114 #ifdeà
+SHAPER_DEBUG
+
+
+115 
+	`dmsg
+ (
+D_SHAPER_DEBUG
+, "SHAPER sh­”_d–ay d–ay=%d", 
+d–ay
+);
+
+119  
+d–ay
+ > 0 ? delay : 0;
+
+120 
+	}
+}
+
+129 
+šlše
+ 
+
+130 
+	$sh­”_wrÙe_by‹s
+ (
+sh­”
+* 
+s
+, 
+nby‹s
+)
+
+132 
+timev®
+ 
+tv
+;
+
+135 
+tv
+.
+tv_£c
+ = 0;
+
+136 #ifdeà
+SHAPER_USE_FP
+
+
+137 
+tv
+.
+tv_u£c
+ = 
+	`mš_št
+ (()(()
+	`max_št
+ (
+nby‹s
+, 100è* 
+s
+->
+çùÜ
+), (
+SHAPER_MAX_TIMEOUT
+*1000000));
+
+139 
+tv
+.
+tv_u£c
+ = 
+s
+->
+by‹s_³r_£cÚd
+
+
+140 ? 
+	`mš_št
+ (
+	`max_št
+ (
+nby‹s
+, 100è* 
+s
+->
+çùÜ
+, (
+SHAPER_MAX_TIMEOUT
+*1000000))
+
+144 ià(
+tv
+.
+tv_u£c
+)
+
+146 
+	`ASSERT
+ (!
+	`Ý’v²_g‘timeofday
+ (&
+s
+->
+wakeup
+, 
+NULL
+));
+
+147 
+	`tv_add
+ (&
+s
+->
+wakeup
+, &
+tv
+);
+
+149 #ifdeà
+SHAPER_DEBUG
+
+
+150 
+	`dmsg
+ (
+D_SHAPER_DEBUG
+, "SHAPER shaper_wrote_bytes bytes=%d delay=%d sec=%d usec=%d",
+
+151 
+nby‹s
+,
+
+152 ()
+tv
+.
+tv_u£c
+,
+
+153 ()
+s
+->
+wakeup
+.
+tv_£c
+,
+
+154 ()
+s
+->
+wakeup
+.
+tv_u£c
+);
+
+157 
+	}
+}
+
+165 
+šlše
+ 
+boÞ
+
+
+166 
+	$sh­”_chªge_pù
+ (
+sh­”
+ *
+s
+, 
+pù
+)
+
+168 cÚ¡ 
+Üig_bªdwidth
+ = 
+s
+->
+by‹s_³r_£cÚd
+;
+
+169 cÚ¡ 
+Ãw_bªdwidth
+ = 
+Üig_bªdwidth
+ + (Üig_bªdwidth * 
+pù
+ / 100);
+
+170 
+	`ASSERT
+ (
+s
+->
+by‹s_³r_£cÚd
+);
+
+171 
+	`sh­”_»£t
+ (
+s
+, 
+Ãw_bªdwidth
+);
+
+172  
+s
+->
+by‹s_³r_£cÚd
+ !ð
+Üig_bªdwidth
+;
+
+173 
+	}
+}
+
+	@sig.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"bufãr.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+35 
+	~"wš32.h
+"
+
+36 
+	~"š™.h
+"
+
+37 
+	~"¡©us.h
+"
+
+38 
+	~"sig.h
+"
+
+39 
+	~"occ.h
+"
+
+40 
+	~"mªage.h
+"
+
+41 
+	~"Ý’v².h
+"
+
+43 
+	~"memdbg.h
+"
+
+47 
+sigÇl_šfo
+ 
+	gsigšfo_¡©ic
+;
+
+49 
+	ssigÇme
+ {
+
+50 
+	mv®ue
+;
+
+51 cÚ¡ *
+	muµ”
+;
+
+52 cÚ¡ *
+	mlow”
+;
+
+55 cÚ¡ 
+sigÇme
+ 
+	gsigÇmes
+[] = {
+
+56 { 
+SIGINT
+, "SIGINT", "sigint"},
+
+57 { 
+SIGTERM
+, "SIGTERM", "sigterm" },
+
+58 { 
+SIGHUP
+, "SIGHUP", "sighup" },
+
+59 { 
+SIGUSR1
+, "SIGUSR1", "sigusr1" },
+
+60 { 
+SIGUSR2
+, "SIGUSR2", "sigusr2" }
+
+64 
+	$·r£_sigÇl
+ (cÚ¡ *
+sigÇme
+)
+
+66 
+i
+;
+
+67 
+i
+ = 0; i < ()
+	`SIZE
+ (
+sigÇmes
+); ++i)
+
+69 ià(!
+	`¡rcmp
+ (
+sigÇme
+, 
+sigÇmes
+[
+i
+].
+uµ”
+))
+
+70  
+sigÇmes
+[
+i
+].
+v®ue
+;
+
+73 
+	}
+}
+
+76 
+	$sigÇl_Çme
+ (cÚ¡ 
+sig
+, cÚ¡ 
+boÞ
+ 
+uµ”
+)
+
+78 
+i
+;
+
+79 
+i
+ = 0; i < ()
+	`SIZE
+ (
+sigÇmes
+); ++i)
+
+81 ià(
+sig
+ =ð
+sigÇmes
+[
+i
+].
+v®ue
+)
+
+82  
+uµ”
+ ? 
+sigÇmes
+[
+i
+].uµ” : sigÇmes[i].
+low”
+;
+
+85 
+	}
+}
+
+88 
+	$sigÇl_desü�tiÚ
+ (cÚ¡ 
+signum
+, cÚ¡ *
+sig‹xt
+)
+
+90 ià(
+sig‹xt
+)
+
+91  
+sig‹xt
+;
+
+93  
+	`sigÇl_Çme
+ (
+signum
+, 
+çl£
+);
+
+94 
+	}
+}
+
+97 
+	$throw_sigÇl
+ (cÚ¡ 
+signum
+)
+
+99 
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+ = 
+signum
+;
+
+100 
+sigšfo_¡©ic
+.
+h¬d
+ = 
+Œue
+;
+
+101 
+	}
+}
+
+104 
+	$throw_sigÇl_soá
+ (cÚ¡ 
+signum
+, cÚ¡ *
+sigÇl_‹xt
+)
+
+106 
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+ = 
+signum
+;
+
+107 
+sigšfo_¡©ic
+.
+h¬d
+ = 
+çl£
+;
+
+108 
+sigšfo_¡©ic
+.
+sigÇl_‹xt
+ = signal_text;
+
+109 
+	}
+}
+
+112 
+	$sigÇl_»£t
+ (
+sigÇl_šfo
+ *
+si
+)
+
+114 ià(
+si
+)
+
+116 
+si
+->
+sigÇl_»ûived
+ = 0;
+
+117 
+si
+->
+sigÇl_‹xt
+ = 
+NULL
+;
+
+118 
+si
+->
+h¬d
+ = 
+çl£
+;
+
+120 
+	}
+}
+
+123 
+	$´št_sigÇl
+ (cÚ¡ 
+sigÇl_šfo
+ *
+si
+, cÚ¡ *
+t™Ë
+, 
+msgËv–
+)
+
+125 ià(
+si
+)
+
+127 cÚ¡ *
+hs
+ = (
+si
+->
+h¬d
+ ? "hard" : "soft");
+
+128 cÚ¡ *
+ty³
+ = (
+si
+->
+sigÇl_‹xt
+ ? si->signal_text : "");
+
+129 cÚ¡ *
+t
+ = (
+t™Ë
+ ?�itle : "process");
+
+131 
+si
+->
+sigÇl_»ûived
+)
+
+133 
+SIGINT
+:
+
+134 
+SIGTERM
+:
+
+135 
+	`msg
+ (
+msgËv–
+, "%s[%s,%s]„eceived, %sƒxiting",
+
+136 
+	`sigÇl_Çme
+ (
+si
+->
+sigÇl_»ûived
+, 
+Œue
+), 
+hs
+, 
+ty³
+, 
+t
+);
+
+138 
+SIGHUP
+:
+
+139 
+SIGUSR1
+:
+
+140 
+	`msg
+ (
+msgËv–
+, "%s[%s,%s]„eceived, %s„estarting",
+
+141 
+	`sigÇl_Çme
+ (
+si
+->
+sigÇl_»ûived
+, 
+Œue
+), 
+hs
+, 
+ty³
+, 
+t
+);
+
+144 
+	`msg
+ (
+msgËv–
+, "UnknowÀsigÇÈ%d [%s,%s]„eûived by %s", 
+si
+->
+sigÇl_»ûived
+, 
+hs
+, 
+ty³
+, 
+t
+);
+
+149 
+	`msg
+ (
+msgËv–
+, "Unknown signal„eceived");
+
+150 
+	}
+}
+
+156 
+	$sigÇl_»¡¬t_¡©us
+ (cÚ¡ 
+sigÇl_šfo
+ *
+si
+)
+
+158 #ifdeà
+ENABLE_MANAGEMENT
+
+
+159 ià(
+mªagem’t
+)
+
+161 
+¡©e
+ = -1;
+
+162 
+si
+->
+sigÇl_»ûived
+)
+
+164 
+SIGINT
+:
+
+165 
+SIGTERM
+:
+
+166 
+¡©e
+ = 
+OPENVPN_STATE_EXITING
+;
+
+168 
+SIGHUP
+:
+
+169 
+SIGUSR1
+:
+
+170 
+¡©e
+ = 
+OPENVPN_STATE_RECONNECTING
+;
+
+174 ià(
+¡©e
+ >= 0)
+
+175 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+176 
+¡©e
+,
+
+177 
+si
+->
+sigÇl_‹xt
+ ? si->sigÇl_‹xˆ: 
+	`sigÇl_Çme
+ (si->
+sigÇl_»ûived
+, 
+Œue
+),
+
+178 (
+š_addr_t
+)0,
+
+179 (
+š_addr_t
+)0);
+
+182 
+	}
+}
+
+184 #ifdeà
+HAVE_SIGNAL_H
+
+
+188 
+	$sigÇl_hªdËr
+ (cÚ¡ 
+signum
+)
+
+190 
+	`throw_sigÇl
+ (
+signum
+);
+
+191 
+	`sigÇl
+ (
+signum
+, 
+sigÇl_hªdËr
+);
+
+192 
+	}
+}
+
+198 #ifdeà
+HAVE_SIGNAL_H
+
+
+199 
+	#SM_UNDEF
+ 0
+
+	)
+
+200 
+	#SM_PRE_INIT
+ 1
+
+	)
+
+201 
+	#SM_POST_INIT
+ 2
+
+	)
+
+202 
+	gsigÇl_mode
+;
+
+206 
+	$´e_š™_sigÇl_ÿtch
+ ()
+
+208 #iâdeà
+WIN32
+
+
+209 #ifdeà
+HAVE_SIGNAL_H
+
+
+210 
+sigÇl_mode
+ = 
+SM_PRE_INIT
+;
+
+211 
+	`sigÇl
+ (
+SIGINT
+, 
+sigÇl_hªdËr
+);
+
+212 
+	`sigÇl
+ (
+SIGTERM
+, 
+sigÇl_hªdËr
+);
+
+213 
+	`sigÇl
+ (
+SIGHUP
+, 
+SIG_IGN
+);
+
+214 
+	`sigÇl
+ (
+SIGUSR1
+, 
+SIG_IGN
+);
+
+215 
+	`sigÇl
+ (
+SIGUSR2
+, 
+SIG_IGN
+);
+
+216 
+	`sigÇl
+ (
+SIGPIPE
+, 
+SIG_IGN
+);
+
+219 
+	}
+}
+
+222 
+	$po¡_š™_sigÇl_ÿtch
+ ()
+
+224 #iâdeà
+WIN32
+
+
+225 #ifdeà
+HAVE_SIGNAL_H
+
+
+226 
+sigÇl_mode
+ = 
+SM_POST_INIT
+;
+
+227 
+	`sigÇl
+ (
+SIGINT
+, 
+sigÇl_hªdËr
+);
+
+228 
+	`sigÇl
+ (
+SIGTERM
+, 
+sigÇl_hªdËr
+);
+
+229 
+	`sigÇl
+ (
+SIGHUP
+, 
+sigÇl_hªdËr
+);
+
+230 
+	`sigÇl
+ (
+SIGUSR1
+, 
+sigÇl_hªdËr
+);
+
+231 
+	`sigÇl
+ (
+SIGUSR2
+, 
+sigÇl_hªdËr
+);
+
+232 
+	`sigÇl
+ (
+SIGPIPE
+, 
+SIG_IGN
+);
+
+235 
+	}
+}
+
+239 
+	$»¡Üe_sigÇl_¡©e
+ ()
+
+241 #ifdeà
+HAVE_SIGNAL_H
+
+
+242 ià(
+sigÇl_mode
+ =ð
+SM_PRE_INIT
+)
+
+243 
+	`´e_š™_sigÇl_ÿtch
+ ();
+
+244 ià(
+sigÇl_mode
+ =ð
+SM_POST_INIT
+)
+
+245 
+	`po¡_š™_sigÇl_ÿtch
+ ();
+
+247 
+	}
+}
+
+255 
+	$´št_¡©us
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+, 
+¡©us_ou�ut
+ *
+so
+)
+
+257 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+259 
+	`¡©us_»£t
+ (
+so
+);
+
+261 
+	`¡©us_´štf
+ (
+so
+, "OpenVPN STATISTICS");
+
+262 
+	`¡©us_´štf
+ (
+so
+, "Upd©ed,%s", 
+	`time_¡ršg
+ (0, 0, 
+çl£
+, &
+gc
+));
+
+263 
+	`¡©us_´štf
+ (
+so
+, "TUN/TAP„—d by‹s," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+tun_»ad_by‹s
+);
+
+264 
+	`¡©us_´štf
+ (
+so
+, "TUN/TAP wr™�by‹s," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+tun_wr™e_by‹s
+);
+
+265 
+	`¡©us_´štf
+ (
+so
+, "TCP/UDP„—d by‹s," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+lšk_»ad_by‹s
+);
+
+266 
+	`¡©us_´štf
+ (
+so
+, "TCP/UDP wr™�by‹s," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+lšk_wr™e_by‹s
+);
+
+267 
+	`¡©us_´štf
+ (
+so
+, "Auth„—d by‹s," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+lšk_»ad_by‹s_auth
+);
+
+268 #ifdeà
+ENABLE_LZO
+
+
+269 ià(
+	`lzo_defšed
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+))
+
+270 
+	`lzo_´št_¡©s
+ (&
+c
+->
+c2
+.
+lzo_compwÜk
+, 
+so
+);
+
+272 #ifdeà
+PACKET_TRUNCATION_CHECK
+
+
+273 
+	`¡©us_´štf
+ (
+so
+, "TUN„—d�runÿtiÚs," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+n_Œunc_tun_»ad
+);
+
+274 
+	`¡©us_´štf
+ (
+so
+, "TUN wr™�ŒunÿtiÚs," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+n_Œunc_tun_wr™e
+);
+
+275 
+	`¡©us_´štf
+ (
+so
+, "P»-’üy±�runÿtiÚs," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+n_Œunc_´e_’üy±
+);
+
+276 
+	`¡©us_´štf
+ (
+so
+, "Po¡-deüy±�runÿtiÚs," 
+couÁ”_fÜm©
+, 
+c
+->
+c2
+.
+n_Œunc_po¡_deüy±
+);
+
+278 #ifdeà
+WIN32
+
+
+279 ià(
+	`tuÁ­_defšed
+ (
+c
+->
+c1
+.
+tuÁ­
+))
+
+280 
+	`¡©us_´štf
+ (
+so
+, "TAP-WIN32 driver status,\"%s\"",
+
+281 
+	`�p_wš_g‘šfo
+ (
+c
+->
+c1
+.
+tuÁ­
+, &
+gc
+));
+
+284 
+	`¡©us_´štf
+ (
+so
+, "END");
+
+285 
+	`¡©us_æush
+ (
+so
+);
+
+286 
+	`gc_ä“
+ (&
+gc
+);
+
+287 
+	}
+}
+
+289 #ifdeà
+ENABLE_OCC
+
+
+296 
+	$´oûss_ex¶ic™_ex™_nÙifiÿtiÚ_š™
+ (
+cÚ‹xt
+ *
+c
+)
+
+298 
+	`msg
+ (
+M_INFO
+, "SIGTERM„eceived, sendingƒxit‚otification�o…eer");
+
+299 
+	`ev’t_timeout_š™
+ (&
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_š‹rv®
+, 1, 0);
+
+300 
+	`»£t_cßr£_tim”s
+ (
+c
+);
+
+301 
+	`sigÇl_»£t
+ (
+c
+->
+sig
+);
+
+302 
+	`h®t_nÚ_edge_Œigg”ed_sigÇls
+ ();
+
+303 
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+ = 
+now
+;
+
+304 
+	}
+}
+
+307 
+	$´oûss_ex¶ic™_ex™_nÙifiÿtiÚ_tim”_wakeup
+ (
+cÚ‹xt
+ *
+c
+)
+
+309 ià(
+	`ev’t_timeout_Œigg”
+ (&
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_š‹rv®
+,
+
+310 &
+c
+->
+c2
+.
+timev®
+,
+
+311 
+ETT_DEFAULT
+))
+
+313 
+	`ASSERT
+ (
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+ && c->
+ÝtiÚs
+.
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+);
+
+314 ià(
+now
+ >ð
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+ + c->
+ÝtiÚs
+.
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+)
+
+316 
+	`ev’t_timeout_þ—r
+ (&
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_š‹rv®
+);
+
+317 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+318 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = "exit-with-notification";
+
+322 
+c
+->
+c2
+.
+occ_Ý
+ = 
+OCC_EXIT
+;
+
+325 
+	}
+}
+
+333 
+	$»m­_sigÇl
+ (
+cÚ‹xt
+ *
+c
+)
+
+335 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR1
+ && c->
+ÝtiÚs
+.
+»m­_sigu¤1
+)
+
+336 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = c->
+ÝtiÚs
+.
+»m­_sigu¤1
+;
+
+337 
+	}
+}
+
+340 
+	$´oûss_sigu¤2
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+)
+
+342 
+¡©us_ou�ut
+ *
+so
+ = 
+	`¡©us_Ý’
+ (
+NULL
+, 0, 
+M_INFO
+, NULL, 0);
+
+343 
+	`´št_¡©us
+ (
+c
+, 
+so
+);
+
+344 
+	`¡©us_þo£
+ (
+so
+);
+
+345 
+	`sigÇl_»£t
+ (
+c
+->
+sig
+);
+
+346 
+	}
+}
+
+348 
+boÞ
+
+
+349 
+	$´oûss_sig‹rm
+ (
+cÚ‹xt
+ *
+c
+)
+
+351 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+352 #ifdeà
+ENABLE_OCC
+
+
+353 ià(
+c
+->
+ÝtiÚs
+.
+û
+.
+ex¶ic™_ex™_nÙifiÿtiÚ
+
+
+354 && !
+c
+->
+c2
+.
+ex¶ic™_ex™_nÙifiÿtiÚ_time_wa™
+)
+
+356 
+	`´oûss_ex¶ic™_ex™_nÙifiÿtiÚ_š™
+ (
+c
+);
+
+357 
+»t
+ = 
+çl£
+;
+
+360  
+»t
+;
+
+361 
+	}
+}
+
+363 
+boÞ
+
+
+364 
+	$´oûss_sigÇl
+ (
+cÚ‹xt
+ *
+c
+)
+
+366 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+368 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGTERM
+ || c->sig->sigÇl_»ûived =ð
+SIGINT
+)
+
+370 
+»t
+ = 
+	`´oûss_sig‹rm
+ (
+c
+);
+
+372 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ =ð
+SIGUSR2
+)
+
+374 
+	`´oûss_sigu¤2
+ (
+c
+);
+
+375 
+»t
+ = 
+çl£
+;
+
+377  
+»t
+;
+
+378 
+	}
+}
+
+381 
+	$»gi¡”_sigÇl
+ (
+cÚ‹xt
+ *
+c
+, 
+sig
+, cÚ¡ *
+‹xt
+)
+
+383 ià(
+c
+->
+sig
+->
+sigÇl_»ûived
+ !ð
+SIGTERM
+)
+
+384 
+c
+->
+sig
+->
+sigÇl_»ûived
+ = sig;
+
+385 
+c
+->
+sig
+->
+sigÇl_‹xt
+ = 
+‹xt
+;
+
+386 
+	}
+}
+
+	@sig.h
+
+25 #iâdeà
+SIG_H
+
+
+26 
+	#SIG_H
+
+
+	)
+
+28 
+	~"¡©us.h
+"
+
+29 
+	~"wš32.h
+"
+
+35 
+	ssigÇl_šfo
+
+
+37 vÞ©ž�
+	msigÇl_»ûived
+;
+
+38 vÞ©ž�
+boÞ
+ 
+	mh¬d
+;
+
+39 cÚ¡ *
+	msigÇl_‹xt
+;
+
+42 
+	#IS_SIG
+(
+c
+è((c)->
+sig
+->
+sigÇl_»ûived
+)
+
+	)
+
+44 
+	gcÚ‹xt
+;
+
+46 

+sigÇl_šfo
+ 
+sigšfo_¡©ic
+;
+
+48 
+·r£_sigÇl
+ (cÚ¡ *
+sigÇme
+);
+
+49 cÚ¡ *
+sigÇl_Çme
+ (cÚ¡ 
+sig
+, cÚ¡ 
+boÞ
+ 
+uµ”
+);
+
+50 cÚ¡ *
+sigÇl_desü�tiÚ
+ (cÚ¡ 
+signum
+, cÚ¡ *
+sig‹xt
+);
+
+51 
+throw_sigÇl
+ (cÚ¡ 
+signum
+);
+
+52 
+throw_sigÇl_soá
+ (cÚ¡ 
+signum
+, cÚ¡ *
+sigÇl_‹xt
+);
+
+54 
+´e_š™_sigÇl_ÿtch
+ ();
+
+55 
+po¡_š™_sigÇl_ÿtch
+ ();
+
+56 
+»¡Üe_sigÇl_¡©e
+ ();
+
+58 
+´št_sigÇl
+ (cÚ¡ 
+sigÇl_šfo
+ *
+si
+, cÚ¡ *
+t™Ë
+, 
+msgËv–
+);
+
+59 
+´št_¡©us
+ (cÚ¡ 
+cÚ‹xt
+ *
+c
+, 
+¡©us_ou�ut
+ *
+so
+);
+
+61 
+»m­_sigÇl
+ (
+cÚ‹xt
+ *
+c
+);
+
+63 
+sigÇl_»¡¬t_¡©us
+ (cÚ¡ 
+sigÇl_šfo
+ *
+si
+);
+
+65 
+boÞ
+ 
+´oûss_sigÇl
+ (
+cÚ‹xt
+ *
+c
+);
+
+67 
+»gi¡”_sigÇl
+ (
+cÚ‹xt
+ *
+c
+, 
+sig
+, cÚ¡ *
+‹xt
+);
+
+69 #ifdeà
+ENABLE_OCC
+
+
+70 
+´oûss_ex¶ic™_ex™_nÙifiÿtiÚ_tim”_wakeup
+ (
+cÚ‹xt
+ *
+c
+);
+
+73 #ifdeà
+WIN32
+
+
+75 
+šlše
+ 
+
+76 
+	$g‘_sigÇl
+ (vÞ©ž�*
+sig
+)
+
+78 *
+sig
+ = 
+	`wš32_sigÇl_g‘
+ (&
+wš32_sigÇl
+);
+
+79 
+	}
+}
+
+81 
+šlše
+ 
+
+82 
+	$h®t_nÚ_edge_Œigg”ed_sigÇls
+ ()
+
+84 
+	`wš32_sigÇl_þo£
+ (&
+wš32_sigÇl
+);
+
+85 
+	}
+}
+
+89 
+šlše
+ 
+
+90 
+	$g‘_sigÇl
+ (vÞ©ž�*
+sig
+)
+
+92 cÚ¡ 
+i
+ = 
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+;
+
+93 ià(
+i
+)
+
+94 *
+sig
+ = 
+i
+;
+
+95 
+	}
+}
+
+97 
+šlše
+ 
+
+98 
+	$h®t_nÚ_edge_Œigg”ed_sigÇls
+ ()
+
+100 
+	}
+}
+
+	@socket.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"sock‘.h
+"
+
+34 
+	~"fdmisc.h
+"
+
+35 
+	~"misc.h
+"
+
+36 
+	~"g»mlš.h
+"
+
+37 
+	~"¶ugš.h
+"
+
+38 
+	~"ps.h
+"
+
+39 
+	~"mªage.h
+"
+
+40 
+	~"misc.h
+"
+
+42 
+	~"memdbg.h
+"
+
+44 cÚ¡ 
+	g´Ùo_ov”h—d
+[] = {
+
+46 
+IPv4_UDP_HEADER_SIZE
+,
+
+47 
+IPv4_TCP_HEADER_SIZE
+,
+
+48 
+IPv4_TCP_HEADER_SIZE
+,
+
+49 
+IPv6_UDP_HEADER_SIZE
+,
+
+50 
+IPv6_TCP_HEADER_SIZE
+,
+
+51 
+IPv6_TCP_HEADER_SIZE
+,
+
+52 
+IPv6_TCP_HEADER_SIZE
+,
+
+59 
+	$sf2gaf
+(cÚ¡ 
+g‘addr_æags
+,
+
+60 cÚ¡ 
+sockæags
+)
+
+62 ià(
+sockæags
+ & 
+SF_HOST_RANDOMIZE
+)
+
+63  
+g‘addr_æags
+ | 
+GETADDR_RANDOMIZE
+;
+
+65  
+g‘addr_æags
+;
+
+66 
+	}
+}
+
+73 
+	$h_”ºo_msg
+(
+h_”ºo_”r
+)
+
+75 
+h_”ºo_”r
+)
+
+77 
+HOST_NOT_FOUND
+:
+
+79 
+NO_DATA
+:
+
+81 
+NO_RECOVERY
+:
+
+83 
+TRY_AGAIN
+:
+
+87 
+	}
+}
+
+94 
+š_addr_t
+
+
+95 
+	$g‘addr
+ (
+æags
+,
+
+96 cÚ¡ *
+ho¡Çme
+,
+
+97 
+»sÞve_»Œy_£cÚds
+,
+
+98 
+boÞ
+ *
+sucûeded
+,
+
+99 vÞ©ž�*
+sigÇl_»ûived
+)
+
+101 
+addršfo
+ *
+ai
+;
+
+102 
+¡©us
+;
+
+103 
+¡©us
+ = 
+	`Ý’v²_g‘addršfo
+(
+æags
+, 
+ho¡Çme
+, 
+»sÞve_»Œy_£cÚds
+,
+
+104 
+sigÇl_»ûived
+, 
+AF_INET
+, &
+ai
+);
+
+105 if(
+¡©us
+==0) {
+
+106 
+š_addr
+ 
+Ÿ
+;
+
+107 if(
+sucûeded
+)
+
+108 *
+sucûeded
+=
+Œue
+;
+
+109 
+Ÿ
+ = ((
+sockaddr_š
+*)
+ai
+->
+ai_addr
+)->
+sš_addr
+;
+
+110 
+	`ä“addršfo
+(
+ai
+);
+
+111  (
+æags
+ & 
+GETADDR_HOST_ORDER
+è? 
+	`Áohl
+ (
+Ÿ
+.
+s_addr
+) : ia.s_addr;
+
+113 if(
+sucûeded
+)
+
+114 *
+sucûeded
+ =
+çl£
+;
+
+117 
+	}
+}
+
+125 
+	$Ý’v²_g‘addršfo
+ (
+æags
+,
+
+126 cÚ¡ *
+ho¡Çme
+,
+
+127 
+»sÞve_»Œy_£cÚds
+,
+
+128 vÞ©ž�*
+sigÇl_»ûived
+,
+
+129 
+ai_çmžy
+,
+
+130 
+addršfo
+ **
+»s
+)
+
+132 
+addršfo
+ 
+hšts
+;
+
+133 
+¡©us
+;
+
+134 
+sig»c
+ = 0;
+
+135 
+msgËv–
+ = (
+æags
+ & 
+GETADDR_FATAL
+è? 
+M_FATAL
+ : 
+D_RESOLVE_ERRORS
+;
+
+136 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+138 
+	`ASSERT
+(
+»s
+);
+
+140 ià(!
+ho¡Çme
+)
+
+141 
+ho¡Çme
+ = "::";
+
+143 ià(
+æags
+ & 
+GETADDR_RANDOMIZE
+)
+
+144 
+ho¡Çme
+ = 
+	`ho¡Çme_¿ndomize
+(ho¡Çme, &
+gc
+);
+
+146 ià(
+æags
+ & 
+GETADDR_MSG_VIRT_OUT
+)
+
+147 
+msgËv–
+ |ð
+M_MSG_VIRT_OUT
+;
+
+149 ià((
+æags
+ & (
+GETADDR_FATAL_ON_SIGNAL
+|
+GETADDR_WARN_ON_SIGNAL
+))
+
+150 && !
+sigÇl_»ûived
+)
+
+151 
+sigÇl_»ûived
+ = &
+sig»c
+;
+
+154 
+	`CLEAR
+(
+hšts
+);
+
+155 
+hšts
+.
+ai_çmžy
+ =‡i_family;
+
+156 
+hšts
+.
+ai_æags
+ = 
+AI_NUMERICHOST
+;
+
+157 
+hšts
+.
+ai_sockty³
+ = 
+SOCK_STREAM
+;
+
+159 
+¡©us
+ = 
+	`g‘addršfo
+(
+ho¡Çme
+, 
+NULL
+, &
+hšts
+, 
+»s
+);
+
+161 ià(
+¡©us
+ != 0)
+
+163 cÚ¡ 
+çž_wa™_š‹rv®
+ = 5;
+
+164 
+»sÞve_»Œ›s
+ = (
+æags
+ & 
+GETADDR_TRY_ONCE
+è? 1 : (
+»sÞve_»Œy_£cÚds
+ / 
+çž_wa™_š‹rv®
+);
+
+165 cÚ¡ *
+fmt
+;
+
+166 
+Ëv–
+ = 0;
+
+168 
+fmt
+ = "RESOLVE: Cannot„esolve host‡ddress: %s: %s";
+
+169 ià((
+æags
+ & 
+GETADDR_MENTION_RESOLVE_RETRY
+)
+
+170 && !
+»sÞve_»Œy_£cÚds
+)
+
+171 
+fmt
+ = "RESOLVE: Cannot„esolve host‡ddress: %s: %s (I would have„etried�his‚ame query if you had specified�he --resolv-retry option.)";
+
+173 ià(!(
+æags
+ & 
+GETADDR_RESOLVE
+è|| 
+¡©us
+ =ð
+EAI_FAIL
+)
+
+175 
+	`msg
+ (
+msgËv–
+, "RESOLVE: CªnÙ…¬£ IP‡dd»ss: %s", 
+ho¡Çme
+);
+
+176 
+dÚe
+;
+
+179 #ifdeà
+ENABLE_MANAGEMENT
+
+
+180 ià(
+æags
+ & 
+GETADDR_UPDATE_MANAGEMENT_STATE
+)
+
+182 ià(
+mªagem’t
+)
+
+183 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+184 
+OPENVPN_STATE_RESOLVE
+,
+
+185 
+NULL
+,
+
+186 (
+š_addr_t
+)0,
+
+187 (
+š_addr_t
+)0);
+
+194 
+Œue
+)
+
+196 #iâdeà
+WIN32
+
+
+197 
+	`»s_š™
+ ();
+
+200 
+hšts
+.
+ai_æags
+ = 0;
+
+201 
+	`dmsg
+ (
+D_SOCKET_DEBUG
+, "GETADDRINFO flags=0x%04x‡i_family=%d‡i_socktype=%d",
+
+202 
+æags
+, 
+hšts
+.
+ai_çmžy
+, hšts.
+ai_sockty³
+);
+
+203 
+¡©us
+ = 
+	`g‘addršfo
+(
+ho¡Çme
+, 
+NULL
+, &
+hšts
+, 
+»s
+);
+
+205 ià(
+sigÇl_»ûived
+)
+
+207 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+208 ià(*
+sigÇl_»ûived
+)
+
+210 ià(*
+sigÇl_»ûived
+ =ð
+SIGUSR1
+)
+
+212 
+	`msg
+ (
+Ëv–
+, "RESOLVE: Ignored SIGUSR1 signal„eceived during DNS„esolution‡ttempt");
+
+213 *
+sigÇl_»ûived
+ = 0;
+
+218 ià(0 =ð
+¡©us
+) {
+
+219 
+	`ASSERT
+(
+»s
+);
+
+220 
+	`ä“addršfo
+(*
+»s
+);
+
+221 *
+»s
+ = 
+NULL
+;
+
+222 
+¡©us
+ = 
+EAI_AGAIN
+;
+
+223 
+”ºo
+ = 
+EINTR
+;
+
+225 
+dÚe
+;
+
+231 ià(0 =ð
+¡©us
+)
+
+236 
+Ëv–
+ = 
+msgËv–
+;
+
+237 ià(
+»sÞve_»Œ›s
+ > 0)
+
+238 
+Ëv–
+ = 
+D_RESOLVE_ERRORS
+;
+
+240 
+	`msg
+ (
+Ëv–
+,
+
+241 
+fmt
+,
+
+242 
+ho¡Çme
+,
+
+243 
+	`gai_¡»¼Ü
+(
+¡©us
+));
+
+245 ià(--
+»sÞve_»Œ›s
+ <= 0)
+
+246 
+dÚe
+;
+
+248 
+	`Ý’v²_¦“p
+ (
+çž_wa™_š‹rv®
+);
+
+251 
+	`ASSERT
+(
+»s
+);
+
+264 
+dÚe
+:
+
+265 ià(
+sigÇl_»ûived
+ && *signal_received)
+
+267 
+Ëv–
+ = 0;
+
+268 ià(
+æags
+ & 
+GETADDR_FATAL_ON_SIGNAL
+)
+
+269 
+Ëv–
+ = 
+M_FATAL
+;
+
+270 ià(
+æags
+ & 
+GETADDR_WARN_ON_SIGNAL
+)
+
+271 
+Ëv–
+ = 
+M_WARN
+;
+
+272 
+	`msg
+ (
+Ëv–
+, "RESOLVE: signal„eceived during DNS„esolution‡ttempt");
+
+275 
+	`gc_ä“
+ (&
+gc
+);
+
+276  
+¡©us
+;
+
+277 
+	}
+}
+
+284 
+	$Ý’v²_š‘_©Ú
+ (cÚ¡ *
+dÙ‹d_quad
+, 
+š_addr
+ *
+addr
+)
+
+286 
+a
+, 
+b
+, 
+c
+, 
+d
+;
+
+288 
+	`CLEAR
+ (*
+addr
+);
+
+289 ià(
+	`ssÿnf
+ (
+dÙ‹d_quad
+, "%u.%u.%u.%u", &
+a
+, &
+b
+, &
+c
+, &
+d
+) == 4)
+
+291 ià(
+a
+ < 256 && 
+b
+ < 256 && 
+c
+ < 256 && 
+d
+ < 256)
+
+293 
+addr
+->
+s_addr
+ = 
+	`htÚl
+ (
+a
+<<24 | 
+b
+<<16 | 
+c
+<<8 | 
+d
+);
+
+294  
+OIA_IP
+;
+
+297 ià(
+	`¡ršg_þass
+ (
+dÙ‹d_quad
+, 
+CC_DIGIT
+|
+CC_DOT
+, 0))
+
+298  
+OIA_ERROR
+;
+
+300  
+OIA_HOSTNAME
+;
+
+301 
+	}
+}
+
+303 
+boÞ
+
+
+304 
+	$�_addr_dÙ‹d_quad_§ã
+ (cÚ¡ *
+dÙ‹d_quad
+)
+
+307 ià(!
+dÙ‹d_quad
+)
+
+308  
+çl£
+;
+
+311 ià(
+	`¡¾’
+ (
+dÙ‹d_quad
+) > 15)
+
+312  
+çl£
+;
+
+317 
+Âum
+ = 0;
+
+318 cÚ¡ *
+p
+ = 
+dÙ‹d_quad
+;
+
+319 
+c
+;
+
+321 (
+c
+ = *
+p
+++))
+
+323 ià(
+c
+ >= '0' && c <= '9')
+
+325 ++
+Âum
+;
+
+326 ià(
+Âum
+ > 3)
+
+327  
+çl£
+;
+
+329 ià(
+c
+ == '.')
+
+331 
+Âum
+ = 0;
+
+334  
+çl£
+;
+
+340 
+š_addr
+ 
+a
+;
+
+341  
+	`Ý’v²_š‘_©Ú
+ (
+dÙ‹d_quad
+, &
+a
+è=ð
+OIA_IP
+;
+
+343 
+	}
+}
+
+345 
+boÞ
+
+
+346 
+	$�v6_addr_§ã
+ (cÚ¡ *
+�v6_‹xt_addr
+)
+
+349 ià(!
+�v6_‹xt_addr
+)
+
+350  
+çl£
+;
+
+353 ià(
+	`¡¾’
+ (
+�v6_‹xt_addr
+è> 
+INET6_ADDRSTRLEN
+ )
+
+354  
+çl£
+;
+
+358 
+š6_addr
+ 
+a6
+;
+
+359  
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+�v6_‹xt_addr
+, &
+a6
+ ) == 1;
+
+361 
+	}
+}
+
+363 
+boÞ
+
+
+364 
+	$dns_addr_§ã
+ (cÚ¡ *
+addr
+)
+
+366 ià(
+addr
+)
+
+368 cÚ¡ 
+size_t
+ 
+Ën
+ = 
+	`¡¾’
+ (
+addr
+);
+
+369  
+Ën
+ > 0 &&†’ <ð255 && 
+	`¡ršg_þass
+ (
+addr
+, 
+CC_ALNUM
+|
+CC_DASH
+|
+CC_DOT
+, 0);
+
+372  
+çl£
+;
+
+373 
+	}
+}
+
+375 
+boÞ
+
+
+376 
+	$�_Ü_dns_addr_§ã
+ (cÚ¡ *
+addr
+, cÚ¡ 
+boÞ
+ 
+®low_fqdn
+)
+
+378 ià(
+	`�_addr_dÙ‹d_quad_§ã
+ (
+addr
+))
+
+379  
+Œue
+;
+
+380 ià(
+®low_fqdn
+)
+
+381  
+	`dns_addr_§ã
+ (
+addr
+);
+
+383  
+çl£
+;
+
+384 
+	}
+}
+
+386 
+boÞ
+
+
+387 
+	$mac_addr_§ã
+ (cÚ¡ *
+mac_addr
+)
+
+390 ià(!
+mac_addr
+)
+
+391  
+çl£
+;
+
+394 ià(
+	`¡¾’
+ (
+mac_addr
+) > 17)
+
+395  
+çl£
+;
+
+400 
+Âum
+ = 0;
+
+401 cÚ¡ *
+p
+ = 
+mac_addr
+;
+
+402 
+c
+;
+
+404 (
+c
+ = *
+p
+++))
+
+406 iàÐ(
+c
+ >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') )
+
+408 ++
+Âum
+;
+
+409 ià(
+Âum
+ > 2)
+
+410  
+çl£
+;
+
+412 ià(
+c
+ == ':')
+
+414 
+Âum
+ = 0;
+
+417  
+çl£
+;
+
+422  
+Œue
+;
+
+423 
+	}
+}
+
+426 
+	$upd©e_»mÙe
+ (cÚ¡ * 
+ho¡
+,
+
+427 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+428 
+boÞ
+ *
+chªged
+,
+
+429 cÚ¡ 
+sockæags
+)
+
+431 
+addr
+->addr.
+§
+.
+§_çmžy
+)
+
+433 
+AF_INET
+:
+
+434 ià(
+ho¡
+ && 
+addr
+)
+
+436 cÚ¡ 
+š_addr_t
+ 
+Ãw_addr
+ = 
+	`g‘addr
+ (
+
+437 
+	`sf2gaf
+(
+GETADDR_RESOLVE
+|
+GETADDR_UPDATE_MANAGEMENT_STATE
+, 
+sockæags
+),
+
+438 
+ho¡
+,
+
+440 
+NULL
+,
+
+441 
+NULL
+);
+
+442 ià(
+Ãw_addr
+ && 
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+ !=‚ew_addr)
+
+444 
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+Ãw_addr
+;
+
+445 *
+chªged
+ = 
+Œue
+;
+
+449 
+AF_INET6
+:
+
+450 ià(
+ho¡
+ && 
+addr
+)
+
+452 
+¡©us
+;
+
+453 
+addršfo
+* 
+ai
+;
+
+455 
+¡©us
+ = 
+	`Ý’v²_g‘addršfo
+(
+	`sf2gaf
+(
+GETADDR_RESOLVE
+|
+GETADDR_UPDATE_MANAGEMENT_STATE
+, 
+sockæags
+), 
+ho¡
+, 1, 
+NULL
+, 
+AF_INET6
+, &
+ai
+);
+
+457 iàÐ
+¡©us
+ ==0 )
+
+459 
+sockaddr_š6
+ 
+sš6
+;
+
+460 
+	`CLEAR
+(
+sš6
+);
+
+461 
+sš6
+ = *((
+sockaddr_š6
+*)
+ai
+->
+ai_addr
+);
+
+462 ià(!
+	`IN6_ARE_ADDR_EQUAL
+(&
+sš6
+.
+sš6_addr
+, &
+addr
+->addr.
+š6
+.sin6_addr))
+
+464 
+pÜt
+ = 
+addr
+->addr.
+š6
+.
+sš6_pÜt
+;
+
+466 
+addr
+->addr.
+š6
+ = 
+sš6
+;
+
+467 
+addr
+->addr.
+š6
+.
+sš6_pÜt
+ = 
+pÜt
+;
+
+469 
+	`ä“addršfo
+(
+ai
+);
+
+474 
+	`ASSERT
+(0);
+
+476 
+	}
+}
+
+479 
+	$sock‘_g‘_¢dbuf
+ (
+sd
+)
+
+481 #ià
+	`defšed
+(
+HAVE_GETSOCKOPT
+è&& defšed(
+SOL_SOCKET
+è&& defšed(
+SO_SNDBUF
+)
+
+482 
+v®
+;
+
+483 
+sockËn_t
+ 
+Ën
+;
+
+485 
+Ën
+ =  (
+v®
+);
+
+486 ià(
+	`g‘sockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_SNDBUF
+, (*è&
+v®
+, &
+Ën
+) == 0
+
+487 && 
+Ën
+ =ð (
+v®
+))
+
+488  
+v®
+;
+
+491 
+	}
+}
+
+494 
+	$sock‘_£t_¢dbuf
+ (
+sd
+, 
+size
+)
+
+496 #ià
+	`defšed
+(
+HAVE_SETSOCKOPT
+è&& defšed(
+SOL_SOCKET
+è&& defšed(
+SO_SNDBUF
+)
+
+497 ià(
+size
+ > 0 && siz�< 
+SOCKET_SND_RCV_BUF_MAX
+)
+
+499 ià(
+	`£tsockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_SNDBUF
+, (*è&
+size
+,  (size)) != 0)
+
+501 
+	`msg
+ (
+M_WARN
+, "NOTE: s‘sockÝˆSO_SNDBUF=%d fažed", 
+size
+);
+
+505 
+	}
+}
+
+508 
+	$sock‘_g‘_rcvbuf
+ (
+sd
+)
+
+510 #ià
+	`defšed
+(
+HAVE_GETSOCKOPT
+è&& defšed(
+SOL_SOCKET
+è&& defšed(
+SO_RCVBUF
+)
+
+511 
+v®
+;
+
+512 
+sockËn_t
+ 
+Ën
+;
+
+514 
+Ën
+ =  (
+v®
+);
+
+515 ià(
+	`g‘sockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_RCVBUF
+, (*è&
+v®
+, &
+Ën
+) == 0
+
+516 && 
+Ën
+ =ð (
+v®
+))
+
+517  
+v®
+;
+
+520 
+	}
+}
+
+522 
+boÞ
+
+
+523 
+	$sock‘_£t_rcvbuf
+ (
+sd
+, 
+size
+)
+
+525 #ià
+	`defšed
+(
+HAVE_SETSOCKOPT
+è&& defšed(
+SOL_SOCKET
+è&& defšed(
+SO_RCVBUF
+)
+
+526 ià(
+size
+ > 0 && siz�< 
+SOCKET_SND_RCV_BUF_MAX
+)
+
+528 ià(
+	`£tsockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_RCVBUF
+, (*è&
+size
+,  (size)) != 0)
+
+530 
+	`msg
+ (
+M_WARN
+, "NOTE: s‘sockÝˆSO_RCVBUF=%d fažed", 
+size
+);
+
+531  
+çl£
+;
+
+534  
+Œue
+;
+
+536 
+	}
+}
+
+539 
+	$sock‘_£t_bufãrs
+ (
+fd
+, cÚ¡ 
+sock‘_bufãr_size
+ *
+sbs
+)
+
+541 ià(
+sbs
+)
+
+543 cÚ¡ 
+¢dbuf_Þd
+ = 
+	`sock‘_g‘_¢dbuf
+ (
+fd
+);
+
+544 cÚ¡ 
+rcvbuf_Þd
+ = 
+	`sock‘_g‘_rcvbuf
+ (
+fd
+);
+
+546 ià(
+sbs
+->
+¢dbuf
+)
+
+547 
+	`sock‘_£t_¢dbuf
+ (
+fd
+, 
+sbs
+->
+¢dbuf
+);
+
+549 ià(
+sbs
+->
+rcvbuf
+)
+
+550 
+	`sock‘_£t_rcvbuf
+ (
+fd
+, 
+sbs
+->
+rcvbuf
+);
+
+552 
+	`msg
+ (
+D_OSBUF
+, "Socket Buffers: R=[%d->%d] S=[%d->%d]",
+
+553 
+rcvbuf_Þd
+,
+
+554 
+	`sock‘_g‘_rcvbuf
+ (
+fd
+),
+
+555 
+¢dbuf_Þd
+,
+
+556 
+	`sock‘_g‘_¢dbuf
+ (
+fd
+));
+
+558 
+	}
+}
+
+564 
+boÞ
+
+
+565 
+	$sock‘_£t_tý_nod–ay
+ (
+sd
+, 
+¡©e
+)
+
+567 #ià
+	`defšed
+(
+WIN32
+è|| (defšed(
+HAVE_SETSOCKOPT
+è&& defšed(
+IPPROTO_TCP
+è&& defšed(
+TCP_NODELAY
+))
+
+568 ià(
+	`£tsockÝt
+ (
+sd
+, 
+IPPROTO_TCP
+, 
+TCP_NODELAY
+, (*è&
+¡©e
+,  (state)) != 0)
+
+570 
+	`msg
+ (
+M_WARN
+, "NOTE: s‘sockÝˆTCP_NODELAY=%d fažed", 
+¡©e
+);
+
+571  
+çl£
+;
+
+575 
+	`dmsg
+ (
+D_OSBUF
+, "Sock‘ fÏgs: TCP_NODELAY=%d sucûeded", 
+¡©e
+);
+
+576  
+Œue
+;
+
+579 
+	`msg
+ (
+M_WARN
+, "NOTE: s‘sockÝˆTCP_NODELAY=%d fažed (NØk”ÃÈsuµÜt)", 
+¡©e
+);
+
+580  
+çl£
+;
+
+582 
+	}
+}
+
+584 
+šlše
+ 
+
+585 
+	$sock‘_£t_m¬k
+ (
+sd
+, 
+m¬k
+)
+
+587 #ià
+	`defšed
+(
+TARGET_LINUX
+è&& 
+HAVE_DECL_SO_MARK
+
+
+588 ià(
+m¬k
+ && 
+	`£tsockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_MARK
+, &mark,  (mark)) != 0)
+
+589 
+	`msg
+ (
+M_WARN
+, "NOTE: s‘sockÝˆSO_MARK=%d fažed", 
+m¬k
+);
+
+591 
+	}
+}
+
+593 
+boÞ
+
+
+594 
+	$sock‘_£t_æags
+ (
+sd
+, 
+sockæags
+)
+
+596 ià(
+sockæags
+ & 
+SF_TCP_NODELAY
+)
+
+597  
+	`sock‘_£t_tý_nod–ay
+ (
+sd
+, 1);
+
+599  
+Œue
+;
+
+600 
+	}
+}
+
+602 
+boÞ
+
+
+603 
+	$lšk_sock‘_upd©e_æags
+ (
+lšk_sock‘
+ *
+ls
+, 
+sockæags
+)
+
+605 ià(
+ls
+ && 
+	`sock‘_defšed
+ (ls->
+sd
+))
+
+606  
+	`sock‘_£t_æags
+ (
+ls
+->
+sd
+,†s->
+sockæags
+ = sockflags);
+
+608  
+çl£
+;
+
+609 
+	}
+}
+
+612 
+	$lšk_sock‘_upd©e_bufãr_sizes
+ (
+lšk_sock‘
+ *
+ls
+, 
+rcvbuf
+, 
+¢dbuf
+)
+
+614 ià(
+ls
+ && 
+	`sock‘_defšed
+ (ls->
+sd
+))
+
+616 
+ls
+->
+sock‘_bufãr_sizes
+.
+¢dbuf
+ = sndbuf;
+
+617 
+ls
+->
+sock‘_bufãr_sizes
+.
+rcvbuf
+ =„cvbuf;
+
+618 
+	`sock‘_£t_bufãrs
+ (
+ls
+->
+sd
+, &ls->
+sock‘_bufãr_sizes
+);
+
+620 
+	}
+}
+
+627 
+sock‘_desü�tÜ_t
+
+
+628 
+	$ü—‹_sock‘_tý
+ (
+af
+)
+
+630 
+sock‘_desü�tÜ_t
+ 
+sd
+;
+
+632 ià((
+sd
+ = 
+	`sock‘
+ (
+af
+, 
+SOCK_STREAM
+, 
+IPPROTO_TCP
+)) < 0)
+
+633 
+	`msg
+ (
+M_ERR
+, "Cannot create TCP socket");
+
+635 #iâdeà
+WIN32
+
+
+638 
+Ú
+ = 1;
+
+639 ià(
+	`£tsockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_REUSEADDR
+,
+
+640 (*è&
+Ú
+,  (on)) < 0)
+
+641 
+	`msg
+ (
+M_ERR
+, "TCP: Cannot setsockopt SO_REUSEADDR on TCP socket");
+
+645  
+sd
+;
+
+646 
+	}
+}
+
+648 
+sock‘_desü�tÜ_t
+
+
+649 
+	$ü—‹_sock‘_udp
+ (cÚ¡ 
+æags
+)
+
+651 
+sock‘_desü�tÜ_t
+ 
+sd
+;
+
+653 ià((
+sd
+ = 
+	`sock‘
+ (
+PF_INET
+, 
+SOCK_DGRAM
+, 
+IPPROTO_UDP
+)) < 0)
+
+654 
+	`msg
+ (
+M_ERR
+, "UDP: Cannot create UDP socket");
+
+655 #ià
+ENABLE_IP_PKTINFO
+
+
+656 ià(
+æags
+ & 
+SF_USE_IP_PKTINFO
+)
+
+658 
+·d
+ = 1;
+
+659 #ifdeà
+IP_PKTINFO
+
+
+660 ià(
+	`£tsockÝt
+ (
+sd
+, 
+SOL_IP
+, 
+IP_PKTINFO
+,
+
+661 (*)&
+·d
+, (pad)) < 0)
+
+662 
+	`msg
+(
+M_ERR
+, "UDP: failed setsockopt for IP_PKTINFO");
+
+663 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+664 ià(
+	`£tsockÝt
+ (
+sd
+, 
+IPPROTO_IP
+, 
+IP_RECVDSTADDR
+,
+
+665 (*)&
+·d
+, (pad)) < 0)
+
+666 
+	`msg
+(
+M_ERR
+, "UDP: failed setsockopt for IP_RECVDSTADDR");
+
+668 #”rÜ 
+ENABLE_IP_PKTINFO
+ 
+is
+ 
+£t
+ 
+w™hout
+ 
+IP_PKTINFO
+ 
+xÜ
+ 
+	`IP_RECVDSTADDR
+ (
+fix
+ 
+sysh—d
+.
+h
+)
+
+672  
+sd
+;
+
+673 
+	}
+}
+
+675 
+sock‘_desü�tÜ_t
+
+
+676 
+	$ü—‹_sock‘_udp6
+ (cÚ¡ 
+æags
+)
+
+678 
+sock‘_desü�tÜ_t
+ 
+sd
+;
+
+680 ià((
+sd
+ = 
+	`sock‘
+ (
+PF_INET6
+, 
+SOCK_DGRAM
+, 
+IPPROTO_UDP
+)) < 0)
+
+681 
+	`msg
+ (
+M_ERR
+, "UDP: Cannot create UDP6 socket");
+
+682 #ià
+ENABLE_IP_PKTINFO
+
+
+683 ià(
+æags
+ & 
+SF_USE_IP_PKTINFO
+)
+
+685 
+·d
+ = 1;
+
+686 #iâdeà
+IPV6_RECVPKTINFO
+
+
+687 ià(
+	`£tsockÝt
+ (
+sd
+, 
+IPPROTO_IPV6
+, 
+IPV6_PKTINFO
+,
+
+688 (*)&
+·d
+, (pad)) < 0)
+
+690 ià(
+	`£tsockÝt
+ (
+sd
+, 
+IPPROTO_IPV6
+, 
+IPV6_RECVPKTINFO
+,
+
+691 (*)&
+·d
+, (pad)) < 0)
+
+693 
+	`msg
+(
+M_ERR
+, "UDP: failed setsockopt for IPV6_RECVPKTINFO");
+
+696  
+sd
+;
+
+697 
+	}
+}
+
+700 
+	$ü—‹_sock‘
+ (
+lšk_sock‘
+ *
+sock
+)
+
+703 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+705 
+sock
+->
+sd
+ = 
+	`ü—‹_sock‘_udp
+ (sock->
+sockæags
+);
+
+706 
+sock
+->
+sockæags
+ |ð
+SF_GETADDRINFO_DGRAM
+;
+
+708 #ifdeà
+ENABLE_SOCKS
+
+
+709 ià(
+sock
+->
+socks_´oxy
+)
+
+710 
+sock
+->
+ù¾_sd
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET
+);
+
+713 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+
+
+714 || 
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+)
+
+716 
+sock
+->
+sd
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET
+);
+
+718 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+
+
+719 || 
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_CLIENT
+)
+
+721 
+sock
+->
+sd
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET6
+);
+
+723 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv6
+)
+
+725 
+sock
+->
+sd
+ = 
+	`ü—‹_sock‘_udp6
+ (sock->
+sockæags
+);
+
+726 
+sock
+->
+sockæags
+ |ð
+SF_GETADDRINFO_DGRAM
+;
+
+730 
+	`ASSERT
+ (0);
+
+732 
+	}
+}
+
+739 
+	$sock‘_do_li¡’
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+740 cÚ¡ 
+Ý’v²_sockaddr
+ *
+loÿl
+,
+
+741 
+boÞ
+ 
+do_li¡’
+,
+
+742 
+boÞ
+ 
+do_£t_nÚblock
+)
+
+744 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+745 ià(
+do_li¡’
+)
+
+747 
+	`msg
+ (
+M_INFO
+, "Listening for incoming TCP connection on %s",
+
+748 
+	`´št_sockaddr
+ (
+loÿl
+, &
+gc
+));
+
+749 ià(
+	`li¡’
+ (
+sd
+, 1))
+
+750 
+	`msg
+ (
+M_ERR
+, "TCP:†isten() failed");
+
+754 ià(
+do_£t_nÚblock
+)
+
+755 
+	`£t_nÚblock
+ (
+sd
+);
+
+757 
+	`gc_ä“
+ (&
+gc
+);
+
+758 
+	}
+}
+
+760 
+sock‘_desü�tÜ_t
+
+
+761 
+	$sock‘_do_acû±
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+762 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+763 cÚ¡ 
+boÞ
+ 
+nowa™
+)
+
+769 
+sockËn_t
+ 
+»mÙe_Ën_af
+ = 
+	`af_addr_size
+(
+aù
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+);
+
+770 
+sockËn_t
+ 
+»mÙe_Ën
+ = (
+aù
+->
+de¡
+.
+addr
+);
+
+771 
+sock‘_desü�tÜ_t
+ 
+Ãw_sd
+ = 
+SOCKET_UNDEFINED
+;
+
+773 
+	`CLEAR
+ (*
+aù
+);
+
+775 #ifdeà
+HAVE_GETPEERNAME
+
+
+776 ià(
+nowa™
+)
+
+778 
+Ãw_sd
+ = 
+	`g‘³”Çme
+ (
+sd
+, &
+aù
+->
+de¡
+.
+addr
+.
+§
+, &
+»mÙe_Ën
+);
+
+780 ià(!
+	`sock‘_defšed
+ (
+Ãw_sd
+))
+
+781 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "TCP: getpeername() failed");
+
+783 
+Ãw_sd
+ = 
+sd
+;
+
+786 ià(
+nowa™
+)
+
+787 
+	`msg
+ (
+M_WARN
+, "TCP:�his OS does‚ot…rovide�he getpeername() function");
+
+791 
+Ãw_sd
+ = 
+	`acû±
+ (
+sd
+, &
+aù
+->
+de¡
+.
+addr
+.
+§
+, &
+»mÙe_Ën
+);
+
+796 
+foo
+ = 0;
+
+797 ++
+foo
+;
+
+798 ià(
+foo
+ & 1)
+
+799 
+Ãw_sd
+ = -1;
+
+803 ià(!
+	`sock‘_defšed
+ (
+Ãw_sd
+))
+
+805 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "TCP:‡cû±(%dèçžed", 
+sd
+);
+
+808 ià(
+»mÙe_Ën_af
+ && 
+»mÙe_Ën
+ !=„emote_len_af)
+
+810 
+	`msg
+ (
+D_LINK_ERRORS
+, "TCP: Reûived sŒªg�šcomšg cÚÃùiÚ w™h unknowÀadd»s Ëngth=%d", 
+»mÙe_Ën
+);
+
+811 
+	`Ý’v²_þo£_sock‘
+ (
+Ãw_sd
+);
+
+812 
+Ãw_sd
+ = 
+SOCKET_UNDEFINED
+;
+
+814  
+Ãw_sd
+;
+
+815 
+	}
+}
+
+818 
+	$tý_cÚÃùiÚ_e¡ablished
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+)
+
+820 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+821 
+	`msg
+ (
+M_INFO
+, "TCP connectionƒstablished with %s",
+
+822 
+	`´št_lšk_sock‘_aùu®
+ (
+aù
+, &
+gc
+));
+
+823 
+	`gc_ä“
+ (&
+gc
+);
+
+824 
+	}
+}
+
+827 
+	$sock‘_li¡’_acû±
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+828 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+829 cÚ¡ *
+»mÙe_dyÇmic
+,
+
+830 
+boÞ
+ *
+»mÙe_chªged
+,
+
+831 cÚ¡ 
+Ý’v²_sockaddr
+ *
+loÿl
+,
+
+832 
+boÞ
+ 
+do_li¡’
+,
+
+833 
+boÞ
+ 
+nowa™
+,
+
+834 vÞ©ž�*
+sigÇl_»ûived
+)
+
+836 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+838 
+Ý’v²_sockaddr
+ 
+»mÙe_v”ify
+ = 
+aù
+->
+de¡
+;
+
+839 
+Ãw_sd
+ = 
+SOCKET_UNDEFINED
+;
+
+841 
+	`CLEAR
+ (*
+aù
+);
+
+842 
+	`sock‘_do_li¡’
+ (
+sd
+, 
+loÿl
+, 
+do_li¡’
+, 
+Œue
+);
+
+844 
+Œue
+)
+
+846 
+¡©us
+;
+
+847 
+fd_£t
+ 
+»ads
+;
+
+848 
+timev®
+ 
+tv
+;
+
+850 
+	`FD_ZERO
+ (&
+»ads
+);
+
+851 
+	`FD_SET
+ (
+sd
+, &
+»ads
+);
+
+852 
+tv
+.
+tv_£c
+ = 0;
+
+853 
+tv
+.
+tv_u£c
+ = 0;
+
+855 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, &
+»ads
+, 
+NULL
+, NULL, &
+tv
+);
+
+857 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+858 ià(*
+sigÇl_»ûived
+)
+
+860 
+	`gc_ä“
+ (&
+gc
+);
+
+861  
+sd
+;
+
+864 ià(
+¡©us
+ < 0)
+
+865 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "TCP: select() failed");
+
+867 ià(
+¡©us
+ <= 0)
+
+869 
+	`Ý’v²_¦“p
+ (1);
+
+873 
+Ãw_sd
+ = 
+	`sock‘_do_acû±
+ (
+sd
+, 
+aù
+, 
+nowa™
+);
+
+875 ià(
+	`sock‘_defšed
+ (
+Ãw_sd
+))
+
+877 
+	`upd©e_»mÙe
+ (
+»mÙe_dyÇmic
+, &
+»mÙe_v”ify
+, 
+»mÙe_chªged
+, 0);
+
+878 ià(
+	`addr_defšed
+ (&
+»mÙe_v”ify
+)
+
+879 && !
+	`addr_m©ch
+ (&
+»mÙe_v”ify
+, &
+aù
+->
+de¡
+))
+
+881 
+	`msg
+ (
+M_WARN
+,
+
+883 
+	`´št_lšk_sock‘_aùu®
+ (
+aù
+, &
+gc
+));
+
+884 ià(
+	`Ý’v²_þo£_sock‘
+ (
+Ãw_sd
+))
+
+885 
+	`msg
+ (
+M_ERR
+, "TCP: close socket failed (new_sd)");
+
+890 
+	`Ý’v²_¦“p
+ (1);
+
+893 ià(!
+nowa™
+ && 
+	`Ý’v²_þo£_sock‘
+ (
+sd
+))
+
+894 
+	`msg
+ (
+M_ERR
+, "TCP: close socket failed (sd)");
+
+896 
+	`tý_cÚÃùiÚ_e¡ablished
+ (
+aù
+);
+
+898 
+	`gc_ä“
+ (&
+gc
+);
+
+899  
+Ãw_sd
+;
+
+900 
+	}
+}
+
+903 
+	$sock‘_bšd
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+904 
+Ý’v²_sockaddr
+ *
+loÿl
+,
+
+905 cÚ¡ *
+´efix
+)
+
+907 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+909 ià(
+	`bšd
+ (
+sd
+, &
+loÿl
+->
+addr
+.
+§
+, 
+	`af_addr_size
+Öoÿl->addr.§.
+§_çmžy
+)))
+
+911 cÚ¡ 
+”ºum
+ = 
+	`Ý’v²_”ºo
+ ();
+
+912 
+	`msg
+ (
+M_FATAL
+, "%s: Socket bind failed on†ocal‡ddress %s: %s",
+
+913 
+´efix
+,
+
+914 
+	`´št_sockaddr
+ (
+loÿl
+, &
+gc
+),
+
+915 
+	`¡»¼Ü_ts
+ (
+”ºum
+, &
+gc
+));
+
+917 
+	`gc_ä“
+ (&
+gc
+);
+
+918 
+	}
+}
+
+921 
+	$Ý’v²_cÚÃù
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+922 
+Ý’v²_sockaddr
+ *
+»mÙe
+,
+
+923 
+cÚÃù_timeout
+,
+
+924 vÞ©ž�*
+sigÇl_»ûived
+)
+
+926 
+¡©us
+ = 0;
+
+928 #ifdeà
+CONNECT_NONBLOCK
+
+
+929 
+	`£t_nÚblock
+ (
+sd
+);
+
+930 
+¡©us
+ = 
+	`cÚÃù
+ (
+sd
+, &
+»mÙe
+->
+addr
+.
+§
+, 
+	`af_addr_size
+ÔemÙe->addr.§.
+§_çmžy
+));
+
+931 ià(
+¡©us
+)
+
+932 
+¡©us
+ = 
+	`Ý’v²_”ºo
+ ();
+
+934 #ifdeà
+WIN32
+
+
+935 
+¡©us
+ =ð
+WSAEWOULDBLOCK
+
+
+937 
+¡©us
+ =ð
+EINPROGRESS
+
+
+941 
+Œue
+)
+
+943 
+fd_£t
+ 
+wr™es
+;
+
+944 
+timev®
+ 
+tv
+;
+
+946 
+	`FD_ZERO
+ (&
+wr™es
+);
+
+947 
+	`FD_SET
+ (
+sd
+, &
+wr™es
+);
+
+948 
+tv
+.
+tv_£c
+ = 0;
+
+949 
+tv
+.
+tv_u£c
+ = 0;
+
+951 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, 
+NULL
+, &
+wr™es
+, NULL, &
+tv
+);
+
+953 ià(
+sigÇl_»ûived
+)
+
+955 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+956 ià(*
+sigÇl_»ûived
+)
+
+958 
+¡©us
+ = 0;
+
+962 ià(
+¡©us
+ < 0)
+
+964 
+¡©us
+ = 
+	`Ý’v²_”ºo
+ ();
+
+967 ià(
+¡©us
+ <= 0)
+
+969 ià(--
+cÚÃù_timeout
+ < 0)
+
+971 
+¡©us
+ = 
+ETIMEDOUT
+;
+
+974 
+	`Ý’v²_¦“p
+ (1);
+
+980 
+v®
+ = 0;
+
+981 
+sockËn_t
+ 
+Ën
+;
+
+983 
+Ën
+ =  (
+v®
+);
+
+984 ià(
+	`g‘sockÝt
+ (
+sd
+, 
+SOL_SOCKET
+, 
+SO_ERROR
+, (*è&
+v®
+, &
+Ën
+) == 0
+
+985 && 
+Ën
+ =ð (
+v®
+))
+
+986 
+¡©us
+ = 
+v®
+;
+
+988 
+¡©us
+ = 
+	`Ý’v²_”ºo
+ ();
+
+994 
+¡©us
+ = 
+	`cÚÃù
+ (
+sd
+, &
+»mÙe
+->
+addr
+.
+§
+, 
+	`af_addr_size
+ÔemÙe->addr.§.
+§_çmžy
+));
+
+995 ià(
+¡©us
+)
+
+996 
+¡©us
+ = 
+	`Ý’v²_”ºo
+ ();
+
+999  
+¡©us
+;
+
+1000 
+	}
+}
+
+1003 
+	$sock‘_cÚÃù
+ (
+sock‘_desü�tÜ_t
+ *
+sd
+,
+
+1004 
+Ý’v²_sockaddr
+ *
+loÿl
+,
+
+1005 
+boÞ
+ 
+bšd_loÿl
+,
+
+1006 
+Ý’v²_sockaddr
+ *
+»mÙe
+,
+
+1007 cÚ¡ 
+boÞ
+ 
+cÚÃùiÚ_´ofžes_defšed
+,
+
+1008 cÚ¡ *
+»mÙe_dyÇmic
+,
+
+1009 
+boÞ
+ *
+»mÙe_chªged
+,
+
+1010 cÚ¡ 
+cÚÃù_»Œy_£cÚds
+,
+
+1011 cÚ¡ 
+cÚÃù_timeout
+,
+
+1012 cÚ¡ 
+cÚÃù_»Œy_max
+,
+
+1013 cÚ¡ 
+sockæags
+,
+
+1014 vÞ©ž�*
+sigÇl_»ûived
+)
+
+1016 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1017 
+»Œy
+ = 0;
+
+1019 #ifdeà
+CONNECT_NONBLOCK
+
+
+1020 
+	`msg
+ (
+M_INFO
+, "Attempting�oƒstablish TCP connection with %s [nonblock]",
+
+1021 
+	`´št_sockaddr
+ (
+»mÙe
+, &
+gc
+));
+
+1023 
+	`msg
+ (
+M_INFO
+, "Attempting�oƒstablish TCP connection with %s",
+
+1024 
+	`´št_sockaddr
+ (
+»mÙe
+, &
+gc
+));
+
+1027 
+Œue
+)
+
+1029 
+¡©us
+;
+
+1031 #ifdeà
+ENABLE_MANAGEMENT
+
+
+1032 ià(
+mªagem’t
+)
+
+1033 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+1034 
+OPENVPN_STATE_TCP_CONNECT
+,
+
+1035 
+NULL
+,
+
+1036 (
+š_addr_t
+)0,
+
+1037 (
+š_addr_t
+)0);
+
+1040 
+¡©us
+ = 
+	`Ý’v²_cÚÃù
+ (*
+sd
+, 
+»mÙe
+, 
+cÚÃù_timeout
+, 
+sigÇl_»ûived
+);
+
+1042 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+1043 ià(*
+sigÇl_»ûived
+)
+
+1044 
+dÚe
+;
+
+1046 ià(!
+¡©us
+)
+
+1049 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1051 
+	`´št_sockaddr
+ (
+»mÙe
+, &
+gc
+),
+
+1052 
+cÚÃù_»Œy_£cÚds
+,
+
+1053 
+	`¡»¼Ü_ts
+ (
+¡©us
+, &
+gc
+));
+
+1055 
+	`gc_»£t
+ (&
+gc
+);
+
+1057 
+	`Ý’v²_þo£_sock‘
+ (*
+sd
+);
+
+1058 *
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+1060 ià((
+cÚÃù_»Œy_max
+ > 0 && ++
+»Œy
+ >ðcÚÃù_»Œy_maxè|| 
+cÚÃùiÚ_´ofžes_defšed
+)
+
+1062 *
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+1063 
+dÚe
+;
+
+1066 
+	`Ý’v²_¦“p
+ (
+cÚÃù_»Œy_£cÚds
+);
+
+1068 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+1069 ià(*
+sigÇl_»ûived
+)
+
+1070 
+dÚe
+;
+
+1072 *
+sd
+ = 
+	`ü—‹_sock‘_tý
+ (
+loÿl
+->
+addr
+.
+§
+.
+§_çmžy
+);
+
+1074 ià(
+bšd_loÿl
+)
+
+1075 
+	`sock‘_bšd
+ (*
+sd
+, 
+loÿl
+, "TCP Client");
+
+1076 
+	`upd©e_»mÙe
+ (
+»mÙe_dyÇmic
+, 
+»mÙe
+, 
+»mÙe_chªged
+, 
+sockæags
+);
+
+1079 
+	`msg
+ (
+M_INFO
+, "TCP connectionƒstablished with %s",
+
+1080 
+	`´št_sockaddr
+ (
+»mÙe
+, &
+gc
+));
+
+1082 
+dÚe
+:
+
+1083 
+	`gc_ä“
+ (&
+gc
+);
+
+1084 
+	}
+}
+
+1090 
+	$sock‘_äame_š™
+ (cÚ¡ 
+äame
+ *äame, 
+lšk_sock‘
+ *
+sock
+)
+
+1092 #ifdeà
+WIN32
+
+
+1093 
+	`ov”Ïµed_io_š™
+ (&
+sock
+->
+»ads
+, 
+äame
+, 
+FALSE
+, 
+çl£
+);
+
+1094 
+	`ov”Ïµed_io_š™
+ (&
+sock
+->
+wr™es
+, 
+äame
+, 
+TRUE
+, 
+çl£
+);
+
+1095 
+sock
+->
+rw_hªdË
+.
+»ad
+ = sock->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+;
+
+1096 
+sock
+->
+rw_hªdË
+.
+wr™e
+ = sock->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+;
+
+1099 ià(
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+sock
+))
+
+1101 #ifdeà
+WIN32
+
+
+1102 
+	`¡»am_buf_š™
+ (&
+sock
+->
+¡»am_buf
+,
+
+1103 &
+sock
+->
+»ads
+.
+buf_š™
+,
+
+1104 
+sock
+->
+sockæags
+,
+
+1105 
+sock
+->
+šfo
+.
+´Ùo
+);
+
+1107 
+	`®loc_buf_sock_tun
+ (&
+sock
+->
+¡»am_buf_d©a
+,
+
+1108 
+äame
+,
+
+1109 
+çl£
+,
+
+1110 
+FRAME_HEADROOM_MARKER_READ_STREAM
+);
+
+1112 
+	`¡»am_buf_š™
+ (&
+sock
+->
+¡»am_buf
+,
+
+1113 &
+sock
+->
+¡»am_buf_d©a
+,
+
+1114 
+sock
+->
+sockæags
+,
+
+1115 
+sock
+->
+šfo
+.
+´Ùo
+);
+
+1118 
+	}
+}
+
+1125 
+	$äame_adju¡_·th_mtu
+ (
+äame
+ *äame, 
+pmtu
+, 
+´Ùo
+)
+
+1127 
+	`äame_£t_mtu_dyÇmic
+ (
+äame
+, 
+pmtu
+ - 
+	`d©ag¿m_ov”h—d
+ (
+´Ùo
+), 
+SET_MTU_UPPER_BOUND
+);
+
+1128 
+	}
+}
+
+1131 
+	$»sÞve_bšd_loÿl
+ (
+lšk_sock‘
+ *
+sock
+)
+
+1133 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1136 ià(!
+	`addr_defšed
+ (&
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+))
+
+1139 
+	`addr_guess_çmžy
+(
+sock
+->
+šfo
+.
+´Ùo
+, sock->
+loÿl_ho¡
+))
+
+1141 
+AF_INET
+:
+
+1142 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+1143 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ =
+
+1144 (
+sock
+->
+loÿl_ho¡
+ ? 
+	`g‘addr
+ (
+GETADDR_RESOLVE
+ | 
+GETADDR_WARN_ON_SIGNAL
+ | 
+GETADDR_FATAL
+,
+
+1145 
+sock
+->
+loÿl_ho¡
+,
+
+1147 
+NULL
+,
+
+1148 
+NULL
+)
+
+1149 : 
+	`htÚl
+ (
+INADDR_ANY
+));
+
+1150 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (sock->
+loÿl_pÜt
+);
+
+1152 
+AF_INET6
+:
+
+1154 
+¡©us
+;
+
+1155 
+	`CLEAR
+(
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š6
+);
+
+1156 ià(
+sock
+->
+loÿl_ho¡
+)
+
+1158 
+addršfo
+ *
+ai
+;
+
+1160 
+¡©us
+ = 
+	`Ý’v²_g‘addršfo
+(
+GETADDR_RESOLVE
+ | 
+GETADDR_WARN_ON_SIGNAL
+ | 
+GETADDR_FATAL
+,
+
+1161 
+sock
+->
+loÿl_ho¡
+, 0, 
+NULL
+, 
+AF_INET6
+, &
+ai
+);
+
+1162 if(
+¡©us
+ ==0) {
+
+1163 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š6
+ = *((
+sockaddr_š6
+*)(
+ai
+->
+ai_addr
+));
+
+1164 
+	`ä“addršfo
+(
+ai
+);
+
+1169 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š6
+.
+sš6_çmžy
+ = 
+AF_INET6
+;
+
+1170 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š6
+.
+sš6_addr
+ = 
+š6addr_ªy
+;
+
+1171 
+¡©us
+ = 0;
+
+1173 ià(!
+¡©us
+ == 0)
+
+1175 
+	`msg
+ (
+M_FATAL
+, "getaddr6() failed for†ocal \"%s\": %s",
+
+1176 
+sock
+->
+loÿl_ho¡
+,
+
+1177 
+	`gai_¡»¼Ü
+(
+¡©us
+));
+
+1179 
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+š6
+.
+sš6_pÜt
+ = 
+	`htÚs
+ (sock->
+loÿl_pÜt
+);
+
+1186 ià(
+sock
+->
+bšd_loÿl
+)
+
+1188 #ifdeà
+ENABLE_SOCKS
+
+
+1189 ià(
+sock
+->
+socks_´oxy
+ && sock->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+1190 
+	`sock‘_bšd
+ (
+sock
+->
+ù¾_sd
+, &sock->
+šfo
+.
+l§
+->
+loÿl
+, "SOCKS");
+
+1193 
+	`sock‘_bšd
+ (
+sock
+->
+sd
+, &sock->
+šfo
+.
+l§
+->
+loÿl
+, "TCP/UDP");
+
+1195 
+	`gc_ä“
+ (&
+gc
+);
+
+1196 
+	}
+}
+
+1199 
+	$»sÞve_»mÙe
+ (
+lšk_sock‘
+ *
+sock
+,
+
+1200 
+pha£
+,
+
+1201 cÚ¡ **
+»mÙe_dyÇmic
+,
+
+1202 vÞ©ž�*
+sigÇl_»ûived
+)
+
+1204 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1205 
+af
+;
+
+1207 ià(!
+sock
+->
+did_»sÞve_»mÙe
+)
+
+1210 ià(!
+	`addr_defšed
+ (&
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+))
+
+1212 
+af
+ = 
+	`addr_guess_çmžy
+(
+sock
+->
+šfo
+.
+´Ùo
+, sock->
+»mÙe_ho¡
+);
+
+1213 
+af
+)
+
+1215 
+AF_INET
+:
+
+1216 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+1217 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 0;
+
+1219 
+AF_INET6
+:
+
+1220 
+	`CLEAR
+(
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š6
+);
+
+1221 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š6
+.
+sš6_çmžy
+ = 
+AF_INET6
+;
+
+1222 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š6
+.
+sš6_addr
+ = 
+š6addr_ªy
+;
+
+1226 ià(
+sock
+->
+»mÙe_ho¡
+)
+
+1228 
+æags
+ = 
+	`sf2gaf
+(
+GETADDR_RESOLVE
+|
+GETADDR_UPDATE_MANAGEMENT_STATE
+, 
+sock
+->
+sockæags
+);
+
+1229 
+»Œy
+ = 0;
+
+1230 
+¡©us
+ = -1;
+
+1231 
+addršfo
+* 
+ai
+;
+
+1233 ià(
+sock
+->
+cÚÃùiÚ_´ofžes_defšed
+ && sock->
+»sÞve_»Œy_£cÚds
+ =ð
+RESOLV_RETRY_INFINITE
+)
+
+1235 ià(
+pha£
+ == 2)
+
+1236 
+æags
+ |ð(
+GETADDR_TRY_ONCE
+ | 
+GETADDR_FATAL
+);
+
+1237 
+»Œy
+ = 0;
+
+1239 ià(
+pha£
+ == 1)
+
+1241 ià(
+sock
+->
+»sÞve_»Œy_£cÚds
+)
+
+1243 
+»Œy
+ = 0;
+
+1247 
+æags
+ |ð(
+GETADDR_FATAL
+ | 
+GETADDR_MENTION_RESOLVE_RETRY
+);
+
+1248 
+»Œy
+ = 0;
+
+1251 ià(
+pha£
+ == 2)
+
+1253 ià(
+sock
+->
+»sÞve_»Œy_£cÚds
+)
+
+1255 
+æags
+ |ð
+GETADDR_FATAL
+;
+
+1256 
+»Œy
+ = 
+sock
+->
+»sÞve_»Œy_£cÚds
+;
+
+1260 
+	`ASSERT
+ (0);
+
+1265 
+	`ASSERT
+ (0);
+
+1269 
+¡©us
+ = 
+	`Ý’v²_g‘addršfo
+(
+æags
+, 
+sock
+->
+»mÙe_ho¡
+, 
+»Œy
+,
+
+1270 
+sigÇl_»ûived
+, 
+af
+, &
+ai
+);
+
+1271 if(
+¡©us
+ == 0) {
+
+1272 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š6
+ = *((
+sockaddr_š6
+*)(
+ai
+->
+ai_addr
+));
+
+1273 
+	`ä“addršfo
+(
+ai
+);
+
+1275 
+	`dmsg
+ (
+D_SOCKET_DEBUG
+, "RESOLVE_REMOTE flags=0x%04x…hase=%d„rs=%d sig=%d status=%d",
+
+1276 
+æags
+,
+
+1277 
+pha£
+,
+
+1278 
+»Œy
+,
+
+1279 
+sigÇl_»ûived
+ ? *signal_received : -1,
+
+1280 
+¡©us
+);
+
+1282 ià(
+sigÇl_»ûived
+)
+
+1284 ià(*
+sigÇl_»ûived
+)
+
+1285 
+dÚe
+;
+
+1287 ià(
+¡©us
+!=0)
+
+1289 ià(
+sigÇl_»ûived
+)
+
+1290 *
+sigÇl_»ûived
+ = 
+SIGUSR1
+;
+
+1291 
+dÚe
+;
+
+1294 
+af
+)
+
+1296 
+AF_INET
+:
+
+1297 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (sock->
+»mÙe_pÜt
+);
+
+1299 
+AF_INET6
+:
+
+1300 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+š6
+.
+sš6_pÜt
+ = 
+	`htÚs
+ (sock->
+»mÙe_pÜt
+);
+
+1306 ià(
+	`lšk_sock‘_aùu®_defšed
+ (&
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+))
+
+1308 
+	`msg
+ (
+M_INFO
+, "TCP/UDP: Preserving„ecently used„emote‡ddress: %s",
+
+1309 
+	`´št_lšk_sock‘_aùu®
+ (&
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+, &
+gc
+));
+
+1310 ià(
+»mÙe_dyÇmic
+)
+
+1311 *
+»mÙe_dyÇmic
+ = 
+NULL
+;
+
+1315 
+	`CLEAR
+ (
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+);
+
+1316 
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+ = sock->šfo.l§->
+»mÙe
+;
+
+1320 
+sock
+->
+did_»sÞve_»mÙe
+ = 
+Œue
+;
+
+1323 
+dÚe
+:
+
+1324 
+	`gc_ä“
+ (&
+gc
+);
+
+1325 
+	}
+}
+
+1327 
+lšk_sock‘
+ *
+
+1328 
+	$lšk_sock‘_Ãw
+ ()
+
+1330 
+lšk_sock‘
+ *
+sock
+;
+
+1332 
+	`ALLOC_OBJ_CLEAR
+ (
+sock
+, 
+lšk_sock‘
+);
+
+1333 
+sock
+->
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+1334 #ifdeà
+ENABLE_SOCKS
+
+
+1335 
+sock
+->
+ù¾_sd
+ = 
+SOCKET_UNDEFINED
+;
+
+1337  
+sock
+;
+
+1338 
+	}
+}
+
+1342 
+lšk_sock‘_š™_pha£1
+ (
+lšk_sock‘
+ *
+sock
+,
+
+1343 cÚ¡ 
+boÞ
+ 
+cÚÃùiÚ_´ofžes_defšed
+,
+
+1344 cÚ¡ *
+loÿl_ho¡
+,
+
+1345 
+loÿl_pÜt
+,
+
+1346 cÚ¡ *
+»mÙe_ho¡
+,
+
+1347 
+»mÙe_pÜt
+,
+
+1348 
+´Ùo
+,
+
+1349 
+mode
+,
+
+1350 cÚ¡ 
+lšk_sock‘
+ *
+acû±_äom
+,
+
+1351 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1352 
+h‰p_´oxy_šfo
+ *
+h‰p_´oxy
+,
+
+1354 #ifdeà
+ENABLE_SOCKS
+
+
+1355 
+socks_´oxy_šfo
+ *
+socks_´oxy
+,
+
+1357 #ifdeà
+ENABLE_DEBUG
+
+
+1358 
+g»mlš
+,
+
+1360 
+boÞ
+ 
+bšd_loÿl
+,
+
+1361 
+boÞ
+ 
+»mÙe_æßt
+,
+
+1362 
+š‘d
+,
+
+1363 
+lšk_sock‘_addr
+ *
+l§
+,
+
+1364 cÚ¡ *
+�chªge_commªd
+,
+
+1365 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+1366 
+»sÞve_»Œy_£cÚds
+,
+
+1367 
+cÚÃù_»Œy_£cÚds
+,
+
+1368 
+cÚÃù_timeout
+,
+
+1369 
+cÚÃù_»Œy_max
+,
+
+1370 
+mtu_discov”_ty³
+,
+
+1371 
+rcvbuf
+,
+
+1372 
+¢dbuf
+,
+
+1373 
+m¬k
+,
+
+1374 
+sockæags
+)
+
+1376 
+ASSERT
+ (
+sock
+);
+
+1378 
+	gsock
+->
+	gcÚÃùiÚ_´ofžes_defšed
+ = 
+cÚÃùiÚ_´ofžes_defšed
+;
+
+1380 
+	gsock
+->
+	gloÿl_ho¡
+ = 
+loÿl_ho¡
+;
+
+1381 
+	gsock
+->
+	gloÿl_pÜt
+ = 
+loÿl_pÜt
+;
+
+1382 
+	gsock
+->
+	g»mÙe_ho¡
+ = 
+»mÙe_ho¡
+;
+
+1383 
+	gsock
+->
+	g»mÙe_pÜt
+ = 
+»mÙe_pÜt
+;
+
+1385 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1386 
+	gsock
+->
+	gh‰p_´oxy
+ = 
+h‰p_´oxy
+;
+
+1389 #ifdeà
+ENABLE_SOCKS
+
+
+1390 
+	gsock
+->
+	gsocks_´oxy
+ = 
+socks_´oxy
+;
+
+1393 
+	gsock
+->
+	gbšd_loÿl
+ = 
+bšd_loÿl
+;
+
+1394 
+	gsock
+->
+	gš‘d
+ = 
+š‘d
+;
+
+1395 
+	gsock
+->
+	g»sÞve_»Œy_£cÚds
+ = 
+»sÞve_»Œy_£cÚds
+;
+
+1396 
+	gsock
+->
+	gcÚÃù_»Œy_£cÚds
+ = 
+cÚÃù_»Œy_£cÚds
+;
+
+1397 
+	gsock
+->
+	gcÚÃù_timeout
+ = 
+cÚÃù_timeout
+;
+
+1398 
+	gsock
+->
+	gcÚÃù_»Œy_max
+ = 
+cÚÃù_»Œy_max
+;
+
+1399 
+	gsock
+->
+	gmtu_discov”_ty³
+ = 
+mtu_discov”_ty³
+;
+
+1401 #ifdeà
+ENABLE_DEBUG
+
+
+1402 
+	gsock
+->
+	gg»mlš
+ = 
+g»mlš
+;
+
+1405 
+	gsock
+->
+	gsock‘_bufãr_sizes
+.
+	grcvbuf
+ = 
+rcvbuf
+;
+
+1406 
+	gsock
+->
+	gsock‘_bufãr_sizes
+.
+	g¢dbuf
+ = 
+¢dbuf
+;
+
+1408 
+	gsock
+->
+	gsockæags
+ = 
+sockæags
+;
+
+1410 
+	gsock
+->
+	gšfo
+.
+	g´Ùo
+ = 
+´Ùo
+;
+
+1411 
+	gsock
+->
+	gšfo
+.
+	g»mÙe_æßt
+ = 
+»mÙe_æßt
+;
+
+1412 
+	gsock
+->
+	gšfo
+.
+	gl§
+ = 
+l§
+;
+
+1413 
+	gsock
+->
+	gšfo
+.
+	g�chªge_commªd
+ = 
+�chªge_commªd
+;
+
+1414 
+	gsock
+->
+	gšfo
+.
+	g¶ugšs
+ = 
+¶ugšs
+;
+
+1416 
+	gsock
+->
+	gmode
+ = 
+mode
+;
+
+1417 ià(
+	gmode
+ =ð
+LS_MODE_TCP_ACCEPT_FROM
+)
+
+1419 
+ASSERT
+ (
+acû±_äom
+);
+
+1420 
+ASSERT
+ (
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+
+
+1421 || 
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+
+
+1423 
+ASSERT
+ (!
+sock
+->
+š‘d
+);
+
+1424 
+	gsock
+->
+	gsd
+ = 
+acû±_äom
+->
+sd
+;
+
+1427 ià(
+	gçl£
+)
+
+1429 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1431 ià(
+	gsock
+->
+	gh‰p_´oxy
+)
+
+1433 
+ASSERT
+ (
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+);
+
+1434 
+ASSERT
+ (!
+sock
+->
+š‘d
+);
+
+1437 
+	gsock
+->
+	g»mÙe_ho¡
+ = 
+h‰p_´oxy
+->
+ÝtiÚs
+.
+£rv”
+;
+
+1438 
+	gsock
+->
+	g»mÙe_pÜt
+ = 
+h‰p_´oxy
+->
+ÝtiÚs
+.
+pÜt
+;
+
+1441 
+	gsock
+->
+	g´oxy_de¡_ho¡
+ = 
+»mÙe_ho¡
+;
+
+1442 
+	gsock
+->
+	g´oxy_de¡_pÜt
+ = 
+»mÙe_pÜt
+;
+
+1445 #ifdeà
+ENABLE_SOCKS
+
+
+1447 ià(
+	gsock
+->
+	gsocks_´oxy
+)
+
+1449 
+ASSERT
+ (
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+ || sock->šfo.´ÙØ=ð
+PROTO_UDPv4
+);
+
+1450 
+ASSERT
+ (!
+sock
+->
+š‘d
+);
+
+1453 
+	gsock
+->
+	g»mÙe_ho¡
+ = 
+socks_´oxy
+->
+£rv”
+;
+
+1454 
+	gsock
+->
+	g»mÙe_pÜt
+ = 
+socks_´oxy
+->
+pÜt
+;
+
+1457 
+	gsock
+->
+	g´oxy_de¡_ho¡
+ = 
+»mÙe_ho¡
+;
+
+1458 
+	gsock
+->
+	g´oxy_de¡_pÜt
+ = 
+»mÙe_pÜt
+;
+
+1463 
+	gsock
+->
+	g»mÙe_ho¡
+ = 
+»mÙe_ho¡
+;
+
+1464 
+	gsock
+->
+	g»mÙe_pÜt
+ = 
+»mÙe_pÜt
+;
+
+1468 ià(
+	gsock
+->
+	gšfo
+.
+	g´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+)
+
+1470 ià(
+sock
+->
+mode
+ =ð
+LS_MODE_TCP_ACCEPT_FROM
+)
+
+1471 
+sock
+->
+bšd_loÿl
+ = 
+çl£
+;
+
+1473 
+	gsock
+->
+	gbšd_loÿl
+ = 
+Œue
+;
+
+1477 ià(
+	gsock
+->
+	gš‘d
+)
+
+1479 
+ASSERT
+ (
+sock
+->
+šfo
+.
+´Ùo
+ !ð
+PROTO_TCPv4_CLIENT
+
+
+1480 && 
+sock
+->
+šfo
+.
+´Ùo
+ !ð
+PROTO_TCPv6_CLIENT
+);
+
+1481 
+ASSERT
+ (
+sock‘_defšed
+ (
+š‘d_sock‘_desü�tÜ
+));
+
+1482 
+	gsock
+->
+	gsd
+ = 
+š‘d_sock‘_desü�tÜ
+;
+
+1484 ià(
+	gmode
+ !ð
+LS_MODE_TCP_ACCEPT_FROM
+)
+
+1486 
+ü—‹_sock‘
+ (
+sock
+);
+
+1489 
+sock‘_£t_bufãrs
+ (
+sock
+->
+sd
+, &sock->
+sock‘_bufãr_sizes
+);
+
+1492 
+sock‘_£t_m¬k
+ (
+sock
+->
+sd
+, 
+m¬k
+);
+
+1494 
+»sÞve_bšd_loÿl
+ (
+sock
+);
+
+1495 
+»sÞve_»mÙe
+ (
+sock
+, 1, 
+NULL
+, NULL);
+
+1501 
+	$lšk_sock‘_š™_pha£2
+ (
+lšk_sock‘
+ *
+sock
+,
+
+1502 cÚ¡ 
+äame
+ *frame,
+
+1503 vÞ©ž�*
+sigÇl_»ûived
+)
+
+1505 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1506 cÚ¡ *
+»mÙe_dyÇmic
+ = 
+NULL
+;
+
+1507 
+boÞ
+ 
+»mÙe_chªged
+ = 
+çl£
+;
+
+1508 
+sig_§ve
+ = 0;
+
+1510 
+	`ASSERT
+ (
+sock
+);
+
+1512 ià(
+sigÇl_»ûived
+ && *signal_received)
+
+1514 
+sig_§ve
+ = *
+sigÇl_»ûived
+;
+
+1515 *
+sigÇl_»ûived
+ = 0;
+
+1519 
+	`sock‘_äame_š™
+ (
+äame
+, 
+sock
+);
+
+1526 ià(
+sock
+->
+»sÞve_»Œy_£cÚds
+)
+
+1527 
+»mÙe_dyÇmic
+ = 
+sock
+->
+»mÙe_ho¡
+;
+
+1530 ià(
+sock
+->
+š‘d
+)
+
+1532 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+
+
+1533 || 
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+) {
+
+1535 
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+ = 
+AF_INET
+;
+
+1536 #ifdeà
+HAVE_GETSOCKNAME
+
+
+1539 
+Ý’v²_sockaddr
+ 
+loÿl_addr
+;
+
+1540 
+sockËn_t
+ 
+add¾’
+ = (
+loÿl_addr
+);
+
+1541 ià(
+	`g‘sockÇme
+ (
+sock
+->
+sd
+, (
+sockaddr
+ *)&
+loÿl_addr
+, &
+add¾’
+) == 0) {
+
+1542 
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+ = 
+loÿl_addr
+.addr.sa.sa_family;
+
+1543 
+	`dmsg
+ (
+D_SOCKET_DEBUG
+, "inetd(%s): using sa_family=%d from getsockname(%d)",
+
+1544 
+	`´Ùo2ascii
+(
+sock
+->
+šfo
+.
+´Ùo
+, 
+çl£
+), 
+loÿl_addr
+.
+addr
+.
+§
+.
+§_çmžy
+,
+
+1545 
+sock
+->
+sd
+);
+
+1547 
+	`msg
+ (
+M_WARN
+, "inetd(%s): getsockname(%d) failed, using AF_INET",
+
+1548 
+	`´Ùo2ascii
+(
+sock
+->
+šfo
+.
+´Ùo
+, 
+çl£
+), sock->
+sd
+);
+
+1551 
+	`msg
+ (
+M_WARN
+, "inetd(%s):�his OS does‚ot…rovide�he getsockname() "
+
+1553 
+	`´Ùo2ascii
+(
+sock
+->
+šfo
+.
+´Ùo
+, 
+çl£
+));
+
+1555 
+sock
+->
+sd
+ =
+
+1556 
+	`sock‘_li¡’_acû±
+ (
+sock
+->
+sd
+,
+
+1557 &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+,
+
+1558 
+»mÙe_dyÇmic
+,
+
+1559 &
+»mÙe_chªged
+,
+
+1560 &
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+,
+
+1561 
+çl£
+,
+
+1562 
+sock
+->
+š‘d
+ =ð
+INETD_NOWAIT
+,
+
+1563 
+sigÇl_»ûived
+);
+
+1565 
+	`ASSERT
+ (!
+»mÙe_chªged
+);
+
+1566 ià(*
+sigÇl_»ûived
+)
+
+1567 
+dÚe
+;
+
+1571 
+	`»sÞve_»mÙe
+ (
+sock
+, 2, &
+»mÙe_dyÇmic
+, 
+sigÇl_»ûived
+);
+
+1573 ià(*
+sigÇl_»ûived
+)
+
+1574 
+dÚe
+;
+
+1577 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+
+
+1578 ||
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_SERVER
+)
+
+1580 
+sock
+->
+mode
+)
+
+1582 
+LS_MODE_DEFAULT
+:
+
+1583 
+sock
+->
+sd
+ = 
+	`sock‘_li¡’_acû±
+ (sock->sd,
+
+1584 &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+,
+
+1585 
+»mÙe_dyÇmic
+,
+
+1586 &
+»mÙe_chªged
+,
+
+1587 &
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+,
+
+1588 
+Œue
+,
+
+1589 
+çl£
+,
+
+1590 
+sigÇl_»ûived
+);
+
+1592 
+LS_MODE_TCP_LISTEN
+:
+
+1593 
+	`sock‘_do_li¡’
+ (
+sock
+->
+sd
+,
+
+1594 &
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+,
+
+1595 
+Œue
+,
+
+1596 
+çl£
+);
+
+1598 
+LS_MODE_TCP_ACCEPT_FROM
+:
+
+1599 
+sock
+->
+sd
+ = 
+	`sock‘_do_acû±
+ (sock->sd,
+
+1600 &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+,
+
+1601 
+çl£
+);
+
+1602 ià(!
+	`sock‘_defšed
+ (
+sock
+->
+sd
+))
+
+1604 *
+sigÇl_»ûived
+ = 
+SIGTERM
+;
+
+1605 
+dÚe
+;
+
+1607 
+	`tý_cÚÃùiÚ_e¡ablished
+ (&
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+);
+
+1610 
+	`ASSERT
+ (0);
+
+1613 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv4_CLIENT
+
+
+1614 ||
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_TCPv6_CLIENT
+)
+
+1617 #ifdeà
+GENERAL_PROXY_SUPPORT
+
+
+1618 
+boÞ
+ 
+´oxy_»Œy
+ = 
+çl£
+;
+
+1620 cÚ¡ 
+boÞ
+ 
+´oxy_»Œy
+ = 
+çl£
+;
+
+1623 
+	`sock‘_cÚÃù
+ (&
+sock
+->
+sd
+,
+
+1624 &
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+,
+
+1625 
+sock
+->
+bšd_loÿl
+,
+
+1626 &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+,
+
+1627 
+sock
+->
+cÚÃùiÚ_´ofžes_defšed
+,
+
+1628 
+»mÙe_dyÇmic
+,
+
+1629 &
+»mÙe_chªged
+,
+
+1630 
+sock
+->
+cÚÃù_»Œy_£cÚds
+,
+
+1631 
+sock
+->
+cÚÃù_timeout
+,
+
+1632 
+sock
+->
+cÚÃù_»Œy_max
+,
+
+1633 
+sock
+->
+sockæags
+,
+
+1634 
+sigÇl_»ûived
+);
+
+1636 ià(*
+sigÇl_»ûived
+)
+
+1637 
+dÚe
+;
+
+1639 ià(
+çl£
+)
+
+1641 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+1642 ià(
+sock
+->
+h‰p_´oxy
+)
+
+1644 
+´oxy_»Œy
+ = 
+	`e¡ablish_h‰p_´oxy_·s¡hru
+ (
+sock
+->
+h‰p_´oxy
+,
+
+1645 
+sock
+->
+sd
+,
+
+1646 
+sock
+->
+´oxy_de¡_ho¡
+,
+
+1647 
+sock
+->
+´oxy_de¡_pÜt
+,
+
+1648 &
+sock
+->
+¡»am_buf
+.
+»sidu®
+,
+
+1649 
+sigÇl_»ûived
+);
+
+1652 #ifdeà
+ENABLE_SOCKS
+
+
+1653 ià(
+sock
+->
+socks_´oxy
+)
+
+1655 
+	`e¡ablish_socks_´oxy_·s¡hru
+ (
+sock
+->
+socks_´oxy
+,
+
+1656 
+sock
+->
+sd
+,
+
+1657 
+sock
+->
+´oxy_de¡_ho¡
+,
+
+1658 
+sock
+->
+´oxy_de¡_pÜt
+,
+
+1659 
+sigÇl_»ûived
+);
+
+1662 ià(
+´oxy_»Œy
+)
+
+1664 
+	`Ý’v²_þo£_sock‘
+ (
+sock
+->
+sd
+);
+
+1665 
+sock
+->
+sd
+ = 
+	`ü—‹_sock‘_tý
+ (
+AF_INET
+);
+
+1667 } 
+´oxy_»Œy
+);
+
+1669 #ifdeà
+ENABLE_SOCKS
+
+
+1670 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv4
+ && sock->
+socks_´oxy
+)
+
+1672 
+	`sock‘_cÚÃù
+ (&
+sock
+->
+ù¾_sd
+,
+
+1673 &
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+,
+
+1674 
+sock
+->
+bšd_loÿl
+,
+
+1675 &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+,
+
+1676 
+sock
+->
+cÚÃùiÚ_´ofžes_defšed
+,
+
+1677 
+»mÙe_dyÇmic
+,
+
+1678 &
+»mÙe_chªged
+,
+
+1679 
+sock
+->
+cÚÃù_»Œy_£cÚds
+,
+
+1680 
+sock
+->
+cÚÃù_timeout
+,
+
+1681 
+sock
+->
+cÚÃù_»Œy_max
+,
+
+1682 
+sock
+->
+sockæags
+,
+
+1683 
+sigÇl_»ûived
+);
+
+1685 ià(*
+sigÇl_»ûived
+)
+
+1686 
+dÚe
+;
+
+1688 
+	`e¡ablish_socks_´oxy_ud·ssoc
+ (
+sock
+->
+socks_´oxy
+,
+
+1689 
+sock
+->
+ù¾_sd
+,
+
+1690 
+sock
+->
+sd
+,
+
+1691 &
+sock
+->
+socks_»Ïy
+.
+de¡
+,
+
+1692 
+sigÇl_»ûived
+);
+
+1694 ià(*
+sigÇl_»ûived
+)
+
+1695 
+dÚe
+;
+
+1697 
+sock
+->
+»mÙe_ho¡
+ = sock->
+´oxy_de¡_ho¡
+;
+
+1698 
+sock
+->
+»mÙe_pÜt
+ = sock->
+´oxy_de¡_pÜt
+;
+
+1699 
+sock
+->
+did_»sÞve_»mÙe
+ = 
+çl£
+;
+
+1701 
+	`addr_z”o_ho¡
+(&
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.
+de¡
+);
+
+1702 
+	`addr_z”o_ho¡
+(&
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+);
+
+1704 
+	`»sÞve_»mÙe
+ (
+sock
+, 1, 
+NULL
+, 
+sigÇl_»ûived
+);
+
+1706 ià(*
+sigÇl_»ûived
+)
+
+1707 
+dÚe
+;
+
+1711 ià(*
+sigÇl_»ûived
+)
+
+1712 
+dÚe
+;
+
+1714 ià(
+»mÙe_chªged
+)
+
+1716 
+	`msg
+ (
+M_INFO
+, "TCP/UDP: Dynamic„emote‡ddress changed during TCP connectionƒstablishment");
+
+1717 
+	`addr_cÝy_ho¡
+(&
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+, &sock->šfo.l§->
+aùu®
+.
+de¡
+);
+
+1722 
+	`sock‘_£t_æags
+ (
+sock
+->
+sd
+, sock->
+sockæags
+);
+
+1725 
+	`£t_nÚblock
+ (
+sock
+->
+sd
+);
+
+1729 
+	`£t_þÛxec
+ (
+sock
+->
+sd
+);
+
+1731 #ifdeà
+ENABLE_SOCKS
+
+
+1732 ià(
+	`sock‘_defšed
+ (
+sock
+->
+ù¾_sd
+))
+
+1733 
+	`£t_þÛxec
+ (
+sock
+->
+ù¾_sd
+);
+
+1737 
+	`£t_mtu_discov”_ty³
+ (
+sock
+->
+sd
+, sock->
+mtu_discov”_ty³
+);
+
+1739 #ià
+EXTENDED_SOCKET_ERROR_CAPABILITY
+
+
+1741 
+	`£t_sock_ex‹nded_”rÜ_·ssšg
+ (
+sock
+->
+sd
+);
+
+1746 cÚ¡ 
+msgËv–
+ = (
+sock
+->
+mode
+ =ð
+LS_MODE_TCP_ACCEPT_FROM
+è? 
+D_INIT_MEDIUM
+ : 
+M_INFO
+;
+
+1748 ià(
+sock
+->
+š‘d
+)
+
+1749 
+	`msg
+ (
+msgËv–
+, "% lšk†oÿl: [š‘d]", 
+	`´Ùo2ascii
+ (
+sock
+->
+šfo
+.
+´Ùo
+, 
+Œue
+));
+
+1751 
+	`msg
+ (
+msgËv–
+, "%s†ink†ocal%s: %s",
+
+1752 
+	`´Ùo2ascii
+ (
+sock
+->
+šfo
+.
+´Ùo
+, 
+Œue
+),
+
+1753 (
+sock
+->
+bšd_loÿl
+ ? " (bound)" : ""),
+
+1754 
+	`´št_sockaddr_ex
+ (&
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+, ":", sock->
+bšd_loÿl
+ ? 
+PS_SHOW_PORT
+ : 0, &
+gc
+));
+
+1757 
+	`msg
+ (
+msgËv–
+, "%s†ink„emote: %s",
+
+1758 
+	`´Ùo2ascii
+ (
+sock
+->
+šfo
+.
+´Ùo
+, 
+Œue
+),
+
+1759 
+	`´št_lšk_sock‘_aùu®_ex
+ (&
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+,
+
+1761 
+PS_SHOW_PORT_IF_DEFINED
+,
+
+1762 &
+gc
+));
+
+1765 
+dÚe
+:
+
+1766 ià(
+sig_§ve
+ && 
+sigÇl_»ûived
+)
+
+1768 ià(!*
+sigÇl_»ûived
+)
+
+1769 *
+sigÇl_»ûived
+ = 
+sig_§ve
+;
+
+1771 
+	`gc_ä“
+ (&
+gc
+);
+
+1772 
+	}
+}
+
+1775 
+	$lšk_sock‘_þo£
+ (
+lšk_sock‘
+ *
+sock
+)
+
+1777 ià(
+sock
+)
+
+1779 #ifdeà
+ENABLE_DEBUG
+
+
+1780 cÚ¡ 
+g»mlš
+ = 
+	`GREMLIN_CONNECTION_FLOOD_LEVEL
+ (
+sock
+->gremlin);
+
+1782 cÚ¡ 
+g»mlš
+ = 0;
+
+1785 ià(
+	`sock‘_defšed
+ (
+sock
+->
+sd
+))
+
+1787 #ifdeà
+WIN32
+
+
+1788 
+	`þo£_Ãt_ev’t_wš32
+ (&
+sock
+->
+li¡’_hªdË
+, sock->
+sd
+, 0);
+
+1790 ià(!
+g»mlš
+)
+
+1792 
+	`msg
+ (
+D_LOW
+, "TCP/UDP: Closing socket");
+
+1793 ià(
+	`Ý’v²_þo£_sock‘
+ (
+sock
+->
+sd
+))
+
+1794 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "TCP/UDP: Close Socket failed");
+
+1796 
+sock
+->
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+1797 #ifdeà
+WIN32
+
+
+1798 ià(!
+g»mlš
+)
+
+1800 
+	`ov”Ïµed_io_þo£
+ (&
+sock
+->
+»ads
+);
+
+1801 
+	`ov”Ïµed_io_þo£
+ (&
+sock
+->
+wr™es
+);
+
+1806 #ifdeà
+ENABLE_SOCKS
+
+
+1807 ià(
+	`sock‘_defšed
+ (
+sock
+->
+ù¾_sd
+))
+
+1809 ià(
+	`Ý’v²_þo£_sock‘
+ (
+sock
+->
+ù¾_sd
+))
+
+1810 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "TCP/UDP: Close Socket (ctrl_sd) failed");
+
+1811 
+sock
+->
+ù¾_sd
+ = 
+SOCKET_UNDEFINED
+;
+
+1815 
+	`¡»am_buf_þo£
+ (&
+sock
+->
+¡»am_buf
+);
+
+1816 
+	`ä“_buf
+ (&
+sock
+->
+¡»am_buf_d©a
+);
+
+1817 ià(!
+g»mlš
+)
+
+1818 
+	`ä“
+ (
+sock
+);
+
+1820 
+	}
+}
+
+1824 
+	$sock‘_adju¡_äame_·¿m‘”s
+ (
+äame
+ *äame, 
+´Ùo
+)
+
+1826 ià(
+	`lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+´Ùo
+))
+
+1827 
+	`äame_add_to_exŒa_äame
+ (
+äame
+,  (
+·ck‘_size_ty³
+));
+
+1828 
+	}
+}
+
+1831 
+	$£‹nv_Œu¡ed
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+)
+
+1833 
+	`£‹nv_lšk_sock‘_aùu®
+ (
+es
+, "Œu¡ed", &
+šfo
+->
+l§
+->
+aùu®
+, 
+SA_IP_PORT
+);
+
+1834 
+	}
+}
+
+1837 
+	$�chªge_fmt
+ (cÚ¡ 
+boÞ
+ 
+šþude_cmd
+, 
+¬gv
+ *¬gv, cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+, 
+gc_¬’a
+ *
+gc
+)
+
+1839 cÚ¡ *
+�
+ = 
+	`´št_sockaddr_ex
+ (&
+šfo
+->
+l§
+->
+aùu®
+.
+de¡
+, 
+NULL
+, 0, 
+gc
+);
+
+1840 cÚ¡ *
+pÜt
+ = 
+	`´št_sockaddr_ex
+ (&
+šfo
+->
+l§
+->
+aùu®
+.
+de¡
+, 
+NULL
+, 
+PS_DONT_SHOW_ADDR
+|
+PS_SHOW_PORT
+, 
+gc
+);
+
+1841 ià(
+šþude_cmd
+)
+
+1842 
+	`¬gv_´štf
+ (
+¬gv
+, "%sc %s %s",
+
+1843 
+šfo
+->
+�chªge_commªd
+,
+
+1844 
+�
+,
+
+1845 
+pÜt
+);
+
+1847 
+	`¬gv_´štf
+ (
+¬gv
+, "%s %s",
+
+1848 
+�
+,
+
+1849 
+pÜt
+);
+
+1850 
+	}
+}
+
+1853 
+	$lšk_sock‘_cÚÃùiÚ_š™Ÿ‹d
+ (cÚ¡ 
+bufãr
+ *
+buf
+,
+
+1854 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+1855 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+1856 cÚ¡ *
+commÚ_Çme
+,
+
+1857 
+’v_£t
+ *
+es
+)
+
+1859 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1861 
+šfo
+->
+l§
+->
+aùu®
+ = *
+aù
+;
+
+1862 
+	`£‹nv_Œu¡ed
+ (
+es
+, 
+šfo
+);
+
+1863 
+šfo
+->
+cÚÃùiÚ_e¡ablished
+ = 
+Œue
+;
+
+1867 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+1868 ià(
+commÚ_Çme
+)
+
+1869 
+	`buf_´štf
+ (&
+out
+, "[%s] ", 
+commÚ_Çme
+);
+
+1870 
+	`buf_´štf
+ (&
+out
+, "P“¸CÚÃùiÚ In™Ÿ‹d w™h %s", 
+	`´št_lšk_sock‘_aùu®
+ (&
+šfo
+->
+l§
+->
+aùu®
+, &
+gc
+));
+
+1871 
+	`msg
+ (
+M_INFO
+, "%s", 
+	`BSTR
+ (&
+out
+));
+
+1875 
+	`£‹nv_¡r
+ (
+es
+, "commÚ_Çme", 
+commÚ_Çme
+);
+
+1878 ià(
+	`¶ugš_defšed
+ (
+šfo
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_IPCHANGE
+))
+
+1880 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+1881 
+	`�chªge_fmt
+ (
+çl£
+, &
+¬gv
+, 
+šfo
+, &
+gc
+);
+
+1882 ià(
+	`¶ugš_ÿÎ
+ (
+šfo
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_IPCHANGE
+, &
+¬gv
+, 
+NULL
+, 
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+1883 
+	`msg
+ (
+M_WARN
+, "WARNING: ipchange…lugin call failed");
+
+1884 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1888 ià(
+šfo
+->
+�chªge_commªd
+)
+
+1890 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+1891 
+	`£‹nv_¡r
+ (
+es
+, "script_type", "ipchange");
+
+1892 
+	`�chªge_fmt
+ (
+Œue
+, &
+¬gv
+, 
+šfo
+, &
+gc
+);
+
+1893 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+es
+, 0, "--ipchange");
+
+1894 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1897 
+	`gc_ä“
+ (&
+gc
+);
+
+1898 
+	}
+}
+
+1901 
+	$lšk_sock‘_bad_šcomšg_addr
+ (
+bufãr
+ *
+buf
+,
+
+1902 cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+1903 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom_addr
+)
+
+1905 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1907 
+äom_addr
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+)
+
+1909 
+AF_INET
+:
+
+1910 
+AF_INET6
+:
+
+1911 
+	`msg
+ (
+D_LINK_ERRORS
+,
+
+1913 
+	`´št_lšk_sock‘_aùu®
+ (
+äom_addr
+, &
+gc
+),
+
+1914 ()
+äom_addr
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+,
+
+1915 
+	`´št_sockaddr
+ (&
+šfo
+->
+l§
+->
+»mÙe
+, &
+gc
+));
+
+1918 
+buf
+->
+Ën
+ = 0;
+
+1919 
+	`gc_ä“
+ (&
+gc
+);
+
+1920 
+	}
+}
+
+1923 
+	$lšk_sock‘_bad_outgošg_addr
+ ()
+
+1925 
+	`dmsg
+ (
+D_READ_WRITE
+, "TCP/UDP: No outgoing‡ddress�o send…acket");
+
+1926 
+	}
+}
+
+1928 
+š_addr_t
+
+
+1929 
+	$lšk_sock‘_cu¼’t_»mÙe
+ (cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+)
+
+1931 cÚ¡ 
+lšk_sock‘_addr
+ *
+l§
+ = 
+šfo
+->lsa;
+
+1941 ià(
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+ !ð
+AF_INET
+)
+
+1942  
+IPV4_INVALID_ADDR
+;
+
+1944 ià(
+	`lšk_sock‘_aùu®_defšed
+ (&
+l§
+->
+aùu®
+))
+
+1945  
+	`Áohl
+ (
+l§
+->
+aùu®
+.
+de¡
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+);
+
+1946 ià(
+	`addr_defšed
+ (&
+l§
+->
+»mÙe
+))
+
+1947  
+	`Áohl
+ (
+l§
+->
+»mÙe
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+);
+
+1950 
+	}
+}
+
+1956 
+	$sock‘_¡©
+ (cÚ¡ 
+lšk_sock‘
+ *
+s
+, 
+rwæags
+, 
+gc_¬’a
+ *
+gc
+)
+
+1958 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+1959 ià(
+s
+)
+
+1961 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+1963 
+	`buf_´štf
+ (&
+out
+, "S%s",
+
+1964 (
+s
+->
+rwæags_debug
+ & 
+EVENT_READ
+) ? "R" : "r");
+
+1965 #ifdeà
+WIN32
+
+
+1966 
+	`buf_´štf
+ (&
+out
+, "%s",
+
+1967 
+	`ov”Ïµed_io_¡©e_ascii
+ (&
+s
+->
+»ads
+));
+
+1970 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+1972 
+	`buf_´štf
+ (&
+out
+, "S%s",
+
+1973 (
+s
+->
+rwæags_debug
+ & 
+EVENT_WRITE
+) ? "W" : "w");
+
+1974 #ifdeà
+WIN32
+
+
+1975 
+	`buf_´štf
+ (&
+out
+, "%s",
+
+1976 
+	`ov”Ïµed_io_¡©e_ascii
+ (&
+s
+->
+wr™es
+));
+
+1982 
+	`buf_´štf
+ (&
+out
+, "S?");
+
+1984  
+	`BSTR
+ (&
+out
+);
+
+1985 
+	}
+}
+
+1992 
+šlše
+ 
+
+1993 
+	$¡»am_buf_»£t
+ (
+¡»am_buf
+ *
+sb
+)
+
+1995 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: RESET");
+
+1996 
+sb
+->
+»sidu®_fuÎy_fÜmed
+ = 
+çl£
+;
+
+1997 
+sb
+->
+buf
+ = sb->
+buf_š™
+;
+
+1998 
+	`buf_»£t
+ (&
+sb
+->
+Ãxt
+);
+
+1999 
+sb
+->
+Ën
+ = -1;
+
+2000 
+	}
+}
+
+2003 
+	$¡»am_buf_š™
+ (
+¡»am_buf
+ *
+sb
+,
+
+2004 
+bufãr
+ *
+buf
+,
+
+2005 cÚ¡ 
+sockæags
+,
+
+2006 cÚ¡ 
+´Ùo
+)
+
+2008 
+sb
+->
+buf_š™
+ = *
+buf
+;
+
+2009 
+sb
+->
+maxËn
+ = sb->
+buf_š™
+.
+Ën
+;
+
+2010 
+sb
+->
+buf_š™
+.
+Ën
+ = 0;
+
+2011 
+sb
+->
+»sidu®
+ = 
+	`®loc_buf
+ (sb->
+maxËn
+);
+
+2012 
+sb
+->
+”rÜ
+ = 
+çl£
+;
+
+2013 #ià
+PORT_SHARE
+
+
+2014 
+sb
+->
+pÜt_sh¬e_¡©e
+ = ((
+sockæags
+ & 
+SF_PORT_SHARE
+è&& (
+´Ùo
+ =ð
+PROTO_TCPv4_SERVER
+))
+
+2015 ? 
+PS_ENABLED
+
+
+2016 : 
+PS_DISABLED
+;
+
+2018 
+	`¡»am_buf_»£t
+ (
+sb
+);
+
+2020 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: INIT maxËn=%d", 
+sb
+->
+maxËn
+);
+
+2021 
+	}
+}
+
+2023 
+šlše
+ 
+
+2024 
+	$¡»am_buf_£t_Ãxt
+ (
+¡»am_buf
+ *
+sb
+)
+
+2027 
+sb
+->
+Ãxt
+ = sb->
+buf
+;
+
+2028 
+sb
+->
+Ãxt
+.
+off£t
+ = sb->
+buf
+.off£ˆ+ sb->buf.
+Ën
+;
+
+2029 
+sb
+->
+Ãxt
+.
+Ën
+ = (sb->ËÀ>ð0 ? sb->ËÀ: sb->
+maxËn
+è- sb->
+buf
+.len;
+
+2030 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: SET NEXT, buf=[%d,%d]‚ext=[%d,%d]†en=%d maxlen=%d",
+
+2031 
+sb
+->
+buf
+.
+off£t
+, sb->buf.
+Ën
+,
+
+2032 
+sb
+->
+Ãxt
+.
+off£t
+, sb->Ãxt.
+Ën
+,
+
+2033 
+sb
+->
+Ën
+, sb->
+maxËn
+);
+
+2034 
+	`ASSERT
+ (
+sb
+->
+Ãxt
+.
+Ën
+ > 0);
+
+2035 
+	`ASSERT
+ (
+	`buf_§ã
+ (&
+sb
+->
+buf
+, sb->
+Ãxt
+.
+Ën
+));
+
+2036 
+	}
+}
+
+2038 
+šlše
+ 
+
+2039 
+	$¡»am_buf_g‘_fš®
+ (
+¡»am_buf
+ *
+sb
+, 
+bufãr
+ *
+buf
+)
+
+2041 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: GET FINAL†en=%d",
+
+2042 
+	`buf_defšed
+ (&
+sb
+->
+buf
+è? sb->buf.
+Ën
+ : -1);
+
+2043 
+	`ASSERT
+ (
+	`buf_defšed
+ (&
+sb
+->
+buf
+));
+
+2044 *
+buf
+ = 
+sb
+->buf;
+
+2045 
+	}
+}
+
+2047 
+šlše
+ 
+
+2048 
+	$¡»am_buf_g‘_Ãxt
+ (
+¡»am_buf
+ *
+sb
+, 
+bufãr
+ *
+buf
+)
+
+2050 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: GET NEXT†en=%d",
+
+2051 
+	`buf_defšed
+ (&
+sb
+->
+Ãxt
+è? sb->Ãxt.
+Ën
+ : -1);
+
+2052 
+	`ASSERT
+ (
+	`buf_defšed
+ (&
+sb
+->
+Ãxt
+));
+
+2053 *
+buf
+ = 
+sb
+->
+Ãxt
+;
+
+2054 
+	}
+}
+
+2056 
+boÞ
+
+
+2057 
+	$¡»am_buf_»ad_£tup_dowÜk
+ (
+lšk_sock‘
+* 
+sock
+)
+
+2059 ià(
+sock
+->
+¡»am_buf
+.
+»sidu®
+.
+Ën
+ && !sock->¡»am_buf.
+»sidu®_fuÎy_fÜmed
+)
+
+2061 
+	`ASSERT
+ (
+	`buf_cÝy
+ (&
+sock
+->
+¡»am_buf
+.
+buf
+, &sock->¡»am_buf.
+»sidu®
+));
+
+2062 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+sock
+->
+¡»am_buf
+.
+»sidu®
+, 0));
+
+2063 
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+ = 
+	`¡»am_buf_added
+ (&sock->stream_buf, 0);
+
+2064 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: RESIDUAL FULLY FORMED [%s],†en=%d",
+
+2065 
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+ ? "YES" : "NO",
+
+2066 
+sock
+->
+¡»am_buf
+.
+»sidu®
+.
+Ën
+);
+
+2069 ià(!
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+)
+
+2070 
+	`¡»am_buf_£t_Ãxt
+ (&
+sock
+->
+¡»am_buf
+);
+
+2071  !
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+;
+
+2072 
+	}
+}
+
+2074 
+boÞ
+
+
+2075 
+	$¡»am_buf_added
+ (
+¡»am_buf
+ *
+sb
+,
+
+2076 
+Ëngth_added
+)
+
+2078 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: ADD†’gth_added=%d", 
+Ëngth_added
+);
+
+2079 ià(
+Ëngth_added
+ > 0)
+
+2080 
+sb
+->
+buf
+.
+Ën
+ +ð
+Ëngth_added
+;
+
+2084 ià(
+sb
+->
+Ën
+ < 0 && sb->
+buf
+.ËÀ>ð(è (
+·ck‘_size_ty³
+))
+
+2086 
+·ck‘_size_ty³
+ 
+Ãt_size
+;
+
+2088 #ià
+PORT_SHARE
+
+
+2089 ià(
+sb
+->
+pÜt_sh¬e_¡©e
+ =ð
+PS_ENABLED
+)
+
+2091 ià(!
+	`is_Ý’v²_´ÙocÞ
+ (&
+sb
+->
+buf
+))
+
+2093 
+	`msg
+ (
+D_STREAM_ERRORS
+, "Non-OpenVPN client…rotocol detected");
+
+2094 
+sb
+->
+pÜt_sh¬e_¡©e
+ = 
+PS_FOREIGN
+;
+
+2095 
+sb
+->
+”rÜ
+ = 
+Œue
+;
+
+2096  
+çl£
+;
+
+2099 
+sb
+->
+pÜt_sh¬e_¡©e
+ = 
+PS_DISABLED
+;
+
+2103 
+	`ASSERT
+ (
+	`buf_»ad
+ (&
+sb
+->
+buf
+, &
+Ãt_size
+,  (net_size)));
+
+2104 
+sb
+->
+Ën
+ = 
+	`Áohps
+ (
+Ãt_size
+);
+
+2106 ià(
+sb
+->
+Ën
+ < 1 || sb->ËÀ> sb->
+maxËn
+)
+
+2108 
+	`msg
+ (
+M_WARN
+, "WARNING: BadƒnÿpsuÏ‹d…ack‘†’gth from…“¸(%d), which mu¡ b�> 0‡nd <ð%d --…Ëa£ƒnsu»�h© --tun-mtu o¸--lšk-mtu i equ® oÀbÙh…“r --�hi cÚd™iÚ could‡lsØšdiÿ‹‡…ossibË‡ùiv�©�ck oÀth�TCP†šk -- [A‰em±šg„e¡¬t...]", 
+sb
+->
+Ën
+, sb->
+maxËn
+);
+
+2109 
+	`¡»am_buf_»£t
+ (
+sb
+);
+
+2110 
+sb
+->
+”rÜ
+ = 
+Œue
+;
+
+2111  
+çl£
+;
+
+2116 ià(
+sb
+->
+Ën
+ > 0 && sb->
+buf
+.len >= sb->len)
+
+2119 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+sb
+->
+»sidu®
+, 0));
+
+2120 ià(
+sb
+->
+buf
+.
+Ën
+ > sb->len)
+
+2121 
+	`ASSERT
+ (
+	`buf_cÝy_exûss
+ (&
+sb
+->
+»sidu®
+, &sb->
+buf
+, sb->
+Ën
+));
+
+2122 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: ADD„eturned TRUE, buf_len=%d,„esidual_len=%d",
+
+2123 
+	`BLEN
+ (&
+sb
+->
+buf
+),
+
+2124 
+	`BLEN
+ (&
+sb
+->
+»sidu®
+));
+
+2125  
+Œue
+;
+
+2129 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: ADD„‘uºed FALSE (have=%d‚“d=%d)", 
+sb
+->
+buf
+.
+Ën
+, sb->len);
+
+2130 
+	`¡»am_buf_£t_Ãxt
+ (
+sb
+);
+
+2131  
+çl£
+;
+
+2133 
+	}
+}
+
+2136 
+	$¡»am_buf_þo£
+ (
+¡»am_buf
+* 
+sb
+)
+
+2138 
+	`ä“_buf
+ (&
+sb
+->
+»sidu®
+);
+
+2139 
+	}
+}
+
+2146 
+ev’t_t
+
+
+2147 
+	$sock‘_li¡’_ev’t_hªdË
+ (
+lšk_sock‘
+ *
+s
+)
+
+2149 #ifdeà
+WIN32
+
+
+2150 ià(!
+	`defšed_Ãt_ev’t_wš32
+ (&
+s
+->
+li¡’_hªdË
+))
+
+2151 
+	`š™_Ãt_ev’t_wš32
+ (&
+s
+->
+li¡’_hªdË
+, 
+FD_ACCEPT
+, s->
+sd
+, 0);
+
+2152  &
+s
+->
+li¡’_hªdË
+;
+
+2154  
+s
+->
+sd
+;
+
+2156 
+	}
+}
+
+2163 
+	$´št_sockaddr
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+, 
+gc_¬’a
+ *
+gc
+)
+
+2165  
+	`´št_sockaddr_ex
+ (
+addr
+, ":", 
+PS_SHOW_PORT
+, 
+gc
+);
+
+2166 
+	}
+}
+
+2169 
+	$´št_sockaddr_ex
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+2170 cÚ¡ * 
+£·¿tÜ
+,
+
+2171 cÚ¡ 
+æags
+,
+
+2172 
+gc_¬’a
+ *
+gc
+)
+
+2174 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+2175 
+boÞ
+ 
+addr_is_defšed
+;
+
+2176 
+addr_is_defšed
+ = 
+	`addr_defšed
+ (
+addr
+);
+
+2177 ià(!
+addr_is_defšed
+) {
+
+2180 
+addr
+->addr.
+§
+.
+§_çmžy
+)
+
+2182 
+AF_INET
+:
+
+2184 cÚ¡ 
+pÜt
+ð
+	`Áohs
+ (
+addr
+->addr.
+š4
+.
+sš_pÜt
+);
+
+2185 
+	`buf_puts
+ (&
+out
+, "[AF_INET]");
+
+2187 ià(!(
+æags
+ & 
+PS_DONT_SHOW_ADDR
+))
+
+2188 
+	`buf_´štf
+ (&
+out
+, "%s", (
+	`addr_defšed
+ (
+addr
+è? 
+	`š‘_Áß
+ (addr->addr.
+š4
+.
+sš_addr
+) : "[undef]"));
+
+2190 ià(((
+æags
+ & 
+PS_SHOW_PORT
+è|| (
+	`addr_defšed
+ (
+addr
+è&& (æag & 
+PS_SHOW_PORT_IF_DEFINED
+)))
+
+2191 && 
+pÜt
+)
+
+2193 ià(
+£·¿tÜ
+)
+
+2194 
+	`buf_´štf
+ (&
+out
+, "%s", 
+£·¿tÜ
+);
+
+2196 
+	`buf_´štf
+ (&
+out
+, "%d", 
+pÜt
+);
+
+2200 
+AF_INET6
+:
+
+2202 cÚ¡ 
+pÜt
+ð
+	`Áohs
+ (
+addr
+->addr.
+š6
+.
+sš6_pÜt
+);
+
+2203 
+buf
+[
+INET6_ADDRSTRLEN
+] = "";
+
+2204 
+	`buf_puts
+ (&
+out
+, "[AF_INET6]");
+
+2205 ià(
+addr_is_defšed
+)
+
+2207 
+	`g‘Çmešfo
+(&
+addr
+->addr.
+§
+,  (
+sockaddr_š6
+),
+
+2208 
+buf
+,  (buf), 
+NULL
+, 0, 
+NI_NUMERICHOST
+);
+
+2209 
+	`buf_puts
+ (&
+out
+, 
+buf
+);
+
+2211 ià(((
+æags
+ & 
+PS_SHOW_PORT
+è|| (
+addr_is_defšed
+ && (æag & 
+PS_SHOW_PORT_IF_DEFINED
+)))
+
+2212 && 
+pÜt
+)
+
+2214 ià(
+£·¿tÜ
+)
+
+2215 
+	`buf_puts
+ (&
+out
+, 
+£·¿tÜ
+);
+
+2217 
+	`buf_´štf
+ (&
+out
+, "%d", 
+pÜt
+);
+
+2222 
+	`ASSERT
+(0);
+
+2224  
+	`BSTR
+ (&
+out
+);
+
+2225 
+	}
+}
+
+2228 
+	$´št_lšk_sock‘_aùu®
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+, 
+gc_¬’a
+ *
+gc
+)
+
+2230  
+	`´št_lšk_sock‘_aùu®_ex
+ (
+aù
+, ":", 
+PS_SHOW_PORT
+|
+PS_SHOW_PKTINFO
+, 
+gc
+);
+
+2231 
+	}
+}
+
+2233 #iâdeà
+IF_NAMESIZE
+
+
+2234 
+	#IF_NAMESIZE
+ 16
+
+	)
+
+2238 
+	$´št_lšk_sock‘_aùu®_ex
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+2239 cÚ¡ *
+£·¿tÜ
+,
+
+2240 cÚ¡ 
+æags
+,
+
+2241 
+gc_¬’a
+ *
+gc
+)
+
+2243 ià(
+aù
+)
+
+2245 
+iâame
+[
+IF_NAMESIZE
+] = "[undef]";
+
+2246 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (128, 
+gc
+);
+
+2247 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`´št_sockaddr_ex
+ (&
+aù
+->
+de¡
+, 
+£·¿tÜ
+, 
+æags
+, 
+gc
+));
+
+2248 #ià
+ENABLE_IP_PKTINFO
+
+
+2249 ià((
+æags
+ & 
+PS_SHOW_PKTINFO
+è&& 
+	`addr_defšed_�i
+(
+aù
+))
+
+2251 
+aù
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+)
+
+2253 
+AF_INET
+:
+
+2255 
+Ý’v²_sockaddr
+ 
+§
+;
+
+2256 
+	`CLEAR
+ (
+§
+);
+
+2257 
+§
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+2258 #ifdeà
+IP_PKTINFO
+
+
+2259 
+§
+.
+addr
+.
+š4
+.
+sš_addr
+ = 
+aù
+->
+pi
+.š4.
+�i_¥ec_d¡
+;
+
+2260 
+	`if_šdextÚame
+(
+aù
+->
+pi
+.
+š4
+.
+�i_ifšdex
+, 
+iâame
+);
+
+2261 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+2262 
+§
+.
+addr
+.
+š4
+.
+sš_addr
+ = 
+aù
+->
+pi
+.in4;
+
+2263 
+iâame
+[0]=0;
+
+2265 #”rÜ 
+ENABLE_IP_PKTINFO
+ 
+is
+ 
+£t
+ 
+w™hout
+ 
+IP_PKTINFO
+ 
+xÜ
+ 
+	`IP_RECVDSTADDR
+ (
+fix
+ 
+sysh—d
+.
+h
+)
+
+2267 
+	`buf_´štf
+ (&
+out
+, " (via %s%%%s)",
+
+2268 
+	`´št_sockaddr_ex
+ (&
+§
+, 
+£·¿tÜ
+, 0, 
+gc
+),
+
+2269 
+iâame
+);
+
+2272 
+AF_INET6
+:
+
+2274 
+sockaddr_š6
+ 
+sš6
+;
+
+2275 
+buf
+[
+INET6_ADDRSTRLEN
+] = "[undef]";
+
+2276 
+	`CLEAR
+(
+sš6
+);
+
+2277 
+sš6
+.
+sš6_çmžy
+ = 
+AF_INET6
+;
+
+2278 
+sš6
+.
+sš6_addr
+ = 
+aù
+->
+pi
+.
+š6
+.
+�i6_addr
+;
+
+2279 
+	`if_šdextÚame
+(
+aù
+->
+pi
+.
+š6
+.
+�i6_ifšdex
+, 
+iâame
+);
+
+2280 ià(
+	`g‘Çmešfo
+((
+sockaddr
+ *)&
+sš6
+,  (
+sockaddr_š6
+),
+
+2281 
+buf
+,  (buf), 
+NULL
+, 0, 
+NI_NUMERICHOST
+) == 0)
+
+2282 
+	`buf_´štf
+ (&
+out
+, " (vŸ %s%%%s)", 
+buf
+, 
+iâame
+);
+
+2284 
+	`buf_´štf
+ (&
+out
+, " (vŸ [g‘Çmešfo(è”r]%%%s)", 
+iâame
+);
+
+2290  
+	`BSTR
+ (&
+out
+);
+
+2294 
+	}
+}
+
+2301 
+	$´št_š_addr_t
+ (
+š_addr_t
+ 
+addr
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+)
+
+2303 
+š_addr
+ 
+Ÿ
+;
+
+2304 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+2306 ià(
+addr
+ || !(
+æags
+ & 
+IA_EMPTY_IF_UNDEF
+))
+
+2308 
+	`CLEAR
+ (
+Ÿ
+);
+
+2309 
+Ÿ
+.
+s_addr
+ = (
+æags
+ & 
+IA_NET_ORDER
+è? 
+addr
+ : 
+	`htÚl
+ (addr);
+
+2311 
+	`buf_´štf
+ (&
+out
+, "%s", 
+	`š‘_Áß
+ (
+Ÿ
+));
+
+2313  
+	`BSTR
+ (&
+out
+);
+
+2314 
+	}
+}
+
+2321 
+	$´št_š6_addr
+ (
+š6_addr
+ 
+a6
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+)
+
+2323 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+2324 
+tmp_out_buf
+[64];
+
+2326 iàÐ
+	`memcmp
+(&
+a6
+, &
+š6addr_ªy
+, (a6)) != 0 ||
+
+2327 !(
+æags
+ & 
+IA_EMPTY_IF_UNDEF
+))
+
+2329 
+	`š‘_ÁÝ
+ (
+AF_INET6
+, &
+a6
+, 
+tmp_out_buf
+, (tmp_out_buf)-1);
+
+2330 
+	`buf_´štf
+ (&
+out
+, "%s", 
+tmp_out_buf
+ );
+
+2332  
+	`BSTR
+ (&
+out
+);
+
+2333 
+	}
+}
+
+2335 #iâdeà
+UINT8_MAX
+
+
+2336 
+	#UINT8_MAX
+ 0xff
+
+	)
+
+2342 
+š6_addr
+ 
+	$add_š6_addr
+Ð
+š6_addr
+ 
+ba£
+, 
+ušt32_t
+ 
+add
+ )
+
+2344 
+i
+;
+
+2346  
+i
+=15; i>=0 && 
+add
+ > 0 ; i-- )
+
+2348 
+ÿ¼y
+;
+
+2349 
+ušt32_t
+ 
+h
+;
+
+2351 
+h
+ = (è
+ba£
+.
+s6_addr
+[
+i
+];
+
+2352 
+ba£
+.
+s6_addr
+[
+i
+] = (
+h
++
+add
+è& 
+UINT8_MAX
+;
+
+2357 
+ÿ¼y
+ = ((
+h
+ & 0xffè+ (
+add
+ & 0xff)) >> 8;
+
+2358 
+add
+ = (add>>8è+ 
+ÿ¼y
+;
+
+2360  
+ba£
+;
+
+2361 
+	}
+}
+
+2365 
+	$£‹nv_sockaddr
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme_´efix
+, cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+, cÚ¡ 
+æags
+)
+
+2367 
+Çme_buf
+[256];
+
+2369 
+buf
+[128];
+
+2370 
+addr
+->addr.
+§
+.
+§_çmžy
+)
+
+2372 
+AF_INET
+:
+
+2373 ià(
+æags
+ & 
+SA_IP_PORT
+)
+
+2374 
+	`Ý’v²_¢´štf
+ (
+Çme_buf
+,  (Çme_buf), "%s_�", 
+Çme_´efix
+);
+
+2376 
+	`Ý’v²_¢´štf
+ (
+Çme_buf
+,  (Çme_buf), "%s", 
+Çme_´efix
+);
+
+2378 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_buf
+, 
+	`š‘_Áß
+ (
+addr
+->addr.
+š4
+.
+sš_addr
+));
+
+2380 ià((
+æags
+ & 
+SA_IP_PORT
+è&& 
+addr
+->addr.
+š4
+.
+sš_pÜt
+)
+
+2382 
+	`Ý’v²_¢´štf
+ (
+Çme_buf
+,  (Çme_buf), "%s_pÜt", 
+Çme_´efix
+);
+
+2383 
+	`£‹nv_št
+ (
+es
+, 
+Çme_buf
+, 
+	`Áohs
+ (
+addr
+->addr.
+š4
+.
+sš_pÜt
+));
+
+2386 
+AF_INET6
+:
+
+2387 
+	`Ý’v²_¢´štf
+ (
+Çme_buf
+,  (Çme_buf), "%s_�6", 
+Çme_´efix
+);
+
+2388 
+	`g‘Çmešfo
+(&
+addr
+->addr.
+§
+,  (
+sockaddr_š6
+),
+
+2389 
+buf
+, (buf), 
+NULL
+, 0, 
+NI_NUMERICHOST
+);
+
+2390 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_buf
+, 
+buf
+);
+
+2392 ià((
+æags
+ & 
+SA_IP_PORT
+è&& 
+addr
+->addr.
+š6
+.
+sš6_pÜt
+)
+
+2394 
+	`Ý’v²_¢´štf
+ (
+Çme_buf
+,  (Çme_buf), "%s_pÜt", 
+Çme_´efix
+);
+
+2395 
+	`£‹nv_št
+ (
+es
+, 
+Çme_buf
+, 
+	`Áohs
+ (
+addr
+->addr.
+š6
+.
+sš6_pÜt
+));
+
+2399 
+	}
+}
+
+2402 
+	$£‹nv_š_addr_t
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme_´efix
+, 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+æags
+)
+
+2404 ià(
+addr
+ || !(
+æags
+ & 
+SA_SET_IF_NONZERO
+))
+
+2406 
+Ý’v²_sockaddr
+ 
+si
+;
+
+2407 
+	`CLEAR
+ (
+si
+);
+
+2408 
+si
+.
+addr
+.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+2409 
+si
+.
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (addr);
+
+2410 
+	`£‹nv_sockaddr
+ (
+es
+, 
+Çme_´efix
+, &
+si
+, 
+æags
+);
+
+2412 
+	}
+}
+
+2415 
+	$£‹nv_lšk_sock‘_aùu®
+ (
+’v_£t
+ *
+es
+,
+
+2416 cÚ¡ *
+Çme_´efix
+,
+
+2417 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+2418 cÚ¡ 
+æags
+)
+
+2420 
+	`£‹nv_sockaddr
+ (
+es
+, 
+Çme_´efix
+, &
+aù
+->
+de¡
+, 
+æags
+);
+
+2421 
+	}
+}
+
+2427 
+	s´Ùo_Çmes
+ {
+
+2428 cÚ¡ *
+	mshÜt_fÜm
+;
+
+2429 cÚ¡ *
+	mdi¥Ïy_fÜm
+;
+
+2430 
+boÞ
+ 
+	mis_dg¿m
+;
+
+2431 
+boÞ
+ 
+	mis_Ãt
+;
+
+2432 
+	m´Ùo_af
+;
+
+2436 cÚ¡ 
+´Ùo_Çmes
+ 
+	g´Ùo_Çmes
+[
+PROTO_N
+] = {
+
+2437 {"´Ùo-unš™Ÿlized", "´Ùo-NONE",0,0, 
+AF_UNSPEC
+},
+
+2438 {"udp", "UDPv4",1,1, 
+AF_INET
+},
+
+2439 {"tý-£rv”", "TCPv4_SERVER",0,1, 
+AF_INET
+},
+
+2440 {"tý-þ›Á", "TCPv4_CLIENT",0,1, 
+AF_INET
+},
+
+2441 {"tý", "TCPv4",0,1, 
+AF_INET
+},
+
+2442 {"udp6" ,"UDPv6",1,1, 
+AF_INET6
+},
+
+2443 {"tý6-£rv”","TCPv6_SERVER",0,1, 
+AF_INET6
+},
+
+2444 {"tý6-þ›Á","TCPv6_CLIENT",0,1, 
+AF_INET6
+},
+
+2445 {"tý6" ,"TCPv6",0,1, 
+AF_INET6
+},
+
+2448 
+boÞ
+
+
+2449 
+	$´Ùo_is_Ãt
+(
+´Ùo
+)
+
+2451 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2452 
+	`ASSERT
+(0);
+
+2453  
+´Ùo_Çmes
+[
+´Ùo
+].
+is_Ãt
+;
+
+2454 
+	}
+}
+
+2455 
+boÞ
+
+
+2456 
+	$´Ùo_is_dg¿m
+(
+´Ùo
+)
+
+2458 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2459 
+	`ASSERT
+(0);
+
+2460  
+´Ùo_Çmes
+[
+´Ùo
+].
+is_dg¿m
+;
+
+2461 
+	}
+}
+
+2462 
+boÞ
+
+
+2463 
+	$´Ùo_is_udp
+(
+´Ùo
+)
+
+2465 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2466 
+	`ASSERT
+(0);
+
+2467  
+´Ùo_Çmes
+[
+´Ùo
+].
+is_dg¿m
+&&´Ùo_Çmes[´Ùo].
+is_Ãt
+;
+
+2468 
+	}
+}
+
+2469 
+boÞ
+
+
+2470 
+	$´Ùo_is_tý
+(
+´Ùo
+)
+
+2472 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2473 
+	`ASSERT
+(0);
+
+2474  (!
+´Ùo_Çmes
+[
+´Ùo
+].
+is_dg¿m
+)&&´Ùo_Çmes[´Ùo].
+is_Ãt
+;
+
+2475 
+	}
+}
+
+2478 
+	$´Ùo_§_çmžy
+(
+´Ùo
+)
+
+2480 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2481 
+	`ASSERT
+(0);
+
+2482  
+´Ùo_Çmes
+[
+´Ùo
+].
+´Ùo_af
+;
+
+2483 
+	}
+}
+
+2486 
+	$ascii2´Ùo
+ (cÚ¡ * 
+´Ùo_Çme
+)
+
+2488 
+i
+;
+
+2489 
+	`ASSERT
+ (
+PROTO_N
+ =ð
+	`SIZE
+ (
+´Ùo_Çmes
+));
+
+2490 
+i
+ = 0; i < 
+PROTO_N
+; ++i)
+
+2491 ià(!
+	`¡rcmp
+ (
+´Ùo_Çme
+, 
+´Ùo_Çmes
+[
+i
+].
+shÜt_fÜm
+))
+
+2492  
+i
+;
+
+2494 
+	}
+}
+
+2497 
+	$´Ùo2ascii
+ (
+´Ùo
+, 
+boÞ
+ 
+di¥Ïy_fÜm
+)
+
+2499 
+	`ASSERT
+ (
+PROTO_N
+ =ð
+	`SIZE
+ (
+´Ùo_Çmes
+));
+
+2500 ià(
+´Ùo
+ < 0 ||…rÙØ>ð
+PROTO_N
+)
+
+2502 ià(
+di¥Ïy_fÜm
+)
+
+2503  
+´Ùo_Çmes
+[
+´Ùo
+].
+di¥Ïy_fÜm
+;
+
+2505  
+´Ùo_Çmes
+[
+´Ùo
+].
+shÜt_fÜm
+;
+
+2506 
+	}
+}
+
+2509 
+	$´Ùo2ascii_®l
+ (
+gc_¬’a
+ *
+gc
+)
+
+2511 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+2512 
+i
+;
+
+2514 
+	`ASSERT
+ (
+PROTO_N
+ =ð
+	`SIZE
+ (
+´Ùo_Çmes
+));
+
+2515 
+i
+ = 0; i < 
+PROTO_N
+; ++i)
+
+2517 ià(
+i
+)
+
+2518 
+	`buf_´štf
+(&
+out
+, " ");
+
+2519 
+	`buf_´štf
+(&
+out
+, "[%s]", 
+	`´Ùo2ascii
+(
+i
+, 
+çl£
+));
+
+2521  
+	`BSTR
+ (&
+out
+);
+
+2522 
+	}
+}
+
+2525 
+	$addr_guess_çmžy
+(
+´Ùo
+, cÚ¡ *
+Çme
+)
+
+2527 
+»t
+;
+
+2528 ià(
+´Ùo
+)
+
+2530  
+	`´Ùo_§_çmžy
+(
+´Ùo
+);
+
+2534 
+addršfo
+ 
+hšts
+ , *
+ai
+;
+
+2535 
+”r
+;
+
+2536 
+	`CLEAR
+(
+hšts
+);
+
+2537 
+hšts
+.
+ai_æags
+ = 
+AI_NUMERICHOST
+;
+
+2538 
+”r
+ = 
+	`g‘addršfo
+(
+Çme
+, 
+NULL
+, &
+hšts
+, &
+ai
+);
+
+2539 iàÐ0 =ð
+”r
+ )
+
+2541 
+»t
+=
+ai
+->
+ai_çmžy
+;
+
+2542 
+	`ä“addršfo
+(
+ai
+);
+
+2543  
+»t
+;
+
+2546  
+AF_INET
+;
+
+2547 
+	}
+}
+
+2549 
+	$addr_çmžy_Çme
+ (
+af
+)
+
+2551 
+af
+)
+
+2553 
+AF_INET
+:  "AF_INET";
+
+2554 
+AF_INET6
+:  "AF_INET6";
+
+2557 
+	}
+}
+
+2572 
+	$´Ùo_»mÙe
+ (
+´Ùo
+, 
+boÞ
+ 
+»mÙe
+)
+
+2574 
+	`ASSERT
+ (
+´Ùo
+ >ð0 &&…rÙØ< 
+PROTO_N
+);
+
+2575 ià(
+»mÙe
+)
+
+2577 
+´Ùo
+)
+
+2579 
+PROTO_TCPv4_SERVER
+:  
+PROTO_TCPv4_CLIENT
+;
+
+2580 
+PROTO_TCPv4_CLIENT
+:  
+PROTO_TCPv4_SERVER
+;
+
+2581 
+PROTO_TCPv6_SERVER
+:  
+PROTO_TCPv4_CLIENT
+;
+
+2582 
+PROTO_TCPv6_CLIENT
+:  
+PROTO_TCPv4_SERVER
+;
+
+2583 
+PROTO_UDPv6
+:  
+PROTO_UDPv4
+;
+
+2588 
+´Ùo
+)
+
+2590 
+PROTO_TCPv6_SERVER
+:  
+PROTO_TCPv4_SERVER
+;
+
+2591 
+PROTO_TCPv6_CLIENT
+:  
+PROTO_TCPv4_CLIENT
+;
+
+2592 
+PROTO_UDPv6
+:  
+PROTO_UDPv4
+;
+
+2595  
+´Ùo
+;
+
+2596 
+	}
+}
+
+2603 
+	$bad_add»ss_Ëngth
+ (
+aùu®
+, 
+ex³ùed
+)
+
+2605 
+	`msg
+ (
+M_FATAL
+, "ERROR:„eceived strange incoming…acket with‡n‡ddress†ength of %d -- we only‡ccept‡ddress†engths of %d.",
+
+2606 
+aùu®
+,
+
+2607 
+ex³ùed
+);
+
+2608 
+	}
+}
+
+2615 
+	$lšk_sock‘_»ad_tý
+ (
+lšk_sock‘
+ *
+sock
+,
+
+2616 
+bufãr
+ *
+buf
+)
+
+2618 
+Ën
+ = 0;
+
+2620 ià(!
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+)
+
+2622 #ifdeà
+WIN32
+
+
+2623 
+Ën
+ = 
+	`sock‘_fš®ize
+ (
+sock
+->
+sd
+, &sock->
+»ads
+, 
+buf
+, 
+NULL
+);
+
+2625 
+bufãr
+ 
+äag
+;
+
+2626 
+	`¡»am_buf_g‘_Ãxt
+ (&
+sock
+->
+¡»am_buf
+, &
+äag
+);
+
+2627 
+Ën
+ = 
+	`»cv
+ (
+sock
+->
+sd
+, 
+	`BPTR
+ (&
+äag
+), 
+	`BLEN
+ (&äag), 
+MSG_NOSIGNAL
+);
+
+2630 ià(!
+Ën
+)
+
+2631 
+sock
+->
+¡»am_»£t
+ = 
+Œue
+;
+
+2632 ià(
+Ën
+ <= 0)
+
+2633  
+buf
+->
+Ën
+ =†en;
+
+2636 ià(
+sock
+->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+
+
+2637 || 
+	`¡»am_buf_added
+ (&
+sock
+->
+¡»am_buf
+, 
+Ën
+))
+
+2639 
+	`¡»am_buf_g‘_fš®
+ (&
+sock
+->
+¡»am_buf
+, 
+buf
+);
+
+2640 
+	`¡»am_buf_»£t
+ (&
+sock
+->
+¡»am_buf
+);
+
+2641  
+buf
+->
+Ën
+;
+
+2644  
+buf
+->
+Ën
+ = 0;
+
+2645 
+	}
+}
+
+2647 #iâdeà
+WIN32
+
+
+2649 #ià
+ENABLE_IP_PKTINFO
+
+
+2651 #´agm¨
+·ck
+(1)
+
+2652 
+	sÝ’v²_š4_pktšfo
+
+
+2654 
+cmsghdr
+ 
+	mcmsghdr
+;
+
+2655 #ifdeà
+HAVE_IN_PKTINFO
+
+
+2656 
+š_pktšfo
+ 
+	mpi4
+;
+
+2657 #–ià
+defšed
+(
+IP_RECVDSTADDR
+)
+
+2658 
+š_addr
+ 
+	mpi4
+;
+
+2661 
+	sÝ’v²_š6_pktšfo
+
+
+2663 
+cmsghdr
+ 
+	mcmsghdr
+;
+
+2664 
+š6_pktšfo
+ 
+	mpi6
+;
+
+2667 
+	uÝ’v²_pktšfo
+ {
+
+2668 
+Ý’v²_š4_pktšfo
+ 
+	mmsgpi4
+;
+
+2669 
+Ý’v²_š6_pktšfo
+ 
+	mmsgpi6
+;
+
+2671 #´agm¨
+·ck
+()
+
+2673 
+sockËn_t
+
+
+2674 
+	$lšk_sock‘_»ad_udp_posix_»cvmsg
+ (
+lšk_sock‘
+ *
+sock
+,
+
+2675 
+bufãr
+ *
+buf
+,
+
+2676 
+maxsize
+,
+
+2677 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+2679 
+iovec
+ 
+iov
+;
+
+2680 
+Ý’v²_pktšfo
+ 
+Ýi
+;
+
+2681 
+msghdr
+ 
+mesg
+;
+
+2682 
+sockËn_t
+ 
+äomËn
+ =  (
+äom
+->
+de¡
+.
+addr
+);
+
+2684 
+iov
+.
+iov_ba£
+ = 
+	`BPTR
+ (
+buf
+);
+
+2685 
+iov
+.
+iov_Ën
+ = 
+maxsize
+;
+
+2686 
+mesg
+.
+msg_iov
+ = &
+iov
+;
+
+2687 
+mesg
+.
+msg_iovËn
+ = 1;
+
+2688 
+mesg
+.
+msg_Çme
+ = &
+äom
+->
+de¡
+.
+addr
+;
+
+2689 
+mesg
+.
+msg_Çm–’
+ = 
+äomËn
+;
+
+2690 
+mesg
+.
+msg_cÚŒÞ
+ = &
+Ýi
+;
+
+2691 
+mesg
+.
+msg_cÚŒÞËn
+ =  
+Ýi
+;
+
+2692 
+buf
+->
+Ën
+ = 
+	`»cvmsg
+ (
+sock
+->
+sd
+, &
+mesg
+, 0);
+
+2693 ià(
+buf
+->
+Ën
+ >= 0)
+
+2695 
+cmsghdr
+ *
+cmsg
+;
+
+2696 
+äomËn
+ = 
+mesg
+.
+msg_Çm–’
+;
+
+2697 
+cmsg
+ = 
+	`CMSG_FIRSTHDR
+ (&
+mesg
+);
+
+2698 ià(
+cmsg
+ !ð
+NULL
+
+
+2699 && 
+	`CMSG_NXTHDR
+ (&
+mesg
+, 
+cmsg
+è=ð
+NULL
+
+
+2700 #ifdeà
+IP_PKTINFO
+
+
+2701 && 
+cmsg
+->
+cmsg_Ëv–
+ =ð
+SOL_IP
+
+
+2702 && 
+cmsg
+->
+cmsg_ty³
+ =ð
+IP_PKTINFO
+
+
+2703 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+2704 && 
+cmsg
+->
+cmsg_Ëv–
+ =ð
+IPPROTO_IP
+
+
+2705 && 
+cmsg
+->
+cmsg_ty³
+ =ð
+IP_RECVDSTADDR
+
+
+2707 #”rÜ 
+ENABLE_IP_PKTINFO
+ 
+is
+ 
+£t
+ 
+w™hout
+ 
+IP_PKTINFO
+ 
+xÜ
+ 
+	`IP_RECVDSTADDR
+ (
+fix
+ 
+sysh—d
+.
+h
+)
+
+2709 && 
+cmsg
+->
+cmsg_Ën
+ >ð (
+Ý’v²_š4_pktšfo
+))
+
+2711 #ifdeà
+IP_PKTINFO
+
+
+2712 
+š_pktšfo
+ *
+pkti
+ = (š_pktšfØ*è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+2713 
+äom
+->
+pi
+.
+š4
+.
+�i_ifšdex
+ = 
+pkti
+->ipi_ifindex;
+
+2714 
+äom
+->
+pi
+.
+š4
+.
+�i_¥ec_d¡
+ = 
+pkti
+->ipi_spec_dst;
+
+2715 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+2716 
+äom
+->
+pi
+.
+š4
+ = *(
+š_addr
+*è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+2718 #”rÜ 
+ENABLE_IP_PKTINFO
+ 
+is
+ 
+£t
+ 
+w™hout
+ 
+IP_PKTINFO
+ 
+xÜ
+ 
+	`IP_RECVDSTADDR
+ (
+fix
+ 
+sysh—d
+.
+h
+)
+
+2721 ià(
+cmsg
+ !ð
+NULL
+
+
+2722 && 
+	`CMSG_NXTHDR
+ (&
+mesg
+, 
+cmsg
+è=ð
+NULL
+
+
+2723 && 
+cmsg
+->
+cmsg_Ëv–
+ =ð
+IPPROTO_IPV6
+
+
+2724 && 
+cmsg
+->
+cmsg_ty³
+ =ð
+IPV6_PKTINFO
+
+
+2725 && 
+cmsg
+->
+cmsg_Ën
+ >ð (
+Ý’v²_š6_pktšfo
+))
+
+2727 
+š6_pktšfo
+ *
+pkti6
+ = (š6_pktšfØ*è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+2728 
+äom
+->
+pi
+.
+š6
+.
+�i6_ifšdex
+ = 
+pkti6
+->ipi6_ifindex;
+
+2729 
+äom
+->
+pi
+.
+š6
+.
+�i6_addr
+ = 
+pkti6
+->ipi6_addr;
+
+2732  
+äomËn
+;
+
+2733 
+	}
+}
+
+2737 
+	$lšk_sock‘_»ad_udp_posix
+ (
+lšk_sock‘
+ *
+sock
+,
+
+2738 
+bufãr
+ *
+buf
+,
+
+2739 
+maxsize
+,
+
+2740 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+2742 
+sockËn_t
+ 
+äomËn
+ =  (
+äom
+->
+de¡
+.
+addr
+);
+
+2743 
+sockËn_t
+ 
+ex³ùedËn
+ = 
+	`af_addr_size
+(
+	`´Ùo_§_çmžy
+(
+sock
+->
+šfo
+.
+´Ùo
+));
+
+2744 
+	`addr_z”o_ho¡
+(&
+äom
+->
+de¡
+);
+
+2745 
+	`ASSERT
+ (
+	`buf_§ã
+ (
+buf
+, 
+maxsize
+));
+
+2746 #ià
+ENABLE_IP_PKTINFO
+
+
+2748 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+è&& sock->
+sockæags
+ & 
+SF_USE_IP_PKTINFO
+)
+
+2749 
+äomËn
+ = 
+	`lšk_sock‘_»ad_udp_posix_»cvmsg
+ (
+sock
+, 
+buf
+, 
+maxsize
+, 
+äom
+);
+
+2752 
+buf
+->
+Ën
+ = 
+	`»cväom
+ (
+sock
+->
+sd
+, 
+	`BPTR
+ (buf), 
+maxsize
+, 0,
+
+2753 &
+äom
+->
+de¡
+.
+addr
+.
+§
+, &
+äomËn
+);
+
+2754 ià(
+buf
+->
+Ën
+ >ð0 && 
+ex³ùedËn
+ && 
+äomËn
+ !=ƒxpectedlen)
+
+2755 
+	`bad_add»ss_Ëngth
+ (
+äomËn
+, 
+ex³ùedËn
+);
+
+2756  
+buf
+->
+Ën
+;
+
+2757 
+	}
+}
+
+2766 
+	$lšk_sock‘_wr™e_tý
+ (
+lšk_sock‘
+ *
+sock
+,
+
+2767 
+bufãr
+ *
+buf
+,
+
+2768 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+2770 
+·ck‘_size_ty³
+ 
+Ën
+ = 
+	`BLEN
+ (
+buf
+);
+
+2771 
+	`dmsg
+ (
+D_STREAM_DEBUG
+, "STREAM: WRITE %d off£t=%d", ()
+Ën
+, 
+buf
+->
+off£t
+);
+
+2772 
+	`ASSERT
+ (
+Ën
+ <ð
+sock
+->
+¡»am_buf
+.
+maxËn
+);
+
+2773 
+Ën
+ = 
+	`htÚps
+ (len);
+
+2774 
+	`ASSERT
+ (
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+Ën
+,  (len)));
+
+2775 #ifdeà
+WIN32
+
+
+2776  
+	`lšk_sock‘_wr™e_wš32
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+2778  
+	`lšk_sock‘_wr™e_tý_posix
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+2780 
+	}
+}
+
+2782 #ià
+ENABLE_IP_PKTINFO
+
+
+2785 
+	$lšk_sock‘_wr™e_udp_posix_£ndmsg
+ (
+lšk_sock‘
+ *
+sock
+,
+
+2786 
+bufãr
+ *
+buf
+,
+
+2787 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+2789 
+iovec
+ 
+iov
+;
+
+2790 
+msghdr
+ 
+mesg
+;
+
+2791 
+cmsghdr
+ *
+cmsg
+;
+
+2792 
+Ý’v²_pktšfo
+ 
+Ýi
+;
+
+2794 
+iov
+.
+iov_ba£
+ = 
+	`BPTR
+ (
+buf
+);
+
+2795 
+iov
+.
+iov_Ën
+ = 
+	`BLEN
+ (
+buf
+);
+
+2796 
+mesg
+.
+msg_iov
+ = &
+iov
+;
+
+2797 
+mesg
+.
+msg_iovËn
+ = 1;
+
+2798 
+sock
+->
+šfo
+.
+l§
+->
+»mÙe
+.
+addr
+.
+§
+.
+§_çmžy
+)
+
+2800 
+AF_INET
+:
+
+2802 
+mesg
+.
+msg_Çme
+ = &
+to
+->
+de¡
+.
+addr
+.
+§
+;
+
+2803 
+mesg
+.
+msg_Çm–’
+ =  (
+sockaddr_š
+);
+
+2804 
+mesg
+.
+msg_cÚŒÞ
+ = &
+Ýi
+;
+
+2805 
+mesg
+.
+msg_æags
+ = 0;
+
+2806 #ifdeà
+HAVE_IN_PKTINFO
+
+
+2807 
+mesg
+.
+msg_cÚŒÞËn
+ =  (
+Ý’v²_š4_pktšfo
+);
+
+2808 
+cmsg
+ = 
+	`CMSG_FIRSTHDR
+ (&
+mesg
+);
+
+2809 
+cmsg
+->
+cmsg_Ën
+ =  (
+Ý’v²_š4_pktšfo
+);
+
+2810 
+cmsg
+->
+cmsg_Ëv–
+ = 
+SOL_IP
+;
+
+2811 
+cmsg
+->
+cmsg_ty³
+ = 
+IP_PKTINFO
+;
+
+2813 
+š_pktšfo
+ *
+pkti
+;
+
+2814 
+pkti
+ = (
+š_pktšfo
+ *è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+2815 
+pkti
+->
+�i_ifšdex
+ = 
+to
+->
+pi
+.
+š4
+.ipi_ifindex;
+
+2816 
+pkti
+->
+�i_¥ec_d¡
+ = 
+to
+->
+pi
+.
+š4
+.ipi_spec_dst;
+
+2817 
+pkti
+->
+�i_addr
+.
+s_addr
+ = 0;
+
+2819 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+2820 
+	`ASSERT
+Ð
+	`CMSG_SPACE
+( (
+š_addr
+)è<ð(
+Ýi
+) );
+
+2821 
+mesg
+.
+msg_cÚŒÞËn
+ = 
+	`CMSG_SPACE
+( (
+š_addr
+));
+
+2822 
+cmsg
+ = 
+	`CMSG_FIRSTHDR
+ (&
+mesg
+);
+
+2823 
+cmsg
+->
+cmsg_Ën
+ = 
+	`CMSG_LEN
+((
+š_addr
+));
+
+2824 
+cmsg
+->
+cmsg_Ëv–
+ = 
+IPPROTO_IP
+;
+
+2825 
+cmsg
+->
+cmsg_ty³
+ = 
+IP_RECVDSTADDR
+;
+
+2826 *(
+š_addr
+ *è
+	`CMSG_DATA
+ (
+cmsg
+èð
+to
+->
+pi
+.
+š4
+;
+
+2828 #”rÜ 
+ENABLE_IP_PKTINFO
+ 
+is
+ 
+£t
+ 
+w™hout
+ 
+IP_PKTINFO
+ 
+xÜ
+ 
+	`IP_RECVDSTADDR
+ (
+fix
+ 
+sysh—d
+.
+h
+)
+
+2832 
+AF_INET6
+:
+
+2834 
+š6_pktšfo
+ *
+pkti6
+;
+
+2835 
+mesg
+.
+msg_Çme
+ = &
+to
+->
+de¡
+.
+addr
+.
+§
+;
+
+2836 
+mesg
+.
+msg_Çm–’
+ =  (
+sockaddr_š6
+);
+
+2837 
+mesg
+.
+msg_cÚŒÞ
+ = &
+Ýi
+;
+
+2838 
+mesg
+.
+msg_cÚŒÞËn
+ =  (
+Ý’v²_š6_pktšfo
+);
+
+2839 
+mesg
+.
+msg_æags
+ = 0;
+
+2840 
+cmsg
+ = 
+	`CMSG_FIRSTHDR
+ (&
+mesg
+);
+
+2841 
+cmsg
+->
+cmsg_Ën
+ =  (
+Ý’v²_š6_pktšfo
+);
+
+2842 
+cmsg
+->
+cmsg_Ëv–
+ = 
+IPPROTO_IPV6
+;
+
+2843 
+cmsg
+->
+cmsg_ty³
+ = 
+IPV6_PKTINFO
+;
+
+2844 
+pkti6
+ = (
+š6_pktšfo
+ *è
+	`CMSG_DATA
+ (
+cmsg
+);
+
+2845 
+pkti6
+->
+�i6_ifšdex
+ = 
+to
+->
+pi
+.
+š6
+.ipi6_ifindex;
+
+2846 
+pkti6
+->
+�i6_addr
+ = 
+to
+->
+pi
+.
+š6
+.ipi6_addr;
+
+2849 : 
+	`ASSERT
+(0);
+
+2851  
+	`£ndmsg
+ (
+sock
+->
+sd
+, &
+mesg
+, 0);
+
+2852 
+	}
+}
+
+2860 #ifdeà
+WIN32
+
+
+2863 
+	$sock‘_»cv_queue
+ (
+lšk_sock‘
+ *
+sock
+, 
+maxsize
+)
+
+2865 ià(
+sock
+->
+»ads
+.
+io¡©e
+ =ð
+IOSTATE_INITIAL
+)
+
+2867 
+WSABUF
+ 
+w§buf
+[1];
+
+2868 
+¡©us
+;
+
+2871 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+2873 
+sock
+->
+»ads
+.
+buf
+ = sock->»ads.
+buf_š™
+;
+
+2875 ià(
+	`´Ùo_is_tý
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+2877 
+	`¡»am_buf_g‘_Ãxt
+ (&
+sock
+->
+¡»am_buf
+, &sock->
+»ads
+.
+buf
+);
+
+2881 
+	`ASSERT
+ (0);
+
+2885 
+w§buf
+[0].
+buf
+ = 
+	`BPTR
+ (&
+sock
+->
+»ads
+.buf);
+
+2886 
+w§buf
+[0].
+Ën
+ = 
+maxsize
+ ? maxsiz�: 
+	`BLEN
+ (&
+sock
+->
+»ads
+.
+buf
+);
+
+2889 
+	`ASSERT
+ (
+w§buf
+[0].
+Ën
+ <ð
+	`BLEN
+ (&
+sock
+->
+»ads
+.
+buf
+));
+
+2892 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+sock
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2893 
+sock
+->
+»ads
+.
+æags
+ = 0;
+
+2895 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+2897 
+sock
+->
+»ads
+.
+addr_defšed
+ = 
+Œue
+;
+
+2898 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv6
+)
+
+2899 
+sock
+->
+»ads
+.
+add¾’
+ =  (sock->»ads.
+addr6
+);
+
+2901 
+sock
+->
+»ads
+.
+add¾’
+ =  (sock->»ads.
+addr
+);
+
+2902 
+¡©us
+ = 
+	`WSARecvFrom
+(
+
+2903 
+sock
+->
+sd
+,
+
+2904 
+w§buf
+,
+
+2906 &
+sock
+->
+»ads
+.
+size
+,
+
+2907 &
+sock
+->
+»ads
+.
+æags
+,
+
+2908 (
+sockaddr
+ *è&
+sock
+->
+»ads
+.
+addr
+,
+
+2909 &
+sock
+->
+»ads
+.
+add¾’
+,
+
+2910 &
+sock
+->
+»ads
+.
+ov”Ïµed
+,
+
+2911 
+NULL
+);
+
+2913 ià(
+	`´Ùo_is_tý
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+2915 
+sock
+->
+»ads
+.
+addr_defšed
+ = 
+çl£
+;
+
+2916 
+¡©us
+ = 
+	`WSARecv
+(
+
+2917 
+sock
+->
+sd
+,
+
+2918 
+w§buf
+,
+
+2920 &
+sock
+->
+»ads
+.
+size
+,
+
+2921 &
+sock
+->
+»ads
+.
+æags
+,
+
+2922 &
+sock
+->
+»ads
+.
+ov”Ïµed
+,
+
+2923 
+NULL
+);
+
+2927 
+¡©us
+ = 0;
+
+2928 
+	`ASSERT
+ (0);
+
+2931 ià(!
+¡©us
+)
+
+2933 
+add¾’
+ = 
+	`af_addr_size
+(
+sock
+->
+šfo
+.
+l§
+->
+loÿl
+.
+addr
+.
+§
+.
+§_çmžy
+);
+
+2934 ià(
+sock
+->
+»ads
+.
+addr_defšed
+ && sock->»ads.
+add¾’
+ !=‡ddrlen)
+
+2935 
+	`bad_add»ss_Ëngth
+ (
+sock
+->
+»ads
+.
+add¾’
+,‡ddrlen);
+
+2936 
+sock
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2939 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+sock
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2940 
+sock
+->
+»ads
+.
+¡©us
+ = 0;
+
+2942 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Receive immediate„eturn [%d,%d]",
+
+2943 (è
+w§buf
+[0].
+Ën
+,
+
+2944 (è
+sock
+->
+»ads
+.
+size
+);
+
+2948 
+¡©us
+ = 
+	`WSAG‘La¡E¼Ü
+ ();
+
+2949 ià(
+¡©us
+ =ð
+WSA_IO_PENDING
+)
+
+2951 
+sock
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_QUEUED
+;
+
+2952 
+sock
+->
+»ads
+.
+¡©us
+ = status;
+
+2953 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Receive queued [%d]",
+
+2954 (è
+w§buf
+[0].
+Ën
+);
+
+2958 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2959 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+sock
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2960 
+sock
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2961 
+sock
+->
+»ads
+.
+¡©us
+ = status;
+
+2962 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Receiveƒrror [%d]: %s",
+
+2963 (è
+w§buf
+[0].
+Ën
+,
+
+2964 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+2965 
+	`gc_ä“
+ (&
+gc
+);
+
+2969  
+sock
+->
+»ads
+.
+io¡©e
+;
+
+2970 
+	}
+}
+
+2973 
+	$sock‘_£nd_queue
+ (
+lšk_sock‘
+ *
+sock
+, 
+bufãr
+ *
+buf
+, cÚ¡ 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+2975 ià(
+sock
+->
+wr™es
+.
+io¡©e
+ =ð
+IOSTATE_INITIAL
+)
+
+2977 
+WSABUF
+ 
+w§buf
+[1];
+
+2978 
+¡©us
+;
+
+2981 
+sock
+->
+wr™es
+.
+buf
+ = sock->wr™es.
+buf_š™
+;
+
+2982 
+sock
+->
+wr™es
+.
+buf
+.
+Ën
+ = 0;
+
+2983 
+	`ASSERT
+ (
+	`buf_cÝy
+ (&
+sock
+->
+wr™es
+.
+buf
+, buf));
+
+2986 
+w§buf
+[0].
+buf
+ = 
+	`BPTR
+ (&
+sock
+->
+wr™es
+.buf);
+
+2987 
+w§buf
+[0].
+Ën
+ = 
+	`BLEN
+ (&
+sock
+->
+wr™es
+.
+buf
+);
+
+2990 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+sock
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2991 
+sock
+->
+wr™es
+.
+æags
+ = 0;
+
+2993 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+2996 
+sock
+->
+wr™es
+.
+addr_defšed
+ = 
+Œue
+;
+
+2997 ià(
+sock
+->
+šfo
+.
+´Ùo
+ =ð
+PROTO_UDPv6
+)
+
+2999 
+sock
+->
+wr™es
+.
+addr6
+ = 
+to
+->
+de¡
+.
+addr
+.
+š6
+;
+
+3000 
+sock
+->
+wr™es
+.
+add¾’
+ =  (sock->wr™es.
+addr6
+);
+
+3004 
+sock
+->
+wr™es
+.
+addr
+ = 
+to
+->
+de¡
+.addr.
+š4
+;
+
+3005 
+sock
+->
+wr™es
+.
+add¾’
+ =  (sock->wr™es.
+addr
+);
+
+3008 
+¡©us
+ = 
+	`WSAS’dTo
+(
+
+3009 
+sock
+->
+sd
+,
+
+3010 
+w§buf
+,
+
+3012 &
+sock
+->
+wr™es
+.
+size
+,
+
+3013 
+sock
+->
+wr™es
+.
+æags
+,
+
+3014 (
+sockaddr
+ *è&
+sock
+->
+wr™es
+.
+addr
+,
+
+3015 
+sock
+->
+wr™es
+.
+add¾’
+,
+
+3016 &
+sock
+->
+wr™es
+.
+ov”Ïµed
+,
+
+3017 
+NULL
+);
+
+3019 ià(
+	`´Ùo_is_tý
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+3022 
+sock
+->
+wr™es
+.
+addr_defšed
+ = 
+çl£
+;
+
+3024 
+¡©us
+ = 
+	`WSAS’d
+(
+
+3025 
+sock
+->
+sd
+,
+
+3026 
+w§buf
+,
+
+3028 &
+sock
+->
+wr™es
+.
+size
+,
+
+3029 
+sock
+->
+wr™es
+.
+æags
+,
+
+3030 &
+sock
+->
+wr™es
+.
+ov”Ïµed
+,
+
+3031 
+NULL
+);
+
+3035 
+¡©us
+ = 0;
+
+3036 
+	`ASSERT
+ (0);
+
+3039 ià(!
+¡©us
+)
+
+3041 
+sock
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+3044 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+sock
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+3046 
+sock
+->
+wr™es
+.
+¡©us
+ = 0;
+
+3048 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Send immediate„eturn [%d,%d]",
+
+3049 (è
+w§buf
+[0].
+Ën
+,
+
+3050 (è
+sock
+->
+wr™es
+.
+size
+);
+
+3054 
+¡©us
+ = 
+	`WSAG‘La¡E¼Ü
+ ();
+
+3055 ià(
+¡©us
+ =ð
+WSA_IO_PENDING
+)
+
+3057 
+sock
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_QUEUED
+;
+
+3058 
+sock
+->
+wr™es
+.
+¡©us
+ = status;
+
+3059 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Send queued [%d]",
+
+3060 (è
+w§buf
+[0].
+Ën
+);
+
+3064 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3065 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+sock
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+3066 
+sock
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+3067 
+sock
+->
+wr™es
+.
+¡©us
+ = status;
+
+3069 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Sendƒrror [%d]: %s",
+
+3070 (è
+w§buf
+[0].
+Ën
+,
+
+3071 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+3073 
+	`gc_ä“
+ (&
+gc
+);
+
+3077  
+sock
+->
+wr™es
+.
+io¡©e
+;
+
+3078 
+	}
+}
+
+3081 
+	$sock‘_fš®ize
+ (
+SOCKET
+ 
+s
+,
+
+3082 
+ov”Ïµed_io
+ *
+io
+,
+
+3083 
+bufãr
+ *
+buf
+,
+
+3084 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+3086 
+»t
+ = -1;
+
+3087 
+BOOL
+ 
+¡©us
+;
+
+3089 
+io
+->
+io¡©e
+)
+
+3091 
+IOSTATE_QUEUED
+:
+
+3092 
+¡©us
+ = 
+	`WSAG‘Ov”ÏµedResuÉ
+(
+
+3093 
+s
+,
+
+3094 &
+io
+->
+ov”Ïµed
+,
+
+3095 &
+io
+->
+size
+,
+
+3096 
+FALSE
+,
+
+3097 &
+io
+->
+æags
+
+
+3099 ià(
+¡©us
+)
+
+3102 ià(
+buf
+)
+
+3103 *
+buf
+ = 
+io
+->buf;
+
+3104 
+»t
+ = 
+io
+->
+size
+;
+
+3105 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+3106 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+3108 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Sock‘ Com¶‘iÚ sucûs [%d]", 
+»t
+);
+
+3113 
+»t
+ = -1;
+
+3114 ià(
+	`WSAG‘La¡E¼Ü
+(è!ð
+WSA_IO_INCOMPLETE
+)
+
+3117 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+3118 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+3119 
+	`msg
+ (
+D_WIN32_IO
+ | 
+M_ERRNO
+, "WIN32 I/O: Socket Completionƒrror");
+
+3124 
+IOSTATE_IMMEDIATE_RETURN
+:
+
+3125 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+3126 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+3127 ià(
+io
+->
+¡©us
+)
+
+3130 
+	`WSAS‘La¡E¼Ü
+ (
+io
+->
+¡©us
+);
+
+3131 
+»t
+ = -1;
+
+3132 
+	`msg
+ (
+D_WIN32_IO
+ | 
+M_ERRNO
+, "WIN32 I/O: Socket Completion‚on-queuedƒrror");
+
+3137 ià(
+buf
+)
+
+3138 *
+buf
+ = 
+io
+->buf;
+
+3139 
+»t
+ = 
+io
+->
+size
+;
+
+3140 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Sock‘ Com¶‘iÚ‚Ú-queued sucûs [%d]", 
+»t
+);
+
+3144 
+IOSTATE_INITIAL
+:
+
+3145 
+	`WSAS‘La¡E¼Ü
+ (
+WSAEINVAL
+);
+
+3146 
+»t
+ = -1;
+
+3147 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: Socket Completion BAD STATE");
+
+3151 
+	`ASSERT
+ (0);
+
+3155 ià(
+äom
+)
+
+3157 ià(
+»t
+ >ð0 && 
+io
+->
+addr_defšed
+)
+
+3165 
+io
+->
+add¾’
+)
+
+3167 (
+sockaddr_š
+):
+
+3168 (
+sockaddr_š6
+):
+
+3171 (
+sockaddr_š6
+)-4:
+
+3174 
+	`bad_add»ss_Ëngth
+ (
+io
+->
+add¾’
+, 
+	`af_addr_size
+(io->
+addr
+.
+sš_çmžy
+));
+
+3177 
+io
+->
+addr
+.
+sš_çmžy
+)
+
+3179 
+AF_INET
+:
+
+3180 
+äom
+->
+de¡
+.
+addr
+.
+š4
+ = 
+io
+->addr;
+
+3182 
+AF_INET6
+:
+
+3183 
+äom
+->
+de¡
+.
+addr
+.
+š6
+ = 
+io
+->
+addr6
+;
+
+3188 
+	`CLEAR
+ (
+äom
+->
+de¡
+.
+addr
+);
+
+3191 ià(
+buf
+)
+
+3192 
+buf
+->
+Ën
+ = 
+»t
+;
+
+3193  
+»t
+;
+
+3194 
+	}
+}
+
+3203 
+	$sock‘_£t
+ (
+lšk_sock‘
+ *
+s
+,
+
+3204 
+ev’t_£t
+ *
+es
+,
+
+3205 
+rwæags
+,
+
+3206 *
+¬g
+,
+
+3207 *
+³rsi¡’t
+)
+
+3209 ià(
+s
+)
+
+3211 ià((
+rwæags
+ & 
+EVENT_READ
+è&& !
+	`¡»am_buf_»ad_£tup
+ (
+s
+))
+
+3213 
+	`ASSERT
+ (!
+³rsi¡’t
+);
+
+3214 
+rwæags
+ &ð~
+EVENT_READ
+;
+
+3217 #ifdeà
+WIN32
+
+
+3218 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+3219 
+	`sock‘_»cv_queue
+ (
+s
+, 0);
+
+3223 ià(!
+³rsi¡’t
+ || *³rsi¡’ˆ!ð
+rwæags
+)
+
+3225 
+	`ev’t_ùl
+ (
+es
+, 
+	`sock‘_ev’t_hªdË
+ (
+s
+), 
+rwæags
+, 
+¬g
+);
+
+3226 ià(
+³rsi¡’t
+)
+
+3227 *
+³rsi¡’t
+ = 
+rwæags
+;
+
+3230 
+s
+->
+rwæags_debug
+ = 
+rwæags
+;
+
+3232  
+rwæags
+;
+
+3233 
+	}
+}
+
+3236 
+	$sd_þo£
+ (
+sock‘_desü�tÜ_t
+ *
+sd
+)
+
+3238 ià(
+sd
+ && 
+	`sock‘_defšed
+ (*sd))
+
+3240 
+	`Ý’v²_þo£_sock‘
+ (*
+sd
+);
+
+3241 *
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+3243 
+	}
+}
+
+3245 #ià
+UNIX_SOCK_SUPPORT
+
+
+3252 
+	$sockaddr_unix_Çme
+ (cÚ¡ 
+sockaddr_un
+ *
+loÿl
+, cÚ¡ *
+nuÎ
+)
+
+3254 ià(
+loÿl
+ &&†oÿl->
+sun_çmžy
+ =ð
+PF_UNIX
+)
+
+3255  
+loÿl
+->
+sun_·th
+;
+
+3257  
+nuÎ
+;
+
+3258 
+	}
+}
+
+3260 
+sock‘_desü�tÜ_t
+
+
+3261 
+	$ü—‹_sock‘_unix
+ ()
+
+3263 
+sock‘_desü�tÜ_t
+ 
+sd
+;
+
+3265 ià((
+sd
+ = 
+	`sock‘
+ (
+PF_UNIX
+, 
+SOCK_STREAM
+, 0)) < 0)
+
+3266 
+	`msg
+ (
+M_ERR
+, "Cannot create unix domain socket");
+
+3267  
+sd
+;
+
+3268 
+	}
+}
+
+3271 
+	$sock‘_bšd_unix
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+3272 
+sockaddr_un
+ *
+loÿl
+,
+
+3273 cÚ¡ *
+´efix
+)
+
+3275 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3277 #ifdeà
+HAVE_UMASK
+
+
+3278 cÚ¡ 
+mode_t
+ 
+Üig_umask
+ = 
+	`umask
+ (0);
+
+3281 ià(
+	`bšd
+ (
+sd
+, (
+sockaddr
+ *è
+loÿl
+,  (
+sockaddr_un
+)))
+
+3283 cÚ¡ 
+”ºum
+ = 
+	`Ý’v²_”ºo
+ ();
+
+3284 
+	`msg
+ (
+M_FATAL
+, "%s: Socket bind[%d] failed on unix domain socket %s: %s",
+
+3285 
+´efix
+,
+
+3286 ()
+sd
+,
+
+3287 
+	`sockaddr_unix_Çme
+ (
+loÿl
+, "NULL"),
+
+3288 
+	`¡»¼Ü_ts
+ (
+”ºum
+, &
+gc
+));
+
+3291 #ifdeà
+HAVE_UMASK
+
+
+3292 
+	`umask
+ (
+Üig_umask
+);
+
+3295 
+	`gc_ä“
+ (&
+gc
+);
+
+3296 
+	}
+}
+
+3298 
+sock‘_desü�tÜ_t
+
+
+3299 
+	$sock‘_acû±_unix
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+3300 
+sockaddr_un
+ *
+»mÙe
+)
+
+3302 
+sockËn_t
+ 
+»mÙe_Ën
+ =  (
+sockaddr_un
+);
+
+3303 
+sock‘_desü�tÜ_t
+ 
+»t
+;
+
+3305 
+	`CLEAR
+ (*
+»mÙe
+);
+
+3306 
+»t
+ = 
+	`acû±
+ (
+sd
+, (
+sockaddr
+ *è
+»mÙe
+, &
+»mÙe_Ën
+);
+
+3307  
+»t
+;
+
+3308 
+	}
+}
+
+3311 
+	$sock‘_cÚÃù_unix
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+3312 
+sockaddr_un
+ *
+»mÙe
+)
+
+3314 
+¡©us
+ = 
+	`cÚÃù
+ (
+sd
+, (
+sockaddr
+ *è
+»mÙe
+,  (
+sockaddr_un
+));
+
+3315 ià(
+¡©us
+)
+
+3316 
+¡©us
+ = 
+	`Ý’v²_”ºo
+ ();
+
+3317  
+¡©us
+;
+
+3318 
+	}
+}
+
+3321 
+	$sockaddr_unix_š™
+ (
+sockaddr_un
+ *
+loÿl
+, cÚ¡ *
+·th
+)
+
+3323 
+loÿl
+->
+sun_çmžy
+ = 
+PF_UNIX
+;
+
+3324 
+	`¡ºýyÁ
+ (
+loÿl
+->
+sun_·th
+, 
+·th
+,  (local->sun_path));
+
+3325 
+	}
+}
+
+3328 
+	$sock‘_d–‘e_unix
+ (cÚ¡ 
+sockaddr_un
+ *
+loÿl
+)
+
+3330 cÚ¡ *
+Çme
+ = 
+	`sockaddr_unix_Çme
+ (
+loÿl
+, 
+NULL
+);
+
+3331 #ifdeà
+HAVE_UNLINK
+
+
+3332 ià(
+Çme
+ && 
+	`¡¾’
+ (name))
+
+3333 
+	`uÆšk
+ (
+Çme
+);
+
+3335 
+	}
+}
+
+3337 
+boÞ
+
+
+3338 
+	$unix_sock‘_g‘_³”_uid_gid
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+, *
+uid
+, *
+gid
+)
+
+3340 #ifdeà
+HAVE_GETPEEREID
+
+
+3341 
+uid_t
+ 
+u
+;
+
+3342 
+gid_t
+ 
+g
+;
+
+3343 ià(
+	`g‘³”eid
+ (
+sd
+, &
+u
+, &
+g
+) == -1)
+
+3344  
+çl£
+;
+
+3345 ià(
+uid
+)
+
+3346 *
+uid
+ = 
+u
+;
+
+3347 ià(
+gid
+)
+
+3348 *
+gid
+ = 
+g
+;
+
+3349  
+Œue
+;
+
+3350 #–ià
+	`defšed
+(
+SO_PEERCRED
+)
+
+3351 
+uüed
+ 
+³”üed
+;
+
+3352 
+sockËn_t
+ 
+so_Ën
+ = (
+³”üed
+);
+
+3353 ià(
+	`g‘sockÝt
+(
+sd
+, 
+SOL_SOCKET
+, 
+SO_PEERCRED
+, &
+³”üed
+, &
+so_Ën
+) == -1)
+
+3354  
+çl£
+;
+
+3355 ià(
+uid
+)
+
+3356 *
+uid
+ = 
+³”üed
+.uid;
+
+3357 ià(
+gid
+)
+
+3358 *
+gid
+ = 
+³”üed
+.gid;
+
+3359  
+Œue
+;
+
+3361  
+çl£
+;
+
+3363 
+	}
+}
+
+	@socket.h
+
+25 #iâdeà
+SOCKET_H
+
+
+26 
+	#SOCKET_H
+
+
+	)
+
+28 
+	~"bufãr.h
+"
+
+29 
+	~"commÚ.h
+"
+
+30 
+	~"”rÜ.h
+"
+
+31 
+	~"´Ùo.h
+"
+
+32 
+	~"mtu.h
+"
+
+33 
+	~"wš32.h
+"
+
+34 
+	~"ev’t.h
+"
+
+35 
+	~"´oxy.h
+"
+
+36 
+	~"socks.h
+"
+
+37 
+	~"misc.h
+"
+
+42 
+	#OPENVPN_PORT
+ 1194
+
+	)
+
+47 
+	#SOCKET_SND_RCV_BUF_MAX
+ 1000000
+
+	)
+
+53 
+	#RESOLV_RETRY_INFINITE
+ 1000000000
+
+	)
+
+61 
+ušt16_t
+ 
+	t·ck‘_size_ty³
+;
+
+64 
+	#htÚps
+(
+x
+è
+	`htÚs
+(x)
+
+	)
+
+67 
+	#Áohps
+(
+x
+è
+	`Áohs
+(x)
+
+	)
+
+70 
+	sÝ’v²_sockaddr
+
+
+74 
+sockaddr
+ 
+	m§
+;
+
+75 
+sockaddr_š
+ 
+	mš4
+;
+
+76 
+sockaddr_š6
+ 
+	mš6
+;
+
+77 } 
+	maddr
+;
+
+81 
+	slšk_sock‘_aùu®
+
+
+84 
+Ý’v²_sockaddr
+ 
+	mde¡
+;
+
+85 #ià
+ENABLE_IP_PKTINFO
+
+
+87 #ifdeà
+HAVE_IN_PKTINFO
+
+
+88 
+š_pktšfo
+ 
+	mš4
+;
+
+89 #–ià
+defšed
+(
+IP_RECVDSTADDR
+)
+
+90 
+š_addr
+ 
+	mš4
+;
+
+92 
+š6_pktšfo
+ 
+	mš6
+;
+
+93 } 
+	mpi
+;
+
+98 
+	slšk_sock‘_addr
+
+
+100 
+Ý’v²_sockaddr
+ 
+	mloÿl
+;
+
+101 
+Ý’v²_sockaddr
+ 
+	m»mÙe
+;
+
+102 
+lšk_sock‘_aùu®
+ 
+	maùu®
+;
+
+105 
+	slšk_sock‘_šfo
+
+
+107 
+lšk_sock‘_addr
+ *
+	ml§
+;
+
+108 
+boÞ
+ 
+	mcÚÃùiÚ_e¡ablished
+;
+
+109 cÚ¡ *
+	m�chªge_commªd
+;
+
+110 cÚ¡ 
+¶ugš_li¡
+ *
+	m¶ugšs
+;
+
+111 
+boÞ
+ 
+	m»mÙe_æßt
+;
+
+112 
+	m´Ùo
+;
+
+113 
+	mmtu_chªged
+;
+
+120 
+	s¡»am_buf
+
+
+122 
+bufãr
+ 
+	mbuf_š™
+;
+
+123 
+bufãr
+ 
+	m»sidu®
+;
+
+124 
+	mmaxËn
+;
+
+125 
+boÞ
+ 
+	m»sidu®_fuÎy_fÜmed
+;
+
+127 
+bufãr
+ 
+	mbuf
+;
+
+128 
+bufãr
+ 
+	mÃxt
+;
+
+129 
+	mËn
+;
+
+131 
+boÞ
+ 
+	m”rÜ
+;
+
+133 #ià
+PORT_SHARE
+
+
+134 
+	#PS_DISABLED
+ 0
+
+	)
+
+135 
+	#PS_ENABLED
+ 1
+
+	)
+
+136 
+	#PS_FOREIGN
+ 2
+
+	)
+
+137 
+	mpÜt_sh¬e_¡©e
+;
+
+144 
+	ssock‘_bufãr_size
+
+
+146 
+	mrcvbuf
+;
+
+147 
+	m¢dbuf
+;
+
+155 
+	slšk_sock‘
+
+
+157 
+lšk_sock‘_šfo
+ 
+	mšfo
+;
+
+159 
+sock‘_desü�tÜ_t
+ 
+	msd
+;
+
+161 #ifdeà
+ENABLE_SOCKS
+
+
+162 
+sock‘_desü�tÜ_t
+ 
+	mù¾_sd
+;
+
+165 #ifdeà
+WIN32
+
+
+166 
+ov”Ïµed_io
+ 
+	m»ads
+;
+
+167 
+ov”Ïµed_io
+ 
+	mwr™es
+;
+
+168 
+rw_hªdË
+ 
+	mrw_hªdË
+;
+
+169 
+rw_hªdË
+ 
+	mli¡’_hªdË
+;
+
+173 
+	mrwæags_debug
+;
+
+176 
+boÞ
+ 
+	mli¡’_³rsi¡’t_queued
+;
+
+179 
+boÞ
+ 
+	mcÚÃùiÚ_´ofžes_defšed
+;
+
+181 cÚ¡ *
+	m»mÙe_ho¡
+;
+
+182 
+	m»mÙe_pÜt
+;
+
+183 cÚ¡ *
+	mloÿl_ho¡
+;
+
+184 
+	mloÿl_pÜt
+;
+
+185 
+boÞ
+ 
+	mbšd_loÿl
+;
+
+187 
+	#INETD_NONE
+ 0
+
+	)
+
+188 
+	#INETD_WAIT
+ 1
+
+	)
+
+189 
+	#INETD_NOWAIT
+ 2
+
+	)
+
+190 
+	mš‘d
+;
+
+192 
+	#LS_MODE_DEFAULT
+ 0
+
+	)
+
+193 
+	#LS_MODE_TCP_LISTEN
+ 1
+
+	)
+
+194 
+	#LS_MODE_TCP_ACCEPT_FROM
+ 2
+
+	)
+
+195 
+	mmode
+;
+
+197 
+	m»sÞve_»Œy_£cÚds
+;
+
+198 
+	mcÚÃù_»Œy_£cÚds
+;
+
+199 
+	mcÚÃù_timeout
+;
+
+200 
+	mcÚÃù_»Œy_max
+;
+
+201 
+	mmtu_discov”_ty³
+;
+
+203 
+sock‘_bufãr_size
+ 
+	msock‘_bufãr_sizes
+;
+
+205 
+	mmtu
+;
+
+207 
+boÞ
+ 
+	mdid_»sÞve_»mÙe
+;
+
+209 
+	#SF_USE_IP_PKTINFO
+ (1<<0)
+
+	)
+
+210 
+	#SF_TCP_NODELAY
+ (1<<1)
+
+	)
+
+211 
+	#SF_PORT_SHARE
+ (1<<2)
+
+	)
+
+212 
+	#SF_HOST_RANDOMIZE
+ (1<<3)
+
+	)
+
+213 
+	#SF_GETADDRINFO_DGRAM
+ (1<<4)
+
+	)
+
+214 
+	msockæags
+;
+
+217 
+¡»am_buf
+ 
+	m¡»am_buf
+;
+
+218 
+bufãr
+ 
+	m¡»am_buf_d©a
+;
+
+219 
+boÞ
+ 
+	m¡»am_»£t
+;
+
+221 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+223 
+h‰p_´oxy_šfo
+ *
+	mh‰p_´oxy
+;
+
+226 #ifdeà
+ENABLE_SOCKS
+
+
+228 
+socks_´oxy_šfo
+ *
+	msocks_´oxy
+;
+
+229 
+lšk_sock‘_aùu®
+ 
+	msocks_»Ïy
+;
+
+232 #ià
+defšed
+(
+ENABLE_HTTP_PROXY
+è|| defšed(
+ENABLE_SOCKS
+)
+
+234 cÚ¡ *
+	m´oxy_de¡_ho¡
+;
+
+235 
+	m´oxy_de¡_pÜt
+;
+
+238 #ià
+PASSTOS_CAPABILITY
+
+
+240 #ià
+defšed
+(
+TARGET_LINUX
+)
+
+241 
+ušt8_t
+ 
+	m±os
+;
+
+243 
+	m±os
+;
+
+245 
+boÞ
+ 
+	m±os_defšed
+;
+
+248 #ifdeà
+ENABLE_DEBUG
+
+
+249 
+	mg»mlš
+;
+
+257 #iâdeà
+MSG_NOSIGNAL
+
+
+258 
+	#MSG_NOSIGNAL
+ 0
+
+	)
+
+261 #ifdeà
+WIN32
+
+
+263 
+	#Ý’v²_þo£_sock‘
+(
+s
+è
+	`þo£sock‘
+(s)
+
+	)
+
+265 
+sock‘_»cv_queue
+ (
+lšk_sock‘
+ *
+sock
+, 
+maxsize
+);
+
+267 
+sock‘_£nd_queue
+ (
+lšk_sock‘
+ *
+sock
+,
+
+268 
+bufãr
+ *
+buf
+,
+
+269 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+to
+);
+
+271 
+sock‘_fš®ize
+ (
+
+272 
+SOCKET
+ 
+s
+,
+
+273 
+ov”Ïµed_io
+ *
+io
+,
+
+274 
+bufãr
+ *
+buf
+,
+
+275 
+lšk_sock‘_aùu®
+ *
+äom
+);
+
+279 
+	#Ý’v²_þo£_sock‘
+(
+s
+è
+	`þo£
+(s)
+
+	)
+
+283 
+lšk_sock‘
+ *
+lšk_sock‘_Ãw
+ ();
+
+285 
+sock‘_bšd
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+286 
+Ý’v²_sockaddr
+ *
+loÿl
+,
+
+287 cÚ¡ *
+´efix
+);
+
+289 
+Ý’v²_cÚÃù
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+290 
+Ý’v²_sockaddr
+ *
+»mÙe
+,
+
+291 
+cÚÃù_timeout
+,
+
+292 vÞ©ž�*
+sigÇl_»ûived
+);
+
+299 
+lšk_sock‘_š™_pha£1
+ (
+lšk_sock‘
+ *
+sock
+,
+
+300 cÚ¡ 
+boÞ
+ 
+cÚÃùiÚ_´ofžes_defšed
+,
+
+301 cÚ¡ *
+loÿl_ho¡
+,
+
+302 
+loÿl_pÜt
+,
+
+303 cÚ¡ *
+»mÙe_ho¡
+,
+
+304 
+»mÙe_pÜt
+,
+
+305 
+´Ùo
+,
+
+306 
+mode
+,
+
+307 cÚ¡ 
+lšk_sock‘
+ *
+acû±_äom
+,
+
+308 #ifdeà
+ENABLE_HTTP_PROXY
+
+
+309 
+h‰p_´oxy_šfo
+ *
+h‰p_´oxy
+,
+
+311 #ifdeà
+ENABLE_SOCKS
+
+
+312 
+socks_´oxy_šfo
+ *
+socks_´oxy
+,
+
+314 #ifdeà
+ENABLE_DEBUG
+
+
+315 
+g»mlš
+,
+
+317 
+boÞ
+ 
+bšd_loÿl
+,
+
+318 
+boÞ
+ 
+»mÙe_æßt
+,
+
+319 
+š‘d
+,
+
+320 
+lšk_sock‘_addr
+ *
+l§
+,
+
+321 cÚ¡ *
+�chªge_commªd
+,
+
+322 cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+,
+
+323 
+»sÞve_»Œy_£cÚds
+,
+
+324 
+cÚÃù_»Œy_£cÚds
+,
+
+325 
+cÚÃù_timeout
+,
+
+326 
+cÚÃù_»Œy_max
+,
+
+327 
+mtu_discov”_ty³
+,
+
+328 
+rcvbuf
+,
+
+329 
+¢dbuf
+,
+
+330 
+m¬k
+,
+
+331 
+sockæags
+);
+
+333 
+lšk_sock‘_š™_pha£2
+ (
+lšk_sock‘
+ *
+sock
+,
+
+334 cÚ¡ 
+äame
+ *frame,
+
+335 vÞ©ž�*
+sigÇl_»ûived
+);
+
+337 
+sock‘_adju¡_äame_·¿m‘”s
+ (
+äame
+ *äame, 
+´Ùo
+);
+
+339 
+äame_adju¡_·th_mtu
+ (
+äame
+ *äame, 
+pmtu
+, 
+´Ùo
+);
+
+341 
+lšk_sock‘_þo£
+ (
+lšk_sock‘
+ *
+sock
+);
+
+343 
+sd_þo£
+ (
+sock‘_desü�tÜ_t
+ *
+sd
+);
+
+345 
+	#PS_SHOW_PORT_IF_DEFINED
+ (1<<0)
+
+	)
+
+346 
+	#PS_SHOW_PORT
+ (1<<1)
+
+	)
+
+347 
+	#PS_SHOW_PKTINFO
+ (1<<2)
+
+	)
+
+348 
+	#PS_DONT_SHOW_ADDR
+ (1<<3)
+
+	)
+
+350 cÚ¡ *
+´št_sockaddr_ex
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+351 cÚ¡ * 
+£·¿tÜ
+,
+
+352 cÚ¡ 
+æags
+,
+
+353 
+gc_¬’a
+ *
+gc
+);
+
+356 cÚ¡ *
+´št_sockaddr
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+357 
+gc_¬’a
+ *
+gc
+);
+
+359 cÚ¡ *
+´št_lšk_sock‘_aùu®_ex
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+360 cÚ¡ * 
+£·¿tÜ
+,
+
+361 cÚ¡ 
+æags
+,
+
+362 
+gc_¬’a
+ *
+gc
+);
+
+364 cÚ¡ *
+´št_lšk_sock‘_aùu®
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+365 
+gc_¬’a
+ *
+gc
+);
+
+368 
+	#IA_EMPTY_IF_UNDEF
+ (1<<0)
+
+	)
+
+369 
+	#IA_NET_ORDER
+ (1<<1)
+
+	)
+
+370 cÚ¡ *
+´št_š_addr_t
+ (
+š_addr_t
+ 
+addr
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+);
+
+371 cÚ¡ *
+´št_š6_addr
+ (
+š6_addr
+ 
+addr6
+, 
+æags
+, 
+gc_¬’a
+ *
+gc
+);
+
+372 
+š6_addr
+ 
+add_š6_addr
+Ðš6_add¸
+ba£
+, 
+ušt32_t
+ 
+add
+ );
+
+374 
+	#SA_IP_PORT
+ (1<<0)
+
+	)
+
+375 
+	#SA_SET_IF_NONZERO
+ (1<<1)
+
+	)
+
+376 
+£‹nv_sockaddr
+ (
+’v_£t
+ *
+es
+,
+
+377 cÚ¡ *
+Çme_´efix
+,
+
+378 cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+379 cÚ¡ 
+æags
+);
+
+381 
+£‹nv_š_addr_t
+ (
+’v_£t
+ *
+es
+,
+
+382 cÚ¡ *
+Çme_´efix
+,
+
+383 
+š_addr_t
+ 
+addr
+,
+
+384 cÚ¡ 
+æags
+);
+
+386 
+£‹nv_lšk_sock‘_aùu®
+ (
+’v_£t
+ *
+es
+,
+
+387 cÚ¡ *
+Çme_´efix
+,
+
+388 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+389 cÚ¡ 
+æags
+);
+
+391 
+bad_add»ss_Ëngth
+ (
+aùu®
+, 
+ex³ùed
+);
+
+396 
+	#IPV4_INVALID_ADDR
+ 0xffffffff
+
+	)
+
+397 
+š_addr_t
+ 
+lšk_sock‘_cu¼’t_»mÙe
+ (cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+);
+
+399 
+lšk_sock‘_cÚÃùiÚ_š™Ÿ‹d
+ (cÚ¡ 
+bufãr
+ *
+buf
+,
+
+400 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+401 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+addr
+,
+
+402 cÚ¡ *
+commÚ_Çme
+,
+
+403 
+’v_£t
+ *
+es
+);
+
+405 
+lšk_sock‘_bad_šcomšg_addr
+ (
+bufãr
+ *
+buf
+,
+
+406 cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+407 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom_addr
+);
+
+409 
+lšk_sock‘_bad_outgošg_addr
+ ();
+
+411 
+£‹nv_Œu¡ed
+ (
+’v_£t
+ *
+es
+, cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+);
+
+413 
+boÞ
+ 
+lšk_sock‘_upd©e_æags
+ (
+lšk_sock‘
+ *
+ls
+, 
+sockæags
+);
+
+414 
+lšk_sock‘_upd©e_bufãr_sizes
+ (
+lšk_sock‘
+ *
+ls
+, 
+rcvbuf
+, 
+¢dbuf
+);
+
+421 
+	#OIA_HOSTNAME
+ 0
+
+	)
+
+422 
+	#OIA_IP
+ 1
+
+	)
+
+423 
+	#OIA_ERROR
+ -1
+
+	)
+
+424 
+Ý’v²_š‘_©Ú
+ (cÚ¡ *
+dÙ‹d_quad
+, 
+š_addr
+ *
+addr
+);
+
+427 
+boÞ
+ 
+�_addr_dÙ‹d_quad_§ã
+ (cÚ¡ *
+dÙ‹d_quad
+);
+
+428 
+boÞ
+ 
+�_Ü_dns_addr_§ã
+ (cÚ¡ *
+addr
+, cÚ¡ boÞ 
+®low_fqdn
+);
+
+429 
+boÞ
+ 
+mac_addr_§ã
+ (cÚ¡ *
+mac_addr
+);
+
+430 
+boÞ
+ 
+�v6_addr_§ã
+ (cÚ¡ *
+�v6_‹xt_addr
+);
+
+432 
+sock‘_desü�tÜ_t
+ 
+ü—‹_sock‘_tý
+ (
+af
+);
+
+434 
+sock‘_desü�tÜ_t
+ 
+sock‘_do_acû±
+ (sock‘_desü�tÜ_ˆ
+sd
+,
+
+435 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+436 cÚ¡ 
+boÞ
+ 
+nowa™
+);
+
+440 
+boÞ
+ 
+´Ùo_is_Ãt
+(
+´Ùo
+);
+
+441 
+boÞ
+ 
+´Ùo_is_dg¿m
+(
+´Ùo
+);
+
+442 
+boÞ
+ 
+´Ùo_is_udp
+(
+´Ùo
+);
+
+443 
+boÞ
+ 
+´Ùo_is_tý
+(
+´Ùo
+);
+
+446 #ià
+UNIX_SOCK_SUPPORT
+
+
+448 
+sock‘_desü�tÜ_t
+ 
+ü—‹_sock‘_unix
+ ();
+
+450 
+sock‘_bšd_unix
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+451 
+sockaddr_un
+ *
+loÿl
+,
+
+452 cÚ¡ *
+´efix
+);
+
+454 
+sock‘_desü�tÜ_t
+ 
+sock‘_acû±_unix
+ (sock‘_desü�tÜ_ˆ
+sd
+,
+
+455 
+sockaddr_un
+ *
+»mÙe
+);
+
+457 
+sock‘_cÚÃù_unix
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+458 
+sockaddr_un
+ *
+»mÙe
+);
+
+460 
+sockaddr_unix_š™
+ (
+sockaddr_un
+ *
+loÿl
+, cÚ¡ *
+·th
+);
+
+462 cÚ¡ *
+sockaddr_unix_Çme
+ (cÚ¡ 
+sockaddr_un
+ *
+loÿl
+, cÚ¡ *
+nuÎ
+);
+
+464 
+sock‘_d–‘e_unix
+ (cÚ¡ 
+sockaddr_un
+ *
+loÿl
+);
+
+466 
+boÞ
+ 
+unix_sock‘_g‘_³”_uid_gid
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+, *
+uid
+, *
+gid
+);
+
+474 
+	#GETADDR_RESOLVE
+ (1<<0)
+
+	)
+
+475 
+	#GETADDR_FATAL
+ (1<<1)
+
+	)
+
+476 
+	#GETADDR_HOST_ORDER
+ (1<<2)
+
+	)
+
+477 
+	#GETADDR_MENTION_RESOLVE_RETRY
+ (1<<3)
+
+	)
+
+478 
+	#GETADDR_FATAL_ON_SIGNAL
+ (1<<4)
+
+	)
+
+479 
+	#GETADDR_WARN_ON_SIGNAL
+ (1<<5)
+
+	)
+
+480 
+	#GETADDR_MSG_VIRT_OUT
+ (1<<6)
+
+	)
+
+481 
+	#GETADDR_TRY_ONCE
+ (1<<7)
+
+	)
+
+482 
+	#GETADDR_UPDATE_MANAGEMENT_STATE
+ (1<<8)
+
+	)
+
+483 
+	#GETADDR_RANDOMIZE
+ (1<<9)
+
+	)
+
+485 
+š_addr_t
+ 
+g‘addr
+ (
+æags
+,
+
+486 cÚ¡ *
+ho¡Çme
+,
+
+487 
+»sÞve_»Œy_£cÚds
+,
+
+488 
+boÞ
+ *
+sucûeded
+,
+
+489 vÞ©ž�*
+sigÇl_»ûived
+);
+
+491 
+Ý’v²_g‘addršfo
+ (
+æags
+,
+
+492 cÚ¡ *
+ho¡Çme
+,
+
+493 
+»sÞve_»Œy_£cÚds
+,
+
+494 vÞ©ž�*
+sigÇl_»ûived
+,
+
+495 
+ai_çmžy
+,
+
+496 
+addršfo
+ **
+»s
+);
+
+506 
+	e´Ùo_num
+ {
+
+507 
+	mPROTO_NONE
+,
+
+508 
+	mPROTO_UDPv4
+,
+
+509 
+	mPROTO_TCPv4_SERVER
+,
+
+510 
+	mPROTO_TCPv4_CLIENT
+,
+
+511 
+	mPROTO_TCPv4
+,
+
+512 
+	mPROTO_UDPv6
+,
+
+513 
+	mPROTO_TCPv6_SERVER
+,
+
+514 
+	mPROTO_TCPv6_CLIENT
+,
+
+515 
+	mPROTO_TCPv6
+,
+
+516 
+	mPROTO_N
+
+
+519 
+ascii2´Ùo
+ (cÚ¡ * 
+´Ùo_Çme
+);
+
+520 cÚ¡ *
+´Ùo2ascii
+ (
+´Ùo
+, 
+boÞ
+ 
+di¥Ïy_fÜm
+);
+
+521 cÚ¡ *
+´Ùo2ascii_®l
+ (
+gc_¬’a
+ *
+gc
+);
+
+522 
+´Ùo_»mÙe
+ (
+´Ùo
+, 
+boÞ
+ 
+»mÙe
+);
+
+523 cÚ¡ *
+addr_çmžy_Çme
+(
+af
+);
+
+528 
+	#IPv4_UDP_HEADER_SIZE
+ 28
+
+	)
+
+529 
+	#IPv4_TCP_HEADER_SIZE
+ 40
+
+	)
+
+530 
+	#IPv6_UDP_HEADER_SIZE
+ 48
+
+	)
+
+531 
+	#IPv6_TCP_HEADER_SIZE
+ 60
+
+	)
+
+533 
cÚ¡ 
+´Ùo_ov”h—d
+[];
+
+535 
+šlše
+ 
+
+536 
+	$d©ag¿m_ov”h—d
+ (
+´Ùo
+)
+
+538 
+	`ASSERT
+ (
+´Ùo
+ >ð0 &&…rÙØ< 
+PROTO_N
+);
+
+539  
+´Ùo_ov”h—d
+ [
+´Ùo
+];
+
+540 
+	}
+}
+
+546 
+šlše
+ 
+boÞ
+
+
+547 
+	$Ëg®_�v4_pÜt
+ (
+pÜt
+)
+
+549  
+pÜt
+ > 0 &&…ort < 65536;
+
+550 
+	}
+}
+
+552 
+šlše
+ 
+boÞ
+
+
+553 
+	$lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+´Ùo
+)
+
+555  !
+	`´Ùo_is_dg¿m
+(
+´Ùo
+);
+
+556 
+	}
+}
+
+558 
+šlše
+ 
+boÞ
+
+
+559 
+	$lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (cÚ¡ 
+lšk_sock‘
+ *
+sock
+)
+
+561 ià(
+sock
+)
+
+562  
+	`lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+sock
+->
+šfo
+.
+´Ùo
+);
+
+564  
+çl£
+;
+
+565 
+	}
+}
+
+567 
+šlše
+ 
+boÞ
+
+
+568 
+	$addr_defšed
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+)
+
+570 ià(!
+addr
+)  0;
+
+571 
+addr
+->addr.
+§
+.
+§_çmžy
+) {
+
+572 
+AF_INET
+:  
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+ != 0;
+
+573 
+AF_INET6
+:  !
+	`IN6_IS_ADDR_UNSPECIFIED
+(&
+addr
+->addr.
+š6
+.
+sš6_addr
+);
+
+576 
+	}
+}
+
+577 
+šlše
+ 
+boÞ
+
+
+578 
+	$addr_defšed_�i
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+l§
+)
+
+580 #ià
+ENABLE_IP_PKTINFO
+
+
+581 ià(!
+l§
+)  0;
+
+582 
+l§
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+) {
+
+583 #ifdeà
+HAVE_IN_PKTINFO
+
+
+584 
+AF_INET
+:  
+l§
+->
+pi
+.
+š4
+.
+�i_¥ec_d¡
+.
+s_addr
+ != 0;
+
+585 #–ià
+	`defšed
+(
+IP_RECVDSTADDR
+)
+
+586 
+AF_INET
+:  
+l§
+->
+pi
+.
+š4
+.
+s_addr
+ != 0;
+
+588 
+AF_INET6
+:  !
+	`IN6_IS_ADDR_UNSPECIFIED
+(&
+l§
+->
+pi
+.
+š6
+.
+�i6_addr
+);
+
+592 
+	`ASSERT
+(0);
+
+594  
+çl£
+;
+
+595 
+	}
+}
+
+597 
+šlše
+ 
+boÞ
+
+
+598 
+	$lšk_sock‘_aùu®_defšed
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+)
+
+600  
+aù
+ && 
+	`addr_defšed
+ (&aù->
+de¡
+);
+
+601 
+	}
+}
+
+603 
+šlše
+ 
+boÞ
+
+
+604 
+	$addr_m©ch
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+a1
+, cÚ¡ Ý’v²_sockadd¸*
+a2
+)
+
+606 
+a1
+->
+addr
+.
+§
+.
+§_çmžy
+) {
+
+607 
+AF_INET
+:
+
+608  
+a1
+->
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ =ð
+a2
+->addr.in4.sin_addr.s_addr;
+
+609 
+AF_INET6
+:
+
+610  
+	`IN6_ARE_ADDR_EQUAL
+(&
+a1
+->
+addr
+.
+š6
+.
+sš6_addr
+, &
+a2
+->addr.in6.sin6_addr);
+
+612 
+	`ASSERT
+(0);
+
+613  
+çl£
+;
+
+614 
+	}
+}
+
+616 
+šlše
+ 
+š_addr_t
+
+
+617 
+	$addr_ho¡
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+addr
+)
+
+624 if(
+addr
+->addr.
+§
+.
+§_çmžy
+ !ð
+AF_INET
+)
+
+626  
+	`Áohl
+ (
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+);
+
+627 
+	}
+}
+
+629 
+šlše
+ 
+boÞ
+
+
+630 
+	$addr_pÜt_m©ch
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+a1
+, cÚ¡ Ý’v²_sockadd¸*
+a2
+)
+
+632 
+a1
+->
+addr
+.
+§
+.
+§_çmžy
+) {
+
+633 
+AF_INET
+:
+
+634  
+a1
+->
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ =ð
+a2
+->addr.in4.sin_addr.s_addr
+
+635 && 
+a1
+->
+addr
+.
+š4
+.
+sš_pÜt
+ =ð
+a2
+->addr.in4.sin_port;
+
+636 
+AF_INET6
+:
+
+637  
+	`IN6_ARE_ADDR_EQUAL
+(&
+a1
+->
+addr
+.
+š6
+.
+sš6_addr
+, &
+a2
+->addr.in6.sin6_addr)
+
+638 && 
+a1
+->
+addr
+.
+š6
+.
+sš6_pÜt
+ =ð
+a2
+->addr.in6.sin6_port;
+
+640 
+	`ASSERT
+(0);
+
+641  
+çl£
+;
+
+642 
+	}
+}
+
+644 
+šlše
+ 
+boÞ
+
+
+645 
+	$addr_m©ch_´Ùo
+ (cÚ¡ 
+Ý’v²_sockaddr
+ *
+a1
+,
+
+646 cÚ¡ 
+Ý’v²_sockaddr
+ *
+a2
+,
+
+647 cÚ¡ 
+´Ùo
+)
+
+649  
+	`lšk_sock‘_´Ùo_cÚÃùiÚ_Ü›Áed
+ (
+´Ùo
+)
+
+650 ? 
+	`addr_m©ch
+ (
+a1
+, 
+a2
+)
+
+651 : 
+	`addr_pÜt_m©ch
+ (
+a1
+, 
+a2
+);
+
+652 
+	}
+}
+
+654 
+šlše
+ 
+
+655 
+	$addr_z”o_ho¡
+(
+Ý’v²_sockaddr
+ *
+addr
+)
+
+657 
+addr
+->addr.
+§
+.
+§_çmžy
+) {
+
+658 
+AF_INET
+:
+
+659 
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+ = 0;
+
+661 
+AF_INET6
+:
+
+662 
+	`mem£t
+(&
+addr
+->addr.
+š6
+.
+sš6_addr
+, 0,  (
+š6_addr
+));
+
+665 
+	}
+}
+
+667 
+šlše
+ 
+
+668 
+	$addr_cÝy_§
+(
+Ý’v²_sockaddr
+ *
+d¡
+, cÚ¡ Ý’v²_sockadd¸*
+¤c
+)
+
+670 
+d¡
+->
+addr
+ = 
+¤c
+->addr;
+
+671 
+	}
+}
+
+673 
+šlše
+ 
+
+674 
+	$addr_cÝy_ho¡
+(
+Ý’v²_sockaddr
+ *
+d¡
+, cÚ¡ Ý’v²_sockadd¸*
+¤c
+)
+
+676 
+¤c
+->
+addr
+.
+§
+.
+§_çmžy
+) {
+
+677 
+AF_INET
+:
+
+678 
+d¡
+->
+addr
+.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+¤c
+->addr.in4.sin_addr.s_addr;
+
+680 
+AF_INET6
+:
+
+681 
+d¡
+->
+addr
+.
+š6
+.
+sš6_addr
+ = 
+¤c
+->addr.in6.sin6_addr;
+
+684 
+	}
+}
+
+686 
+šlše
+ 
+boÞ
+
+
+687 
+	$addr_š‘4Ü6
+(
+sockaddr
+ *
+addr
+)
+
+689  
+addr
+->
+§_çmžy
+ =ð
+AF_INET
+ ||‡ddr->§_çmžy =ð
+AF_INET6
+;
+
+690 
+	}
+}
+
+692 
+addr_guess_çmžy
+(
+´Ùo
+, cÚ¡ *
+Çme
+);
+
+693 
+šlše
+ 
+
+694 
+	$af_addr_size
+(
+af
+)
+
+696 
+af
+) {
+
+697 
+AF_INET
+:   (
+sockaddr_š
+);
+
+698 
+AF_INET6
+:   (
+sockaddr_š6
+);
+
+702 
+	`msg
+ (
+M_ERR
+, "Bad‡dd»s çmžy: %d\n", 
+af
+);
+
+703 
+	`ASSERT
+(0);
+
+707 
+	}
+}
+
+709 
+šlše
+ 
+boÞ
+
+
+710 
+	$lšk_sock‘_aùu®_m©ch
+ (cÚ¡ 
+lšk_sock‘_aùu®
+ *
+a1
+, cÚ¡ lšk_sock‘_aùu® *
+a2
+)
+
+712  
+	`addr_pÜt_m©ch
+ (&
+a1
+->
+de¡
+, &
+a2
+->dest);
+
+713 
+	}
+}
+
+715 #ià
+PORT_SHARE
+
+
+717 
+šlše
+ 
+boÞ
+
+
+718 
+	$sock‘_fÜeign_´ÙocÞ_d‘eùed
+ (cÚ¡ 
+lšk_sock‘
+ *
+sock
+)
+
+720  
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+sock
+)
+
+721 && 
+sock
+->
+¡»am_buf
+.
+pÜt_sh¬e_¡©e
+ =ð
+PS_FOREIGN
+;
+
+722 
+	}
+}
+
+724 
+šlše
+ cÚ¡ 
+bufãr
+ *
+
+725 
+	$sock‘_fÜeign_´ÙocÞ_h—d
+ (cÚ¡ 
+lšk_sock‘
+ *
+sock
+)
+
+727  &
+sock
+->
+¡»am_buf
+.
+buf
+;
+
+728 
+	}
+}
+
+730 
+šlše
+ 
+
+731 
+	$sock‘_fÜeign_´ÙocÞ_sd
+ (cÚ¡ 
+lšk_sock‘
+ *
+sock
+)
+
+733  
+sock
+->
+sd
+;
+
+734 
+	}
+}
+
+738 
+šlše
+ 
+boÞ
+
+
+739 
+	$sock‘_cÚÃùiÚ_»£t
+ (cÚ¡ 
+lšk_sock‘
+ *
+sock
+, 
+¡©us
+)
+
+741 ià(
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+sock
+))
+
+743 ià(
+sock
+->
+¡»am_»£t
+ || sock->
+¡»am_buf
+.
+”rÜ
+)
+
+744  
+Œue
+;
+
+745 ià(
+¡©us
+ < 0)
+
+747 cÚ¡ 
+”r
+ = 
+	`Ý’v²_”ºo
+ ();
+
+748 #ifdeà
+WIN32
+
+
+749  
+”r
+ =ð
+WSAECONNRESET
+ ||ƒ¼ =ð
+WSAECONNABORTED
+;
+
+751  
+”r
+ =ð
+ECONNRESET
+;
+
+755  
+çl£
+;
+
+756 
+	}
+}
+
+758 
+šlše
+ 
+boÞ
+
+
+759 
+	$lšk_sock‘_v”ify_šcomšg_addr
+ (
+bufãr
+ *
+buf
+,
+
+760 cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+761 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom_addr
+)
+
+763 ià(
+buf
+->
+Ën
+ > 0)
+
+765 
+äom_addr
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+) {
+
+766 
+AF_INET6
+:
+
+767 
+AF_INET
+:
+
+768 ià(!
+	`lšk_sock‘_aùu®_defšed
+ (
+äom_addr
+))
+
+769  
+çl£
+;
+
+770 ià(
+šfo
+->
+»mÙe_æßt
+ || !
+	`addr_defšed
+ (&šfo->
+l§
+->
+»mÙe
+))
+
+771  
+Œue
+;
+
+772 ià(
+	`addr_m©ch_´Ùo
+ (&
+äom_addr
+->
+de¡
+, &
+šfo
+->
+l§
+->
+»mÙe
+, info->
+´Ùo
+))
+
+773  
+Œue
+;
+
+776  
+çl£
+;
+
+777 
+	}
+}
+
+779 
+šlše
+ 
+
+780 
+	$lšk_sock‘_g‘_outgošg_addr
+ (
+bufãr
+ *
+buf
+,
+
+781 cÚ¡ 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+782 
+lšk_sock‘_aùu®
+ **
+aù
+)
+
+784 ià(
+buf
+->
+Ën
+ > 0)
+
+786 
+lšk_sock‘_addr
+ *
+l§
+ = 
+šfo
+->lsa;
+
+787 ià(
+	`lšk_sock‘_aùu®_defšed
+ (&
+l§
+->
+aùu®
+))
+
+788 *
+aù
+ = &
+l§
+->
+aùu®
+;
+
+791 
+	`lšk_sock‘_bad_outgošg_addr
+ ();
+
+792 
+buf
+->
+Ën
+ = 0;
+
+793 *
+aù
+ = 
+NULL
+;
+
+796 
+	}
+}
+
+798 
+šlše
+ 
+
+799 
+	$lšk_sock‘_£t_outgošg_addr
+ (cÚ¡ 
+bufãr
+ *
+buf
+,
+
+800 
+lšk_sock‘_šfo
+ *
+šfo
+,
+
+801 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+aù
+,
+
+802 cÚ¡ *
+commÚ_Çme
+,
+
+803 
+’v_£t
+ *
+es
+)
+
+805 ià(!
+buf
+ || buf->
+Ën
+ > 0)
+
+807 
+lšk_sock‘_addr
+ *
+l§
+ = 
+šfo
+->lsa;
+
+810 (!
+šfo
+->
+cÚÃùiÚ_e¡ablished
+
+
+811 || !
+	`addr_m©ch_´Ùo
+ (&
+aù
+->
+de¡
+, &
+l§
+->
+aùu®
+.de¡, 
+šfo
+->
+´Ùo
+))
+
+813 && (
+šfo
+->
+»mÙe_æßt
+
+
+814 || !
+	`addr_defšed
+ (&
+l§
+->
+»mÙe
+)
+
+815 || 
+	`addr_m©ch_´Ùo
+ (&
+aù
+->
+de¡
+, &
+l§
+->
+»mÙe
+, 
+šfo
+->
+´Ùo
+))
+
+818 
+	`lšk_sock‘_cÚÃùiÚ_š™Ÿ‹d
+ (
+buf
+, 
+šfo
+, 
+aù
+, 
+commÚ_Çme
+, 
+es
+);
+
+821 
+	}
+}
+
+829 
+¡»am_buf_š™
+ (
+¡»am_buf
+ *
+sb
+,
+
+830 
+bufãr
+ *
+buf
+,
+
+831 cÚ¡ 
+sockæags
+,
+
+832 cÚ¡ 
+´Ùo
+);
+
+834 
+¡»am_buf_þo£
+ (
+¡»am_buf
+* 
+sb
+);
+
+835 
+boÞ
+ 
+¡»am_buf_added
+ (
+¡»am_buf
+ *
+sb
+, 
+Ëngth_added
+);
+
+837 
+šlše
+ 
+boÞ
+
+
+838 
+	$¡»am_buf_»ad_£tup
+ (
+lšk_sock‘
+* 
+sock
+)
+
+840 
+boÞ
+ 
+	`¡»am_buf_»ad_£tup_dowÜk
+ (
+lšk_sock‘
+* 
+sock
+);
+
+841 ià(
+	`lšk_sock‘_cÚÃùiÚ_Ü›Áed
+ (
+sock
+))
+
+842  
+	`¡»am_buf_»ad_£tup_dowÜk
+ (
+sock
+);
+
+844  
+Œue
+;
+
+845 
+	}
+}
+
+851 
+lšk_sock‘_»ad_tý
+ (
+lšk_sock‘
+ *
+sock
+,
+
+852 
+bufãr
+ *
+buf
+);
+
+854 #ifdeà
+WIN32
+
+
+856 
+šlše
+ 
+
+857 
+	$lšk_sock‘_»ad_udp_wš32
+ (
+lšk_sock‘
+ *
+sock
+,
+
+858 
+bufãr
+ *
+buf
+,
+
+859 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+861  
+	`sock‘_fš®ize
+ (
+sock
+->
+sd
+, &sock->
+»ads
+, 
+buf
+, 
+äom
+);
+
+862 
+	}
+}
+
+866 
+lšk_sock‘_»ad_udp_posix
+ (
+lšk_sock‘
+ *
+sock
+,
+
+867 
+bufãr
+ *
+buf
+,
+
+868 
+maxsize
+,
+
+869 
+lšk_sock‘_aùu®
+ *
+äom
+);
+
+874 
+šlše
+ 
+
+875 
+	$lšk_sock‘_»ad
+ (
+lšk_sock‘
+ *
+sock
+,
+
+876 
+bufãr
+ *
+buf
+,
+
+877 
+maxsize
+,
+
+878 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+880 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+882 
+»s
+;
+
+884 #ifdeà
+WIN32
+
+
+885 
+»s
+ = 
+	`lšk_sock‘_»ad_udp_wš32
+ (
+sock
+, 
+buf
+, 
+äom
+);
+
+887 
+»s
+ = 
+	`lšk_sock‘_»ad_udp_posix
+ (
+sock
+, 
+buf
+, 
+maxsize
+, 
+äom
+);
+
+889  
+»s
+;
+
+891 ià(
+	`´Ùo_is_tý
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+894 
+	`addr_cÝy_§
+(&
+äom
+->
+de¡
+, &
+sock
+->
+šfo
+.
+l§
+->
+aùu®
+.dest);
+
+895  
+	`lšk_sock‘_»ad_tý
+ (
+sock
+, 
+buf
+);
+
+899 
+	`ASSERT
+ (0);
+
+902 
+	}
+}
+
+908 
+lšk_sock‘_wr™e_tý
+ (
+lšk_sock‘
+ *
+sock
+,
+
+909 
+bufãr
+ *
+buf
+,
+
+910 
+lšk_sock‘_aùu®
+ *
+to
+);
+
+912 #ifdeà
+WIN32
+
+
+914 
+šlše
+ 
+
+915 
+	$lšk_sock‘_wr™e_wš32
+ (
+lšk_sock‘
+ *
+sock
+,
+
+916 
+bufãr
+ *
+buf
+,
+
+917 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+919 
+”r
+ = 0;
+
+920 
+¡©us
+ = 0;
+
+921 ià(
+	`ov”Ïµed_io_aùive
+ (&
+sock
+->
+wr™es
+))
+
+923 
+¡©us
+ = 
+	`sock‘_fš®ize
+ (
+sock
+->
+sd
+, &sock->
+wr™es
+, 
+NULL
+, NULL);
+
+924 ià(
+¡©us
+ < 0)
+
+925 
+”r
+ = 
+	`WSAG‘La¡E¼Ü
+ ();
+
+927 
+	`sock‘_£nd_queue
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+928 ià(
+¡©us
+ < 0)
+
+930 
+	`WSAS‘La¡E¼Ü
+ (
+”r
+);
+
+931  
+¡©us
+;
+
+934  
+	`BLEN
+ (
+buf
+);
+
+935 
+	}
+}
+
+939 
+šlše
+ 
+
+940 
+	$lšk_sock‘_wr™e_udp_posix
+ (
+lšk_sock‘
+ *
+sock
+,
+
+941 
+bufãr
+ *
+buf
+,
+
+942 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+944 #ià
+ENABLE_IP_PKTINFO
+
+
+945 
+	`lšk_sock‘_wr™e_udp_posix_£ndmsg
+ (
+lšk_sock‘
+ *
+sock
+,
+
+946 
+bufãr
+ *
+buf
+,
+
+947 
+lšk_sock‘_aùu®
+ *
+to
+);
+
+949 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+è&& (sock->
+sockæags
+ & 
+SF_USE_IP_PKTINFO
+)
+
+950 && 
+	`addr_defšed_�i
+(
+to
+))
+
+951  
+	`lšk_sock‘_wr™e_udp_posix_£ndmsg
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+954  
+	`£ndto
+ (
+sock
+->
+sd
+, 
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf), 0,
+
+955 (
+sockaddr
+ *è&
+to
+->
+de¡
+.
+addr
+.
+§
+,
+
+956 (
+sockËn_t
+è
+	`af_addr_size
+(
+to
+->
+de¡
+.
+addr
+.
+§
+.
+§_çmžy
+));
+
+957 
+	}
+}
+
+959 
+šlše
+ 
+
+960 
+	$lšk_sock‘_wr™e_tý_posix
+ (
+lšk_sock‘
+ *
+sock
+,
+
+961 
+bufãr
+ *
+buf
+,
+
+962 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+964  
+	`£nd
+ (
+sock
+->
+sd
+, 
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf), 
+MSG_NOSIGNAL
+);
+
+965 
+	}
+}
+
+969 
+šlše
+ 
+
+970 
+	$lšk_sock‘_wr™e_udp
+ (
+lšk_sock‘
+ *
+sock
+,
+
+971 
+bufãr
+ *
+buf
+,
+
+972 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+974 #ifdeà
+WIN32
+
+
+975  
+	`lšk_sock‘_wr™e_wš32
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+977  
+	`lšk_sock‘_wr™e_udp_posix
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+979 
+	}
+}
+
+982 
+šlše
+ 
+
+983 
+	$lšk_sock‘_wr™e
+ (
+lšk_sock‘
+ *
+sock
+,
+
+984 
+bufãr
+ *
+buf
+,
+
+985 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+987 ià(
+	`´Ùo_is_udp
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+989  
+	`lšk_sock‘_wr™e_udp
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+991 ià(
+	`´Ùo_is_tý
+(
+sock
+->
+šfo
+.
+´Ùo
+))
+
+993  
+	`lšk_sock‘_wr™e_tý
+ (
+sock
+, 
+buf
+, 
+to
+);
+
+997 
+	`ASSERT
+ (0);
+
+1000 
+	}
+}
+
+1002 #ià
+PASSTOS_CAPABILITY
+
+
+1007 
+šlše
+ 
+
+1008 
+	$lšk_sock‘_exŒaù_tos
+ (
+lšk_sock‘
+ *
+ls
+, cÚ¡ 
+bufãr
+ *
+�buf
+)
+
+1010 ià(
+ls
+ && 
+�buf
+)
+
+1012 
+Ý’v²_�hdr
+ *
+�h
+ = (Ý’v²_�hd¸*è
+	`BPTR
+ (
+�buf
+);
+
+1013 
+ls
+->
+±os
+ = 
+�h
+->
+tos
+;
+
+1014 
+ls
+->
+±os_defšed
+ = 
+Œue
+;
+
+1016 
+	}
+}
+
+1022 
+šlše
+ 
+
+1023 
+	$lšk_sock‘_£t_tos
+ (
+lšk_sock‘
+ *
+ls
+)
+
+1025 ià(
+ls
+ &&†s->
+±os_defšed
+)
+
+1026 
+	`£tsockÝt
+ (
+ls
+->
+sd
+, 
+IPPROTO_IP
+, 
+IP_TOS
+, (cÚ¡ *)&ls->
+±os
+,  (ls->ptos));
+
+1027 
+	}
+}
+
+1035 
+šlše
+ 
+boÞ
+
+
+1036 
+	$sock‘_»ad_»sidu®
+ (cÚ¡ 
+lšk_sock‘
+ *
+s
+)
+
+1038  
+s
+ && s->
+¡»am_buf
+.
+»sidu®_fuÎy_fÜmed
+;
+
+1039 
+	}
+}
+
+1041 
+šlše
+ 
+ev’t_t
+
+
+1042 
+	$sock‘_ev’t_hªdË
+ (cÚ¡ 
+lšk_sock‘
+ *
+s
+)
+
+1044 #ifdeà
+WIN32
+
+
+1045  &
+s
+->
+rw_hªdË
+;
+
+1047  
+s
+->
+sd
+;
+
+1049 
+	}
+}
+
+1051 
+ev’t_t
+ 
+sock‘_li¡’_ev’t_hªdË
+ (
+lšk_sock‘
+ *
+s
+);
+
+1054 
+sock‘_£t
+ (
+lšk_sock‘
+ *
+s
+,
+
+1055 
+ev’t_£t
+ *
+es
+,
+
+1056 
+rwæags
+,
+
+1057 *
+¬g
+,
+
+1058 *
+³rsi¡’t
+);
+
+1060 
+šlše
+ 
+
+1061 
+	$sock‘_£t_li¡’_³rsi¡’t
+ (
+lšk_sock‘
+ *
+s
+,
+
+1062 
+ev’t_£t
+ *
+es
+,
+
+1063 *
+¬g
+)
+
+1065 ià(
+s
+ && !s->
+li¡’_³rsi¡’t_queued
+)
+
+1067 
+	`ev’t_ùl
+ (
+es
+, 
+	`sock‘_li¡’_ev’t_hªdË
+ (
+s
+), 
+EVENT_READ
+, 
+¬g
+);
+
+1068 
+s
+->
+li¡’_³rsi¡’t_queued
+ = 
+Œue
+;
+
+1070 
+	}
+}
+
+1072 
+šlše
+ 
+
+1073 
+	$sock‘_»£t_li¡’_³rsi¡’t
+ (
+lšk_sock‘
+ *
+s
+)
+
+1075 #ifdeà
+WIN32
+
+
+1076 
+	`»£t_Ãt_ev’t_wš32
+ (&
+s
+->
+li¡’_hªdË
+, s->
+sd
+);
+
+1078 
+	}
+}
+
+1080 cÚ¡ *
+sock‘_¡©
+ (cÚ¡ 
+lšk_sock‘
+ *
+s
+, 
+rwæags
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@socks.c
+
+33 #ifdeà
+HAVE_CONFIG_H
+
+
+34 
+	~"cÚfig.h
+"
+
+35 #–ià
+defšed
+(
+_MSC_VER
+)
+
+36 
+	~"cÚfig-msvc.h
+"
+
+39 
+	~"sysh—d.h
+"
+
+41 #ifdeà
+ENABLE_SOCKS
+
+
+43 
+	~"commÚ.h
+"
+
+44 
+	~"misc.h
+"
+
+45 
+	~"wš32.h
+"
+
+46 
+	~"sock‘.h
+"
+
+47 
+	~"fdmisc.h
+"
+
+48 
+	~"misc.h
+"
+
+49 
+	~"´oxy.h
+"
+
+51 
+	~"memdbg.h
+"
+
+53 
+	#UP_TYPE_SOCKS
+ "SOCKS Proxy"
+
+	)
+
+56 
+	$socks_adju¡_äame_·¿m‘”s
+ (
+äame
+ *äame, 
+´Ùo
+)
+
+58 ià(
+´Ùo
+ =ð
+PROTO_UDPv4
+)
+
+59 
+	`äame_add_to_exŒa_lšk
+ (
+äame
+, 10);
+
+60 
+	}
+}
+
+62 
+socks_´oxy_šfo
+ *
+
+63 
+	$socks_´oxy_Ãw
+ (cÚ¡ *
+£rv”
+,
+
+64 
+pÜt
+,
+
+65 cÚ¡ *
+authfže
+,
+
+66 
+boÞ
+ 
+»Œy
+)
+
+68 
+socks_´oxy_šfo
+ *
+p
+;
+
+70 
+	`ALLOC_OBJ_CLEAR
+ (
+p
+, 
+socks_´oxy_šfo
+);
+
+72 
+	`ASSERT
+ (
+£rv”
+);
+
+73 
+	`ASSERT
+ (
+	`Ëg®_�v4_pÜt
+ (
+pÜt
+));
+
+75 
+	`¡ºýyÁ
+ (
+p
+->
+£rv”
+, server,  (p->server));
+
+76 
+p
+->
+pÜt
+ =…ort;
+
+78 ià(
+authfže
+)
+
+79 
+	`¡ºýyÁ
+ (
+p
+->
+authfže
+,‡uthfile,  (p->authfile));
+
+81 
+p
+->
+authfže
+[0] = 0;
+
+83 
+p
+->
+»Œy
+ =„etry;
+
+84 
+p
+->
+defšed
+ = 
+Œue
+;
+
+86  
+p
+;
+
+87 
+	}
+}
+
+90 
+	$socks_´oxy_þo£
+ (
+socks_´oxy_šfo
+ *
+¥
+)
+
+92 
+	`ä“
+ (
+¥
+);
+
+93 
+	}
+}
+
+95 
+boÞ
+
+
+96 
+	$socks_u£ºame_·sswÜd_auth
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+97 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+98 vÞ©ž�*
+sigÇl_»ûived
+)
+
+100 
+to_£nd
+[516];
+
+101 
+buf
+[2];
+
+102 
+Ën
+ = 0;
+
+103 cÚ¡ 
+timeout_£c
+ = 5;
+
+104 
+u£r_·ss
+ 
+üeds
+;
+
+105 
+ssize_t
+ 
+size
+;
+
+107 
+üeds
+.
+defšed
+ = 0;
+
+108 
+	`g‘_u£r_·ss
+ (&
+üeds
+, 
+p
+->
+authfže
+, 
+UP_TYPE_SOCKS
+, 
+GET_USER_PASS_MANAGEMENT
+);
+
+110 ifÐ!
+üeds
+.
+u£ºame
+ || (
+	`¡¾’
+(creds.username) > 255)
+
+111 || !
+üeds
+.
+·sswÜd
+ || (
+	`¡¾’
+(creds.password) > 255) ) {
+
+112 
+	`msg
+ (
+M_NONFATAL
+,
+
+115  
+çl£
+;
+
+117 
+	`Ý’v²_¢´štf
+ (
+to_£nd
+,  (to_£nd), "\x01%c%s%c%s", (è
+	`¡¾’
+(
+üeds
+.
+u£ºame
+),
+
+118 
+üeds
+.
+u£ºame
+, (è
+	`¡¾’
+(üeds.
+·sswÜd
+), creds.password);
+
+119 
+size
+ = 
+	`£nd
+ (
+sd
+, 
+to_£nd
+, 
+	`¡¾’
+Ño_£nd), 
+MSG_NOSIGNAL
+);
+
+121 ià(
+size
+ !ð
+	`¡¾’
+ (
+to_£nd
+))
+
+123 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_username_password_auth: TCP…ort write failed on send()");
+
+124  
+çl£
+;
+
+127 
+Ën
+ < 2)
+
+129 
+¡©us
+;
+
+130 
+ssize_t
+ 
+size
+;
+
+131 
+fd_£t
+ 
+»ads
+;
+
+132 
+timev®
+ 
+tv
+;
+
+133 
+c
+;
+
+135 
+	`FD_ZERO
+ (&
+»ads
+);
+
+136 
+	`FD_SET
+ (
+sd
+, &
+»ads
+);
+
+137 
+tv
+.
+tv_£c
+ = 
+timeout_£c
+;
+
+138 
+tv
+.
+tv_u£c
+ = 0;
+
+140 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, &
+»ads
+, 
+NULL
+, NULL, &
+tv
+);
+
+142 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+143 ià(*
+sigÇl_»ûived
+)
+
+144  
+çl£
+;
+
+147 ià(
+¡©us
+ == 0)
+
+149 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_username_password_auth: TCP…ort„ead�imeoutƒxpired");
+
+150  
+çl£
+;
+
+154 ià(
+¡©us
+ < 0)
+
+156 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_username_password_auth: TCP…ort„ead failed on select()");
+
+157  
+çl£
+;
+
+161 
+size
+ = 
+	`»cv
+(
+sd
+, &
+c
+, 1, 
+MSG_NOSIGNAL
+);
+
+164 ià(
+size
+ != 1)
+
+166 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_username_password_auth: TCP…ort„ead failed on„ecv()");
+
+167  
+çl£
+;
+
+171 
+buf
+[
+Ën
+++] = 
+c
+;
+
+175 ià(
+buf
+[0] != 5 && buf[1] != 0)
+
+177 
+	`msg
+ (
+D_LINK_ERRORS
+, "socks_username_password_auth: server„efused�he‡uthentication");
+
+178  
+çl£
+;
+
+181  
+Œue
+;
+
+182 
+	}
+}
+
+184 
+boÞ
+
+
+185 
+	$socks_hªdshake
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+186 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+187 vÞ©ž�*
+sigÇl_»ûived
+)
+
+189 
+buf
+[2];
+
+190 
+Ën
+ = 0;
+
+191 cÚ¡ 
+timeout_£c
+ = 5;
+
+192 
+ssize_t
+ 
+size
+;
+
+195 
+m‘hod_£l
+[3] = { 0x05, 0x01, 0x00 };
+
+196 ià(
+p
+->
+authfže
+[0])
+
+197 
+m‘hod_£l
+[2] = 0x02;
+
+199 
+size
+ = 
+	`£nd
+ (
+sd
+, 
+m‘hod_£l
+,  (m‘hod_£l), 
+MSG_NOSIGNAL
+);
+
+200 ià(
+size
+ !ð (
+m‘hod_£l
+))
+
+202 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_handshake: TCP…ort write failed on send()");
+
+203  
+çl£
+;
+
+206 
+Ën
+ < 2)
+
+208 
+¡©us
+;
+
+209 
+ssize_t
+ 
+size
+;
+
+210 
+fd_£t
+ 
+»ads
+;
+
+211 
+timev®
+ 
+tv
+;
+
+212 
+c
+;
+
+214 
+	`FD_ZERO
+ (&
+»ads
+);
+
+215 
+	`FD_SET
+ (
+sd
+, &
+»ads
+);
+
+216 
+tv
+.
+tv_£c
+ = 
+timeout_£c
+;
+
+217 
+tv
+.
+tv_u£c
+ = 0;
+
+219 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, &
+»ads
+, 
+NULL
+, NULL, &
+tv
+);
+
+221 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+222 ià(*
+sigÇl_»ûived
+)
+
+223  
+çl£
+;
+
+226 ià(
+¡©us
+ == 0)
+
+228 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_handshake: TCP…ort„ead�imeoutƒxpired");
+
+229  
+çl£
+;
+
+233 ià(
+¡©us
+ < 0)
+
+235 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_handshake: TCP…ort„ead failed on select()");
+
+236  
+çl£
+;
+
+240 
+size
+ = 
+	`»cv
+(
+sd
+, &
+c
+, 1, 
+MSG_NOSIGNAL
+);
+
+243 ià(
+size
+ != 1)
+
+245 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "socks_handshake: TCP…ort„ead failed on„ecv()");
+
+246  
+çl£
+;
+
+250 
+buf
+[
+Ën
+++] = 
+c
+;
+
+254 ià(
+buf
+[0] != '\x05')
+
+256 
+	`msg
+ (
+D_LINK_ERRORS
+, "socks_handshake: Socks…roxy„eturned bad status");
+
+257  
+çl£
+;
+
+261 ià(
+buf
+[1] !ð
+m‘hod_£l
+[2])
+
+263 
+	`msg
+ (
+D_LINK_ERRORS
+, "socks_handshake: Socks…roxy„eturned unexpected‡uth");
+
+264  
+çl£
+;
+
+268 
+buf
+[1])
+
+274 ià(!
+p
+->
+authfže
+[0])
+
+276 
+	`msg
+(
+D_LINK_ERRORS
+, "socks_handshake: server‡sked for username/login‡uth but we were "
+
+278  
+çl£
+;
+
+281 ià(!
+	`socks_u£ºame_·sswÜd_auth
+(
+p
+, 
+sd
+, 
+sigÇl_»ûived
+))
+
+282  
+çl£
+;
+
+287 
+	`msg
+(
+D_LINK_ERRORS
+, "socks_handshake: unknown SOCKS‡uth method");
+
+288  
+çl£
+;
+
+291  
+Œue
+;
+
+292 
+	}
+}
+
+294 
+boÞ
+
+
+295 
+	$»cv_socks_»¶y
+ (
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+296 
+Ý’v²_sockaddr
+ *
+addr
+,
+
+297 vÞ©ž�*
+sigÇl_»ûived
+)
+
+299 
+©yp
+ = '\0';
+
+300 
+®’
+ = 0;
+
+301 
+Ën
+ = 0;
+
+302 
+buf
+[22];
+
+303 cÚ¡ 
+timeout_£c
+ = 5;
+
+305 ià(
+addr
+ !ð
+NULL
+)
+
+307 
+addr
+->addr.
+š4
+.
+sš_çmžy
+ = 
+AF_INET
+;
+
+308 
+addr
+->addr.
+š4
+.
+sš_addr
+.
+s_addr
+ = 
+	`htÚl
+ (
+INADDR_ANY
+);
+
+309 
+addr
+->addr.
+š4
+.
+sš_pÜt
+ = 
+	`htÚs
+ (0);
+
+312 
+Ën
+ < 4 + 
+®’
+ + 2)
+
+314 
+¡©us
+;
+
+315 
+ssize_t
+ 
+size
+;
+
+316 
+fd_£t
+ 
+»ads
+;
+
+317 
+timev®
+ 
+tv
+;
+
+318 
+c
+;
+
+320 
+	`FD_ZERO
+ (&
+»ads
+);
+
+321 
+	`FD_SET
+ (
+sd
+, &
+»ads
+);
+
+322 
+tv
+.
+tv_£c
+ = 
+timeout_£c
+;
+
+323 
+tv
+.
+tv_u£c
+ = 0;
+
+325 
+¡©us
+ = 
+	`£Ëù
+ (
+sd
+ + 1, &
+»ads
+, 
+NULL
+, NULL, &
+tv
+);
+
+327 
+	`g‘_sigÇl
+ (
+sigÇl_»ûived
+);
+
+328 ià(*
+sigÇl_»ûived
+)
+
+329  
+çl£
+;
+
+332 ià(
+¡©us
+ == 0)
+
+334 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_socks_reply: TCP…ort„ead�imeoutƒxpired");
+
+335  
+çl£
+;
+
+339 ià(
+¡©us
+ < 0)
+
+341 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_socks_reply: TCP…ort„ead failed on select()");
+
+342  
+çl£
+;
+
+346 
+size
+ = 
+	`»cv
+(
+sd
+, &
+c
+, 1, 
+MSG_NOSIGNAL
+);
+
+349 ià(
+size
+ != 1)
+
+351 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "recv_socks_reply: TCP…ort„ead failed on„ecv()");
+
+352  
+çl£
+;
+
+355 ià(
+Ën
+ == 3)
+
+356 
+©yp
+ = 
+c
+;
+
+358 ià(
+Ën
+ == 4)
+
+360 
+©yp
+)
+
+363 
+®’
+ = 4;
+
+367 
+®’
+ = (è
+c
+;
+
+371 
+®’
+ = 16;
+
+375 
+	`msg
+ (
+D_LINK_ERRORS
+, "recv_socks_reply: Socks…roxy„eturned bad‡ddress�ype");
+
+376  
+çl£
+;
+
+381 ià(
+Ën
+ < ()(
+buf
+))
+
+382 
+buf
+[
+Ën
+] = 
+c
+;
+
+383 ++
+Ën
+;
+
+387 ià(
+buf
+[0] != '\x05' || buf[1] != '\x00')
+
+389 
+	`msg
+ (
+D_LINK_ERRORS
+, "recv_socks_reply: Socks…roxy„eturned bad„eply");
+
+390  
+çl£
+;
+
+394 ià(
+©yp
+ =ð'\x01' && 
+addr
+ !ð
+NULL
+)
+
+396 
+	`memýy
+ (&
+addr
+->addr.
+š4
+.
+sš_addr
+, 
+buf
+ + 4,  (addr->addr.in4.sin_addr));
+
+397 
+	`memýy
+ (&
+addr
+->addr.
+š4
+.
+sš_pÜt
+, 
+buf
+ + 8,  (addr->addr.in4.sin_port));
+
+401  
+Œue
+;
+
+402 
+	}
+}
+
+405 
+	$e¡ablish_socks_´oxy_·s¡hru
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+406 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+407 cÚ¡ *
+ho¡
+,
+
+408 cÚ¡ 
+pÜt
+,
+
+409 vÞ©ž�*
+sigÇl_»ûived
+)
+
+411 
+buf
+[128];
+
+412 
+size_t
+ 
+Ën
+;
+
+414 ià(!
+	`socks_hªdshake
+ (
+p
+, 
+sd
+, 
+sigÇl_»ûived
+))
+
+415 
+”rÜ
+;
+
+418 
+buf
+[0] = '\x05';
+
+419 
+buf
+[1] = '\x01';
+
+420 
+buf
+[2] = '\x00';
+
+421 
+buf
+[3] = '\x03';
+
+423 
+Ën
+ = 
+	`¡¾’
+(
+ho¡
+);
+
+424 
+Ën
+ = (5 +†’ + 2 > (
+buf
+)) ? ((buf) - 5 - 2) :†en;
+
+426 
+buf
+[4] = (è
+Ën
+;
+
+427 
+	`memýy
+(
+buf
+ + 5, 
+ho¡
+, 
+Ën
+);
+
+429 
+buf
+[5 + 
+Ën
+] = (è(
+pÜt
+ >> 8);
+
+430 
+buf
+[5 + 
+Ën
+ + 1] = (è(
+pÜt
+ & 0xff);
+
+433 cÚ¡ 
+ssize_t
+ 
+size
+ = 
+	`£nd
+ (
+sd
+, 
+buf
+, 5 + 
+Ën
+ + 2, 
+MSG_NOSIGNAL
+);
+
+434 ià(()
+size
+ !ð5 + ()
+Ën
+ + 2)
+
+436 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "establish_socks_proxy_passthru: TCP…ort write failed on send()");
+
+437 
+”rÜ
+;
+
+442 ià(!
+	`»cv_socks_»¶y
+ (
+sd
+, 
+NULL
+, 
+sigÇl_»ûived
+))
+
+443 
+”rÜ
+;
+
+447 
+”rÜ
+:
+
+449 ià(!*
+sigÇl_»ûived
+)
+
+450 *
+sigÇl_»ûived
+ = (
+p
+->
+»Œy
+ ? 
+SIGUSR1
+ : 
+SIGTERM
+);
+
+452 
+	}
+}
+
+455 
+	$e¡ablish_socks_´oxy_ud·ssoc
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+456 
+sock‘_desü�tÜ_t
+ 
+ù¾_sd
+,
+
+457 
+sock‘_desü�tÜ_t
+ 
+udp_sd
+,
+
+458 
+Ý’v²_sockaddr
+ *
+»Ïy_addr
+,
+
+459 vÞ©ž�*
+sigÇl_»ûived
+)
+
+461 ià(!
+	`socks_hªdshake
+ (
+p
+, 
+ù¾_sd
+, 
+sigÇl_»ûived
+))
+
+462 
+”rÜ
+;
+
+468 cÚ¡ 
+ssize_t
+ 
+size
+ = 
+	`£nd
+ (
+ù¾_sd
+,
+
+470 10, 
+MSG_NOSIGNAL
+);
+
+471 ià(
+size
+ != 10)
+
+473 
+	`msg
+ (
+D_LINK_ERRORS
+ | 
+M_ERRNO
+, "establish_socks_proxy_passthru: TCP…ort write failed on send()");
+
+474 
+”rÜ
+;
+
+479 
+	`CLEAR
+ (*
+»Ïy_addr
+);
+
+480 ià(!
+	`»cv_socks_»¶y
+ (
+ù¾_sd
+, 
+»Ïy_addr
+, 
+sigÇl_»ûived
+))
+
+481 
+”rÜ
+;
+
+485 
+”rÜ
+:
+
+487 ià(!*
+sigÇl_»ûived
+)
+
+488 *
+sigÇl_»ûived
+ = (
+p
+->
+»Œy
+ ? 
+SIGUSR1
+ : 
+SIGTERM
+);
+
+490 
+	}
+}
+
+499 
+	$socks_´oûss_šcomšg_udp
+ (
+bufãr
+ *
+buf
+,
+
+500 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+502 
+©yp
+;
+
+504 ià(
+	`BLEN
+ (
+buf
+) < 10)
+
+505 
+”rÜ
+;
+
+507 
+	`buf_»ad_u16
+ (
+buf
+);
+
+508 ià(
+	`buf_»ad_u8
+ (
+buf
+) != 0)
+
+509 
+”rÜ
+;
+
+511 
+©yp
+ = 
+	`buf_»ad_u8
+ (
+buf
+);
+
+512 ià(
+©yp
+ != 1)
+
+513 
+”rÜ
+;
+
+515 
+	`buf_»ad
+ (
+buf
+, &
+äom
+->
+de¡
+.
+addr
+.
+š4
+.
+sš_addr
+,  (from->dest.addr.in4.sin_addr));
+
+516 
+	`buf_»ad
+ (
+buf
+, &
+äom
+->
+de¡
+.
+addr
+.
+š4
+.
+sš_pÜt
+,  (from->dest.addr.in4.sin_port));
+
+520 
+”rÜ
+:
+
+521 
+buf
+->
+Ën
+ = 0;
+
+522 
+	}
+}
+
+532 
+	$socks_´oûss_outgošg_udp
+ (
+bufãr
+ *
+buf
+,
+
+533 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+to
+)
+
+540 
+bufãr
+ 
+h—d
+ = 
+	`buf_sub
+ (
+buf
+, 10, 
+Œue
+);
+
+543 
+	`ASSERT
+ (
+	`buf_defšed
+ (&
+h—d
+));
+
+545 
+	`buf_wr™e_u16
+ (&
+h—d
+, 0);
+
+546 
+	`buf_wr™e_u8
+ (&
+h—d
+, 0);
+
+547 
+	`buf_wr™e_u8
+ (&
+h—d
+, '\x01');
+
+548 
+	`buf_wr™e
+ (&
+h—d
+, &
+to
+->
+de¡
+.
+addr
+.
+š4
+.
+sš_addr
+,  (to->dest.addr.in4.sin_addr));
+
+549 
+	`buf_wr™e
+ (&
+h—d
+, &
+to
+->
+de¡
+.
+addr
+.
+š4
+.
+sš_pÜt
+,  (to->dest.addr.in4.sin_port));
+
+552 
+	}
+}
+
+555 
+	$dummy
+(è{
+	}
+}
+
+	@socks.h
+
+30 #iâdeà
+SOCKS_H
+
+
+31 
+	#SOCKS_H
+
+
+	)
+
+33 #ifdeà
+ENABLE_SOCKS
+
+
+35 
+	~"bufãr.h
+"
+
+37 
+	gÝ’v²_sockaddr
+;
+
+38 
+	glšk_sock‘_aùu®
+;
+
+40 
+	ssocks_´oxy_šfo
+ {
+
+41 
+boÞ
+ 
+	mdefšed
+;
+
+42 
+boÞ
+ 
+	m»Œy
+;
+
+44 
+	m£rv”
+[128];
+
+45 
+	mpÜt
+;
+
+46 
+	mauthfže
+[256];
+
+49 
+socks_adju¡_äame_·¿m‘”s
+ (
+äame
+ *äame, 
+´Ùo
+);
+
+51 
+socks_´oxy_šfo
+ *
+socks_´oxy_Ãw
+ (cÚ¡ *
+£rv”
+,
+
+52 
+pÜt
+,
+
+53 cÚ¡ *
+authfže
+,
+
+54 
+boÞ
+ 
+»Œy
+);
+
+56 
+socks_´oxy_þo£
+ (
+socks_´oxy_šfo
+ *
+¥
+);
+
+58 
+e¡ablish_socks_´oxy_·s¡hru
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+59 
+sock‘_desü�tÜ_t
+ 
+sd
+,
+
+60 cÚ¡ *
+ho¡
+,
+
+61 cÚ¡ 
+pÜt
+,
+
+62 vÞ©ž�*
+sigÇl_»ûived
+);
+
+64 
+e¡ablish_socks_´oxy_ud·ssoc
+ (
+socks_´oxy_šfo
+ *
+p
+,
+
+65 
+sock‘_desü�tÜ_t
+ 
+ù¾_sd
+,
+
+66 
+sock‘_desü�tÜ_t
+ 
+udp_sd
+,
+
+67 
+Ý’v²_sockaddr
+ *
+»Ïy_addr
+,
+
+68 vÞ©ž�*
+sigÇl_»ûived
+);
+
+70 
+socks_´oûss_šcomšg_udp
+ (
+bufãr
+ *
+buf
+,
+
+71 
+lšk_sock‘_aùu®
+ *
+äom
+);
+
+73 
+socks_´oûss_outgošg_udp
+ (
+bufãr
+ *
+buf
+,
+
+74 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+to
+);
+
+	@ssl.c
+
+39 #ifdeà
+HAVE_CONFIG_H
+
+
+40 
+	~"cÚfig.h
+"
+
+41 #–ià
+defšed
+(
+_MSC_VER
+)
+
+42 
+	~"cÚfig-msvc.h
+"
+
+45 
+	~"sysh—d.h
+"
+
+47 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+49 
+	~"”rÜ.h
+"
+
+50 
+	~"commÚ.h
+"
+
+51 
+	~"š‹g”.h
+"
+
+52 
+	~"sock‘.h
+"
+
+53 
+	~"misc.h
+"
+
+54 
+	~"fdmisc.h
+"
+
+55 
+	~"š‹rv®.h
+"
+
+56 
+	~"³rf.h
+"
+
+57 
+	~"¡©us.h
+"
+
+58 
+	~"g»mlš.h
+"
+
+59 
+	~"pkcs11.h
+"
+
+60 
+	~"li¡.h
+"
+
+61 
+	~"ba£64.h
+"
+
+62 
+	~"rou‹.h
+"
+
+64 
+	~"s¦.h
+"
+
+65 
+	~"s¦_v”ify.h
+"
+
+66 
+	~"s¦_back’d.h
+"
+
+68 
+	~"memdbg.h
+"
+
+70 #iâdeà
+ENABLE_OCC
+
+
+71 cÚ¡ 
+	gs¦_deçuÉ_ÝtiÚs_¡ršg
+[] = "V0 UNDEF";
+
+74 
+šlše
+ const *
+
+75 
+	$loÿl_ÝtiÚs_¡ršg
+ (cÚ¡ 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+77 #ifdeà
+ENABLE_OCC
+
+
+78  
+£ssiÚ
+->
+Ýt
+->
+loÿl_ÝtiÚs
+;
+
+80  
+s¦_deçuÉ_ÝtiÚs_¡ršg
+;
+
+82 
+	}
+}
+
+84 #ifdeà
+MEASURE_TLS_HANDSHAKE_STATS
+
+
+86 
+	gŽs_hªdshake_sucûss
+;
+
+87 
+	gŽs_hªdshake_”rÜ
+;
+
+88 
+	gŽs_·ck‘s_g’”©ed
+;
+
+89 
+	gŽs_·ck‘s_£Á
+;
+
+91 
+	#INCR_SENT
+ ++
+Žs_·ck‘s_£Á
+
+
+	)
+
+92 
+	#INCR_GENERATED
+ ++
+Žs_·ck‘s_g’”©ed
+
+
+	)
+
+93 
+	#INCR_SUCCESS
+ ++
+Žs_hªdshake_sucûss
+
+
+	)
+
+94 
+	#INCR_ERROR
+ ++
+Žs_hªdshake_”rÜ
+
+
+	)
+
+97 
+	$show_Žs_³rfÜmªû_¡©s
+()
+
+99 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS Handshakes, success=%f%% (good=%d, bad=%d),„etransmits=%f%%",
+
+100 (è
+Žs_hªdshake_sucûss
+ / (Žs_hªdshake_sucûs + 
+Žs_hªdshake_”rÜ
+) * 100.0,
+
+101 
+Žs_hªdshake_sucûss
+, 
+Žs_hªdshake_”rÜ
+,
+
+102 (è(
+Žs_·ck‘s_£Á
+ - 
+Žs_·ck‘s_g’”©ed
+) /�ls_packets_generated * 100.0);
+
+103 
+	}
+}
+
+106 
+	#INCR_SENT
+
+
+	)
+
+107 
+	#INCR_GENERATED
+
+
+	)
+
+108 
+	#INCR_SUCCESS
+
+
+	)
+
+109 
+	#INCR_ERROR
+
+
+	)
+
+116 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ 
+	gŽs_c�h”_Çme_Œª¦©iÚ_�bË
+[] = {
+
+238 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+251 {
+NULL
+, NULL}
+
+254 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ *
+
+255 
+	$Žs_g‘_c�h”_Çme_·œ
+ (cÚ¡ * 
+c�h”_Çme
+, 
+size_t
+ 
+Ën
+) {
+
+256 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ * 
+·œ
+ = 
+Žs_c�h”_Çme_Œª¦©iÚ_�bË
+;
+
+258 
+·œ
+->
+Ý’s¦_Çme
+ !ð
+NULL
+) {
+
+259 ià((
+	`¡¾’
+(
+·œ
+->
+Ý’s¦_Çme
+è=ð
+Ën
+ && 0 =ð
+	`memcmp
+ (
+c�h”_Çme
+,…air->openssl_name,†en)) ||
+
+260 (
+	`¡¾’
+(
+·œ
+->
+ŸÇ_Çme
+è=ð
+Ën
+ && 0 =ð
+	`memcmp
+ (
+c�h”_Çme
+,…air->iana_name,†en))) {
+
+261  
+·œ
+;
+
+263 
+·œ
+++;
+
+267  
+NULL
+;
+
+268 
+	}
+}
+
+277 
+	$Žs_adju¡_äame_·¿m‘”s
+(
+äame
+ *frame)
+
+279 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, 1);
+
+280 
+	}
+}
+
+287 
+	$Žs_š™_cÚŒÞ_chªÃl_äame_·¿m‘”s
+(cÚ¡ 
+äame
+ *
+d©a_chªÃl_äame
+,
+
+288 
+äame
+ *frame)
+
+296 
+äame
+->
+lšk_mtu
+ = 
+d©a_chªÃl_äame
+->link_mtu;
+
+297 
+äame
+->
+exŒa_lšk
+ = 
+d©a_chªÃl_äame
+->extra_link;
+
+300 
+	`Žs_adju¡_äame_·¿m‘”s
+ (
+äame
+);
+
+301 
+	`»lŸbË_ack_adju¡_äame_·¿m‘”s
+ (
+äame
+, 
+CONTROL_SEND_ACK_MAX
+);
+
+302 
+	`äame_add_to_exŒa_äame
+ (
+äame
+, 
+SID_SIZE
+ +  (
+·ck‘_id_ty³
+));
+
+305 
+	`äame_£t_mtu_dyÇmic
+ (
+äame
+, 0, 
+SET_MTU_TUN
+);
+
+306 
+	}
+}
+
+309 
+	$š™_s¦_lib
+ ()
+
+311 
+	`Žs_š™_lib
+ ();
+
+313 
+	`üy±o_š™_lib
+ ();
+
+314 
+	}
+}
+
+317 
+	$ä“_s¦_lib
+ ()
+
+319 
+	`üy±o_unš™_lib
+ ();
+
+320 
+	`´ng_unš™
+();
+
+322 
+	`Žs_ä“_lib
+();
+
+323 
+	}
+}
+
+330 
+u£r_·ss
+ 
+	g·ssbuf
+;
+
+333 
+	$³m_·sswÜd_£tup
+ (cÚ¡ *
+auth_fže
+)
+
+335 ià(!
+	`¡¾’
+ (
+·ssbuf
+.
+·sswÜd
+))
+
+336 
+	`g‘_u£r_·ss
+ (&
+·ssbuf
+, 
+auth_fže
+, 
+UP_TYPE_PRIVATE_KEY
+, 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_SENSITIVE
+|
+GET_USER_PASS_PASSWORD_ONLY
+);
+
+337 
+	}
+}
+
+340 
+	$³m_·sswÜd_ÿÎback
+ (*
+buf
+, 
+size
+, 
+rwæag
+, *
+u
+)
+
+342 ià(
+buf
+)
+
+345 
+	`³m_·sswÜd_£tup
+ (
+NULL
+);
+
+346 
+	`¡ºýyÁ
+ (
+buf
+, 
+·ssbuf
+.
+·sswÜd
+, 
+size
+);
+
+347 
+	`purge_u£r_·ss
+ (&
+·ssbuf
+, 
+çl£
+);
+
+349  
+	`¡¾’
+ (
+buf
+);
+
+352 
+	}
+}
+
+358 
+boÞ
+ 
+	gauth_u£r_·ss_’abËd
+;
+
+359 
+u£r_·ss
+ 
+	gauth_u£r_·ss
+;
+
+361 #ifdeà
+ENABLE_CLIENT_CR
+
+
+362 *
+	gauth_ch®Ënge
+;
+
+366 
+	$auth_u£r_·ss_£tup
+ (cÚ¡ *
+auth_fže
+, cÚ¡ 
+¡©ic_ch®Ënge_šfo
+ *
+sci
+)
+
+368 
+auth_u£r_·ss_’abËd
+ = 
+Œue
+;
+
+369 ià(!
+auth_u£r_·ss
+.
+defšed
+)
+
+371 #ià
+AUTO_USERID
+
+
+372 
+	`g‘_u£r_·ss_auto_u£rid
+ (&
+auth_u£r_·ss
+, 
+auth_fže
+);
+
+374 #ifdeà
+ENABLE_CLIENT_CR
+
+
+375 ià(
+auth_ch®Ënge
+)
+
+376 
+	`g‘_u£r_·ss_ü
+ (&
+auth_u£r_·ss
+,
+
+377 
+auth_fže
+,
+
+378 
+UP_TYPE_AUTH
+,
+
+379 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_SENSITIVE
+|
+GET_USER_PASS_DYNAMIC_CHALLENGE
+,
+
+380 
+auth_ch®Ënge
+);
+
+381 ià(
+sci
+)
+
+383 
+æags
+ = 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_SENSITIVE
+|
+GET_USER_PASS_STATIC_CHALLENGE
+;
+
+384 ià(
+sci
+->
+æags
+ & 
+SC_ECHO
+)
+
+385 
+æags
+ |ð
+GET_USER_PASS_STATIC_CHALLENGE_ECHO
+;
+
+386 
+	`g‘_u£r_·ss_ü
+ (&
+auth_u£r_·ss
+,
+
+387 
+auth_fže
+,
+
+388 
+UP_TYPE_AUTH
+,
+
+389 
+æags
+,
+
+390 
+sci
+->
+ch®Ënge_‹xt
+);
+
+394 
+	`g‘_u£r_·ss
+ (&
+auth_u£r_·ss
+, 
+auth_fže
+, 
+UP_TYPE_AUTH
+, 
+GET_USER_PASS_MANAGEMENT
+|
+GET_USER_PASS_SENSITIVE
+);
+
+397 
+	}
+}
+
+403 
+	$s¦_£t_auth_noÿche
+ ()
+
+405 
+·ssbuf
+.
+noÿche
+ = 
+Œue
+;
+
+406 
+auth_u£r_·ss
+.
+noÿche
+ = 
+Œue
+;
+
+407 
+	}
+}
+
+413 
+	$s¦_£t_auth_tok’
+ (cÚ¡ *
+tok’
+)
+
+415 
+	`£t_auth_tok’
+ (&
+auth_u£r_·ss
+, 
+tok’
+);
+
+416 
+	}
+}
+
+422 
+	$s¦_purge_auth
+ (cÚ¡ 
+boÞ
+ 
+auth_u£r_·ss_Úly
+)
+
+424 ià(!
+auth_u£r_·ss_Úly
+)
+
+426 #ifdeà
+ENABLE_PKCS11
+
+
+427 
+	`pkcs11_logout
+ ();
+
+429 
+	`purge_u£r_·ss
+ (&
+·ssbuf
+, 
+Œue
+);
+
+431 
+	`purge_u£r_·ss
+ (&
+auth_u£r_·ss
+, 
+Œue
+);
+
+432 #ifdeà
+ENABLE_CLIENT_CR
+
+
+433 
+	`s¦_purge_auth_ch®Ënge
+();
+
+435 
+	}
+}
+
+437 #ifdeà
+ENABLE_CLIENT_CR
+
+
+440 
+	$s¦_purge_auth_ch®Ënge
+ ()
+
+442 
+	`ä“
+ (
+auth_ch®Ënge
+);
+
+443 
+auth_ch®Ënge
+ = 
+NULL
+;
+
+444 
+	}
+}
+
+447 
+	$s¦_put_auth_ch®Ënge
+ (cÚ¡ *
+ü_¡r
+)
+
+449 
+	`s¦_purge_auth_ch®Ënge
+();
+
+450 
+auth_ch®Ënge
+ = 
+	`¡ršg_®loc
+(
+ü_¡r
+, 
+NULL
+);
+
+451 
+	}
+}
+
+461 
+	$Žs_v”siÚ_·r£
+(cÚ¡ *
+v¡r
+, cÚ¡ *
+exŒa
+)
+
+463 cÚ¡ 
+max_v”siÚ
+ = 
+	`Žs_v”siÚ_max
+();
+
+464 ià(!
+	`¡rcmp
+(
+v¡r
+, "1.0"è&& 
+TLS_VER_1_0
+ <ð
+max_v”siÚ
+)
+
+465  
+TLS_VER_1_0
+;
+
+466 ià(!
+	`¡rcmp
+(
+v¡r
+, "1.1"è&& 
+TLS_VER_1_1
+ <ð
+max_v”siÚ
+)
+
+467  
+TLS_VER_1_1
+;
+
+468 ià(!
+	`¡rcmp
+(
+v¡r
+, "1.2"è&& 
+TLS_VER_1_2
+ <ð
+max_v”siÚ
+)
+
+469  
+TLS_VER_1_2
+;
+
+470 ià(
+exŒa
+ && !
+	`¡rcmp
+(extra, "or-highest"))
+
+471  
+max_v”siÚ
+;
+
+473  
+TLS_VER_BAD
+;
+
+474 
+	}
+}
+
+481 
+	$š™_s¦
+ (cÚ¡ 
+ÝtiÚs
+ *ÝtiÚs, 
+Žs_roÙ_ùx
+ *
+Ãw_ùx
+)
+
+483 
+	`ASSERT
+(
+NULL
+ !ð
+Ãw_ùx
+);
+
+485 
+	`Žs_þ—r_”rÜ
+();
+
+487 ià(
+ÝtiÚs
+->
+Žs_£rv”
+)
+
+489 
+	`Žs_ùx_£rv”_Ãw
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+s¦_æags
+);
+
+490 
+	`Žs_ùx_lßd_dh_·¿ms
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+dh_fže
+, o±iÚs->
+dh_fže_šlše
+);
+
+494 
+	`Žs_ùx_þ›Á_Ãw
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+s¦_æags
+);
+
+497 
+	`Žs_ùx_£t_ÝtiÚs
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+s¦_æags
+);
+
+499 ià(
+ÝtiÚs
+->
+pkcs12_fže
+)
+
+501 ià(0 !ð
+	`Žs_ùx_lßd_pkcs12
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+pkcs12_fže
+,
+
+502 
+ÝtiÚs
+->
+pkcs12_fže_šlše
+, !ÝtiÚs->
+ÿ_fže
+))
+
+503 
+”r
+;
+
+505 #ifdeà
+ENABLE_PKCS11
+
+
+506 ià(
+ÝtiÚs
+->
+pkcs11_´ovid”s
+[0])
+
+508 ià(!
+	`Žs_ùx_u£_pkcs11
+ (
+Ãw_ùx
+, 
+ÝtiÚs
+->
+pkcs11_id_mªagem’t
+, o±iÚs->
+pkcs11_id
+))
+
+510 
+	`msg
+ (
+M_WARN
+, "Cannot†oad certificate \"%s\" using PKCS#11 interface",
+
+511 
+ÝtiÚs
+->
+pkcs11_id
+);
+
+512 
+”r
+;
+
+516 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+517 ià(
+ÝtiÚs
+->
+üy±ßpi_û¹
+)
+
+519 
+	`Žs_ùx_lßd_üy±ßpi
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+üy±ßpi_û¹
+);
+
+522 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+523 ià((
+ÝtiÚs
+->
+mªagem’t_æags
+ & 
+MF_EXTERNAL_KEY
+è&& o±iÚs->
+û¹_fže
+)
+
+525 
+	`Žs_ùx_u£_ex‹º®_´iv©e_key
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+û¹_fže
+,
+
+526 
+ÝtiÚs
+->
+û¹_fže_šlše
+);
+
+532 ià(
+ÝtiÚs
+->
+û¹_fže
+)
+
+534 
+	`Žs_ùx_lßd_û¹_fže
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+û¹_fže
+, o±iÚs->
+û¹_fže_šlše
+);
+
+538 ià(
+ÝtiÚs
+->
+´iv_key_fže
+)
+
+540 ià(0 !ð
+	`Žs_ùx_lßd_´iv_fže
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+´iv_key_fže
+, o±iÚs->
+´iv_key_fže_šlše
+))
+
+541 
+”r
+;
+
+545 ià(
+ÝtiÚs
+->
+ÿ_fže
+ || o±iÚs->
+ÿ_·th
+)
+
+547 
+	`Žs_ùx_lßd_ÿ
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+ÿ_fže
+, o±iÚs->
+ÿ_fže_šlše
+,
+
+548 
+ÝtiÚs
+->
+ÿ_·th
+, o±iÚs->
+Žs_£rv”
+);
+
+553 ià(
+ÝtiÚs
+->
+exŒa_û¹s_fže
+ || o±iÚs->
+exŒa_û¹s_fže_šlše
+)
+
+555 
+	`Žs_ùx_lßd_exŒa_û¹s
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+exŒa_û¹s_fže
+, o±iÚs->
+exŒa_û¹s_fže_šlše
+);
+
+559 ià(
+ÝtiÚs
+->
+c�h”_li¡
+)
+
+561 
+	`Žs_ùx_»¡riù_c�h”s
+(
+Ãw_ùx
+, 
+ÝtiÚs
+->
+c�h”_li¡
+);
+
+564 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+566 
+	`Žs_ùx_³rsÚ®i£_¿ndom
+ (
+Ãw_ùx
+);
+
+569 
+	`Žs_þ—r_”rÜ
+ ();
+
+572 
+”r
+:
+
+573 
+	`Žs_þ—r_”rÜ
+ ();
+
+574 
+	`Žs_ùx_ä“
+ (
+Ãw_ùx
+);
+
+576 
+	}
+}
+
+582 
+	$¡©e_Çme
+ (
+¡©e
+)
+
+584 
+¡©e
+)
+
+586 
+S_UNDEF
+:
+
+588 
+S_INITIAL
+:
+
+590 
+S_PRE_START
+:
+
+592 
+S_START
+:
+
+594 
+S_SENT_KEY
+:
+
+596 
+S_GOT_KEY
+:
+
+598 
+S_ACTIVE
+:
+
+600 
+S_NORMAL_OP
+:
+
+602 
+S_ERROR
+:
+
+607 
+	}
+}
+
+610 
+	$·ck‘_Ýcode_Çme
+ (
+Ý
+)
+
+612 
+Ý
+)
+
+614 
+P_CONTROL_HARD_RESET_CLIENT_V1
+:
+
+616 
+P_CONTROL_HARD_RESET_SERVER_V1
+:
+
+618 
+P_CONTROL_HARD_RESET_CLIENT_V2
+:
+
+620 
+P_CONTROL_HARD_RESET_SERVER_V2
+:
+
+622 
+P_CONTROL_SOFT_RESET_V1
+:
+
+624 
+P_CONTROL_V1
+:
+
+626 
+P_ACK_V1
+:
+
+628 
+P_DATA_V1
+:
+
+630 
+P_DATA_V2
+:
+
+635 
+	}
+}
+
+638 
+	$£ssiÚ_šdex_Çme
+ (
+šdex
+)
+
+640 
+šdex
+)
+
+642 
+TM_ACTIVE
+:
+
+644 
+TM_UNTRUSTED
+:
+
+646 
+TM_LAME_DUCK
+:
+
+651 
+	}
+}
+
+657 
+	$´št_key_id
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+gc_¬’a
+ *
+gc
+)
+
+659 
+i
+;
+
+660 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+662 
+i
+ = 0; i < 
+KEY_SCAN_SIZE
+; ++i)
+
+664 
+key_¡©e
+ *
+ks
+ = 
+muÉi
+->
+key_sÿn
+[
+i
+];
+
+665 
+	`buf_´štf
+ (&
+out
+, " [key#%d s�‹=% id=%d sid=%s]", 
+i
+,
+
+666 
+	`¡©e_Çme
+ (
+ks
+->
+¡©e
+), ks->
+key_id
+,
+
+667 
+	`£ssiÚ_id_´št
+ (&
+ks
+->
+£ssiÚ_id_»mÙe
+, 
+gc
+));
+
+670  
+	`BSTR
+ (&
+out
+);
+
+671 
+	}
+}
+
+680 
+boÞ
+
+
+681 
+	$is_h¬d_»£t
+ (
+Ý
+, 
+key_m‘hod
+)
+
+683 ià(!
+key_m‘hod
+ || key_method == 1)
+
+684 ià(
+Ý
+ =ð
+P_CONTROL_HARD_RESET_CLIENT_V1
+ || o°=ð
+P_CONTROL_HARD_RESET_SERVER_V1
+)
+
+685  
+Œue
+;
+
+687 ià(!
+key_m‘hod
+ || key_method >= 2)
+
+688 ià(
+Ý
+ =ð
+P_CONTROL_HARD_RESET_CLIENT_V2
+ || o°=ð
+P_CONTROL_HARD_RESET_SERVER_V2
+)
+
+689  
+Œue
+;
+
+691  
+çl£
+;
+
+692 
+	}
+}
+
+718 
+	$key_¡©e_š™
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, 
+key_¡©e
+ *
+ks
+)
+
+720 
+	`upd©e_time
+ ();
+
+722 
+	`CLEAR
+ (*
+ks
+);
+
+728 
+	`key_¡©e_s¦_š™
+(&
+ks
+->
+ks_s¦
+, &
+£ssiÚ
+->
+Ýt
+->
+s¦_ùx
+, sessiÚ->Ýt->
+£rv”
+,
+
+729 
+£ssiÚ
+);
+
+732 
+ks
+->
+š™Ÿl_Ýcode
+ = 
+£ssiÚ
+->initial_opcode;
+
+733 
+£ssiÚ
+->
+š™Ÿl_Ýcode
+ = 
+P_CONTROL_SOFT_RESET_V1
+;
+
+734 
+ks
+->
+¡©e
+ = 
+S_INITIAL
+;
+
+735 
+ks
+->
+key_id
+ = 
+£ssiÚ
+->key_id;
+
+741 ++
+£ssiÚ
+->
+key_id
+;
+
+742 
+£ssiÚ
+->
+key_id
+ &ð
+P_KEY_ID_MASK
+;
+
+743 ià(!
+£ssiÚ
+->
+key_id
+)
+
+744 
+£ssiÚ
+->
+key_id
+ = 1;
+
+747 
+	`ALLOC_OBJ_CLEAR
+ (
+ks
+->
+key_¤c
+, 
+key_sourû2
+);
+
+750 
+	`ALLOC_OBJ_CLEAR
+ (
+ks
+->
+£nd_»lŸbË
+, 
+»lŸbË
+);
+
+751 
+	`ALLOC_OBJ_CLEAR
+ (
+ks
+->
+»c_»lŸbË
+, 
+»lŸbË
+);
+
+752 
+	`ALLOC_OBJ_CLEAR
+ (
+ks
+->
+»c_ack
+, 
+»lŸbË_ack
+);
+
+755 
+ks
+->
+¶aš‹xt_»ad_buf
+ = 
+	`®loc_buf
+ (
+TLS_CHANNEL_BUF_SIZE
+);
+
+756 
+ks
+->
+¶aš‹xt_wr™e_buf
+ = 
+	`®loc_buf
+ (
+TLS_CHANNEL_BUF_SIZE
+);
+
+757 
+ks
+->
+ack_wr™e_buf
+ = 
+	`®loc_buf
+ (
+	`BUF_SIZE
+ (&
+£ssiÚ
+->
+Ýt
+->
+äame
+));
+
+758 
+	`»lŸbË_š™
+ (
+ks
+->
+£nd_»lŸbË
+, 
+	`BUF_SIZE
+ (&
+£ssiÚ
+->
+Ýt
+->
+äame
+),
+
+759 
+	`FRAME_HEADROOM
+ (&
+£ssiÚ
+->
+Ýt
+->
+äame
+), 
+TLS_RELIABLE_N_SEND_BUFFERS
+,
+
+760 
+ks
+->
+key_id
+ ? 
+çl£
+ : 
+£ssiÚ
+->
+Ýt
+->
+xm™_hÞd
+);
+
+761 
+	`»lŸbË_š™
+ (
+ks
+->
+»c_»lŸbË
+, 
+	`BUF_SIZE
+ (&
+£ssiÚ
+->
+Ýt
+->
+äame
+),
+
+762 
+	`FRAME_HEADROOM
+ (&
+£ssiÚ
+->
+Ýt
+->
+äame
+), 
+TLS_RELIABLE_N_REC_BUFFERS
+,
+
+763 
+çl£
+);
+
+764 
+	`»lŸbË_£t_timeout
+ (
+ks
+->
+£nd_»lŸbË
+, 
+£ssiÚ
+->
+Ýt
+->
+·ck‘_timeout
+);
+
+767 
+	`·ck‘_id_š™
+ (&
+ks
+->
+·ck‘_id
+,
+
+768 
+£ssiÚ
+->
+Ýt
+->
+tý_mode
+,
+
+769 
+£ssiÚ
+->
+Ýt
+->
+»¶ay_wšdow
+,
+
+770 
+£ssiÚ
+->
+Ýt
+->
+»¶ay_time
+,
+
+771 "SSL", 
+ks
+->
+key_id
+);
+
+773 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+774 
+ks
+->
+mda_key_id
+ = 
+£ssiÚ
+->
+Ýt
+->
+mda_cÚ‹xt
+->
+mda_key_id_couÁ”
+++;
+
+776 
+	}
+}
+
+793 
+	$key_¡©e_ä“
+ (
+key_¡©e
+ *
+ks
+, 
+boÞ
+ 
+þ—r
+)
+
+795 
+ks
+->
+¡©e
+ = 
+S_UNDEF
+;
+
+797 
+	`key_¡©e_s¦_ä“
+(&
+ks
+->
+ks_s¦
+);
+
+799 
+	`ä“_key_ùx_bi
+ (&
+ks
+->
+key
+);
+
+800 
+	`ä“_buf
+ (&
+ks
+->
+¶aš‹xt_»ad_buf
+);
+
+801 
+	`ä“_buf
+ (&
+ks
+->
+¶aš‹xt_wr™e_buf
+);
+
+802 
+	`ä“_buf
+ (&
+ks
+->
+ack_wr™e_buf
+);
+
+803 
+	`bufãr_li¡_ä“
+(
+ks
+->
+·ybuf
+);
+
+805 ià(
+ks
+->
+£nd_»lŸbË
+)
+
+807 
+	`»lŸbË_ä“
+ (
+ks
+->
+£nd_»lŸbË
+);
+
+808 
+	`ä“
+ (
+ks
+->
+£nd_»lŸbË
+);
+
+811 ià(
+ks
+->
+»c_»lŸbË
+)
+
+813 
+	`»lŸbË_ä“
+ (
+ks
+->
+»c_»lŸbË
+);
+
+814 
+	`ä“
+ (
+ks
+->
+»c_»lŸbË
+);
+
+817 ià(
+ks
+->
+»c_ack
+)
+
+818 
+	`ä“
+ (
+ks
+->
+»c_ack
+);
+
+820 ià(
+ks
+->
+key_¤c
+)
+
+821 
+	`ä“
+ (
+ks
+->
+key_¤c
+);
+
+823 
+	`·ck‘_id_ä“
+ (&
+ks
+->
+·ck‘_id
+);
+
+825 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+826 
+	`key_¡©e_rm_auth_cÚŒÞ_fže
+ (
+ks
+);
+
+829 ià(
+þ—r
+)
+
+830 
+	`CLEAR
+ (*
+ks
+);
+
+831 
+	}
+}
+
+841 
+šlše
+ 
+	$Žs_£ssiÚ_£t_£lf_»ã»ÁŸl_poš‹rs
+ (
+Žs_£ssiÚ
+* 
+£ssiÚ
+) {
+
+842 
+£ssiÚ
+->
+Žs_auth
+.
+·ck‘_id
+ = &£ssiÚ->
+Žs_auth_pid
+;
+
+843 
+	}
+}
+
+867 
+	$Žs_£ssiÚ_š™
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+869 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+871 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS:�ls_session_init:ƒntry");
+
+873 
+	`CLEAR
+ (*
+£ssiÚ
+);
+
+876 
+£ssiÚ
+->
+Ýt
+ = &
+muÉi
+->opt;
+
+879 !
+	`£ssiÚ_id_defšed
+(&
+£ssiÚ
+->
+£ssiÚ_id
+))
+
+880 
+	`£ssiÚ_id_¿ndom
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+);
+
+883 
+	`ASSERT
+ (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ >= 1);
+
+884 ià(
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 1)
+
+886 
+£ssiÚ
+->
+š™Ÿl_Ýcode
+ = sessiÚ->
+Ýt
+->
+£rv”
+ ?
+
+887 
+P_CONTROL_HARD_RESET_SERVER_V1
+ : 
+P_CONTROL_HARD_RESET_CLIENT_V1
+;
+
+891 
+£ssiÚ
+->
+š™Ÿl_Ýcode
+ = sessiÚ->
+Ýt
+->
+£rv”
+ ?
+
+892 
+P_CONTROL_HARD_RESET_SERVER_V2
+ : 
+P_CONTROL_HARD_RESET_CLIENT_V2
+;
+
+896 
+£ssiÚ
+->
+Žs_auth
+ = sessiÚ->
+Ýt
+->tls_auth;
+
+899 
+	`Žs_£ssiÚ_£t_£lf_»ã»ÁŸl_poš‹rs
+ (
+£ssiÚ
+);
+
+902 
+	`·ck‘_id_š™
+ (
+£ssiÚ
+->
+Žs_auth
+.
+·ck‘_id
+,
+
+903 
+£ssiÚ
+->
+Ýt
+->
+tý_mode
+,
+
+904 
+£ssiÚ
+->
+Ýt
+->
+»¶ay_wšdow
+,
+
+905 
+£ssiÚ
+->
+Ýt
+->
+»¶ay_time
+,
+
+906 "TLS_AUTH", 
+£ssiÚ
+->
+key_id
+);
+
+909 
+	`·ck‘_id_³rsi¡_lßd_obj
+ (
+£ssiÚ
+->
+Žs_auth
+.
+pid_³rsi¡
+, sessiÚ->Žs_auth.
+·ck‘_id
+);
+
+911 
+	`key_¡©e_š™
+ (
+£ssiÚ
+, &£ssiÚ->
+key
+[
+KS_PRIMARY
+]);
+
+913 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS:�ls_session_init:‚ew session object, sid=%s",
+
+914 
+	`£ssiÚ_id_´št
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+, &
+gc
+));
+
+916 
+	`gc_ä“
+ (&
+gc
+);
+
+917 
+	}
+}
+
+932 
+	$Žs_£ssiÚ_ä“
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, 
+boÞ
+ 
+þ—r
+)
+
+934 
+i
+;
+
+936 ià(
+£ssiÚ
+->
+Žs_auth
+.
+·ck‘_id
+)
+
+937 
+	`·ck‘_id_ä“
+ (
+£ssiÚ
+->
+Žs_auth
+.
+·ck‘_id
+);
+
+939 
+i
+ = 0; i < 
+KS_SIZE
+; ++i)
+
+940 
+	`key_¡©e_ä“
+ (&
+£ssiÚ
+->
+key
+[
+i
+], 
+çl£
+);
+
+942 ià(
+£ssiÚ
+->
+commÚ_Çme
+)
+
+943 
+	`ä“
+ (
+£ssiÚ
+->
+commÚ_Çme
+);
+
+945 
+	`û¹_hash_ä“
+ (
+£ssiÚ
+->
+û¹_hash_£t
+);
+
+947 ià(
+þ—r
+)
+
+948 
+	`CLEAR
+ (*
+£ssiÚ
+);
+
+949 
+	}
+}
+
+957 
+	$move_£ssiÚ
+ (
+Žs_muÉi
+* 
+muÉi
+, 
+de¡
+, 
+¤c
+, 
+boÞ
+ 
+»š™_¤c
+)
+
+959 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS: move_session: dest=%s src=%s„einit_src=%d",
+
+960 
+	`£ssiÚ_šdex_Çme
+(
+de¡
+),
+
+961 
+	`£ssiÚ_šdex_Çme
+(
+¤c
+),
+
+962 
+»š™_¤c
+);
+
+963 
+	`ASSERT
+ (
+¤c
+ !ð
+de¡
+);
+
+964 
+	`ASSERT
+ (
+¤c
+ >ð0 && srø< 
+TM_SIZE
+);
+
+965 
+	`ASSERT
+ (
+de¡
+ >ð0 && de¡ < 
+TM_SIZE
+);
+
+966 
+	`Žs_£ssiÚ_ä“
+ (&
+muÉi
+->
+£ssiÚ
+[
+de¡
+], 
+çl£
+);
+
+967 
+muÉi
+->
+£ssiÚ
+[
+de¡
+] = muÉi->£ssiÚ[
+¤c
+];
+
+968 
+	`Žs_£ssiÚ_£t_£lf_»ã»ÁŸl_poš‹rs
+ (&
+muÉi
+->
+£ssiÚ
+[
+de¡
+]);
+
+970 ià(
+»š™_¤c
+)
+
+971 
+	`Žs_£ssiÚ_š™
+ (
+muÉi
+, &muÉi->
+£ssiÚ
+[
+¤c
+]);
+
+973 
+	`CLEAR
+ (
+muÉi
+->
+£ssiÚ
+[
+¤c
+]);
+
+975 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS: move_session:ƒxit");
+
+976 
+	}
+}
+
+979 
+	$»£t_£ssiÚ
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+981 
+	`Žs_£ssiÚ_ä“
+ (
+£ssiÚ
+, 
+çl£
+);
+
+982 
+	`Žs_£ssiÚ_š™
+ (
+muÉi
+, 
+£ssiÚ
+);
+
+983 
+	}
+}
+
+990 
+	$š™Ÿ‹_uÁru¡ed_£ssiÚ
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+sockaddr_š
+ *
+to
+)
+
+992 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+TM_UNTRUSTED
+];
+
+993 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+995 
+	`»£t_£ssiÚ
+ (
+muÉi
+, 
+£ssiÚ
+);
+
+996 
+ks
+->
+»mÙe_addr
+ = *
+to
+;
+
+997 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS: in™Ÿ‹_uÁru¡ed_£ssiÚ:‡ddr=%s", 
+	`´št_sockaddr
+ (
+to
+));
+
+998 
+	}
+}
+
+1005 
+šlše
+ 
+
+1006 
+	$compu‹_—¾›¡_wakeup
+ (
+š‹rv®_t
+ *
+—¾›¡
+, iÁ”v®_ˆ
+£cÚds_äom_now
+) {
+
+1007 ià(
+£cÚds_äom_now
+ < *
+—¾›¡
+)
+
+1008 *
+—¾›¡
+ = 
+£cÚds_äom_now
+;
+
+1009 ià(*
+—¾›¡
+ < 0)
+
+1010 *
+—¾›¡
+ = 0;
+
+1011 
+	}
+}
+
+1017 
+šlše
+ 
+boÞ
+
+
+1018 
+	$Ïme_duck_mu¡_d›
+ (cÚ¡ 
+Žs_£ssiÚ
+* 
+£ssiÚ
+, 
+š‹rv®_t
+ *
+wakeup
+)
+
+1020 cÚ¡ 
+key_¡©e
+* 
+Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+1021 ià(
+Ïme
+->
+¡©e
+ >ð
+S_INITIAL
+)
+
+1023 cÚ¡ 
+time_t
+ 
+loÿl_now
+ = 
+now
+;
+
+1024 
+	`ASSERT
+ (
+Ïme
+->
+mu¡_d›
+);
+
+1025 ià(
+loÿl_now
+ < 
+Ïme
+->
+mu¡_d›
+)
+
+1027 
+	`compu‹_—¾›¡_wakeup
+ (
+wakeup
+, 
+Ïme
+->
+mu¡_d›
+ - 
+loÿl_now
+);
+
+1028  
+çl£
+;
+
+1031  
+Œue
+;
+
+1033 ià(
+Ïme
+->
+¡©e
+ =ð
+S_ERROR
+)
+
+1034  
+Œue
+;
+
+1036  
+çl£
+;
+
+1037 
+	}
+}
+
+1039 
+Žs_muÉi
+ *
+
+1040 
+	$Žs_muÉi_š™
+ (
+Žs_ÝtiÚs
+ *tls_options)
+
+1042 
+Žs_muÉi
+ *
+»t
+;
+
+1044 
+	`ALLOC_OBJ_CLEAR
+ (
+»t
+, 
+Žs_muÉi
+);
+
+1047 
+»t
+->
+Ýt
+ = *
+Žs_ÝtiÚs
+;
+
+1050 
+»t
+->
+Ýt
+.
+Žs_auth
+.
+key_ùx_bi
+ = &»t->Ýt.
+Žs_auth_key
+;
+
+1053 
+	`ASSERT
+ (
+	`SIZE
+ (
+»t
+->
+key_sÿn
+) == 3);
+
+1054 
+»t
+->
+key_sÿn
+[0] = &»t->
+£ssiÚ
+[
+TM_ACTIVE
+].
+key
+[
+KS_PRIMARY
+];
+
+1055 
+»t
+->
+key_sÿn
+[1] = &»t->
+£ssiÚ
+[
+TM_ACTIVE
+].
+key
+[
+KS_LAME_DUCK
+];
+
+1056 
+»t
+->
+key_sÿn
+[2] = &»t->
+£ssiÚ
+[
+TM_LAME_DUCK
+].
+key
+[
+KS_LAME_DUCK
+];
+
+1059 
+»t
+->
+u£_³”_id
+ = 
+çl£
+;
+
+1061  
+»t
+;
+
+1062 
+	}
+}
+
+1065 
+	$Žs_muÉi_š™_fš®ize
+ (
+Žs_muÉi
+* 
+muÉi
+, cÚ¡ 
+äame
+* frame)
+
+1067 
+	`Žs_š™_cÚŒÞ_chªÃl_äame_·¿m‘”s
+ (
+äame
+, &
+muÉi
+->
+Ýt
+.frame);
+
+1071 
+	`Žs_£ssiÚ_š™
+ (
+muÉi
+, &muÉi->
+£ssiÚ
+[
+TM_ACTIVE
+]);
+
+1073 ià(!
+muÉi
+->
+Ýt
+.
+sšgË_£ssiÚ
+)
+
+1074 
+	`Žs_£ssiÚ_š™
+ (
+muÉi
+, &muÉi->
+£ssiÚ
+[
+TM_UNTRUSTED
+]);
+
+1075 
+	}
+}
+
+1081 
+Žs_auth_¡ªd®Úe
+ *
+
+1082 
+	$Žs_auth_¡ªd®Úe_š™
+ (
+Žs_ÝtiÚs
+ *tls_options,
+
+1083 
+gc_¬’a
+ *
+gc
+)
+
+1085 
+Žs_auth_¡ªd®Úe
+ *
+�s
+;
+
+1087 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+�s
+, 
+Žs_auth_¡ªd®Úe
+, 
+gc
+);
+
+1090 
+�s
+->
+Žs_auth_key
+ = 
+Žs_ÝtiÚs
+->tls_auth_key;
+
+1091 
+�s
+->
+Žs_auth_ÝtiÚs
+.
+key_ùx_bi
+ = &�s->
+Žs_auth_key
+;
+
+1092 
+�s
+->
+Žs_auth_ÝtiÚs
+.
+æags
+ |ð
+CO_PACKET_ID_LONG_FORM
+;
+
+1095 
+�s
+->
+äame
+ = 
+Žs_ÝtiÚs
+->frame;
+
+1097  
+�s
+;
+
+1098 
+	}
+}
+
+1101 
+	$Žs_auth_¡ªd®Úe_fš®ize
+ (
+Žs_auth_¡ªd®Úe
+ *
+�s
+,
+
+1102 cÚ¡ 
+äame
+ *frame)
+
+1104 
+	`Žs_š™_cÚŒÞ_chªÃl_äame_·¿m‘”s
+ (
+äame
+, &
+�s
+->frame);
+
+1105 
+	}
+}
+
+1113 
+	$Žs_muÉi_š™_£t_ÝtiÚs
+ (
+Žs_muÉi
+* 
+muÉi
+,
+
+1114 cÚ¡ *
+loÿl
+,
+
+1115 cÚ¡ *
+»mÙe
+)
+
+1117 #ifdeà
+ENABLE_OCC
+
+
+1119 
+muÉi
+->
+Ýt
+.
+loÿl_ÝtiÚs
+ = 
+loÿl
+;
+
+1120 
+muÉi
+->
+Ýt
+.
+»mÙe_ÝtiÚs
+ = 
+»mÙe
+;
+
+1122 
+	}
+}
+
+1128 
+	$Žs_muÉi_ä“
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+boÞ
+ 
+þ—r
+)
+
+1130 
+i
+;
+
+1132 
+	`ASSERT
+ (
+muÉi
+);
+
+1134 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1135 
+	`mª_def_auth_£t_þ›Á_»asÚ
+(
+muÉi
+, 
+NULL
+);
+
+1137 
+	`ä“
+ (
+muÉi
+->
+³”_šfo
+);
+
+1140 ià(
+muÉi
+->
+locked_ú
+)
+
+1141 
+	`ä“
+ (
+muÉi
+->
+locked_ú
+);
+
+1143 ià(
+muÉi
+->
+locked_u£ºame
+)
+
+1144 
+	`ä“
+ (
+muÉi
+->
+locked_u£ºame
+);
+
+1146 
+	`û¹_hash_ä“
+ (
+muÉi
+->
+locked_û¹_hash_£t
+);
+
+1148 
+i
+ = 0; i < 
+TM_SIZE
+; ++i)
+
+1149 
+	`Žs_£ssiÚ_ä“
+ (&
+muÉi
+->
+£ssiÚ
+[
+i
+], 
+çl£
+);
+
+1151 ià(
+þ—r
+)
+
+1152 
+	`CLEAR
+ (*
+muÉi
+);
+
+1154 
+	`ä“
+(
+muÉi
+);
+
+1155 
+	}
+}
+
+1167 
+	#SWAP_BUF_SIZE
+ 256
+
+	)
+
+1169 
+boÞ
+
+
+1170 
+	$sw­_hmac
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+üy±o_ÝtiÚs
+ *
+co
+, 
+boÞ
+ 
+šcomšg
+)
+
+1172 
+key_ùx
+ *
+ùx
+;
+
+1174 
+	`ASSERT
+ (
+co
+);
+
+1176 
+ùx
+ = (
+šcomšg
+ ? &
+co
+->
+key_ùx_bi
+->
+deüy±
+ : &co->key_ùx_bi->
+’üy±
+);
+
+1177 
+	`ASSERT
+ (
+ùx
+->
+hmac
+);
+
+1181 cÚ¡ 
+hmac_size
+ = 
+	`hmac_ùx_size
+ (
+ùx
+->
+hmac
+è+ 
+	`·ck‘_id_size
+ (
+Œue
+);
+
+1184 cÚ¡ 
+osid_size
+ = 1 + 
+SID_SIZE
+;
+
+1186 
+e1
+, 
+e2
+;
+
+1187 
+ušt8_t
+ *
+b
+ = 
+	`BPTR
+ (
+buf
+);
+
+1188 
+ušt8_t
+ 
+buf1
+[
+SWAP_BUF_SIZE
+];
+
+1189 
+ušt8_t
+ 
+buf2
+[
+SWAP_BUF_SIZE
+];
+
+1191 ià(
+šcomšg
+)
+
+1193 
+e1
+ = 
+osid_size
+;
+
+1194 
+e2
+ = 
+hmac_size
+;
+
+1198 
+e1
+ = 
+hmac_size
+;
+
+1199 
+e2
+ = 
+osid_size
+;
+
+1202 
+	`ASSERT
+ (
+e1
+ <ð
+SWAP_BUF_SIZE
+ && 
+e2
+ <= SWAP_BUF_SIZE);
+
+1204 ià(
+buf
+->
+Ën
+ >ð
+e1
+ + 
+e2
+)
+
+1206 
+	`memýy
+ (
+buf1
+, 
+b
+, 
+e1
+);
+
+1207 
+	`memýy
+ (
+buf2
+, 
+b
+ + 
+e1
+, 
+e2
+);
+
+1208 
+	`memýy
+ (
+b
+, 
+buf2
+, 
+e2
+);
+
+1209 
+	`memýy
+ (
+b
+ + 
+e2
+, 
+buf1
+, 
+e1
+);
+
+1210  
+Œue
+;
+
+1213  
+çl£
+;
+
+1215 
+	}
+}
+
+1217 #undeà
+SWAP_BUF_SIZE
+
+
+1223 
+	$wr™e_cÚŒÞ_auth
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+,
+
+1224 
+key_¡©e
+ *
+ks
+,
+
+1225 
+bufãr
+ *
+buf
+,
+
+1226 
+lšk_sock‘_aùu®
+ **
+to_lšk_addr
+,
+
+1227 
+Ýcode
+,
+
+1228 
+max_ack
+,
+
+1229 
+boÞ
+ 
+´•’d_ack
+)
+
+1231 
+ušt8_t
+ *
+h—d”
+;
+
+1232 
+bufãr
+ 
+nuÎ
+ = 
+	`þ—r_buf
+ ();
+
+1234 
+	`ASSERT
+ (
+	`lšk_sock‘_aùu®_defšed
+ (&
+ks
+->
+»mÙe_addr
+));
+
+1235 
+	`ASSERT
+ (
+»lŸbË_ack_wr™e
+
+
+1236 (
+ks
+->
+»c_ack
+, 
+buf
+, &ks->
+£ssiÚ_id_»mÙe
+, 
+max_ack
+, 
+´•’d_ack
+));
+
+1237 
+	`ASSERT
+ (
+	`£ssiÚ_id_wr™e_´•’d
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+, 
+buf
+));
+
+1238 
+	`ASSERT
+ (
+h—d”
+ = 
+	`buf_´•’d
+ (
+buf
+, 1));
+
+1239 *
+h—d”
+ = 
+ks
+->
+key_id
+ | (
+Ýcode
+ << 
+P_OPCODE_SHIFT
+);
+
+1240 ià(
+£ssiÚ
+->
+Žs_auth
+.
+key_ùx_bi
+->
+’üy±
+.
+hmac
+)
+
+1243 
+	`Ý’v²_’üy±
+ (
+buf
+, 
+nuÎ
+, &
+£ssiÚ
+->
+Žs_auth
+, 
+NULL
+);
+
+1244 
+	`ASSERT
+ (
+	`sw­_hmac
+ (
+buf
+, &
+£ssiÚ
+->
+Žs_auth
+, 
+çl£
+));
+
+1246 *
+to_lšk_addr
+ = &
+ks
+->
+»mÙe_addr
+;
+
+1247 
+	}
+}
+
+1252 
+boÞ
+
+
+1253 
+	$»ad_cÚŒÞ_auth
+ (
+bufãr
+ *
+buf
+,
+
+1254 cÚ¡ 
+üy±o_ÝtiÚs
+ *
+co
+,
+
+1255 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom
+)
+
+1257 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1259 ià(
+co
+->
+key_ùx_bi
+->
+deüy±
+.
+hmac
+)
+
+1261 
+bufãr
+ 
+nuÎ
+ = 
+	`þ—r_buf
+ ();
+
+1264 ià(!
+	`sw­_hmac
+ (
+buf
+, 
+co
+, 
+Œue
+))
+
+1266 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+1268 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+1269 
+	`gc_ä“
+ (&
+gc
+);
+
+1270  
+çl£
+;
+
+1275 
+	`Ý’v²_deüy±
+ (
+buf
+, 
+nuÎ
+, 
+co
+, 
+NULL
+);
+
+1276 ià(!
+buf
+->
+Ën
+)
+
+1278 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+1280 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+1281 
+	`gc_ä“
+ (&
+gc
+);
+
+1282  
+çl£
+;
+
+1289 
+	`buf_advªû
+ (
+buf
+, 
+SID_SIZE
+ + 1);
+
+1291 
+	`gc_ä“
+ (&
+gc
+);
+
+1292  
+Œue
+;
+
+1293 
+	}
+}
+
+1300 
+	$key_sourû_´št
+ (cÚ¡ 
+key_sourû
+ *
+k
+,
+
+1301 cÚ¡ *
+´efix
+)
+
+1303 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1305 
+	`VALGRIND_MAKE_READABLE
+ ((*)
+k
+->
+´e_ma¡”
+,  (k->pre_master));
+
+1306 
+	`VALGRIND_MAKE_READABLE
+ ((*)
+k
+->
+¿ndom1
+,  (k->random1));
+
+1307 
+	`VALGRIND_MAKE_READABLE
+ ((*)
+k
+->
+¿ndom2
+,  (k->random2));
+
+1309 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+,
+
+1311 
+´efix
+,
+
+1312 
+	`fÜm©_hex
+ (
+k
+->
+´e_ma¡”
+,  (k->´e_ma¡”), 0, &
+gc
+));
+
+1313 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+,
+
+1315 
+´efix
+,
+
+1316 
+	`fÜm©_hex
+ (
+k
+->
+¿ndom1
+,  (k->¿ndom1), 0, &
+gc
+));
+
+1317 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+,
+
+1319 
+´efix
+,
+
+1320 
+	`fÜm©_hex
+ (
+k
+->
+¿ndom2
+,  (k->¿ndom2), 0, &
+gc
+));
+
+1322 
+	`gc_ä“
+ (&
+gc
+);
+
+1323 
+	}
+}
+
+1326 
+	$key_sourû2_´št
+ (cÚ¡ 
+key_sourû2
+ *
+k
+)
+
+1328 
+	`key_sourû_´št
+ (&
+k
+->
+þ›Á
+, "Client");
+
+1329 
+	`key_sourû_´št
+ (&
+k
+->
+£rv”
+, "Server");
+
+1330 
+	}
+}
+
+1344 
+	$Žs1_P_hash
+(cÚ¡ 
+md_kt_t
+ *
+md_kt
+,
+
+1345 cÚ¡ 
+ušt8_t
+ *
+£c
+,
+
+1346 
+£c_Ën
+,
+
+1347 cÚ¡ 
+ušt8_t
+ *
+£ed
+,
+
+1348 
+£ed_Ën
+,
+
+1349 
+ušt8_t
+ *
+out
+,
+
+1350 
+Þ’
+)
+
+1352 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1353 
+chunk
+,
+n
+;
+
+1354 
+hmac_ùx_t
+ 
+ùx
+;
+
+1355 
+hmac_ùx_t
+ 
+ùx_tmp
+;
+
+1356 
+ušt8_t
+ 
+A1
+[
+MAX_HMAC_KEY_LENGTH
+];
+
+1357 
+A1_Ën
+;
+
+1359 #ifdeà
+ENABLE_DEBUG
+
+
+1360 cÚ¡ 
+Þ’_Üig
+ = 
+Þ’
+;
+
+1361 cÚ¡ 
+ušt8_t
+ *
+out_Üig
+ = 
+out
+;
+
+1364 
+	`CLEAR
+(
+ùx
+);
+
+1365 
+	`CLEAR
+(
+ùx_tmp
+);
+
+1367 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "Žs1_P_hash sec: %s", 
+	`fÜm©_hex
+ (
+£c
+, 
+£c_Ën
+, 0, &
+gc
+));
+
+1368 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "Žs1_P_hash s“d: %s", 
+	`fÜm©_hex
+ (
+£ed
+, 
+£ed_Ën
+, 0, &
+gc
+));
+
+1370 
+chunk
+ = 
+	`md_kt_size
+(
+md_kt
+);
+
+1371 
+A1_Ën
+ = 
+	`md_kt_size
+(
+md_kt
+);
+
+1373 
+	`hmac_ùx_š™
+(&
+ùx
+, 
+£c
+, 
+£c_Ën
+, 
+md_kt
+);
+
+1374 
+	`hmac_ùx_š™
+(&
+ùx_tmp
+, 
+£c
+, 
+£c_Ën
+, 
+md_kt
+);
+
+1376 
+	`hmac_ùx_upd©e
+(&
+ùx
+,
+£ed
+,
+£ed_Ën
+);
+
+1377 
+	`hmac_ùx_fš®
+(&
+ùx
+, 
+A1
+);
+
+1379 
+n
+=0;
+
+1382 
+	`hmac_ùx_»£t
+(&
+ùx
+);
+
+1383 
+	`hmac_ùx_»£t
+(&
+ùx_tmp
+);
+
+1384 
+	`hmac_ùx_upd©e
+(&
+ùx
+,
+A1
+,
+A1_Ën
+);
+
+1385 
+	`hmac_ùx_upd©e
+(&
+ùx_tmp
+,
+A1
+,
+A1_Ën
+);
+
+1386 
+	`hmac_ùx_upd©e
+(&
+ùx
+,
+£ed
+,
+£ed_Ën
+);
+
+1388 ià(
+Þ’
+ > 
+chunk
+)
+
+1390 
+	`hmac_ùx_fš®
+(&
+ùx
+, 
+out
+);
+
+1391 
+out
++=
+chunk
+;
+
+1392 
+Þ’
+-=
+chunk
+;
+
+1393 
+	`hmac_ùx_fš®
+(&
+ùx_tmp
+, 
+A1
+);
+
+1397 
+	`hmac_ùx_fš®
+(&
+ùx
+, 
+A1
+);
+
+1398 
+	`memýy
+(
+out
+,
+A1
+,
+Þ’
+);
+
+1402 
+	`hmac_ùx_þ—nup
+(&
+ùx
+);
+
+1403 
+	`hmac_ùx_þ—nup
+(&
+ùx_tmp
+);
+
+1404 
+	`CLEAR
+ (
+A1
+);
+
+1406 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "Žs1_P_hash out: %s", 
+	`fÜm©_hex
+ (
+out_Üig
+, 
+Þ’_Üig
+, 0, &
+gc
+));
+
+1407 
+	`gc_ä“
+ (&
+gc
+);
+
+1408 
+	}
+}
+
+1430 
+	$Žs1_PRF
+(
+ušt8_t
+ *
+Ïb–
+,
+
+1431 
+Ïb–_Ën
+,
+
+1432 cÚ¡ 
+ušt8_t
+ *
+£c
+,
+
+1433 
+¦’
+,
+
+1434 
+ušt8_t
+ *
+out1
+,
+
+1435 
+Þ’
+)
+
+1437 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1438 cÚ¡ 
+md_kt_t
+ *
+md5
+ = 
+	`md_kt_g‘
+("MD5");
+
+1439 cÚ¡ 
+md_kt_t
+ *
+sha1
+ = 
+	`md_kt_g‘
+("SHA1");
+
+1440 
+Ën
+,
+i
+;
+
+1441 cÚ¡ 
+ušt8_t
+ *
+S1
+,*
+S2
+;
+
+1442 
+ušt8_t
+ *
+out2
+;
+
+1444 
+out2
+ = (
+ušt8_t
+ *è
+	`gc_m®loc
+ (
+Þ’
+, 
+çl£
+, &
+gc
+);
+
+1446 
+Ën
+=
+¦’
+/2;
+
+1447 
+S1
+=
+£c
+;
+
+1448 
+S2
+ð&(
+£c
+[
+Ën
+]);
+
+1449 
+Ën
++=(
+¦’
+&1);
+
+1451 
+	`Žs1_P_hash
+(
+md5
+ ,
+S1
+,
+Ën
+,
+Ïb–
+,
+Ïb–_Ën
+,
+out1
+,
+Þ’
+);
+
+1452 
+	`Žs1_P_hash
+(
+sha1
+,
+S2
+,
+Ën
+,
+Ïb–
+,
+Ïb–_Ën
+,
+out2
+,
+Þ’
+);
+
+1454 
+i
+=0; i<
+Þ’
+; i++)
+
+1455 
+out1
+[
+i
+]^=
+out2
+[i];
+
+1457 
+	`mem£t
+ (
+out2
+, 0, 
+Þ’
+);
+
+1459 
+	`dmsg
+ (
+D_SHOW_KEY_SOURCE
+, "Žs1_PRF out[%d]: %s", 
+Þ’
+, 
+	`fÜm©_hex
+ (
+out1
+, oËn, 0, &
+gc
+));
+
+1461 
+	`gc_ä“
+ (&
+gc
+);
+
+1462 
+	}
+}
+
+1465 
+	$Ý’v²_PRF
+ (cÚ¡ 
+ušt8_t
+ *
+£ü‘
+,
+
+1466 
+£ü‘_Ën
+,
+
+1467 cÚ¡ *
+Ïb–
+,
+
+1468 cÚ¡ 
+ušt8_t
+ *
+þ›Á_£ed
+,
+
+1469 
+þ›Á_£ed_Ën
+,
+
+1470 cÚ¡ 
+ušt8_t
+ *
+£rv”_£ed
+,
+
+1471 
+£rv”_£ed_Ën
+,
+
+1472 cÚ¡ 
+£ssiÚ_id
+ *
+þ›Á_sid
+,
+
+1473 cÚ¡ 
+£ssiÚ_id
+ *
+£rv”_sid
+,
+
+1474 
+ušt8_t
+ *
+ou�ut
+,
+
+1475 
+ou�ut_Ën
+)
+
+1479 
+bufãr
+ 
+£ed
+ = 
+	`®loc_buf
+ (
+	`¡¾’
+ (
+Ïb–
+)
+
+1480 + 
+þ›Á_£ed_Ën
+
+
+1481 + 
+£rv”_£ed_Ën
+
+
+1482 + 
+SID_SIZE
+ * 2);
+
+1484 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+£ed
+, 
+Ïb–
+, 
+	`¡¾’
+ (label)));
+
+1485 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+£ed
+, 
+þ›Á_£ed
+, 
+þ›Á_£ed_Ën
+));
+
+1486 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+£ed
+, 
+£rv”_£ed
+, 
+£rv”_£ed_Ën
+));
+
+1488 ià(
+þ›Á_sid
+)
+
+1489 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+£ed
+, 
+þ›Á_sid
+->
+id
+, 
+SID_SIZE
+));
+
+1490 ià(
+£rv”_sid
+)
+
+1491 
+	`ASSERT
+ (
+	`buf_wr™e
+ (&
+£ed
+, 
+£rv”_sid
+->
+id
+, 
+SID_SIZE
+));
+
+1494 
+	`Žs1_PRF
+ (
+	`BPTR
+(&
+£ed
+), 
+	`BLEN
+(&£ed), 
+£ü‘
+, 
+£ü‘_Ën
+, 
+ou�ut
+, 
+ou�ut_Ën
+);
+
+1496 
+	`buf_þ—r
+ (&
+£ed
+);
+
+1497 
+	`ä“_buf
+ (&
+£ed
+);
+
+1499 
+	`VALGRIND_MAKE_READABLE
+ ((*)
+ou�ut
+, 
+ou�ut_Ën
+);
+
+1500 
+	}
+}
+
+1506 
+boÞ
+
+
+1507 
+	$g’”©e_key_ex·nsiÚ
+ (
+key_ùx_bi
+ *
+key
+,
+
+1508 cÚ¡ 
+key_ty³
+ *key_type,
+
+1509 cÚ¡ 
+key_sourû2
+ *
+key_¤c
+,
+
+1510 cÚ¡ 
+£ssiÚ_id
+ *
+þ›Á_sid
+,
+
+1511 cÚ¡ 
+£ssiÚ_id
+ *
+£rv”_sid
+,
+
+1512 
+boÞ
+ 
+£rv”
+)
+
+1514 
+ušt8_t
+ 
+ma¡”
+[48];
+
+1515 
+key2
+ key2;
+
+1516 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+1517 
+i
+;
+
+1519 
+	`CLEAR
+ (
+ma¡”
+);
+
+1520 
+	`CLEAR
+ (
+key2
+);
+
+1523 
+	`key_sourû2_´št
+ (
+key_¤c
+);
+
+1526 
+	`Ý’v²_PRF
+ (
+key_¤c
+->
+þ›Á
+.
+´e_ma¡”
+,
+
+1527 (
+key_¤c
+->
+þ›Á
+.
+´e_ma¡”
+),
+
+1528 
+KEY_EXPANSION_ID
+ " master secret",
+
+1529 
+key_¤c
+->
+þ›Á
+.
+¿ndom1
+,
+
+1530 (
+key_¤c
+->
+þ›Á
+.
+¿ndom1
+),
+
+1531 
+key_¤c
+->
+£rv”
+.
+¿ndom1
+,
+
+1532 (
+key_¤c
+->
+£rv”
+.
+¿ndom1
+),
+
+1533 
+NULL
+,
+
+1534 
+NULL
+,
+
+1535 
+ma¡”
+,
+
+1536 (
+ma¡”
+));
+
+1539 
+	`Ý’v²_PRF
+ (
+ma¡”
+,
+
+1540 (
+ma¡”
+),
+
+1541 
+KEY_EXPANSION_ID
+ " keyƒxpansion",
+
+1542 
+key_¤c
+->
+þ›Á
+.
+¿ndom2
+,
+
+1543 (
+key_¤c
+->
+þ›Á
+.
+¿ndom2
+),
+
+1544 
+key_¤c
+->
+£rv”
+.
+¿ndom2
+,
+
+1545 (
+key_¤c
+->
+£rv”
+.
+¿ndom2
+),
+
+1546 
+þ›Á_sid
+,
+
+1547 
+£rv”_sid
+,
+
+1548 (
+ušt8_t
+*)
+key2
+.
+keys
+,
+
+1549 (
+key2
+.
+keys
+));
+
+1551 
+key2
+.
+n
+ = 2;
+
+1553 
+	`key2_´št
+ (&
+key2
+, 
+key_ty³
+, "Master Encrypt", "Master Decrypt");
+
+1556 
+i
+ = 0; i < 2; ++i)
+
+1558 
+	`fixup_key
+ (&
+key2
+.
+keys
+[
+i
+], 
+key_ty³
+);
+
+1559 ià(!
+	`check_key
+ (&
+key2
+.
+keys
+[
+i
+], 
+key_ty³
+))
+
+1561 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Bad dynamic key generated");
+
+1562 
+ex™
+;
+
+1568 
+	`ASSERT
+ (
+£rv”
+ =ð
+Œue
+ || s”v” =ð
+çl£
+);
+
+1570 
+	`š™_key_ùx
+ (&
+key
+->
+’üy±
+,
+
+1571 &
+key2
+.
+keys
+[()
+£rv”
+],
+
+1572 
+key_ty³
+,
+
+1573 
+OPENVPN_OP_ENCRYPT
+,
+
+1576 
+	`š™_key_ùx
+ (&
+key
+->
+deüy±
+,
+
+1577 &
+key2
+.
+keys
+[1-()
+£rv”
+],
+
+1578 
+key_ty³
+,
+
+1579 
+OPENVPN_OP_DECRYPT
+,
+
+1582 
+»t
+ = 
+Œue
+;
+
+1584 
+ex™
+:
+
+1585 
+	`CLEAR
+ (
+ma¡”
+);
+
+1586 
+	`CLEAR
+ (
+key2
+);
+
+1588  
+»t
+;
+
+1589 
+	}
+}
+
+1591 
+boÞ
+
+
+1592 
+	$¿ndom_by‹s_to_buf
+ (
+bufãr
+ *
+buf
+,
+
+1593 
+ušt8_t
+ *
+out
+,
+
+1594 
+ouŽ’
+)
+
+1596 ià(!
+	`¿nd_by‹s
+ (
+out
+, 
+ouŽ’
+))
+
+1597 
+	`msg
+ (
+M_FATAL
+, "ERROR: Random‚umber generator cannot obtainƒntropy for key generation [SSL]");
+
+1598 ià(!
+	`buf_wr™e
+ (
+buf
+, 
+out
+, 
+ouŽ’
+))
+
+1599  
+çl£
+;
+
+1600  
+Œue
+;
+
+1601 
+	}
+}
+
+1603 
+boÞ
+
+
+1604 
+	$key_sourû2_¿ndomize_wr™e
+ (
+key_sourû2
+ *
+k2
+,
+
+1605 
+bufãr
+ *
+buf
+,
+
+1606 
+boÞ
+ 
+£rv”
+)
+
+1608 
+key_sourû
+ *
+k
+ = &
+k2
+->
+þ›Á
+;
+
+1609 ià(
+£rv”
+)
+
+1610 
+k
+ = &
+k2
+->
+£rv”
+;
+
+1612 
+	`CLEAR
+ (*
+k
+);
+
+1614 ià(!
+£rv”
+)
+
+1616 ià(!
+	`¿ndom_by‹s_to_buf
+ (
+buf
+, 
+k
+->
+´e_ma¡”
+,  (k->pre_master)))
+
+1617  
+çl£
+;
+
+1620 ià(!
+	`¿ndom_by‹s_to_buf
+ (
+buf
+, 
+k
+->
+¿ndom1
+,  (k->random1)))
+
+1621  
+çl£
+;
+
+1622 ià(!
+	`¿ndom_by‹s_to_buf
+ (
+buf
+, 
+k
+->
+¿ndom2
+,  (k->random2)))
+
+1623  
+çl£
+;
+
+1625  
+Œue
+;
+
+1626 
+	}
+}
+
+1629 
+	$key_sourû2_»ad
+ (
+key_sourû2
+ *
+k2
+,
+
+1630 
+bufãr
+ *
+buf
+,
+
+1631 
+boÞ
+ 
+£rv”
+)
+
+1633 
+key_sourû
+ *
+k
+ = &
+k2
+->
+þ›Á
+;
+
+1635 ià(!
+£rv”
+)
+
+1636 
+k
+ = &
+k2
+->
+£rv”
+;
+
+1638 
+	`CLEAR
+ (*
+k
+);
+
+1640 ià(
+£rv”
+)
+
+1642 ià(!
+	`buf_»ad
+ (
+buf
+, 
+k
+->
+´e_ma¡”
+,  (k->pre_master)))
+
+1646 ià(!
+	`buf_»ad
+ (
+buf
+, 
+k
+->
+¿ndom1
+,  (k->random1)))
+
+1648 ià(!
+	`buf_»ad
+ (
+buf
+, 
+k
+->
+¿ndom2
+,  (k->random2)))
+
+1652 
+	}
+}
+
+1655 
+	$æush_·ylßd_bufãr
+ (
+key_¡©e
+ *
+ks
+)
+
+1657 
+bufãr
+ *
+b
+;
+
+1659 (
+b
+ = 
+	`bufãr_li¡_³ek
+ (
+ks
+->
+·ybuf
+)))
+
+1661 
+	`key_¡©e_wr™e_¶aš‹xt_cÚ¡
+ (&
+ks
+->
+ks_s¦
+, 
+b
+->
+d©a
+, b->
+Ën
+);
+
+1662 
+	`bufãr_li¡_pÝ
+ (
+ks
+->
+·ybuf
+);
+
+1664 
+	}
+}
+
+1667 
+	#FULL_SYNC
+ \
+
+1668 (
+	`»lŸbË_em±y
+(
+ks
+->
+£nd_»lŸbË
+è&& 
+	`»lŸbË_ack_em±y
+ (ks->
+»c_ack
+))
+
+	)
+
+1675 
+	$key_¡©e_soá_»£t
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1677 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1678 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+1680 
+ks
+->
+mu¡_d›
+ = 
+now
+ + 
+£ssiÚ
+->
+Ýt
+->
+Œªs™iÚ_wšdow
+;
+
+1681 
+	`key_¡©e_ä“
+ (
+ks_Ïme
+, 
+çl£
+);
+
+1682 *
+ks_Ïme
+ = *
+ks
+;
+
+1684 
+	`key_¡©e_š™
+ (
+£ssiÚ
+, 
+ks
+);
+
+1685 
+ks
+->
+£ssiÚ_id_»mÙe
+ = 
+ks_Ïme
+->session_id_remote;
+
+1686 
+ks
+->
+»mÙe_addr
+ = 
+ks_Ïme
+->remote_addr;
+
+1687 
+	}
+}
+
+1693 
+boÞ
+
+
+1694 
+	$wr™e_em±y_¡ršg
+ (
+bufãr
+ *
+buf
+)
+
+1696 ià(!
+	`buf_wr™e_u16
+ (
+buf
+, 0))
+
+1697  
+çl£
+;
+
+1698  
+Œue
+;
+
+1699 
+	}
+}
+
+1701 
+boÞ
+
+
+1702 
+	$wr™e_¡ršg
+ (
+bufãr
+ *
+buf
+, cÚ¡ *
+¡r
+, cÚ¡ 
+maxËn
+)
+
+1704 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+¡r
+) + 1;
+
+1705 ià(
+Ën
+ < 1 || (
+maxËn
+ >= 0 &&†en > maxlen))
+
+1706  
+çl£
+;
+
+1707 ià(!
+	`buf_wr™e_u16
+ (
+buf
+, 
+Ën
+))
+
+1708  
+çl£
+;
+
+1709 ià(!
+	`buf_wr™e
+ (
+buf
+, 
+¡r
+, 
+Ën
+))
+
+1710  
+çl£
+;
+
+1711  
+Œue
+;
+
+1712 
+	}
+}
+
+1714 
+boÞ
+
+
+1715 
+	$»ad_¡ršg
+ (
+bufãr
+ *
+buf
+, *
+¡r
+, cÚ¡ 
+ÿ·c™y
+)
+
+1717 cÚ¡ 
+Ën
+ = 
+	`buf_»ad_u16
+ (
+buf
+);
+
+1718 ià(
+Ën
+ < 1 ||†’ > ()
+ÿ·c™y
+)
+
+1719  
+çl£
+;
+
+1720 ià(!
+	`buf_»ad
+ (
+buf
+, 
+¡r
+, 
+Ën
+))
+
+1721  
+çl£
+;
+
+1722 
+¡r
+[
+Ën
+-1] = '\0';
+
+1723  
+Œue
+;
+
+1724 
+	}
+}
+
+1727 
+	$»ad_¡ršg_®loc
+ (
+bufãr
+ *
+buf
+)
+
+1729 cÚ¡ 
+Ën
+ = 
+	`buf_»ad_u16
+ (
+buf
+);
+
+1730 *
+¡r
+;
+
+1732 ià(
+Ën
+ < 1)
+
+1733  
+NULL
+;
+
+1734 
+¡r
+ = (*è
+	`m®loc
+(
+Ën
+);
+
+1735 
+	`check_m®loc_»tuº
+(
+¡r
+);
+
+1736 ià(!
+	`buf_»ad
+ (
+buf
+, 
+¡r
+, 
+Ën
+))
+
+1738 
+	`ä“
+ (
+¡r
+);
+
+1739  
+NULL
+;
+
+1741 
+¡r
+[
+Ën
+-1] = '\0';
+
+1742  
+¡r
+;
+
+1743 
+	}
+}
+
+1746 
+	$»ad_¡ršg_disÿrd
+ (
+bufãr
+ *
+buf
+)
+
+1748 *
+d©a
+ = 
+	`»ad_¡ršg_®loc
+(
+buf
+);
+
+1749 ià(
+d©a
+)
+
+1750 
+	`ä“
+ (
+d©a
+);
+
+1751 
+	}
+}
+
+1758 
+boÞ
+
+
+1759 
+	$key_m‘hod_1_wr™e
+ (
+bufãr
+ *
+buf
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1761 
+key
+ key;
+
+1762 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1763 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+1765 
+	`ASSERT
+ (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 1);
+
+1766 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 0));
+
+1768 
+	`g’”©e_key_¿ndom
+ (&
+key
+, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+);
+
+1769 ià(!
+	`check_key
+ (&
+key
+, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+))
+
+1771 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Badƒncrypting key generated");
+
+1772  
+çl£
+;
+
+1775 ià(!
+	`wr™e_key
+ (&
+key
+, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+, 
+buf
+))
+
+1777 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: write_key failed");
+
+1778  
+çl£
+;
+
+1781 
+	`š™_key_ùx
+ (&
+ks
+->
+key
+.
+’üy±
+, &key, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+,
+
+1782 
+OPENVPN_OP_ENCRYPT
+, "Data Channel Encrypt");
+
+1783 
+	`CLEAR
+ (
+key
+);
+
+1787 cÚ¡ *
+loÿl_ÝtiÚs
+ = 
+	`loÿl_ÝtiÚs_¡ršg
+ (
+£ssiÚ
+);
+
+1788 cÚ¡ 
+ÝŽ’
+ = 
+	`¡¾’
+ (
+loÿl_ÝtiÚs
+) + 1;
+
+1789 ià(!
+	`buf_wr™e
+ (
+buf
+, 
+loÿl_ÝtiÚs
+, 
+ÝŽ’
+))
+
+1791 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: KM1 write options failed");
+
+1792  
+çl£
+;
+
+1796  
+Œue
+;
+
+1797 
+	}
+}
+
+1799 
+boÞ
+
+
+1800 
+	$push_³”_šfo
+(
+bufãr
+ *
+buf
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1802 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1803 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+1805 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+1806 ià(
+£ssiÚ
+->
+Ýt
+->
+push_³”_šfo_d‘až
+ > 0)
+
+1808 
+’v_£t
+ *
+es
+ = 
+£ssiÚ
+->
+Ýt
+->es;
+
+1809 
+’v_™em
+ *
+e
+;
+
+1810 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (512*3, &
+gc
+);
+
+1813 
+	`buf_´štf
+ (&
+out
+, "IV_VER=%s\n", 
+PACKAGE_VERSION
+);
+
+1816 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+1817 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=linux\n");
+
+1818 #–ià
+	`defšed
+(
+TARGET_SOLARIS
+)
+
+1819 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=solaris\n");
+
+1820 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+1821 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=openbsd\n");
+
+1822 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+1823 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=mac\n");
+
+1824 #–ià
+	`defšed
+(
+TARGET_NETBSD
+)
+
+1825 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=netbsd\n");
+
+1826 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+)
+
+1827 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=freebsd\n");
+
+1828 #–ià
+	`defšed
+(
+WIN32
+)
+
+1829 
+	`buf_´štf
+ (&
+out
+, "IV_PLAT=win\n");
+
+1833 #ifdeà
+ENABLE_LZO_STUB
+
+
+1834 
+	`buf_´štf
+ (&
+out
+, "IV_LZO_STUB=1\n");
+
+1837 
+	`buf_´štf
+(&
+out
+, "IV_PROTO=2\n");
+
+1839 ià(
+£ssiÚ
+->
+Ýt
+->
+push_³”_šfo_d‘až
+ >= 2)
+
+1842 
+rou‹_g©eway_šfo
+ 
+rgi
+;
+
+1843 
+	`g‘_deçuÉ_g©eway
+ (&
+rgi
+);
+
+1844 ià(
+rgi
+.
+æags
+ & 
+RGI_HWADDR_DEFINED
+)
+
+1845 
+	`buf_´štf
+ (&
+out
+, "IV_HWADDR=%s\n", 
+	`fÜm©_hex_ex
+ (
+rgi
+.
+hwaddr
+, 6, 0, 1, ":", &
+gc
+));
+
+1846 
+	`buf_´štf
+ (&
+out
+, "IV_SSL=%s\n", 
+	`g‘_s¦_lib¿ry_v”siÚ
+() );
+
+1850 
+e
+=
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒó->
+Ãxt
+)
+
+1852 ià(
+e
+->
+¡ršg
+)
+
+1854 ià(((
+	`¡ºcmp
+(
+e
+->
+¡ršg
+, "UV_", 3)==0 && 
+£ssiÚ
+->
+Ýt
+->
+push_³”_šfo_d‘až
+ >= 2)
+
+1855 || (
+	`¡ºcmp
+(
+e
+->
+¡ršg
+,"IV_GUI_VER=",("IV_GUI_VER=")-1)==0))
+
+1856 && 
+	`buf_§ã
+(&
+out
+, 
+	`¡¾’
+(
+e
+->
+¡ršg
+)+1))
+
+1857 
+	`buf_´štf
+ (&
+out
+, "%s\n", 
+e
+->
+¡ršg
+);
+
+1861 ià(!
+	`wr™e_¡ršg
+(
+buf
+, 
+	`BSTR
+(&
+out
+), -1))
+
+1862 
+”rÜ
+;
+
+1867 ià(!
+	`wr™e_em±y_¡ršg
+ (
+buf
+))
+
+1868 
+”rÜ
+;
+
+1870 
+»t
+ = 
+Œue
+;
+
+1872 
+”rÜ
+:
+
+1873 
+	`gc_ä“
+ (&
+gc
+);
+
+1874  
+»t
+;
+
+1875 
+	}
+}
+
+1877 
+boÞ
+
+
+1878 
+	$key_m‘hod_2_wr™e
+ (
+bufãr
+ *
+buf
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1880 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1881 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+1883 
+	`ASSERT
+ (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 2);
+
+1884 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 0));
+
+1887 ià(!
+	`buf_wr™e_u32
+ (
+buf
+, 0))
+
+1888 
+”rÜ
+;
+
+1891 ià(!
+	`buf_wr™e_u8
+ (
+buf
+, (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ & 
+KEY_METHOD_MASK
+)))
+
+1892 
+”rÜ
+;
+
+1895 ià(!
+	`key_sourû2_¿ndomize_wr™e
+ (
+ks
+->
+key_¤c
+, 
+buf
+, 
+£ssiÚ
+->
+Ýt
+->
+£rv”
+))
+
+1896 
+”rÜ
+;
+
+1900 ià(!
+	`wr™e_¡ršg
+ (
+buf
+, 
+	`loÿl_ÝtiÚs_¡ršg
+ (
+£ssiÚ
+), 
+TLS_OPTIONS_LEN
+))
+
+1901 
+”rÜ
+;
+
+1905 ià(
+auth_u£r_·ss_’abËd
+)
+
+1907 #ifdeà
+ENABLE_CLIENT_CR
+
+
+1908 
+	`auth_u£r_·ss_£tup
+ (
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_fže
+, sessiÚ->Ýt->
+sci
+);
+
+1910 
+	`auth_u£r_·ss_£tup
+ (
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_fže
+, 
+NULL
+);
+
+1912 ià(!
+	`wr™e_¡ršg
+ (
+buf
+, 
+auth_u£r_·ss
+.
+u£ºame
+, -1))
+
+1913 
+”rÜ
+;
+
+1914 ià(!
+	`wr™e_¡ršg
+ (
+buf
+, 
+auth_u£r_·ss
+.
+·sswÜd
+, -1))
+
+1915 
+”rÜ
+;
+
+1916 
+	`purge_u£r_·ss
+ (&
+auth_u£r_·ss
+, 
+çl£
+);
+
+1920 ià(!
+	`wr™e_em±y_¡ršg
+ (
+buf
+))
+
+1921 
+”rÜ
+;
+
+1922 ià(!
+	`wr™e_em±y_¡ršg
+ (
+buf
+))
+
+1923 
+”rÜ
+;
+
+1926 ià(!
+	`push_³”_šfo
+ (
+buf
+, 
+£ssiÚ
+))
+
+1927 
+”rÜ
+;
+
+1932 ià(
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)
+
+1934 ià(
+ks
+->
+auth’tiÿ‹d
+)
+
+1936 ià(!
+	`g’”©e_key_ex·nsiÚ
+ (&
+ks
+->
+key
+,
+
+1937 &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+,
+
+1938 
+ks
+->
+key_¤c
+,
+
+1939 &
+ks
+->
+£ssiÚ_id_»mÙe
+,
+
+1940 &
+£ssiÚ
+->
+£ssiÚ_id
+,
+
+1941 
+Œue
+))
+
+1943 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: server generate_key_expansion failed");
+
+1944 
+”rÜ
+;
+
+1948 
+	`CLEAR
+ (*
+ks
+->
+key_¤c
+);
+
+1951  
+Œue
+;
+
+1953 
+”rÜ
+:
+
+1954 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Key Method #2 write failed");
+
+1955 
+	`CLEAR
+ (*
+ks
+->
+key_¤c
+);
+
+1956  
+çl£
+;
+
+1957 
+	}
+}
+
+1959 
+boÞ
+
+
+1960 
+	$key_m‘hod_1_»ad
+ (
+bufãr
+ *
+buf
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1962 
+¡©us
+;
+
+1963 
+key
+ key;
+
+1964 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1965 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+1967 
+	`ASSERT
+ (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 1);
+
+1969 ià(!
+£ssiÚ
+->
+v”if›d
+)
+
+1971 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+1973 
+”rÜ
+;
+
+1976 
+¡©us
+ = 
+	`»ad_key
+ (&
+key
+, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+, 
+buf
+);
+
+1977 ià(
+¡©us
+ != 1)
+
+1979 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+1981 
+”rÜ
+;
+
+1984 ià(!
+	`check_key
+ (&
+key
+, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+))
+
+1986 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Bad decrypting key„eceived from…eer");
+
+1987 
+”rÜ
+;
+
+1990 ià(
+buf
+->
+Ën
+ < 1)
+
+1992 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Missing options string");
+
+1993 
+”rÜ
+;
+
+1996 #ifdeà
+ENABLE_OCC
+
+
+1999 ià(!
+£ssiÚ
+->
+Ýt
+->
+di§bË_occ
+ &&
+
+2000 !
+	`ÝtiÚs_cmp_equ®_§ã
+ ((*è
+	`BPTR
+ (
+buf
+), 
+£ssiÚ
+->
+Ýt
+->
+»mÙe_ÝtiÚs
+, buf->
+Ën
+))
+
+2002 
+	`ÝtiÚs_w¬nšg_§ã
+ ((*è
+	`BPTR
+ (
+buf
+), 
+£ssiÚ
+->
+Ýt
+->
+»mÙe_ÝtiÚs
+, buf->
+Ën
+);
+
+2006 
+	`buf_þ—r
+ (
+buf
+);
+
+2008 
+	`š™_key_ùx
+ (&
+ks
+->
+key
+.
+deüy±
+, &key, &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+,
+
+2009 
+OPENVPN_OP_DECRYPT
+, "Data Channel Decrypt");
+
+2010 
+	`CLEAR
+ (
+key
+);
+
+2011 
+ks
+->
+auth’tiÿ‹d
+ = 
+Œue
+;
+
+2012  
+Œue
+;
+
+2014 
+”rÜ
+:
+
+2015 
+	`buf_þ—r
+ (
+buf
+);
+
+2016 
+	`CLEAR
+ (
+key
+);
+
+2017  
+çl£
+;
+
+2018 
+	}
+}
+
+2020 
+boÞ
+
+
+2021 
+	$key_m‘hod_2_»ad
+ (
+bufãr
+ *
+buf
+, 
+Žs_muÉi
+ *
+muÉi
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+2023 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+2024 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+2026 
+key_m‘hod_æags
+;
+
+2027 
+boÞ
+ 
+u£ºame_¡©us
+, 
+·sswÜd_¡©us
+;
+
+2029 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2030 *
+ÝtiÚs
+;
+
+2033 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+ÝtiÚs
+, , 
+TLS_OPTIONS_LEN
+, &
+gc
+);
+
+2035 
+	`ASSERT
+ (
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 2);
+
+2038 ià(!
+	`buf_advªû
+ (
+buf
+, 4)) {
+
+2039 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR: Plaintext buffer�oo short (%d bytes).",
+
+2040 
+buf
+->
+Ën
+);
+
+2041 
+”rÜ
+;
+
+2045 
+key_m‘hod_æags
+ = 
+	`buf_»ad_u8
+ (
+buf
+);
+
+2046 ià((
+key_m‘hod_æags
+ & 
+KEY_METHOD_MASK
+) != 2)
+
+2048 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2050 
+key_m‘hod_æags
+);
+
+2051 
+”rÜ
+;
+
+2055 ià(!
+	`key_sourû2_»ad
+ (
+ks
+->
+key_¤c
+, 
+buf
+, 
+£ssiÚ
+->
+Ýt
+->
+£rv”
+))
+
+2057 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Error„eading„emote data channel key sourceƒntropy from…laintext buffer");
+
+2058 
+”rÜ
+;
+
+2062 ià(!
+	`»ad_¡ršg
+ (
+buf
+, 
+ÝtiÚs
+, 
+TLS_OPTIONS_LEN
+))
+
+2064 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Failed�o„ead„equired OCC options string");
+
+2065 
+”rÜ
+;
+
+2068 
+ks
+->
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+2070 ià(
+	`v”ify_u£r_·ss_’abËd
+(
+£ssiÚ
+))
+
+2073 
+u£r_·ss
+ *
+up
+;
+
+2075 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+up
+, 
+u£r_·ss
+, &
+gc
+);
+
+2076 
+u£ºame_¡©us
+ = 
+	`»ad_¡ršg
+ (
+buf
+, 
+up
+->
+u£ºame
+, 
+USER_PASS_LEN
+);
+
+2077 
+·sswÜd_¡©us
+ = 
+	`»ad_¡ršg
+ (
+buf
+, 
+up
+->
+·sswÜd
+, 
+USER_PASS_LEN
+);
+
+2079 ià(!
+u£ºame_¡©us
+ || !
+·sswÜd_¡©us
+)
+
+2081 
+	`CLEAR
+ (*
+up
+);
+
+2082 ià(!(
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+))
+
+2084 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Auth Username/Password was‚ot…rovided by…eer");
+
+2085 
+”rÜ
+;
+
+2089 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+2091 
+	`ä“
+ (
+muÉi
+->
+³”_šfo
+);
+
+2092 
+muÉi
+->
+³”_šfo
+ = 
+	`»ad_¡ršg_®loc
+ (
+buf
+);
+
+2095 
+	`v”ify_u£r_·ss
+(
+up
+, 
+muÉi
+, 
+£ssiÚ
+);
+
+2096 
+	`CLEAR
+ (*
+up
+);
+
+2101 ià(!
+£ssiÚ
+->
+v”if›d
+)
+
+2103 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2105 
+”rÜ
+;
+
+2107 
+ks
+->
+auth’tiÿ‹d
+ = 
+Œue
+;
+
+2111 ià(
+ks
+->
+auth’tiÿ‹d
+)
+
+2113 
+	`v”ify_fš®_auth_checks
+(
+muÉi
+, 
+£ssiÚ
+);
+
+2116 #ifdeà
+ENABLE_OCC
+
+
+2118 ià(!
+£ssiÚ
+->
+Ýt
+->
+di§bË_occ
+ &&
+
+2119 !
+	`ÝtiÚs_cmp_equ®
+ (
+ÝtiÚs
+, 
+£ssiÚ
+->
+Ýt
+->
+»mÙe_ÝtiÚs
+))
+
+2121 
+	`ÝtiÚs_w¬nšg
+ (
+ÝtiÚs
+, 
+£ssiÚ
+->
+Ýt
+->
+»mÙe_ÝtiÚs
+);
+
+2122 ià(
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_OPT_VERIFY
+)
+
+2124 
+	`msg
+ (
+D_TLS_ERRORS
+, "Option inconsistency warnings�riggering disconnect due�o --opt-verify");
+
+2125 
+ks
+->
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+2130 
+	`buf_þ—r
+ (
+buf
+);
+
+2136 ià(
+ks
+->
+auth’tiÿ‹d
+ && 
+	`¶ugš_defšed
+ (
+£ssiÚ
+->
+Ýt
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_TLS_FINAL
+))
+
+2138 ià(
+	`¶ugš_ÿÎ
+ (
+£ssiÚ
+->
+Ýt
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_TLS_FINAL
+, 
+NULL
+, NULL, sessiÚ->Ýt->
+es
+è!ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+2139 
+ks
+->
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+2145 ià(!
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)
+
+2147 ià(!
+	`g’”©e_key_ex·nsiÚ
+ (&
+ks
+->
+key
+,
+
+2148 &
+£ssiÚ
+->
+Ýt
+->
+key_ty³
+,
+
+2149 
+ks
+->
+key_¤c
+,
+
+2150 &
+£ssiÚ
+->
+£ssiÚ_id
+,
+
+2151 &
+ks
+->
+£ssiÚ_id_»mÙe
+,
+
+2152 
+çl£
+))
+
+2154 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: client generate_key_expansion failed");
+
+2155 
+”rÜ
+;
+
+2158 
+	`CLEAR
+ (*
+ks
+->
+key_¤c
+);
+
+2161 
+	`gc_ä“
+ (&
+gc
+);
+
+2162  
+Œue
+;
+
+2164 
+”rÜ
+:
+
+2165 
+	`CLEAR
+ (*
+ks
+->
+key_¤c
+);
+
+2166 
+	`buf_þ—r
+ (
+buf
+);
+
+2167 
+	`gc_ä“
+ (&
+gc
+);
+
+2168  
+çl£
+;
+
+2169 
+	}
+}
+
+2172 
+	$auth_deã¼ed_expœe_wšdow
+ (cÚ¡ 
+Žs_ÝtiÚs
+ *
+o
+)
+
+2174 
+»t
+ = 
+o
+->
+hªdshake_wšdow
+;
+
+2175 cÚ¡ 
+r2
+ = 
+o
+->
+»ÃgÙŸ‹_£cÚds
+ / 2;
+
+2177 ià(
+o
+->
+»ÃgÙŸ‹_£cÚds
+ && 
+r2
+ < 
+»t
+)
+
+2178 
+»t
+ = 
+r2
+;
+
+2179  
+»t
+;
+
+2180 
+	}
+}
+
+2191 
+boÞ
+
+
+2192 
+	$Žs_´oûss
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+2193 
+Žs_£ssiÚ
+ *
+£ssiÚ
+,
+
+2194 
+bufãr
+ *
+to_lšk
+,
+
+2195 
+lšk_sock‘_aùu®
+ **
+to_lšk_addr
+,
+
+2196 
+lšk_sock‘_šfo
+ *
+to_lšk_sock‘_šfo
+,
+
+2197 
+š‹rv®_t
+ *
+wakeup
+)
+
+2199 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2200 
+bufãr
+ *
+buf
+;
+
+2201 
+boÞ
+ 
+¡©e_chªge
+ = 
+çl£
+;
+
+2202 
+boÞ
+ 
+aùive
+ = 
+çl£
+;
+
+2203 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+2204 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+2207 
+	`ASSERT
+ (
+ks
+->
+¡©e
+ !ð
+S_UNDEF
+);
+
+2208 
+	`ASSERT
+ (
+ks
+->
+¡©e
+ !ð
+S_ERROR
+);
+
+2209 
+	`ASSERT
+ (
+	`£ssiÚ_id_defšed
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+));
+
+2212 ià(
+ks
+->
+¡©e
+ >ð
+S_ACTIVE
+ &&
+
+2213 ((
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_£cÚds
+
+
+2214 && 
+now
+ >ð
+ks
+->
+e¡ablished
+ + 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_£cÚds
+)
+
+2215 || (
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_by‹s
+
+
+2216 && 
+ks
+->
+n_by‹s
+ >ð
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_by‹s
+)
+
+2217 || (
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_·ck‘s
+
+
+2218 && 
+ks
+->
+n_·ck‘s
+ >ð
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_·ck‘s
+)
+
+2219 || (
+	`·ck‘_id_þo£_to_w¿µšg
+ (&
+ks
+->
+·ck‘_id
+.
+£nd
+))))
+
+2221 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+,
+
+2222 "TLS: soá„e£ˆ£c=%d by‹s=" 
+couÁ”_fÜm©
+ "/%d…kts=" counter_format "/%d",
+
+2223 ()(
+ks
+->
+e¡ablished
+ + 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_£cÚds
+ - 
+now
+),
+
+2224 
+ks
+->
+n_by‹s
+, 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_by‹s
+,
+
+2225 
+ks
+->
+n_·ck‘s
+, 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_·ck‘s
+);
+
+2226 
+	`key_¡©e_soá_»£t
+ (
+£ssiÚ
+);
+
+2230 ià(
+	`Ïme_duck_mu¡_d›
+ (
+£ssiÚ
+, 
+wakeup
+)) {
+
+2231 
+	`key_¡©e_ä“
+ (
+ks_Ïme
+, 
+Œue
+);
+
+2232 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS:�ls_process: killedƒxpiring key");
+
+2237 
+	`upd©e_time
+ ();
+
+2239 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS:�ls_process: chg=%d ks=%s†ame=%s�o_link->len=%d wakeup=%d",
+
+2240 
+¡©e_chªge
+,
+
+2241 
+	`¡©e_Çme
+ (
+ks
+->
+¡©e
+),
+
+2242 
+	`¡©e_Çme
+ (
+ks_Ïme
+->
+¡©e
+),
+
+2243 
+to_lšk
+->
+Ën
+,
+
+2244 *
+wakeup
+);
+
+2246 
+¡©e_chªge
+ = 
+çl£
+;
+
+2255 ià(
+Œue
+)
+
+2258 ià(
+ks
+->
+¡©e
+ =ð
+S_INITIAL
+)
+
+2260 
+buf
+ = 
+	`»lŸbË_g‘_buf_ou�ut_£qu’ûd
+ (
+ks
+->
+£nd_»lŸbË
+);
+
+2261 ià(
+buf
+)
+
+2263 
+ks
+->
+mu¡_ÃgÙŸ‹
+ = 
+now
+ + 
+£ssiÚ
+->
+Ýt
+->
+hªdshake_wšdow
+;
+
+2264 
+ks
+->
+auth_deã¼ed_expœe
+ = 
+now
+ + 
+	`auth_deã¼ed_expœe_wšdow
+ (
+£ssiÚ
+->
+Ýt
+);
+
+2267 
+	`»lŸbË_m¬k_aùive_outgošg
+ (
+ks
+->
+£nd_»lŸbË
+, 
+buf
+, ks->
+š™Ÿl_Ýcode
+);
+
+2268 
+INCR_GENERATED
+;
+
+2270 
+ks
+->
+¡©e
+ = 
+S_PRE_START
+;
+
+2271 
+¡©e_chªge
+ = 
+Œue
+;
+
+2272 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS: Initial Handshake, sid=%s",
+
+2273 
+	`£ssiÚ_id_´št
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+, &
+gc
+));
+
+2275 #ifdeà
+ENABLE_MANAGEMENT
+
+
+2276 ià(
+mªagem’t
+ && 
+ks
+->
+š™Ÿl_Ýcode
+ !ð
+P_CONTROL_SOFT_RESET_V1
+)
+
+2278 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+2279 
+OPENVPN_STATE_WAIT
+,
+
+2280 
+NULL
+,
+
+2289 ià(
+now
+ >ð
+ks
+->
+mu¡_ÃgÙŸ‹
+)
+
+2291 ià(
+ks
+->
+¡©e
+ < 
+S_ACTIVE
+)
+
+2293 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2295 
+£ssiÚ
+->
+Ýt
+->
+hªdshake_wšdow
+);
+
+2296 
+”rÜ
+;
+
+2300 
+	`dmsg
+ (
+D_TLS_DEBUG_MED
+, "STATE S_NORMAL_OP");
+
+2301 
+ks
+->
+¡©e
+ = 
+S_NORMAL_OP
+;
+
+2302 
+ks
+->
+mu¡_ÃgÙŸ‹
+ = 0;
+
+2307 ià(
+ks
+->
+¡©e
+ =ð
+S_PRE_START
+ && 
+FULL_SYNC
+)
+
+2309 
+ks
+->
+¡©e
+ = 
+S_START
+;
+
+2310 
+¡©e_chªge
+ = 
+Œue
+;
+
+2311 
+	`dmsg
+ (
+D_TLS_DEBUG_MED
+, "STATE S_START");
+
+2315 ià(((
+ks
+->
+¡©e
+ =ð
+S_GOT_KEY
+ && !
+£ssiÚ
+->
+Ýt
+->
+£rv”
+) ||
+
+2316 (
+ks
+->
+¡©e
+ =ð
+S_SENT_KEY
+ && 
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)))
+
+2318 ià(
+FULL_SYNC
+)
+
+2320 
+ks
+->
+e¡ablished
+ = 
+now
+;
+
+2321 
+	`dmsg
+ (
+D_TLS_DEBUG_MED
+, "STATE S_ACTIVE");
+
+2322 ià(
+	`check_debug_Ëv–
+ (
+D_HANDSHAKE
+))
+
+2323 
+	`´št_d‘ažs
+ (&
+ks
+->
+ks_s¦
+, "Control Channel:");
+
+2324 
+¡©e_chªge
+ = 
+Œue
+;
+
+2325 
+ks
+->
+¡©e
+ = 
+S_ACTIVE
+;
+
+2326 
+INCR_SUCCESS
+;
+
+2329 
+	`lšk_sock‘_£t_outgošg_addr
+ (
+NULL
+, 
+to_lšk_sock‘_šfo
+, &
+ks
+->
+»mÙe_addr
+, 
+£ssiÚ
+->
+commÚ_Çme
+, sessiÚ->
+Ýt
+->
+es
+);
+
+2332 
+	`æush_·ylßd_bufãr
+ (
+ks
+);
+
+2334 #ifdeà
+MEASURE_TLS_HANDSHAKE_STATS
+
+
+2335 
+	`show_Žs_³rfÜmªû_¡©s
+();
+
+2342 ià(!
+to_lšk
+->
+Ën
+ && 
+	`»lŸbË_ÿn_£nd
+ (
+ks
+->
+£nd_»lŸbË
+))
+
+2344 
+Ýcode
+;
+
+2345 
+bufãr
+ 
+b
+;
+
+2347 
+buf
+ = 
+	`»lŸbË_£nd
+ (
+ks
+->
+£nd_»lŸbË
+, &
+Ýcode
+);
+
+2348 
+	`ASSERT
+ (
+buf
+);
+
+2349 
+b
+ = *
+buf
+;
+
+2350 
+INCR_SENT
+;
+
+2352 
+	`wr™e_cÚŒÞ_auth
+ (
+£ssiÚ
+, 
+ks
+, &
+b
+, 
+to_lšk_addr
+, 
+Ýcode
+,
+
+2353 
+CONTROL_SEND_ACK_MAX
+, 
+Œue
+);
+
+2354 *
+to_lšk
+ = 
+b
+;
+
+2355 
+aùive
+ = 
+Œue
+;
+
+2356 
+¡©e_chªge
+ = 
+Œue
+;
+
+2357 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Reliable -> TCP/UDP");
+
+2361 #iâdeà
+TLS_AGGREGATE_ACK
+
+
+2363 ià(!
+to_lšk
+->
+Ën
+ && !
+	`»lŸbË_ack_em±y
+ (
+ks
+->
+»c_ack
+))
+
+2365 
+buf
+ = &
+ks
+->
+ack_wr™e_buf
+;
+
+2366 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 
+	`FRAME_HEADROOM
+ (&
+muÉi
+->
+Ýt
+.
+äame
+)));
+
+2367 
+	`wr™e_cÚŒÞ_auth
+ (
+£ssiÚ
+, 
+ks
+, 
+buf
+, 
+to_lšk_addr
+, 
+P_ACK_V1
+,
+
+2368 
+RELIABLE_ACK_SIZE
+, 
+çl£
+);
+
+2369 *
+to_lšk
+ = *
+buf
+;
+
+2370 
+aùive
+ = 
+Œue
+;
+
+2371 
+¡©e_chªge
+ = 
+Œue
+;
+
+2372 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Dedicated ACK -> TCP/UDP");
+
+2378 
+buf
+ = 
+	`»lŸbË_g‘_buf_£qu’ûd
+ (
+ks
+->
+»c_»lŸbË
+);
+
+2379 ià(
+buf
+)
+
+2381 
+¡©us
+ = 0;
+
+2382 ià(
+buf
+->
+Ën
+)
+
+2384 
+¡©us
+ = 
+	`key_¡©e_wr™e_c�h”‹xt
+ (&
+ks
+->
+ks_s¦
+, 
+buf
+);
+
+2385 ià(
+¡©us
+ == -1)
+
+2387 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2389 
+”rÜ
+;
+
+2394 
+¡©us
+ = 1;
+
+2396 ià(
+¡©us
+ == 1)
+
+2398 
+	`»lŸbË_m¬k_d–‘ed
+ (
+ks
+->
+»c_»lŸbË
+, 
+buf
+, 
+Œue
+);
+
+2399 
+¡©e_chªge
+ = 
+Œue
+;
+
+2400 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Incoming Ciphertext -> TLS");
+
+2405 
+buf
+ = &
+ks
+->
+¶aš‹xt_»ad_buf
+;
+
+2406 ià(!
+buf
+->
+Ën
+)
+
+2408 
+¡©us
+;
+
+2410 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 0));
+
+2411 
+¡©us
+ = 
+	`key_¡©e_»ad_¶aš‹xt
+ (&
+ks
+->
+ks_s¦
+, 
+buf
+, 
+TLS_CHANNEL_BUF_SIZE
+);
+
+2412 
+	`upd©e_time
+ ();
+
+2413 ià(
+¡©us
+ == -1)
+
+2415 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: TLS object -> incoming…laintext„eadƒrror");
+
+2416 
+”rÜ
+;
+
+2418 ià(
+¡©us
+ == 1)
+
+2420 
+¡©e_chªge
+ = 
+Œue
+;
+
+2421 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS -> Incoming Plaintext");
+
+2424 ià(!
+¡©us
+)
+
+2425 
+	`msg
+ (
+M_INFO
+, "TLS…laintext„ead -> NULL„eturn");
+
+2430 
+buf
+ = &
+ks
+->
+¶aš‹xt_wr™e_buf
+;
+
+2431 ià(!
+buf
+->
+Ën
+ && ((
+ks
+->
+¡©e
+ =ð
+S_START
+ && !
+£ssiÚ
+->
+Ýt
+->
+£rv”
+) ||
+
+2432 (
+ks
+->
+¡©e
+ =ð
+S_GOT_KEY
+ && 
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)))
+
+2434 ià(
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 1)
+
+2436 ià(!
+	`key_m‘hod_1_wr™e
+ (
+buf
+, 
+£ssiÚ
+))
+
+2437 
+”rÜ
+;
+
+2439 ià(
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 2)
+
+2441 ià(!
+	`key_m‘hod_2_wr™e
+ (
+buf
+, 
+£ssiÚ
+))
+
+2442 
+”rÜ
+;
+
+2446 
+	`ASSERT
+ (0);
+
+2449 
+¡©e_chªge
+ = 
+Œue
+;
+
+2450 
+	`dmsg
+ (
+D_TLS_DEBUG_MED
+, "STATE S_SENT_KEY");
+
+2451 
+ks
+->
+¡©e
+ = 
+S_SENT_KEY
+;
+
+2455 
+buf
+ = &
+ks
+->
+¶aš‹xt_»ad_buf
+;
+
+2456 ià(
+buf
+->
+Ën
+
+
+2457 && ((
+ks
+->
+¡©e
+ =ð
+S_SENT_KEY
+ && !
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)
+
+2458 || (
+ks
+->
+¡©e
+ =ð
+S_START
+ && 
+£ssiÚ
+->
+Ýt
+->
+£rv”
+)))
+
+2460 ià(
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 1)
+
+2462 ià(!
+	`key_m‘hod_1_»ad
+ (
+buf
+, 
+£ssiÚ
+))
+
+2463 
+”rÜ
+;
+
+2465 ià(
+£ssiÚ
+->
+Ýt
+->
+key_m‘hod
+ == 2)
+
+2467 ià(!
+	`key_m‘hod_2_»ad
+ (
+buf
+, 
+muÉi
+, 
+£ssiÚ
+))
+
+2468 
+”rÜ
+;
+
+2472 
+	`ASSERT
+ (0);
+
+2475 
+¡©e_chªge
+ = 
+Œue
+;
+
+2476 
+	`dmsg
+ (
+D_TLS_DEBUG_MED
+, "STATE S_GOT_KEY");
+
+2477 
+ks
+->
+¡©e
+ = 
+S_GOT_KEY
+;
+
+2481 
+buf
+ = &
+ks
+->
+¶aš‹xt_wr™e_buf
+;
+
+2482 ià(
+buf
+->
+Ën
+)
+
+2484 
+¡©us
+ = 
+	`key_¡©e_wr™e_¶aš‹xt
+ (&
+ks
+->
+ks_s¦
+, 
+buf
+);
+
+2485 ià(
+¡©us
+ == -1)
+
+2487 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2489 
+”rÜ
+;
+
+2491 ià(
+¡©us
+ == 1)
+
+2493 
+¡©e_chªge
+ = 
+Œue
+;
+
+2494 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Outgoing Plaintext -> TLS");
+
+2499 ià(
+ks
+->
+¡©e
+ >ð
+S_START
+)
+
+2501 
+buf
+ = 
+	`»lŸbË_g‘_buf_ou�ut_£qu’ûd
+ (
+ks
+->
+£nd_»lŸbË
+);
+
+2502 ià(
+buf
+)
+
+2504 
+¡©us
+ = 
+	`key_¡©e_»ad_c�h”‹xt
+ (&
+ks
+->
+ks_s¦
+, 
+buf
+, 
+	`PAYLOAD_SIZE_DYNAMIC
+ (&
+muÉi
+->
+Ýt
+.
+äame
+));
+
+2505 ià(
+¡©us
+ == -1)
+
+2507 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2509 
+”rÜ
+;
+
+2511 ià(
+¡©us
+ == 1)
+
+2513 
+	`»lŸbË_m¬k_aùive_outgošg
+ (
+ks
+->
+£nd_»lŸbË
+, 
+buf
+, 
+P_CONTROL_V1
+);
+
+2514 
+INCR_GENERATED
+;
+
+2515 
+¡©e_chªge
+ = 
+Œue
+;
+
+2516 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Outgoing Ciphertext -> Reliable");
+
+2522 
+¡©e_chªge
+);
+
+2524 
+	`upd©e_time
+ ();
+
+2526 #ifdeà
+TLS_AGGREGATE_ACK
+
+
+2528 ià(!
+to_lšk
+->
+Ën
+ && !
+	`»lŸbË_ack_em±y
+ (
+ks
+->
+»c_ack
+))
+
+2530 
+buf
+ = &
+ks
+->
+ack_wr™e_buf
+;
+
+2531 
+	`ASSERT
+ (
+	`buf_š™
+ (
+buf
+, 
+	`FRAME_HEADROOM
+ (&
+muÉi
+->
+Ýt
+.
+äame
+)));
+
+2532 
+	`wr™e_cÚŒÞ_auth
+ (
+£ssiÚ
+, 
+ks
+, 
+buf
+, 
+to_lšk_addr
+, 
+P_ACK_V1
+,
+
+2533 
+RELIABLE_ACK_SIZE
+, 
+çl£
+);
+
+2534 *
+to_lšk
+ = *
+buf
+;
+
+2535 
+aùive
+ = 
+Œue
+;
+
+2536 
+¡©e_chªge
+ = 
+Œue
+;
+
+2537 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "Dedicated ACK -> TCP/UDP");
+
+2543 ià(
+ks
+->
+¡©e
+ >ð
+S_INITIAL
+)
+
+2545 
+	`compu‹_—¾›¡_wakeup
+ (
+wakeup
+,
+
+2546 
+	`»lŸbË_£nd_timeout
+ (
+ks
+->
+£nd_»lŸbË
+));
+
+2548 ià(
+ks
+->
+mu¡_ÃgÙŸ‹
+)
+
+2549 
+	`compu‹_—¾›¡_wakeup
+ (
+wakeup
+, 
+ks
+->
+mu¡_ÃgÙŸ‹
+ - 
+now
+);
+
+2552 ià(
+ks
+->
+e¡ablished
+ && 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_£cÚds
+)
+
+2553 
+	`compu‹_—¾›¡_wakeup
+ (
+wakeup
+,
+
+2554 
+ks
+->
+e¡ablished
+ + 
+£ssiÚ
+->
+Ýt
+->
+»ÃgÙŸ‹_£cÚds
+ - 
+now
+);
+
+2557 ià(*
+wakeup
+ <= 0)
+
+2559 *
+wakeup
+ = 1;
+
+2563 
+aùive
+ = 
+Œue
+;
+
+2566 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS:�ls_´oûss:�imeouˆ£ˆtØ%d", *
+wakeup
+);
+
+2568 
+	`gc_ä“
+ (&
+gc
+);
+
+2569  
+aùive
+;
+
+2572 
+”rÜ
+:
+
+2573 
+	`Žs_þ—r_”rÜ
+();
+
+2574 
+ks
+->
+¡©e
+ = 
+S_ERROR
+;
+
+2575 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: TLS handshake failed");
+
+2576 
+INCR_ERROR
+;
+
+2577 
+	`gc_ä“
+ (&
+gc
+);
+
+2578  
+çl£
+;
+
+2579 
+	}
+}
+
+2589 
+	$Žs_muÉi_´oûss
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+2590 
+bufãr
+ *
+to_lšk
+,
+
+2591 
+lšk_sock‘_aùu®
+ **
+to_lšk_addr
+,
+
+2592 
+lšk_sock‘_šfo
+ *
+to_lšk_sock‘_šfo
+,
+
+2593 
+š‹rv®_t
+ *
+wakeup
+)
+
+2595 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2596 
+i
+;
+
+2597 
+aùive
+ = 
+TLSMP_INACTIVE
+;
+
+2598 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+2599 
+�s
+;
+
+2601 
+	`³rf_push
+ (
+PERF_TLS_MULTI_PROCESS
+);
+
+2603 
+	`Žs_þ—r_”rÜ
+ ();
+
+2610 
+i
+ = 0; i < 
+TM_SIZE
+; ++i)
+
+2612 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+i
+];
+
+2613 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+2614 
+key_¡©e
+ *
+ks_Ïme
+ = &
+£ssiÚ
+->
+key
+[
+KS_LAME_DUCK
+];
+
+2617 ià(
+i
+ =ð
+TM_ACTIVE
+ && 
+ks
+->
+¡©e
+ =ð
+S_INITIAL
+ &&
+
+2618 
+	`lšk_sock‘_aùu®_defšed
+ (&
+to_lšk_sock‘_šfo
+->
+l§
+->
+aùu®
+))
+
+2619 
+ks
+->
+»mÙe_addr
+ = 
+to_lšk_sock‘_šfo
+->
+l§
+->
+aùu®
+;
+
+2621 
+	`dmsg
+ (
+D_TLS_DEBUG
+,
+
+2623 
+i
+,
+
+2624 
+	`¡©e_Çme
+ (
+ks
+->
+¡©e
+),
+
+2625 
+	`£ssiÚ_id_´št
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+, &
+gc
+),
+
+2626 
+	`£ssiÚ_id_´št
+ (&
+ks
+->
+£ssiÚ_id_»mÙe
+, &
+gc
+),
+
+2627 
+	`´št_lšk_sock‘_aùu®
+ (&
+ks
+->
+»mÙe_addr
+, &
+gc
+));
+
+2629 ià(
+ks
+->
+¡©e
+ >ð
+S_INITIAL
+ && 
+	`lšk_sock‘_aùu®_defšed
+ (&ks->
+»mÙe_addr
+))
+
+2631 
+lšk_sock‘_aùu®
+ *
+Ža
+ = 
+NULL
+;
+
+2633 
+	`upd©e_time
+ ();
+
+2635 ià(
+	`Žs_´oûss
+ (
+muÉi
+, 
+£ssiÚ
+, 
+to_lšk
+, &
+Ža
+,
+
+2636 
+to_lšk_sock‘_šfo
+, 
+wakeup
+))
+
+2637 
+aùive
+ = 
+TLSMP_ACTIVE
+;
+
+2644 ià(
+Ža
+)
+
+2646 
+muÉi
+->
+to_lšk_addr
+ = *
+Ža
+;
+
+2647 *
+to_lšk_addr
+ = &
+muÉi
+->to_link_addr;
+
+2656 ià(
+ks
+->
+¡©e
+ =ð
+S_ERROR
+)
+
+2658 ++
+muÉi
+->
+n_soá_”rÜs
+;
+
+2660 ià(
+i
+ =ð
+TM_ACTIVE
+)
+
+2661 
+”rÜ
+ = 
+Œue
+;
+
+2663 ià(
+i
+ =ð
+TM_ACTIVE
+
+
+2664 && 
+ks_Ïme
+->
+¡©e
+ >ð
+S_ACTIVE
+
+
+2665 && !
+muÉi
+->
+Ýt
+.
+sšgË_£ssiÚ
+)
+
+2666 
+	`move_£ssiÚ
+ (
+muÉi
+, 
+TM_LAME_DUCK
+, 
+TM_ACTIVE
+, 
+Œue
+);
+
+2668 
+	`»£t_£ssiÚ
+ (
+muÉi
+, 
+£ssiÚ
+);
+
+2673 
+	`upd©e_time
+ ();
+
+2675 
+�s
+ = 
+	`Žs_auth’tiÿtiÚ_¡©us
+ (
+muÉi
+, 
+TLS_MULTI_AUTH_STATUS_INTERVAL
+);
+
+2680 ià(
+	`Ïme_duck_mu¡_d›
+ (&
+muÉi
+->
+£ssiÚ
+[
+TM_LAME_DUCK
+], 
+wakeup
+)) {
+
+2681 
+	`Žs_£ssiÚ_ä“
+ (&
+muÉi
+->
+£ssiÚ
+[
+TM_LAME_DUCK
+], 
+Œue
+);
+
+2682 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS:�ls_multi_process: killedƒxpiring key");
+
+2694 ià(
+	`DECRYPT_KEY_ENABLED
+ (
+muÉi
+, &muÉi->
+£ssiÚ
+[
+TM_UNTRUSTED
+].
+key
+[
+KS_PRIMARY
+])) {
+
+2695 
+	`move_£ssiÚ
+ (
+muÉi
+, 
+TM_ACTIVE
+, 
+TM_UNTRUSTED
+, 
+Œue
+);
+
+2696 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "TLS:�ls_multi_process: untrusted session…romoted�o %strusted",
+
+2697 
+�s
+ =ð
+TLS_AUTHENTICATION_SUCCEEDED
+ ? "" : "semi-");
+
+2704 ià(
+”rÜ
+)
+
+2706 
+i
+ = 0; i < (è
+	`SIZE
+ (
+muÉi
+->
+key_sÿn
+); ++i)
+
+2708 ià(
+muÉi
+->
+key_sÿn
+[
+i
+]->
+¡©e
+ >ð
+S_ACTIVE
+)
+
+2709 
+noh¬d
+;
+
+2711 ++
+muÉi
+->
+n_h¬d_”rÜs
+;
+
+2713 
+noh¬d
+:
+
+2715 #ifdeà
+ENABLE_DEBUG
+
+
+2718 cÚ¡ 
+throw_Ëv–
+ = 
+	`GREMLIN_CONNECTION_FLOOD_LEVEL
+ (
+muÉi
+->
+Ýt
+.
+g»mlš
+);
+
+2719 ià(
+throw_Ëv–
+)
+
+2721 
+i
+ = 0; i < (è
+	`SIZE
+ (
+muÉi
+->
+key_sÿn
+); ++i)
+
+2723 ià(
+muÉi
+->
+key_sÿn
+[
+i
+]->
+¡©e
+ >ð
+throw_Ëv–
+)
+
+2725 ++
+muÉi
+->
+n_h¬d_”rÜs
+;
+
+2726 ++
+muÉi
+->
+n_soá_”rÜs
+;
+
+2733 
+	`³rf_pÝ
+ ();
+
+2734 
+	`gc_ä“
+ (&
+gc
+);
+
+2736  (
+�s
+ =ð
+TLS_AUTHENTICATION_FAILED
+è? 
+TLSMP_KILL
+ : 
+aùive
+;
+
+2737 
+	}
+}
+
+2769 
+boÞ
+
+
+2770 
+	$Žs_´e_deüy±
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+2771 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom
+,
+
+2772 
+bufãr
+ *
+buf
+,
+
+2773 
+üy±o_ÝtiÚs
+ *
+Ýt
+)
+
+2775 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2776 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+2778 ià(
+buf
+->
+Ën
+ > 0)
+
+2780 
+i
+;
+
+2781 
+Ý
+;
+
+2782 
+key_id
+;
+
+2786 
+ušt8_t
+ 
+c
+ = *
+	`BPTR
+ (
+buf
+);
+
+2787 
+Ý
+ = 
+c
+ >> 
+P_OPCODE_SHIFT
+;
+
+2788 
+key_id
+ = 
+c
+ & 
+P_KEY_ID_MASK
+;
+
+2791 ià((
+Ý
+ =ð
+P_DATA_V1
+è|| (Ý =ð
+P_DATA_V2
+))
+
+2794 
+i
+ = 0; i < 
+KEY_SCAN_SIZE
+; ++i)
+
+2796 
+key_¡©e
+ *
+ks
+ = 
+muÉi
+->
+key_sÿn
+[
+i
+];
+
+2811 ià(
+	`DECRYPT_KEY_ENABLED
+ (
+muÉi
+, 
+ks
+)
+
+2812 && 
+key_id
+ =ð
+ks
+->key_id
+
+2813 && 
+ks
+->
+auth’tiÿ‹d
+
+
+2814 #ifdeà
+ENABLE_DEF_AUTH
+
+
+2815 && !
+ks
+->
+auth_deã¼ed
+
+
+2817 && 
+	`lšk_sock‘_aùu®_m©ch
+ (
+äom
+, &
+ks
+->
+»mÙe_addr
+))
+
+2820 
+Ýt
+->
+key_ùx_bi
+ = &
+ks
+->
+key
+;
+
+2821 
+Ýt
+->
+·ck‘_id
+ = 
+muÉi
+->Ýt.
+»¶ay
+ ? &
+ks
+->·ck‘_id : 
+NULL
+;
+
+2822 
+Ýt
+->
+pid_³rsi¡
+ = 
+NULL
+;
+
+2823 
+Ýt
+->
+æags
+ &ð
+muÉi
+->Ýt.
+üy±o_æags_ªd
+;
+
+2824 
+Ýt
+->
+æags
+ |ð
+muÉi
+->Ýt.
+üy±o_æags_Ü
+;
+
+2826 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 1));
+
+2827 ià(
+Ý
+ =ð
+P_DATA_V2
+)
+
+2829 ià(
+buf
+->
+Ën
+ < 4)
+
+2831 
+	`msg
+ (
+D_TLS_ERRORS
+, "Protocolƒrror:„eceived P_DATA_V2 from %s but†ength is < 4",
+
+2832 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2833 
+”rÜ
+;
+
+2835 
+	`ASSERT
+ (
+	`buf_advªû
+ (
+buf
+, 3));
+
+2838 ++
+ks
+->
+n_·ck‘s
+;
+
+2839 
+ks
+->
+n_by‹s
+ +ð
+buf
+->
+Ën
+;
+
+2840 
+	`dmsg
+ (
+D_TLS_KEYSELECT
+,
+
+2842 
+key_id
+, 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2843 
+	`gc_ä“
+ (&
+gc
+);
+
+2844  
+»t
+;
+
+2849 
+	`dmsg
+ (
+D_TLS_ERRORS
+, "TLS_PRE_DECRYPT: [%d] dken=%d„kid=%d†kid=%d‡uth=%d def=%d match=%d",
+
+2850 
+i
+,
+
+2851 
+	`DECRYPT_KEY_ENABLED
+ (
+muÉi
+, 
+ks
+),
+
+2852 
+key_id
+,
+
+2853 
+ks
+->
+key_id
+,
+
+2854 
+ks
+->
+auth’tiÿ‹d
+,
+
+2855 #ifdeà
+ENABLE_DEF_AUTH
+
+
+2856 
+ks
+->
+auth_deã¼ed
+,
+
+2860 
+	`lšk_sock‘_aùu®_m©ch
+ (
+äom
+, &
+ks
+->
+»mÙe_addr
+));
+
+2865 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2867 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+), 
+key_id
+);
+
+2868 
+”rÜ_l™e
+;
+
+2872 
+boÞ
+ 
+do_bur¡
+ = 
+çl£
+;
+
+2873 
+boÞ
+ 
+Ãw_lšk
+ = 
+çl£
+;
+
+2874 
+£ssiÚ_id
+ 
+sid
+;
+
+2877 ià(
+Ý
+ < 
+P_FIRST_OPCODE
+ || o°> 
+P_LAST_OPCODE
+)
+
+2879 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2881 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+), 
+Ý
+);
+
+2882 
+”rÜ
+;
+
+2886 ià(
+	`is_h¬d_»£t
+ (
+Ý
+, 0))
+
+2889 ià(((
+Ý
+ =ð
+P_CONTROL_HARD_RESET_CLIENT_V1
+
+
+2890 || 
+Ý
+ =ð
+P_CONTROL_HARD_RESET_CLIENT_V2
+è&& !
+muÉi
+->
+Ýt
+.
+£rv”
+)
+
+2891 || ((
+Ý
+ =ð
+P_CONTROL_HARD_RESET_SERVER_V1
+
+
+2892 || 
+Ý
+ =ð
+P_CONTROL_HARD_RESET_SERVER_V2
+è&& 
+muÉi
+->
+Ýt
+.
+£rv”
+))
+
+2894 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2896 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2897 
+”rÜ
+;
+
+2904 
+	`dmsg
+ (
+D_TLS_DEBUG
+, "TLS: control channel, op=%s, IP=%s",
+
+2905 
+	`·ck‘_Ýcode_Çme
+ (
+Ý
+), 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2909 
+bufãr
+ 
+tmp
+ = *
+buf
+;
+
+2910 
+	`buf_advªû
+ (&
+tmp
+, 1);
+
+2911 ià(!
+	`£ssiÚ_id_»ad
+ (&
+sid
+, &
+tmp
+è|| !
+	`£ssiÚ_id_defšed
+ (&sid))
+
+2913 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2915 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2916 
+”rÜ
+;
+
+2921 
+i
+ = 0; i < 
+TM_SIZE
+; ++i)
+
+2923 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+i
+];
+
+2924 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+2926 
+	`dmsg
+ (
+D_TLS_DEBUG
+,
+
+2928 
+i
+,
+
+2929 
+	`¡©e_Çme
+ (
+ks
+->
+¡©e
+),
+
+2930 
+	`£ssiÚ_id_´št
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+, &
+gc
+),
+
+2931 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+),
+
+2932 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+),
+
+2933 
+	`£ssiÚ_id_´št
+ (&
+ks
+->
+£ssiÚ_id_»mÙe
+, &
+gc
+),
+
+2934 
+	`´št_lšk_sock‘_aùu®
+ (&
+ks
+->
+»mÙe_addr
+, &
+gc
+));
+
+2936 ià(
+	`£ssiÚ_id_equ®
+ (&
+ks
+->
+£ssiÚ_id_»mÙe
+, &
+sid
+))
+
+2939 ià(
+i
+ =ð
+TM_LAME_DUCK
+) {
+
+2940 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2942 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+));
+
+2943 
+”rÜ
+;
+
+2945 
+	`dmsg
+ (
+D_TLS_DEBUG
+,
+
+2947 
+i
+, 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+));
+
+2956 ià(
+i
+ =ð
+TM_SIZE
+ && 
+	`is_h¬d_»£t
+ (
+Ý
+, 0))
+
+2958 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+TM_ACTIVE
+];
+
+2959 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+2961 ià(!
+	`is_h¬d_»£t
+ (
+Ý
+, 
+muÉi
+->
+Ýt
+.
+key_m‘hod
+))
+
+2963 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR: initial…acket†ocal/remote key_method mismatch,†ocal key_method=%d, op=%s",
+
+2964 
+muÉi
+->
+Ýt
+.
+key_m‘hod
+,
+
+2965 
+	`·ck‘_Ýcode_Çme
+ (
+Ý
+));
+
+2966 
+”rÜ
+;
+
+2973 ià(!
+	`£ssiÚ_id_defšed
+ (&
+ks
+->
+£ssiÚ_id_»mÙe
+))
+
+2975 ià(
+muÉi
+->
+Ýt
+.
+sšgË_£ssiÚ
+ && muÉi->
+n_£ssiÚs
+)
+
+2977 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+2979 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+2980 
+”rÜ
+;
+
+2983 #ifdeà
+ENABLE_MANAGEMENT
+
+
+2984 ià(
+mªagem’t
+)
+
+2986 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+2987 
+OPENVPN_STATE_AUTH
+,
+
+2988 
+NULL
+,
+
+2994 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+,
+
+2996 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+),
+
+2997 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+));
+
+2999 
+do_bur¡
+ = 
+Œue
+;
+
+3000 
+Ãw_lšk
+ = 
+Œue
+;
+
+3001 
+i
+ = 
+TM_ACTIVE
+;
+
+3002 
+£ssiÚ
+->
+uÁru¡ed_addr
+ = *
+äom
+;
+
+3006 ià(
+i
+ =ð
+TM_SIZE
+ && 
+	`is_h¬d_»£t
+ (
+Ý
+, 0))
+
+3012 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+TM_UNTRUSTED
+];
+
+3018 ià(
+muÉi
+->
+Ýt
+.
+sšgË_£ssiÚ
+)
+
+3020 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+3022 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+3023 
+”rÜ
+;
+
+3026 ià(!
+	`is_h¬d_»£t
+ (
+Ý
+, 
+muÉi
+->
+Ýt
+.
+key_m‘hod
+))
+
+3028 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR:‚ew session†ocal/remote key_method mismatch,†ocal key_method=%d, op=%s",
+
+3029 
+muÉi
+->
+Ýt
+.
+key_m‘hod
+,
+
+3030 
+	`·ck‘_Ýcode_Çme
+ (
+Ý
+));
+
+3031 
+”rÜ
+;
+
+3034 ià(!
+	`»ad_cÚŒÞ_auth
+ (
+buf
+, &
+£ssiÚ
+->
+Žs_auth
+, 
+äom
+))
+
+3035 
+”rÜ
+;
+
+3043 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+,
+
+3045 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+3047 
+Ãw_lšk
+ = 
+Œue
+;
+
+3048 
+i
+ = 
+TM_UNTRUSTED
+;
+
+3049 
+£ssiÚ
+->
+uÁru¡ed_addr
+ = *
+äom
+;
+
+3053 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+i
+];
+
+3054 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+3059 ià(
+i
+ !ð
+TM_ACTIVE
+ && i !ð
+TM_UNTRUSTED
+)
+
+3061 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+3063 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+),
+
+3064 
+i
+,
+
+3065 
+	`·ck‘_Ýcode_Çme
+ (
+Ý
+));
+
+3066 
+”rÜ
+;
+
+3072 ià(!
+Ãw_lšk
+ && !
+	`lšk_sock‘_aùu®_m©ch
+ (&
+ks
+->
+»mÙe_addr
+, 
+äom
+))
+
+3074 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error: Received control…acket from unexpected IP‡ddr: %s",
+
+3075 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+3076 
+”rÜ
+;
+
+3082 ià(
+Ý
+ =ð
+P_CONTROL_SOFT_RESET_V1
+
+
+3083 && 
+	`DECRYPT_KEY_ENABLED
+ (
+muÉi
+, 
+ks
+))
+
+3085 ià(!
+	`»ad_cÚŒÞ_auth
+ (
+buf
+, &
+£ssiÚ
+->
+Žs_auth
+, 
+äom
+))
+
+3086 
+”rÜ
+;
+
+3088 
+	`key_¡©e_soá_»£t
+ (
+£ssiÚ
+);
+
+3090 
+	`dmsg
+ (
+D_TLS_DEBUG
+,
+
+3092 
+i
+, 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+));
+
+3099 ià(
+Ý
+ =ð
+P_CONTROL_SOFT_RESET_V1
+)
+
+3100 
+do_bur¡
+ = 
+Œue
+;
+
+3102 ià(!
+	`»ad_cÚŒÞ_auth
+ (
+buf
+, &
+£ssiÚ
+->
+Žs_auth
+, 
+äom
+))
+
+3103 
+”rÜ
+;
+
+3105 
+	`dmsg
+ (
+D_TLS_DEBUG
+,
+
+3107 
+i
+, 
+	`£ssiÚ_id_´št
+ (&
+sid
+, &
+gc
+));
+
+3117 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+i
+];
+
+3118 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+3121 
+	`ASSERT
+ (
+ks
+->
+¡©e
+ !ð
+S_UNDEF
+);
+
+3122 
+	`ASSERT
+ (
+ks
+->
+¡©e
+ !ð
+S_ERROR
+);
+
+3123 
+	`ASSERT
+ (
+	`£ssiÚ_id_defšed
+ (&
+£ssiÚ
+->
+£ssiÚ_id
+));
+
+3126 
+»t
+ = 
+Œue
+;
+
+3131 ià(
+Ãw_lšk
+)
+
+3133 
+ks
+->
+£ssiÚ_id_»mÙe
+ = 
+sid
+;
+
+3134 
+ks
+->
+»mÙe_addr
+ = *
+äom
+;
+
+3135 ++
+muÉi
+->
+n_£ssiÚs
+;
+
+3137 ià(!
+	`lšk_sock‘_aùu®_m©ch
+ (&
+ks
+->
+»mÙe_addr
+, 
+äom
+))
+
+3139 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+3141 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+3142 
+”rÜ
+;
+
+3150 ià(
+do_bur¡
+ && !
+£ssiÚ
+->
+bur¡
+)
+
+3152 
+	`»lŸbË_scheduË_now
+ (
+ks
+->
+£nd_»lŸbË
+);
+
+3153 
+£ssiÚ
+->
+bur¡
+ = 
+Œue
+;
+
+3157 ià(
+ks
+->
+key_id
+ != key_id)
+
+3159 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+3161 
+ks
+->
+key_id
+, key_id, 
+	`´št_key_id
+ (
+muÉi
+, &
+gc
+));
+
+3162 
+”rÜ
+;
+
+3171 
+»lŸbË_ack
+ 
+£nd_ack
+;
+
+3173 
+£nd_ack
+.
+Ën
+ = 0;
+
+3174 ià(!
+	`»lŸbË_ack_»ad
+ (&
+£nd_ack
+, 
+buf
+, &
+£ssiÚ
+->
+£ssiÚ_id
+))
+
+3176 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+3178 
+”rÜ
+;
+
+3180 
+	`»lŸbË_£nd_purge
+ (
+ks
+->
+£nd_»lŸbË
+, &
+£nd_ack
+);
+
+3183 ià(
+Ý
+ !ð
+P_ACK_V1
+ && 
+	`»lŸbË_ÿn_g‘
+ (
+ks
+->
+»c_»lŸbË
+))
+
+3185 
+·ck‘_id_ty³
+ 
+id
+;
+
+3188 ià(
+	`»lŸbË_ack_»ad_·ck‘_id
+ (
+buf
+, &
+id
+))
+
+3191 ià(
+	`»lŸbË_wÚt_b»ak_£qu’tŸl™y
+ (
+ks
+->
+»c_»lŸbË
+, 
+id
+))
+
+3193 ià(
+	`»lŸbË_nÙ_»¶ay
+ (
+ks
+->
+»c_»lŸbË
+, 
+id
+))
+
+3196 
+bufãr
+ *
+š
+ = 
+	`»lŸbË_g‘_buf
+ (
+ks
+->
+»c_»lŸbË
+);
+
+3197 
+	`ASSERT
+ (
+š
+);
+
+3198 
+	`ASSERT
+ (
+	`buf_cÝy
+ (
+š
+, 
+buf
+));
+
+3199 
+	`»lŸbË_m¬k_aùive_šcomšg
+ (
+ks
+->
+»c_»lŸbË
+, 
+š
+, 
+id
+, 
+Ý
+);
+
+3203 
+	`»lŸbË_ack_acknowËdge_·ck‘_id
+ (
+ks
+->
+»c_ack
+, 
+id
+);
+
+3211 
+dÚe
+:
+
+3212 
+buf
+->
+Ën
+ = 0;
+
+3213 
+Ýt
+->
+key_ùx_bi
+ = 
+NULL
+;
+
+3214 
+Ýt
+->
+·ck‘_id
+ = 
+NULL
+;
+
+3215 
+Ýt
+->
+pid_³rsi¡
+ = 
+NULL
+;
+
+3216 
+Ýt
+->
+æags
+ &ð
+muÉi
+->Ýt.
+üy±o_æags_ªd
+;
+
+3217 
+	`gc_ä“
+ (&
+gc
+);
+
+3218  
+»t
+;
+
+3220 
+”rÜ
+:
+
+3221 ++
+muÉi
+->
+n_soá_”rÜs
+;
+
+3222 
+”rÜ_l™e
+:
+
+3223 
+	`Žs_þ—r_”rÜ
+();
+
+3224 
+dÚe
+;
+
+3225 
+	}
+}
+
+3238 
+boÞ
+
+
+3239 
+	$Žs_´e_deüy±_l™e
+ (cÚ¡ 
+Žs_auth_¡ªd®Úe
+ *
+�s
+,
+
+3240 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom
+,
+
+3241 cÚ¡ 
+bufãr
+ *
+buf
+)
+
+3244 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3245 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3247 ià(
+buf
+->
+Ën
+ > 0)
+
+3249 
+Ý
+;
+
+3250 
+key_id
+;
+
+3254 
+ušt8_t
+ 
+c
+ = *
+	`BPTR
+ (
+buf
+);
+
+3255 
+Ý
+ = 
+c
+ >> 
+P_OPCODE_SHIFT
+;
+
+3256 
+key_id
+ = 
+c
+ & 
+P_KEY_ID_MASK
+;
+
+3262 ià(
+Ý
+ !ð
+P_CONTROL_HARD_RESET_CLIENT_V2
+)
+
+3267 
+	`dmsg
+ (
+D_TLS_STATE_ERRORS
+,
+
+3269 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+),
+
+3270 
+Ý
+);
+
+3271 
+”rÜ
+;
+
+3274 ià(
+key_id
+ != 0)
+
+3276 
+	`dmsg
+ (
+D_TLS_STATE_ERRORS
+,
+
+3278 
+key_id
+,
+
+3279 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+));
+
+3280 
+”rÜ
+;
+
+3283 ià(
+buf
+->
+Ën
+ > 
+	`EXPANDED_SIZE_DYNAMIC
+ (&
+�s
+->
+äame
+))
+
+3285 
+	`dmsg
+ (
+D_TLS_STATE_ERRORS
+,
+
+3287 
+buf
+->
+Ën
+,
+
+3288 
+	`´št_lšk_sock‘_aùu®
+ (
+äom
+, &
+gc
+),
+
+3289 
+	`EXPANDED_SIZE_DYNAMIC
+ (&
+�s
+->
+äame
+));
+
+3290 
+”rÜ
+;
+
+3294 
+bufãr
+ 
+Ãwbuf
+ = 
+	`þÚe_buf
+ (
+buf
+);
+
+3295 
+üy±o_ÝtiÚs
+ 
+co
+ = 
+�s
+->
+Žs_auth_ÝtiÚs
+;
+
+3296 
+boÞ
+ 
+¡©us
+;
+
+3303 
+co
+.
+æags
+ |ð
+CO_IGNORE_PACKET_ID
+;
+
+3306 
+¡©us
+ = 
+	`»ad_cÚŒÞ_auth
+ (&
+Ãwbuf
+, &
+co
+, 
+äom
+);
+
+3307 
+	`ä“_buf
+ (&
+Ãwbuf
+);
+
+3308 ià(!
+¡©us
+)
+
+3309 
+”rÜ
+;
+
+3327 
+»t
+ = 
+Œue
+;
+
+3330 
+	`gc_ä“
+ (&
+gc
+);
+
+3331  
+»t
+;
+
+3333 
+”rÜ
+:
+
+3334 
+	`Žs_þ—r_”rÜ
+();
+
+3335 
+	`gc_ä“
+ (&
+gc
+);
+
+3336  
+»t
+;
+
+3337 
+	}
+}
+
+3341 
+	$Žs_´e_’üy±
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+3342 
+bufãr
+ *
+buf
+, 
+üy±o_ÝtiÚs
+ *
+Ýt
+)
+
+3344 
+muÉi
+->
+§ve_ks
+ = 
+NULL
+;
+
+3345 ià(
+buf
+->
+Ën
+ > 0)
+
+3347 
+i
+;
+
+3348 
+key_¡©e
+ *
+ks_£Ëù
+ = 
+NULL
+;
+
+3349 
+i
+ = 0; i < 
+KEY_SCAN_SIZE
+; ++i)
+
+3351 
+key_¡©e
+ *
+ks
+ = 
+muÉi
+->
+key_sÿn
+[
+i
+];
+
+3352 ià(
+ks
+->
+¡©e
+ >ð
+S_ACTIVE
+
+
+3353 && 
+ks
+->
+auth’tiÿ‹d
+
+
+3354 #ifdeà
+ENABLE_DEF_AUTH
+
+
+3355 && !
+ks
+->
+auth_deã¼ed
+
+
+3359 ià(!
+ks_£Ëù
+)
+
+3360 
+ks_£Ëù
+ = 
+ks
+;
+
+3361 ià(
+now
+ >ð
+ks
+->
+auth_deã¼ed_expœe
+)
+
+3363 
+ks_£Ëù
+ = 
+ks
+;
+
+3369 ià(
+ks_£Ëù
+)
+
+3371 
+Ýt
+->
+key_ùx_bi
+ = &
+ks_£Ëù
+->
+key
+;
+
+3372 
+Ýt
+->
+·ck‘_id
+ = 
+muÉi
+->Ýt.
+»¶ay
+ ? &
+ks_£Ëù
+->·ck‘_id : 
+NULL
+;
+
+3373 
+Ýt
+->
+pid_³rsi¡
+ = 
+NULL
+;
+
+3374 
+Ýt
+->
+æags
+ &ð
+muÉi
+->Ýt.
+üy±o_æags_ªd
+;
+
+3375 
+Ýt
+->
+æags
+ |ð
+muÉi
+->Ýt.
+üy±o_æags_Ü
+;
+
+3376 
+muÉi
+->
+§ve_ks
+ = 
+ks_£Ëù
+;
+
+3377 
+	`dmsg
+ (
+D_TLS_KEYSELECT
+, "TLS:�ls_´e_’üy±: key_id=%d", 
+ks_£Ëù
+->
+key_id
+);
+
+3382 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3383 
+	`dmsg
+ (
+D_TLS_KEYSELECT
+, "TLS Warning:‚o data channel send key‡vailable: %s",
+
+3384 
+	`´št_key_id
+ (
+muÉi
+, &
+gc
+));
+
+3385 
+	`gc_ä“
+ (&
+gc
+);
+
+3389 
+buf
+->
+Ën
+ = 0;
+
+3390 
+Ýt
+->
+key_ùx_bi
+ = 
+NULL
+;
+
+3391 
+Ýt
+->
+·ck‘_id
+ = 
+NULL
+;
+
+3392 
+Ýt
+->
+pid_³rsi¡
+ = 
+NULL
+;
+
+3393 
+Ýt
+->
+æags
+ &ð
+muÉi
+->Ýt.
+üy±o_æags_ªd
+;
+
+3394 
+	}
+}
+
+3398 
+	$Žs_po¡_’üy±
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+bufãr
+ *
+buf
+)
+
+3400 
+key_¡©e
+ *
+ks
+;
+
+3401 
+ušt8_t
+ *
+Ý
+;
+
+3402 
+ušt32_t
+ 
+³”
+;
+
+3404 
+ks
+ = 
+muÉi
+->
+§ve_ks
+;
+
+3405 
+muÉi
+->
+§ve_ks
+ = 
+NULL
+;
+
+3406 ià(
+buf
+->
+Ën
+ > 0)
+
+3408 
+	`ASSERT
+ (
+ks
+);
+
+3410 ià(!
+muÉi
+->
+Ýt
+.
+£rv”
+ && muÉi->
+u£_³”_id
+)
+
+3412 
+³”
+ = 
+	`htÚl
+(((
+P_DATA_V2
+ << 
+P_OPCODE_SHIFT
+è| 
+ks
+->
+key_id
+è<< 24 | (
+muÉi
+->
+³”_id
+ & 0xFFFFFF));
+
+3413 
+	`ASSERT
+ (
+	`buf_wr™e_´•’d
+ (
+buf
+, &
+³”
+, 4));
+
+3417 
+	`ASSERT
+ (
+Ý
+ = 
+	`buf_´•’d
+ (
+buf
+, 1));
+
+3418 *
+Ý
+ = (
+P_DATA_V1
+ << 
+P_OPCODE_SHIFT
+è| 
+ks
+->
+key_id
+;
+
+3420 ++
+ks
+->
+n_·ck‘s
+;
+
+3421 
+ks
+->
+n_by‹s
+ +ð
+buf
+->
+Ën
+;
+
+3423 
+	}
+}
+
+3430 
+boÞ
+
+
+3431 
+	$Žs_£nd_·ylßd
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+3432 cÚ¡ 
+ušt8_t
+ *
+d©a
+,
+
+3433 
+size
+)
+
+3435 
+Žs_£ssiÚ
+ *
+£ssiÚ
+;
+
+3436 
+key_¡©e
+ *
+ks
+;
+
+3437 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3439 
+	`Žs_þ—r_”rÜ
+();
+
+3441 
+	`ASSERT
+ (
+muÉi
+);
+
+3443 
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+TM_ACTIVE
+];
+
+3444 
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+3446 ià(
+ks
+->
+¡©e
+ >ð
+S_ACTIVE
+)
+
+3448 ià(
+	`key_¡©e_wr™e_¶aš‹xt_cÚ¡
+ (&
+ks
+->
+ks_s¦
+, 
+d©a
+, 
+size
+) == 1)
+
+3449 
+»t
+ = 
+Œue
+;
+
+3453 ià(!
+ks
+->
+·ybuf
+)
+
+3454 
+ks
+->
+·ybuf
+ = 
+	`bufãr_li¡_Ãw
+ (0);
+
+3455 
+	`bufãr_li¡_push_d©a
+ (
+ks
+->
+·ybuf
+, 
+d©a
+, (
+size_t
+)
+size
+);
+
+3456 
+»t
+ = 
+Œue
+;
+
+3460 
+	`Žs_þ—r_”rÜ
+();
+
+3462  
+»t
+;
+
+3463 
+	}
+}
+
+3465 
+boÞ
+
+
+3466 
+	$Žs_»c_·ylßd
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+3467 
+bufãr
+ *
+buf
+)
+
+3469 
+Žs_£ssiÚ
+ *
+£ssiÚ
+;
+
+3470 
+key_¡©e
+ *
+ks
+;
+
+3471 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3473 
+	`Žs_þ—r_”rÜ
+();
+
+3475 
+	`ASSERT
+ (
+muÉi
+);
+
+3477 
+£ssiÚ
+ = &
+muÉi
+->£ssiÚ[
+TM_ACTIVE
+];
+
+3478 
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+3480 ià(
+ks
+->
+¡©e
+ >ð
+S_ACTIVE
+ && 
+	`BLEN
+ (&ks->
+¶aš‹xt_»ad_buf
+))
+
+3482 ià(
+	`buf_cÝy
+ (
+buf
+, &
+ks
+->
+¶aš‹xt_»ad_buf
+))
+
+3483 
+»t
+ = 
+Œue
+;
+
+3484 
+ks
+->
+¶aš‹xt_»ad_buf
+.
+Ën
+ = 0;
+
+3487 
+	`Žs_þ—r_”rÜ
+();
+
+3489  
+»t
+;
+
+3490 
+	}
+}
+
+3497 
+	$´ÙocÞ_dump
+ (
+bufãr
+ *bufãr, 
+æags
+, 
+gc_¬’a
+ *
+gc
+)
+
+3499 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+3500 
+bufãr
+ 
+buf
+ = *buffer;
+
+3502 
+ušt8_t
+ 
+c
+;
+
+3503 
+Ý
+;
+
+3504 
+key_id
+;
+
+3506 
+Žs_auth_hmac_size
+ = (
+æags
+ & 
+PD_TLS_AUTH_HMAC_SIZE_MASK
+);
+
+3508 ià(
+buf
+.
+Ën
+ <= 0)
+
+3510 
+	`buf_´štf
+ (&
+out
+, "DATA UNDEF†’=%d", 
+buf
+.
+Ën
+);
+
+3511 
+dÚe
+;
+
+3514 ià(!(
+æags
+ & 
+PD_TLS
+))
+
+3515 
+´št_d©a
+;
+
+3520 ià(!
+	`buf_»ad
+ (&
+buf
+, &
+c
+,  (c)))
+
+3521 
+dÚe
+;
+
+3522 
+Ý
+ = (
+c
+ >> 
+P_OPCODE_SHIFT
+);
+
+3523 
+key_id
+ = 
+c
+ & 
+P_KEY_ID_MASK
+;
+
+3524 
+	`buf_´štf
+ (&
+out
+, "% kid=%d", 
+	`·ck‘_Ýcode_Çme
+ (
+Ý
+), 
+key_id
+);
+
+3526 ià((
+Ý
+ =ð
+P_DATA_V1
+è|| (Ý =ð
+P_DATA_V2
+))
+
+3527 
+´št_d©a
+;
+
+3533 
+£ssiÚ_id
+ 
+sid
+;
+
+3535 ià(!
+	`£ssiÚ_id_»ad
+ (&
+sid
+, &
+buf
+))
+
+3536 
+dÚe
+;
+
+3537 ià(
+æags
+ & 
+PD_VERBOSE
+)
+
+3538 
+	`buf_´štf
+ (&
+out
+, " sid=%s", 
+	`£ssiÚ_id_´št
+ (&
+sid
+, 
+gc
+));
+
+3544 ià(
+Žs_auth_hmac_size
+)
+
+3546 
+·ck‘_id_Ãt
+ 
+pš
+;
+
+3547 
+ušt8_t
+ 
+Žs_auth_hmac
+[
+MAX_HMAC_KEY_LENGTH
+];
+
+3549 
+	`ASSERT
+ (
+Žs_auth_hmac_size
+ <ð
+MAX_HMAC_KEY_LENGTH
+);
+
+3551 ià(!
+	`buf_»ad
+ (&
+buf
+, 
+Žs_auth_hmac
+, 
+Žs_auth_hmac_size
+))
+
+3552 
+dÚe
+;
+
+3553 ià(
+æags
+ & 
+PD_VERBOSE
+)
+
+3554 
+	`buf_´štf
+ (&
+out
+, "�ls_hmac=%s", 
+	`fÜm©_hex
+ (
+Žs_auth_hmac
+, 
+Žs_auth_hmac_size
+, 0, 
+gc
+));
+
+3556 ià(!
+	`·ck‘_id_»ad
+ (&
+pš
+, &
+buf
+, 
+Œue
+))
+
+3557 
+dÚe
+;
+
+3558 
+	`buf_´štf
+(&
+out
+, "…id=%s", 
+	`·ck‘_id_Ãt_´št
+ (&
+pš
+, (
+æags
+ & 
+PD_VERBOSE
+), 
+gc
+));
+
+3564 
+	`buf_´štf
+ (&
+out
+, " %s", 
+	`»lŸbË_ack_´št
+(&
+buf
+, (
+æags
+ & 
+PD_VERBOSE
+), 
+gc
+));
+
+3566 ià(
+Ý
+ =ð
+P_ACK_V1
+)
+
+3567 
+dÚe
+;
+
+3573 
+·ck‘_id_ty³
+ 
+l
+;
+
+3574 ià(!
+	`buf_»ad
+ (&
+buf
+, &
+l
+,  (l)))
+
+3575 
+dÚe
+;
+
+3576 
+l
+ = 
+	`Áohpid
+ (l);
+
+3577 
+	`buf_´štf
+ (&
+out
+, "…id=" 
+·ck‘_id_fÜm©
+, (
+·ck‘_id_´št_ty³
+)
+l
+);
+
+3580 
+´št_d©a
+:
+
+3581 ià(
+æags
+ & 
+PD_SHOW_DATA
+)
+
+3582 
+	`buf_´štf
+ (&
+out
+, " DATA %s", 
+	`fÜm©_hex
+ (
+	`BPTR
+ (&
+buf
+), 
+	`BLEN
+ (&buf), 80, 
+gc
+));
+
+3584 
+	`buf_´štf
+ (&
+out
+, " DATA†’=%d", 
+buf
+.
+Ën
+);
+
+3586 
+dÚe
+:
+
+3587  
+	`BSTR
+ (&
+out
+);
+
+3588 
+	}
+}
+
+3591 
+	$dummy
+(è{
+	}
+}
+
+	@ssl.h
+
+30 #iâdeà
+OPENVPN_SSL_H
+
+
+31 
+	#OPENVPN_SSL_H
+
+
+	)
+
+33 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+35 
+	~"basic.h
+"
+
+36 
+	~"commÚ.h
+"
+
+37 
+	~"üy±o.h
+"
+
+38 
+	~"·ck‘_id.h
+"
+
+39 
+	~"£ssiÚ_id.h
+"
+
+40 
+	~"»lŸbË.h
+"
+
+41 
+	~"sock‘.h
+"
+
+42 
+	~"mtu.h
+"
+
+43 
+	~"ÝtiÚs.h
+"
+
+44 
+	~"¶ugš.h
+"
+
+46 
+	~"s¦_commÚ.h
+"
+
+47 
+	~"s¦_v”ify.h
+"
+
+48 
+	~"s¦_back’d.h
+"
+
+51 
+	#KEY_EXPANSION_ID
+ "O³nVPN"
+
+	)
+
+54 
+	#P_KEY_ID_MASK
+ 0x07
+
+	)
+
+55 
+	#P_OPCODE_SHIFT
+ 3
+
+	)
+
+58 
+	#P_CONTROL_HARD_RESET_CLIENT_V1
+ 1
+
+	)
+
+59 
+	#P_CONTROL_HARD_RESET_SERVER_V1
+ 2
+
+	)
+
+60 
+	#P_CONTROL_SOFT_RESET_V1
+ 3
+
+	)
+
+61 
+	#P_CONTROL_V1
+ 4
+
+	)
+
+62 
+	#P_ACK_V1
+ 5
+
+	)
+
+63 
+	#P_DATA_V1
+ 6
+
+	)
+
+64 
+	#P_DATA_V2
+ 9
+
+	)
+
+67 
+	#P_CONTROL_HARD_RESET_CLIENT_V2
+ 7
+
+	)
+
+68 
+	#P_CONTROL_HARD_RESET_SERVER_V2
+ 8
+
+	)
+
+71 
+	#P_FIRST_OPCODE
+ 1
+
+	)
+
+72 
+	#P_LAST_OPCODE
+ 9
+
+	)
+
+77 
+	#TLS_AGGREGATE_ACK
+
+
+	)
+
+85 
+	#CONTROL_SEND_ACK_MAX
+ 4
+
+	)
+
+90 
+	#TLS_RELIABLE_N_SEND_BUFFERS
+ 4
+
+	)
+
+91 
+	#TLS_RELIABLE_N_REC_BUFFERS
+ 8
+
+	)
+
+96 
+	#TLS_MULTI_REFRESH
+ 15
+
+	)
+
+97 
+	#TLS_MULTI_HORIZON
+ 2
+
+	)
+
+105 
+	#TLS_MULTI_THREAD_SEND_TIMEOUT
+ 5
+
+	)
+
+108 
+	#TLS_MULTI_AUTH_STATUS_INTERVAL
+ 10
+
+	)
+
+115 
+	#TLS_OPTIONS_LEN
+ 512
+
+	)
+
+118 
+	#X509_USERNAME_FIELD_DEFAULT
+ "CN"
+
+	)
+
+123 
+	#KEY_METHOD_MIN
+ 1
+
+	)
+
+124 
+	#KEY_METHOD_MAX
+ 2
+
+	)
+
+127 
+	#KEY_METHOD_MASK
+ 0x0F
+
+	)
+
+138 
+	sŽs_auth_¡ªd®Úe
+
+
+140 
+key_ùx_bi
+ 
+	mŽs_auth_key
+;
+
+141 
+üy±o_ÝtiÚs
+ 
+	mŽs_auth_ÝtiÚs
+;
+
+142 
+äame
+ 
+	mäame
+;
+
+148 
+š™_s¦_lib
+ ();
+
+153 
+ä“_s¦_lib
+ ();
+
+159 
+š™_s¦
+ (cÚ¡ 
+ÝtiÚs
+ *ÝtiÚs, 
+Žs_roÙ_ùx
+ *
+ùx
+);
+
+181 
+Žs_muÉi
+ *
+Žs_muÉi_š™
+ (
+Žs_ÝtiÚs
+ *tls_options);
+
+197 
+Žs_muÉi_š™_fš®ize
+(
+Žs_muÉi
+ *
+muÉi
+,
+
+198 cÚ¡ 
+äame
+ *frame);
+
+203 
+Žs_auth_¡ªd®Úe
+ *
+Žs_auth_¡ªd®Úe_š™
+ (
+Žs_ÝtiÚs
+ *tls_options,
+
+204 
+gc_¬’a
+ *
+gc
+);
+
+209 
+Žs_auth_¡ªd®Úe_fš®ize
+ (
+Žs_auth_¡ªd®Úe
+ *
+�s
+,
+
+210 cÚ¡ 
+äame
+ *frame);
+
+217 
+Žs_muÉi_š™_£t_ÝtiÚs
+(
+Žs_muÉi
+* 
+muÉi
+,
+
+218 cÚ¡ *
+loÿl
+,
+
+219 cÚ¡ *
+»mÙe
+);
+
+233 
+Žs_muÉi_ä“
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+boÞ
+ 
+þ—r
+);
+
+239 
+	#TLSMP_INACTIVE
+ 0
+
+	)
+
+240 
+	#TLSMP_ACTIVE
+ 1
+
+	)
+
+241 
+	#TLSMP_KILL
+ 2
+
+	)
+
+249 
+Žs_muÉi_´oûss
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+250 
+bufãr
+ *
+to_lšk
+,
+
+251 
+lšk_sock‘_aùu®
+ **
+to_lšk_addr
+,
+
+252 
+lšk_sock‘_šfo
+ *
+to_lšk_sock‘_šfo
+,
+
+253 
+š‹rv®_t
+ *
+wakeup
+);
+
+307 
+boÞ
+ 
+Žs_´e_deüy±
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+308 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom
+,
+
+309 
+bufãr
+ *
+buf
+,
+
+310 
+üy±o_ÝtiÚs
+ *
+Ýt
+);
+
+348 
+boÞ
+ 
+Žs_´e_deüy±_l™e
+ (cÚ¡ 
+Žs_auth_¡ªd®Úe
+ *
+�s
+,
+
+349 cÚ¡ 
+lšk_sock‘_aùu®
+ *
+äom
+,
+
+350 cÚ¡ 
+bufãr
+ *
+buf
+);
+
+366 
+Žs_´e_’üy±
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+367 
+bufãr
+ *
+buf
+, 
+üy±o_ÝtiÚs
+ *
+Ýt
+);
+
+378 
+Žs_po¡_’üy±
+ (
+Žs_muÉi
+ *
+muÉi
+, 
+bufãr
+ *
+buf
+);
+
+386 
+³m_·sswÜd_£tup
+ (cÚ¡ *
+auth_fže
+);
+
+392 
+auth_u£r_·ss_£tup
+ (cÚ¡ *
+auth_fže
+, cÚ¡ 
+¡©ic_ch®Ënge_šfo
+ *
+sc_šfo
+);
+
+397 
+s¦_£t_auth_noÿche
+ ();
+
+403 
+s¦_purge_auth
+ (cÚ¡ 
+boÞ
+ 
+auth_u£r_·ss_Úly
+);
+
+405 
+s¦_£t_auth_tok’
+ (cÚ¡ *
+tok’
+);
+
+407 #ifdeà
+ENABLE_CLIENT_CR
+
+
+413 
+s¦_purge_auth_ch®Ënge
+ ();
+
+414 
+s¦_put_auth_ch®Ënge
+ (cÚ¡ *
+ü_¡r
+);
+
+420 
+Žs_adju¡_äame_·¿m‘”s
+(
+äame
+ *frame);
+
+425 
+boÞ
+ 
+Žs_£nd_·ylßd
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+426 cÚ¡ 
+ušt8_t
+ *
+d©a
+,
+
+427 
+size
+);
+
+432 
+boÞ
+ 
+Žs_»c_·ylßd
+ (
+Žs_muÉi
+ *
+muÉi
+,
+
+433 
+bufãr
+ *
+buf
+);
+
+435 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+436 
+šlše
+ *
+
+437 
+	$Žs_g‘_³”_šfo
+(cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+)
+
+439  
+muÉi
+->
+³”_šfo
+;
+
+440 
+	}
+}
+
+447 
+šlše
+ 
+boÞ
+
+
+448 
+	$Žs_š™Ÿl_·ck‘_»ûived
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+)
+
+450  
+muÉi
+->
+n_£ssiÚs
+ > 0;
+
+451 
+	}
+}
+
+453 
+šlše
+ 
+boÞ
+
+
+454 
+	$Žs_‹¡_auth_deã¼ed_š‹rv®
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+)
+
+456 ià(
+muÉi
+)
+
+458 cÚ¡ 
+key_¡©e
+ *
+ks
+ = &
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+].
+key
+[
+KS_PRIMARY
+];
+
+459  
+now
+ < 
+ks
+->
+auth_deã¼ed_expœe
+;
+
+461  
+çl£
+;
+
+462 
+	}
+}
+
+464 
+šlše
+ 
+
+465 
+	$Žs_‹¡_·ylßd_Ën
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+)
+
+467 ià(
+muÉi
+)
+
+469 cÚ¡ 
+key_¡©e
+ *
+ks
+ = &
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+].
+key
+[
+KS_PRIMARY
+];
+
+470 ià(
+ks
+->
+¡©e
+ >ð
+S_ACTIVE
+)
+
+471  
+	`BLEN
+ (&
+ks
+->
+¶aš‹xt_»ad_buf
+);
+
+474 
+	}
+}
+
+476 
+šlše
+ 
+
+477 
+	$Žs_£t_sšgË_£ssiÚ
+ (
+Žs_muÉi
+ *
+muÉi
+)
+
+479 ià(
+muÉi
+)
+
+480 
+muÉi
+->
+Ýt
+.
+sšgË_£ssiÚ
+ = 
+Œue
+;
+
+481 
+	}
+}
+
+486 
+	#PD_TLS_AUTH_HMAC_SIZE_MASK
+ 0xFF
+
+	)
+
+487 
+	#PD_SHOW_DATA
+ (1<<8)
+
+	)
+
+488 
+	#PD_TLS
+ (1<<9)
+
+	)
+
+489 
+	#PD_VERBOSE
+ (1<<10)
+
+	)
+
+491 cÚ¡ *
+´ÙocÞ_dump
+ (
+bufãr
+ *buffer,
+
+492 
+æags
+,
+
+493 
+gc_¬’a
+ *
+gc
+);
+
+499 #ifdeà
+MEASURE_TLS_HANDSHAKE_STATS
+
+
+500 
+show_Žs_³rfÜmªû_¡©s
+();
+
+504 
+exŒaù_x509_f›ld_‹¡
+ ();
+
+	@ssl_backend.h
+
+31 #iâdeà
+SSL_BACKEND_H_
+
+
+32 
+	#SSL_BACKEND_H_
+
+
+	)
+
+34 
+	~"bufãr.h
+"
+
+36 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+37 
+	~"s¦_Ý’s¦.h
+"
+
+38 
+	~"s¦_v”ify_Ý’s¦.h
+"
+
+39 
+	#SSLAPI
+ 
+SSLAPI_OPENSSL
+
+
+	)
+
+41 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+42 
+	~"s¦_pÞ¬s¦.h
+"
+
+43 
+	~"s¦_v”ify_pÞ¬s¦.h
+"
+
+44 
+	#SSLAPI
+ 
+SSLAPI_POLARSSL
+
+
+	)
+
+48 #iâdeà
+SSLAPI
+
+
+49 
+	#SSLAPI
+ 
+SSLAPI_NONE
+
+
+	)
+
+55 
+	gŽs_£ssiÚ
+;
+
+63 ¡ruù { cÚ¡ *
+	mÝ’s¦_Çme
+; cÚ¡ *
+	mŸÇ_Çme
+; } 
+	tŽs_c�h”_Çme_·œ
+;
+
+64 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ *
+Žs_g‘_c�h”_Çme_·œ
+ (cÚ¡ *
+c�h”_Çme
+, 
+size_t
+ 
+Ën
+);
+
+80 
+³m_·sswÜd_ÿÎback
+ (*
+buf
+, 
+size
+, 
+rwæag
+, *
+u
+);
+
+92 
+Žs_š™_lib
+();
+
+97 
+Žs_ä“_lib
+();
+
+101 
+Žs_þ—r_”rÜ
+();
+
+112 
+	#TLS_VER_BAD
+ -1
+
+	)
+
+113 
+	#TLS_VER_UNSPEC
+ 0
+
+	)
+
+114 
+	#TLS_VER_1_0
+ 1
+
+	)
+
+115 
+	#TLS_VER_1_1
+ 2
+
+	)
+
+116 
+	#TLS_VER_1_2
+ 3
+
+	)
+
+117 
+Žs_v”siÚ_·r£
+(cÚ¡ *
+v¡r
+, cÚ¡ *
+exŒa
+);
+
+125 
+Žs_v”siÚ_max
+();
+
+133 
+Žs_ùx_£rv”_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+);
+
+141 
+Žs_ùx_þ›Á_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+);
+
+148 
+Žs_ùx_ä“
+(
+Žs_roÙ_ùx
+ *
+ùx
+);
+
+157 
+boÞ
+ 
+Žs_ùx_š™Ÿli£d
+(
+Žs_roÙ_ùx
+ *
+ùx
+);
+
+168 
+Žs_ùx_£t_ÝtiÚs
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+);
+
+176 
+Žs_ùx_»¡riù_c�h”s
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+c�h”s
+);
+
+187 
+Žs_ùx_lßd_dh_·¿ms
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+dh_fže
+,
+
+188 cÚ¡ *
+dh_fže_šlše
+);
+
+202 
+Žs_ùx_lßd_pkcs12
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+pkcs12_fže
+,
+
+203 cÚ¡ *
+pkcs12_fže_šlše
+, 
+boÞ
+ 
+lßd_ÿ_fže
+
+
+213 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+214 
+Žs_ùx_lßd_üy±ßpi
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+üy±ßpi_û¹
+);
+
+226 
+Žs_ùx_lßd_û¹_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+û¹_fže
+,
+
+227 cÚ¡ *
+û¹_fže_šlše
+);
+
+240 
+Žs_ùx_lßd_´iv_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+´iv_key_fže
+,
+
+241 cÚ¡ *
+´iv_key_fže_šlše
+
+
+244 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+258 
+Žs_ùx_u£_ex‹º®_´iv©e_key
+ (
+Žs_roÙ_ùx
+ *
+ùx
+,
+
+259 cÚ¡ *
+û¹_fže
+, cÚ¡ *
+û¹_fže_šlše
+);
+
+274 
+Žs_ùx_lßd_ÿ
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+ÿ_fže
+,
+
+275 cÚ¡ *
+ÿ_fže_šlše
+, cÚ¡ *
+ÿ_·th
+, 
+boÞ
+ 
+Žs_£rv”
+
+
+289 
+Žs_ùx_lßd_exŒa_û¹s
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+exŒa_û¹s_fže
+,
+
+290 cÚ¡ *
+exŒa_û¹s_fže_šlše
+
+
+293 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+300 
+Žs_ùx_³rsÚ®i£_¿ndom
+(
+Žs_roÙ_ùx
+ *
+ùx
+);
+
+318 
+key_¡©e_s¦_š™
+(
+key_¡©e_s¦
+ *
+ks_s¦
+,
+
+319 cÚ¡ 
+Žs_roÙ_ùx
+ *
+s¦_ùx
+, 
+boÞ
+ 
+is_£rv”
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+);
+
+326 
+key_¡©e_s¦_ä“
+(
+key_¡©e_s¦
+ *
+ks_s¦
+);
+
+352 
+key_¡©e_wr™e_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+);
+
+369 
+key_¡©e_wr™e_¶aš‹xt_cÚ¡
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+,
+
+370 cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+Ën
+);
+
+390 
+key_¡©e_»ad_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+,
+
+391 
+maxËn
+);
+
+416 
+key_¡©e_wr™e_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+,
+
+417 
+bufãr
+ *
+buf
+);
+
+437 
+key_¡©e_»ad_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+,
+
+438 
+maxËn
+);
+
+455 
+´št_d‘ažs
+ (
+key_¡©e_s¦
+ * 
+ks_s¦
+, cÚ¡ *
+´efix
+);
+
+463 
+show_avažabË_Žs_c�h”s
+ (cÚ¡ *
+Žs_c�h”s
+);
+
+469 
+g‘_highe¡_´eã»nû_Žs_c�h”
+ (*
+buf
+, 
+size
+);
+
+475 cÚ¡ * 
+g‘_s¦_lib¿ry_v”siÚ
+();
+
+	@ssl_common.h
+
+30 #iâdeà
+SSL_COMMON_H_
+
+
+31 
+	#SSL_COMMON_H_
+
+
+	)
+
+33 
+	~"£ssiÚ_id.h
+"
+
+34 
+	~"sock‘.h
+"
+
+35 
+	~"·ck‘_id.h
+"
+
+36 
+	~"üy±o.h
+"
+
+37 
+	~"ÝtiÚs.h
+"
+
+39 
+	~"s¦_back’d.h
+"
+
+42 
+	#UP_TYPE_AUTH
+ "Auth"
+
+	)
+
+43 
+	#UP_TYPE_PRIVATE_KEY
+ "Priv©�Key"
+
+	)
+
+78 
+	#S_ERROR
+ -1
+
+	)
+
+79 
+	#S_UNDEF
+ 0
+
+	)
+
+81 
+	#S_INITIAL
+ 1
+
+	)
+
+84 
+	#S_PRE_START
+ 2
+
+	)
+
+87 
+	#S_START
+ 3
+
+	)
+
+89 
+	#S_SENT_KEY
+ 4
+
+	)
+
+91 
+	#S_GOT_KEY
+ 5
+
+	)
+
+94 
+	#S_ACTIVE
+ 6
+
+	)
+
+99 
+	#S_NORMAL_OP
+ 7
+
+	)
+
+109 
+	skey_sourû
+ {
+
+110 
+ušt8_t
+ 
+	m´e_ma¡”
+[48];
+
+113 
+ušt8_t
+ 
+	m¿ndom1
+[32];
+
+116 
+ušt8_t
+ 
+	m¿ndom2
+[32];
+
+126 
+	skey_sourû2
+ {
+
+127 
+key_sourû
+ 
+	mþ›Á
+;
+
+128 
+key_sourû
+ 
+	m£rv”
+;
+
+149 
+	skey_¡©e
+
+
+151 
+	m¡©e
+;
+
+152 
+	mkey_id
+;
+
+154 
+key_¡©e_s¦
+ 
+	mks_s¦
+;
+
+156 
+time_t
+ 
+	me¡ablished
+;
+
+157 
+time_t
+ 
+	mmu¡_ÃgÙŸ‹
+;
+
+158 
+time_t
+ 
+	mmu¡_d›
+;
+
+160 
+	mš™Ÿl_Ýcode
+;
+
+161 
+£ssiÚ_id
+ 
+	m£ssiÚ_id_»mÙe
+;
+
+162 
+lšk_sock‘_aùu®
+ 
+	m»mÙe_addr
+;
+
+163 
+·ck‘_id
+ 
+	m·ck‘_id
+;
+
+165 
+key_ùx_bi
+ 
+	mkey
+;
+
+167 
+key_sourû2
+ *
+	mkey_¤c
+;
+
+169 
+bufãr
+ 
+	m¶aš‹xt_»ad_buf
+;
+
+170 
+bufãr
+ 
+	m¶aš‹xt_wr™e_buf
+;
+
+171 
+bufãr
+ 
+	mack_wr™e_buf
+;
+
+173 
+»lŸbË
+ *
+	m£nd_»lŸbË
+;
+
+174 
+»lŸbË
+ *
+	m»c_»lŸbË
+;
+
+175 
+»lŸbË_ack
+ *
+	m»c_ack
+;
+
+177 
+bufãr_li¡
+ *
+	m·ybuf
+;
+
+179 
+couÁ”_ty³
+ 
+	mn_by‹s
+;
+
+180 
+couÁ”_ty³
+ 
+	mn_·ck‘s
+;
+
+185 
+boÞ
+ 
+	mauth’tiÿ‹d
+;
+
+186 
+time_t
+ 
+	mauth_deã¼ed_expœe
+;
+
+188 #ifdeà
+ENABLE_DEF_AUTH
+
+
+190 
+boÞ
+ 
+	mauth_deã¼ed
+;
+
+191 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+192 
+	mmda_key_id
+;
+
+193 
+	mmda_¡©us
+;
+
+195 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+196 
+	mauth_cÚŒÞ_¡©us
+;
+
+197 
+time_t
+ 
+	macf_Ï¡_mod
+;
+
+198 *
+	mauth_cÚŒÞ_fže
+;
+
+207 
+	sŽs_ÝtiÚs
+
+
+210 
+Žs_roÙ_ùx
+ 
+	ms¦_ùx
+;
+
+213 
+key_ty³
+ 
+	mkey_ty³
+;
+
+216 
+boÞ
+ 
+	m£rv”
+;
+
+219 
+boÞ
+ 
+	mxm™_hÞd
+;
+
+221 #ifdeà
+ENABLE_OCC
+
+
+224 cÚ¡ *
+	mloÿl_ÝtiÚs
+;
+
+225 cÚ¡ *
+	m»mÙe_ÝtiÚs
+;
+
+229 
+	mkey_m‘hod
+;
+
+230 
+boÞ
+ 
+	m»¶ay
+;
+
+231 
+boÞ
+ 
+	msšgË_£ssiÚ
+;
+
+232 #ifdeà
+ENABLE_OCC
+
+
+233 
+boÞ
+ 
+	mdi§bË_occ
+;
+
+235 #ifdeà
+ENABLE_PUSH_PEER_INFO
+
+
+236 
+	mpush_³”_šfo_d‘až
+;
+
+238 
+	mŒªs™iÚ_wšdow
+;
+
+239 
+	mhªdshake_wšdow
+;
+
+240 
+š‹rv®_t
+ 
+	m·ck‘_timeout
+;
+
+241 
+	m»ÃgÙŸ‹_by‹s
+;
+
+242 
+	m»ÃgÙŸ‹_·ck‘s
+;
+
+243 
+š‹rv®_t
+ 
+	m»ÃgÙŸ‹_£cÚds
+;
+
+246 cÚ¡ *
+	mv”ify_commªd
+;
+
+247 cÚ¡ *
+	mv”ify_expÜt_û¹
+;
+
+248 
+	mv”ify_x509_ty³
+;
+
+249 cÚ¡ *
+	mv”ify_x509_Çme
+;
+
+250 cÚ¡ *
+	mül_fže
+;
+
+251 
+	mns_û¹_ty³
+;
+
+252 
+	m»mÙe_û¹_ku
+[
+MAX_PARMS
+];
+
+253 cÚ¡ *
+	m»mÙe_û¹_eku
+;
+
+254 
+ušt8_t
+ *
+	mv”ify_hash
+;
+
+255 *
+	mx509_u£ºame_f›ld
+;
+
+259 
+boÞ
+ 
+	m·ss_cÚfig_šfo
+;
+
+262 
+	müy±o_æags_ªd
+;
+
+263 
+	müy±o_æags_Ü
+;
+
+265 
+	m»¶ay_wšdow
+;
+
+266 
+	m»¶ay_time
+;
+
+267 
+boÞ
+ 
+	mtý_mode
+;
+
+270 
+üy±o_ÝtiÚs
+ 
+	mŽs_auth
+;
+
+271 
+key_ùx_bi
+ 
+	mŽs_auth_key
+;
+
+274 
+äame
+ 
+	mäame
+;
+
+277 cÚ¡ *
+	mauth_u£r_·ss_v”ify_sü�t
+;
+
+278 
+boÞ
+ 
+	mauth_u£r_·ss_v”ify_sü�t_vŸ_fže
+;
+
+279 cÚ¡ *
+	mtmp_dœ
+;
+
+280 cÚ¡ *
+	mauth_u£r_·ss_fže
+;
+
+283 cÚ¡ *
+	mþ›Á_cÚfig_dœ_exþusive
+;
+
+286 
+’v_£t
+ *
+	mes
+;
+
+287 cÚ¡ 
+¶ugš_li¡
+ *
+	m¶ugšs
+;
+
+290 
+	#SSLF_CLIENT_CERT_NOT_REQUIRED
+ (1<<0)
+
+	)
+
+291 
+	#SSLF_USERNAME_AS_COMMON_NAME
+ (1<<1)
+
+	)
+
+292 
+	#SSLF_AUTH_USER_PASS_OPTIONAL
+ (1<<2)
+
+	)
+
+293 
+	#SSLF_OPT_VERIFY
+ (1<<4)
+
+	)
+
+294 
+	#SSLF_CRL_VERIFY_DIR
+ (1<<5)
+
+	)
+
+295 
+	#SSLF_TLS_VERSION_MIN_SHIFT
+ 6
+
+	)
+
+296 
+	#SSLF_TLS_VERSION_MIN_MASK
+ 0xF
+
+	)
+
+297 
+	#SSLF_TLS_VERSION_MAX_SHIFT
+ 10
+
+	)
+
+298 
+	#SSLF_TLS_VERSION_MAX_MASK
+ 0xF
+
+	)
+
+299 
+	ms¦_æags
+;
+
+301 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+302 
+mª_def_auth_cÚ‹xt
+ *
+	mmda_cÚ‹xt
+;
+
+305 #ifdeà
+ENABLE_X509_TRACK
+
+
+306 cÚ¡ 
+x509_Œack
+ *
+	mx509_Œack
+;
+
+309 #ifdeà
+ENABLE_CLIENT_CR
+
+
+310 cÚ¡ 
+¡©ic_ch®Ënge_šfo
+ *
+	msci
+;
+
+314 
+	mg»mlš
+;
+
+324 
+	#KS_PRIMARY
+ 0
+
+	)
+
+325 
+	#KS_LAME_DUCK
+ 1
+
+	)
+
+327 
+	#KS_SIZE
+ 2
+
+	)
+
+348 
+	sŽs_£ssiÚ
+
+
+351 
+Žs_ÝtiÚs
+ *
+	mÝt
+;
+
+354 
+boÞ
+ 
+	mbur¡
+;
+
+357 
+üy±o_ÝtiÚs
+ 
+	mŽs_auth
+;
+
+358 
+·ck‘_id
+ 
+	mŽs_auth_pid
+;
+
+360 
+	mš™Ÿl_Ýcode
+;
+
+361 
+£ssiÚ_id
+ 
+	m£ssiÚ_id
+;
+
+362 
+	mkey_id
+;
+
+364 
+	mlim™_Ãxt
+;
+
+366 
+	mv”ify_maxËv–
+;
+
+368 *
+	mcommÚ_Çme
+;
+
+370 
+û¹_hash_£t
+ *
+	mû¹_hash_£t
+;
+
+372 #ifdeà
+ENABLE_PF
+
+
+373 
+ušt32_t
+ 
+	mcommÚ_Çme_hashv®
+;
+
+376 
+boÞ
+ 
+	mv”if›d
+;
+
+379 
+lšk_sock‘_aùu®
+ 
+	muÁru¡ed_addr
+;
+
+381 
+key_¡©e
+ 
+	mkey
+[
+KS_SIZE
+];
+
+401 
+	#TM_ACTIVE
+ 0
+
+	)
+
+402 
+	#TM_UNTRUSTED
+ 1
+
+	)
+
+404 
+	#TM_LAME_DUCK
+ 2
+
+	)
+
+405 
+	#TM_SIZE
+ 3
+
+	)
+
+421 
+	#KEY_SCAN_SIZE
+ 3
+
+	)
+
+437 
+	sŽs_muÉi
+
+
+443 
+Žs_ÝtiÚs
+ 
+	mÝt
+;
+
+445 
+key_¡©e
+* 
+	mkey_sÿn
+[
+KEY_SCAN_SIZE
+];
+
+454 
+key_¡©e
+ *
+	m§ve_ks
+;
+
+460 
+lšk_sock‘_aùu®
+ 
+	mto_lšk_addr
+;
+
+462 
+	mn_£ssiÚs
+;
+
+468 
+	mn_h¬d_”rÜs
+;
+
+469 
+	mn_soá_”rÜs
+;
+
+474 *
+	mlocked_ú
+;
+
+475 *
+	mlocked_u£ºame
+;
+
+476 
+û¹_hash_£t
+ *
+	mlocked_û¹_hash_£t
+;
+
+478 #ifdeà
+ENABLE_DEF_AUTH
+
+
+482 *
+	mþ›Á_»asÚ
+;
+
+488 *
+	m³”_šfo
+;
+
+491 
+time_t
+ 
+	m�s_Ï¡
+;
+
+495 
+ušt32_t
+ 
+	m³”_id
+;
+
+496 
+boÞ
+ 
+	mu£_³”_id
+;
+
+501 
+Žs_£ssiÚ
+ 
+	m£ssiÚ
+[
+TM_SIZE
+];
+
+508 
+	#SHOW_TLS_CIPHER_LIST_WARNING
+ \
+
+511 "--Žs-c�h”‡nd --show-Ž fÜ mÜ�d‘ažs.\n\n"
+
+	)
+
+	@ssl_openssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_SSL
+è&& defšed(
+ENABLE_CRYPTO_OPENSSL
+)
+
+40 
+	~"”¾ev–.h
+"
+
+41 
+	~"bufãr.h
+"
+
+42 
+	~"misc.h
+"
+
+43 
+	~"mªage.h
+"
+
+44 
+	~"memdbg.h
+"
+
+45 
+	~"s¦_back’d.h
+"
+
+46 
+	~"s¦_commÚ.h
+"
+
+47 
+	~"ba£64.h
+"
+
+49 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+50 
+	~"üy±ßpi.h
+"
+
+53 
+	~"s¦_v”ify_Ý’s¦.h
+"
+
+55 
+	~<Ý’s¦/”r.h
+>
+
+56 
+	~<Ý’s¦/pkcs12.h
+>
+
+57 
+	~<Ý’s¦/x509.h
+>
+
+58 
+	~<Ý’s¦/üy±o.h
+>
+
+66 
+	gmyd©a_šdex
+;
+
+69 
+	$Žs_š™_lib
+()
+
+71 
+	`SSL_lib¿ry_š™
+();
+
+72 #iâdeà
+ENABLE_SMALL
+
+
+73 
+	`SSL_lßd_”rÜ_¡ršgs
+();
+
+75 
+	`O³nSSL_add_®l_®gÜ™hms
+ ();
+
+77 
+myd©a_šdex
+ = 
+	`SSL_g‘_ex_Ãw_šdex
+(0, "¡ruù sessiÚ *", 
+NULL
+, NULL, NULL);
+
+78 
+	`ASSERT
+ (
+myd©a_šdex
+ >= 0);
+
+79 
+	}
+}
+
+82 
+	$Žs_ä“_lib
+()
+
+84 
+	`EVP_þ—nup
+();
+
+85 #iâdeà
+ENABLE_SMALL
+
+
+86 
+	`ERR_ä“_¡ršgs
+();
+
+88 
+	}
+}
+
+91 
+	$Žs_þ—r_”rÜ
+()
+
+93 
+	`ERR_þ—r_”rÜ
+ ();
+
+94 
+	}
+}
+
+100 
+RSA
+ *
+
+101 
+	$tmp_r§_cb
+ (
+SSL
+ * 
+s
+, 
+is_expÜt
+, 
+keyËngth
+)
+
+103 
+RSA
+ *
+r§_tmp
+ = 
+NULL
+;
+
+104 ià(
+r§_tmp
+ =ð
+NULL
+)
+
+106 
+»t
+ = -1;
+
+107 
+BIGNUM
+ *
+bn
+ = 
+	`BN_Ãw
+();
+
+108 
+r§_tmp
+ = 
+	`RSA_Ãw
+();
+
+110 
+	`msg
+ (
+D_HANDSHAKE
+, "G’”©šg�em°(%d b™èRSA key", 
+keyËngth
+);
+
+112 if(!
+bn
+ || !
+	`BN_£t_wÜd
+(bn, 
+RSA_F4
+) ||
+
+113 !
+	`RSA_g’”©e_key_ex
+(
+r§_tmp
+, 
+keyËngth
+, 
+bn
+, 
+NULL
+))
+
+114 
+	`msg
+(
+M_SSLERR
+, "Failed�o generate�emp RSA key");
+
+116 ià(
+bn
+è
+	`BN_ä“
+( bn );
+
+118  (
+r§_tmp
+);
+
+119 
+	}
+}
+
+122 
+	$Žs_ùx_£rv”_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+124 cÚ¡ 
+Žs_v”siÚ_max
+ =
+
+125 (
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MAX_SHIFT
+è& 
+SSLF_TLS_VERSION_MAX_MASK
+;
+
+127 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+129 ià(
+Žs_v”siÚ_max
+ =ð
+TLS_VER_1_0
+)
+
+130 
+ùx
+->ùx = 
+	`SSL_CTX_Ãw
+ (
+	`TLSv1_£rv”_m‘hod
+ ());
+
+132 
+ùx
+->ùx = 
+	`SSL_CTX_Ãw
+ (
+	`SSLv23_£rv”_m‘hod
+ ());
+
+134 ià(
+ùx
+->ùx =ð
+NULL
+)
+
+135 
+	`msg
+ (
+M_SSLERR
+, "SSL_CTX_new SSLv23_server_method");
+
+137 
+	`SSL_CTX_£t_tmp_r§_ÿÎback
+ (
+ùx
+->ùx, 
+tmp_r§_cb
+);
+
+138 
+	}
+}
+
+141 
+	$Žs_ùx_þ›Á_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+143 cÚ¡ 
+Žs_v”siÚ_max
+ =
+
+144 (
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MAX_SHIFT
+è& 
+SSLF_TLS_VERSION_MAX_MASK
+;
+
+146 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+148 ià(
+Žs_v”siÚ_max
+ =ð
+TLS_VER_1_0
+)
+
+149 
+ùx
+->ùx = 
+	`SSL_CTX_Ãw
+ (
+	`TLSv1_þ›Á_m‘hod
+ ());
+
+151 
+ùx
+->ùx = 
+	`SSL_CTX_Ãw
+ (
+	`SSLv23_þ›Á_m‘hod
+ ());
+
+153 ià(
+ùx
+->ùx =ð
+NULL
+)
+
+154 
+	`msg
+ (
+M_SSLERR
+, "SSL_CTX_new SSLv23_client_method");
+
+155 
+	}
+}
+
+158 
+	$Žs_ùx_ä“
+(
+Žs_roÙ_ùx
+ *
+ùx
+)
+
+160 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+161 ià(
+NULL
+ !ð
+ùx
+->ctx)
+
+162 
+	`SSL_CTX_ä“
+ (
+ùx
+->ctx);
+
+163 
+ùx
+->ùx = 
+NULL
+;
+
+164 
+	}
+}
+
+166 
+boÞ
+ 
+	$Žs_ùx_š™Ÿli£d
+(
+Žs_roÙ_ùx
+ *
+ùx
+)
+
+168 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+169  
+NULL
+ !ð
+ùx
+->ctx;
+
+170 
+	}
+}
+
+176 #iâdeà
+INFO_CALLBACK_SSL_CONST
+
+
+177 
+	#INFO_CALLBACK_SSL_CONST
+ cÚ¡
+
+	)
+
+180 
+	$šfo_ÿÎback
+ (
+INFO_CALLBACK_SSL_CONST
+ 
+SSL
+ * 
+s
+, 
+wh”e
+, 
+»t
+)
+
+182 ià(
+wh”e
+ & 
+SSL_CB_LOOP
+)
+
+184 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "SSL state (%s): %s",
+
+185 
+wh”e
+ & 
+SSL_ST_CONNECT
+ ? "connect" :
+
+186 
+wh”e
+ & 
+SSL_ST_ACCEPT
+ ? "accept" :
+
+187 "undefšed", 
+	`SSL_¡©e_¡ršg_lÚg
+ (
+s
+));
+
+189 ià(
+wh”e
+ & 
+SSL_CB_ALERT
+)
+
+191 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "SSL‡lert (%s): %s: %s",
+
+192 
+wh”e
+ & 
+SSL_CB_READ
+ ? "read" : "write",
+
+193 
+	`SSL_®”t_ty³_¡ršg_lÚg
+ (
+»t
+),
+
+194 
+	`SSL_®”t_desc_¡ršg_lÚg
+ (
+»t
+));
+
+196 
+	}
+}
+
+204 
+	$Žs_v”siÚ_max
+()
+
+206 #ià
+	`defšed
+(
+SSL_OP_NO_TLSv1_2
+)
+
+207  
+TLS_VER_1_2
+;
+
+208 #–ià
+	`defšed
+(
+SSL_OP_NO_TLSv1_1
+)
+
+209  
+TLS_VER_1_1
+;
+
+211  
+TLS_VER_1_0
+;
+
+213 
+	}
+}
+
+216 
+	$Žs_ùx_£t_ÝtiÚs
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+218 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+222 
+s¦Ýt
+ = 
+SSL_OP_SINGLE_DH_USE
+ | 
+SSL_OP_NO_TICKET
+ | 
+SSL_OP_NO_SSLv2
+ | 
+SSL_OP_NO_SSLv3
+;
+
+223 cÚ¡ 
+Žs_v”_mš
+ =
+
+224 (
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MIN_SHIFT
+è& 
+SSLF_TLS_VERSION_MIN_MASK
+;
+
+225 
+Žs_v”_max
+ =
+
+226 (
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MAX_SHIFT
+è& 
+SSLF_TLS_VERSION_MAX_MASK
+;
+
+228 ià(
+Žs_v”_max
+ <ð
+TLS_VER_UNSPEC
+)
+
+229 
+Žs_v”_max
+ = 
+	`Žs_v”siÚ_max
+();
+
+231 ià(
+Žs_v”_mš
+ > 
+TLS_VER_1_0
+ || 
+Žs_v”_max
+ < TLS_VER_1_0)
+
+232 
+s¦Ýt
+ |ð
+SSL_OP_NO_TLSv1
+;
+
+233 #ifdeà
+SSL_OP_NO_TLSv1_1
+
+
+234 ià(
+Žs_v”_mš
+ > 
+TLS_VER_1_1
+ || 
+Žs_v”_max
+ < TLS_VER_1_1)
+
+235 
+s¦Ýt
+ |ð
+SSL_OP_NO_TLSv1_1
+;
+
+237 #ifdeà
+SSL_OP_NO_TLSv1_2
+
+
+238 ià(
+Žs_v”_mš
+ > 
+TLS_VER_1_2
+ || 
+Žs_v”_max
+ < TLS_VER_1_2)
+
+239 
+s¦Ýt
+ |ð
+SSL_OP_NO_TLSv1_2
+;
+
+241 #ifdeà
+SSL_OP_NO_COMPRESSION
+
+
+243 
+s¦Ýt
+ |ð
+SSL_OP_NO_COMPRESSION
+;
+
+245 
+	`SSL_CTX_£t_ÝtiÚs
+ (
+ùx
+->ùx, 
+s¦Ýt
+);
+
+248 
+	`SSL_CTX_£t_£ssiÚ_ÿche_mode
+ (
+ùx
+->ùx, 
+SSL_SESS_CACHE_OFF
+);
+
+249 
+	`SSL_CTX_£t_deçuÉ_·sswd_cb
+ (
+ùx
+->ùx, 
+³m_·sswÜd_ÿÎback
+);
+
+252 #ià
+P2MP_SERVER
+
+
+253 ià(
+s¦_æags
+ & 
+SSLF_CLIENT_CERT_NOT_REQUIRED
+)
+
+255 
+	`msg
+ (
+M_WARN
+, "WARNING: POTENTIALLY DANGEROUS OPTION "
+
+261 
+	`SSL_CTX_£t_v”ify
+ (
+ùx
+->ùx, 
+SSL_VERIFY_PEER
+ | 
+SSL_VERIFY_FAIL_IF_NO_PEER_CERT
+,
+
+262 
+v”ify_ÿÎback
+);
+
+264 
+	`SSL_CTX_£t_šfo_ÿÎback
+ (
+ùx
+->ùx, 
+šfo_ÿÎback
+);
+
+265 
+	}
+}
+
+268 
+	$Žs_ùx_»¡riù_c�h”s
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+c�h”s
+)
+
+270 
+size_t
+ 
+begš_of_c�h”
+, 
+’d_of_c�h”
+;
+
+272 cÚ¡ *
+cu¼’t_c�h”
+;
+
+273 
+size_t
+ 
+cu¼’t_c�h”_Ën
+;
+
+275 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ *
+c�h”_·œ
+;
+
+277 
+Ý’s¦_c�h”s
+[4096];
+
+278 
+size_t
+ 
+Ý’s¦_c�h”s_Ën
+ = 0;
+
+279 
+Ý’s¦_c�h”s
+[0] = '\0';
+
+281 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+284 
+begš_of_c�h”
+ = 
+’d_of_c�h”
+ = 0;
+
+285 ; 
+begš_of_c�h”
+ < 
+	`¡¾’
+(
+c�h”s
+); begš_of_c�h” = 
+’d_of_c�h”
+) {
+
+286 
+’d_of_c�h”
+ +ð
+	`¡rc¥n
+(&
+c�h”s
+[
+begš_of_c�h”
+], ":");
+
+287 
+c�h”_·œ
+ = 
+	`Žs_g‘_c�h”_Çme_·œ
+(&
+c�h”s
+[
+begš_of_c�h”
+], 
+’d_of_c�h”
+ - begin_of_cipher);
+
+289 ià(
+NULL
+ =ð
+c�h”_·œ
+)
+
+292 
+cu¼’t_c�h”
+ = &
+c�h”s
+[
+begš_of_c�h”
+];
+
+293 
+cu¼’t_c�h”_Ën
+ = 
+’d_of_c�h”
+ - 
+begš_of_c�h”
+;
+
+298 
+	`msg
+ (
+M_WARN
+, "No valid�ranslation found for TLS cipher '%.*s'",
+
+299 (è
+	`MIN
+(
+cu¼’t_c�h”_Ën
+, 256), 
+cu¼’t_c�h”
+);
+
+304 
+cu¼’t_c�h”
+ = 
+c�h”_·œ
+->
+Ý’s¦_Çme
+;
+
+305 
+cu¼’t_c�h”_Ën
+ = 
+	`¡¾’
+(
+cu¼’t_c�h”
+);
+
+307 ià(
+’d_of_c�h”
+ - 
+begš_of_c�h”
+ =ð
+cu¼’t_c�h”_Ën
+ &&
+
+308 0 =ð
+	`memcmp
+ (&
+c�h”s
+[
+begš_of_c�h”
+], 
+c�h”_·œ
+->
+Ý’s¦_Çme
+, 
+’d_of_c�h”
+ - begin_of_cipher))
+
+311 
+	`msg
+ (
+M_WARN
+, "D•»ÿ‹d TLS c�h”‚am�'%s',…Ëa£ u£ IANA‚am�'%s'", 
+c�h”_·œ
+->
+Ý’s¦_Çme
+, c�h”_·œ->
+ŸÇ_Çme
+);
+
+316 ià((((
+Ý’s¦_c�h”s
+)-1è- 
+Ý’s¦_c�h”s_Ën
+è< 
+cu¼’t_c�h”_Ën
+) {
+
+317 
+	`msg
+(
+M_SSLERR
+, "Fažed�Ø£ˆ»¡riùed TLS c�h”†i¡,�oØlÚg (>%d).", ()(
+Ý’s¦_c�h”s
+)-1);
+
+321 
+	`memýy
+(&
+Ý’s¦_c�h”s
+[
+Ý’s¦_c�h”s_Ën
+], 
+cu¼’t_c�h”
+, 
+cu¼’t_c�h”_Ën
+);
+
+322 
+Ý’s¦_c�h”s_Ën
+ +ð
+cu¼’t_c�h”_Ën
+;
+
+323 
+Ý’s¦_c�h”s
+[
+Ý’s¦_c�h”s_Ën
+] = ':';
+
+324 
+Ý’s¦_c�h”s_Ën
+++;
+
+326 
+’d_of_c�h”
+++;
+
+329 ià(
+Ý’s¦_c�h”s_Ën
+ > 0)
+
+330 
+Ý’s¦_c�h”s
+[
+Ý’s¦_c�h”s_Ën
+-1] = '\0';
+
+333 if(!
+	`SSL_CTX_£t_c�h”_li¡
+(
+ùx
+->ùx, 
+Ý’s¦_c�h”s
+))
+
+334 
+	`msg
+(
+M_SSLERR
+, "Fažed�Ø£ˆ»¡riùed TLS c�h”†i¡: %s", 
+Ý’s¦_c�h”s
+);
+
+335 
+	}
+}
+
+338 
+	$Žs_ùx_lßd_dh_·¿ms
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+dh_fže
+,
+
+339 cÚ¡ *
+dh_fže_šlše
+
+
+342 
+DH
+ *
+dh
+;
+
+343 
+BIO
+ *
+bio
+;
+
+345 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+347 ià(!
+	`¡rcmp
+ (
+dh_fže
+, 
+INLINE_FILE_TAG
+è&& 
+dh_fže_šlše
+)
+
+349 ià(!(
+bio
+ = 
+	`BIO_Ãw_mem_buf
+ ((*)
+dh_fže_šlše
+, -1)))
+
+350 
+	`msg
+ (
+M_SSLERR
+, "Cannot open memory BIO for inline DH…arameters");
+
+355 ià(!(
+bio
+ = 
+	`BIO_Ãw_fže
+ (
+dh_fže
+, "r")))
+
+356 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ o³À% fÜ DH…¬am‘”s", 
+dh_fže
+);
+
+359 
+dh
+ = 
+	`PEM_»ad_bio_DH·¿ms
+ (
+bio
+, 
+NULL
+, NULL, NULL);
+
+360 
+	`BIO_ä“
+ (
+bio
+);
+
+362 ià(!
+dh
+)
+
+363 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ†ßd DH…¬am‘” äom %s", 
+dh_fže
+);
+
+364 ià(!
+	`SSL_CTX_£t_tmp_dh
+ (
+ùx
+->ùx, 
+dh
+))
+
+365 
+	`msg
+ (
+M_SSLERR
+, "SSL_CTX_set_tmp_dh");
+
+367 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "Diffie-Hellman initialized with %d bit key",
+
+368 8 * 
+	`DH_size
+ (
+dh
+));
+
+370 
+	`DH_ä“
+ (
+dh
+);
+
+371 
+	}
+}
+
+374 
+	$Žs_ùx_lßd_pkcs12
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+pkcs12_fže
+,
+
+375 cÚ¡ *
+pkcs12_fže_šlše
+,
+
+376 
+boÞ
+ 
+lßd_ÿ_fže
+
+
+379 
+FILE
+ *
+å
+;
+
+380 
+EVP_PKEY
+ *
+pkey
+;
+
+381 
+X509
+ *
+û¹
+;
+
+382 
+	`STACK_OF
+(
+X509
+è*
+ÿ
+ = 
+NULL
+;
+
+383 
+PKCS12
+ *
+p12
+;
+
+384 
+i
+;
+
+385 
+·sswÜd
+[256];
+
+387 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+389 ià(!
+	`¡rcmp
+ (
+pkcs12_fže
+, 
+INLINE_FILE_TAG
+è&& 
+pkcs12_fže_šlše
+)
+
+391 
+BIO
+ *
+b64
+ = 
+	`BIO_Ãw
+(
+	`BIO_f_ba£64
+());
+
+392 
+BIO
+ *
+bio
+ = 
+	`BIO_Ãw_mem_buf
+((*è
+pkcs12_fže_šlše
+,
+
+393 (è
+	`¡¾’
+(
+pkcs12_fže_šlše
+));
+
+394 
+	`ASSERT
+(
+b64
+ && 
+bio
+);
+
+395 
+	`BIO_push
+(
+b64
+, 
+bio
+);
+
+396 
+p12
+ = 
+	`d2i_PKCS12_bio
+(
+b64
+, 
+NULL
+);
+
+397 ià(!
+p12
+)
+
+398 
+	`msg
+(
+M_SSLERR
+, "Error„eading inline PKCS#12 file");
+
+399 
+	`BIO_ä“
+(
+b64
+);
+
+400 
+	`BIO_ä“
+(
+bio
+);
+
+405 ià(!(
+å
+ = 
+	`¶©fÜm_fÝ’
+(
+pkcs12_fže
+, "rb")))
+
+406 
+	`msg
+(
+M_SSLERR
+, "E¼Ü o³nšg fž�%s", 
+pkcs12_fže
+);
+
+407 
+p12
+ = 
+	`d2i_PKCS12_å
+(
+å
+, 
+NULL
+);
+
+408 
+	`fþo£
+(
+å
+);
+
+409 ià(!
+p12
+)
+
+410 
+	`msg
+(
+M_SSLERR
+, "E¼Ü„—dšg PKCS#12 fž�%s", 
+pkcs12_fže
+);
+
+414 ià(!
+	`PKCS12_·r£
+(
+p12
+, "", &
+pkey
+, &
+û¹
+, &
+ÿ
+))
+
+416 
+	`³m_·sswÜd_ÿÎback
+ (
+·sswÜd
+, ÕasswÜdè- 1, 0, 
+NULL
+);
+
+418 
+ÿ
+ = 
+NULL
+;
+
+419 ià(!
+	`PKCS12_·r£
+(
+p12
+, 
+·sswÜd
+, &
+pkey
+, &
+û¹
+, &
+ÿ
+))
+
+421 #ifdeà
+ENABLE_MANAGEMENT
+
+
+422 ià(
+mªagem’t
+ && (
+	`ERR_GET_REASON
+ (
+	`ERR_³ek_”rÜ
+()è=ð
+PKCS12_R_MAC_VERIFY_FAILURE
+))
+
+423 
+	`mªagem’t_auth_çžu»
+ (
+mªagem’t
+, 
+UP_TYPE_PRIVATE_KEY
+, 
+NULL
+);
+
+425 
+	`PKCS12_ä“
+(
+p12
+);
+
+429 
+	`PKCS12_ä“
+(
+p12
+);
+
+432 ià(!
+	`SSL_CTX_u£_û¹ifiÿ‹
+ (
+ùx
+->ùx, 
+û¹
+))
+
+433 
+	`msg
+ (
+M_SSLERR
+, "Cannot use certificate");
+
+436 ià(!
+	`SSL_CTX_u£_Priv©eKey
+ (
+ùx
+->ùx, 
+pkey
+))
+
+437 
+	`msg
+ (
+M_SSLERR
+, "Cannot use…rivate key");
+
+438 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+pkcs12_fže
+);
+
+441 ià(!
+	`SSL_CTX_check_´iv©e_key
+ (
+ùx
+->ctx))
+
+442 
+	`msg
+ (
+M_SSLERR
+, "Private key does‚ot match�he certificate");
+
+445 ià(
+lßd_ÿ_fže
+)
+
+451 ià(
+ÿ
+ && 
+	`sk_X509_num
+(ca))
+
+453 
+i
+ = 0; i < 
+	`sk_X509_num
+(
+ÿ
+); i++)
+
+455 ià(!
+	`X509_STORE_add_û¹
+(
+ùx
+->ùx->
+û¹_¡Üe
+,
+	`sk_X509_v®ue
+(
+ÿ
+, 
+i
+)))
+
+456 
+	`msg
+ (
+M_SSLERR
+, "Cannot‡dd certificate�o certificate chain (X509_STORE_add_cert)");
+
+457 ià(!
+	`SSL_CTX_add_þ›Á_CA
+(
+ùx
+->ùx, 
+	`sk_X509_v®ue
+(
+ÿ
+, 
+i
+)))
+
+458 
+	`msg
+ (
+M_SSLERR
+, "Cannot‡dd certificate�o client CA†ist (SSL_CTX_add_client_CA)");
+
+467 ià(
+ÿ
+ && 
+	`sk_X509_num
+(ca))
+
+469 
+i
+ = 0; i < 
+	`sk_X509_num
+(
+ÿ
+); i++)
+
+471 ià(!
+	`SSL_CTX_add_exŒa_chaš_û¹
+(
+ùx
+->ùx,
+	`sk_X509_v®ue
+(
+ÿ
+, 
+i
+)))
+
+472 
+	`msg
+ (
+M_SSLERR
+, "Cannot‡ddƒxtra certificate�o chain (SSL_CTX_add_extra_chain_cert)");
+
+477 
+	}
+}
+
+479 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+481 
+	$Žs_ùx_lßd_üy±ßpi
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+üy±ßpi_û¹
+)
+
+483 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+486 ià(!
+	`SSL_CTX_u£_Cry±oAPI_û¹ifiÿ‹
+ (
+ùx
+->ùx, 
+üy±ßpi_û¹
+))
+
+487 
+	`msg
+ (
+M_SSLERR
+, "Cannot†oad certificate \"%s\" from Microsoft Certificate Store",
+
+488 
+üy±ßpi_û¹
+);
+
+489 
+	}
+}
+
+493 
+	$Žs_ùx_add_exŒa_û¹s
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, 
+BIO
+ *
+bio
+)
+
+495 
+X509
+ *
+û¹
+;
+
+498 
+û¹
+ = 
+NULL
+;
+
+499 ià(!
+	`PEM_»ad_bio_X509
+ (
+bio
+, &
+û¹
+, 0, 
+NULL
+))
+
+501 ià(!
+û¹
+)
+
+502 
+	`msg
+ (
+M_SSLERR
+, "Error„eadingƒxtra certificate");
+
+503 ià(
+	`SSL_CTX_add_exŒa_chaš_û¹
+(
+ùx
+->ùx, 
+û¹
+) != 1)
+
+504 
+	`msg
+ (
+M_SSLERR
+, "Error‡ddingƒxtra certificate");
+
+506 
+	}
+}
+
+510 
+	$Žs_ùx_lßd_û¹_fže_ªd_cÝy
+ (
+Žs_roÙ_ùx
+ *
+ùx
+,
+
+511 cÚ¡ *
+û¹_fže
+, cÚ¡ *
+û¹_fže_šlše
+, 
+X509
+ **
+x509
+
+
+514 
+BIO
+ *
+š
+ = 
+NULL
+;
+
+515 
+X509
+ *
+x
+ = 
+NULL
+;
+
+516 
+»t
+ = 0;
+
+517 
+boÞ
+ 
+šlše_fže
+ = 
+çl£
+;
+
+519 
+	`ASSERT
+ (
+NULL
+ !ð
+ùx
+);
+
+520 ià(
+NULL
+ !ð
+x509
+)
+
+521 
+	`ASSERT
+ (
+NULL
+ =ð*
+x509
+);
+
+523 
+šlše_fže
+ = (
+	`¡rcmp
+ (
+û¹_fže
+, 
+INLINE_FILE_TAG
+) == 0);
+
+525 ià(
+šlše_fže
+ && 
+û¹_fže_šlše
+)
+
+526 
+š
+ = 
+	`BIO_Ãw_mem_buf
+ ((*)
+û¹_fže_šlše
+, -1);
+
+528 
+š
+ = 
+	`BIO_Ãw_fže
+ (
+û¹_fže
+, "r");
+
+530 ià(
+š
+ =ð
+NULL
+)
+
+532 
+	`SSL”r
+ (
+SSL_F_SSL_CTX_USE_CERTIFICATE_FILE
+, 
+ERR_R_SYS_LIB
+);
+
+533 
+’d
+;
+
+536 
+x
+ = 
+	`PEM_»ad_bio_X509
+ (
+š
+, 
+NULL
+, 
+ùx
+->ùx->
+deçuÉ_·sswd_ÿÎback
+,
+
+537 
+ùx
+->ùx->
+deçuÉ_·sswd_ÿÎback_u£rd©a
+);
+
+538 ià(
+x
+ =ð
+NULL
+)
+
+540 
+	`SSL”r
+ (
+SSL_F_SSL_CTX_USE_CERTIFICATE_FILE
+, 
+ERR_R_PEM_LIB
+);
+
+541 
+’d
+;
+
+544 
+»t
+ = 
+	`SSL_CTX_u£_û¹ifiÿ‹
+ (
+ùx
+->ùx, 
+x
+);
+
+545 ià(
+»t
+)
+
+546 
+	`Žs_ùx_add_exŒa_û¹s
+ (
+ùx
+, 
+š
+);
+
+548 
+’d
+:
+
+549 ià(!
+»t
+)
+
+551 ià(
+šlše_fže
+)
+
+552 
+	`msg
+ (
+M_SSLERR
+, "Cannot†oad inline certificate file");
+
+554 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ†ßd c”tifiÿ‹ fž�%s", 
+û¹_fže
+);
+
+557 ià(
+š
+ !ð
+NULL
+)
+
+558 
+	`BIO_ä“
+(
+š
+);
+
+559 ià(
+x509
+)
+
+560 *
+x509
+ = 
+x
+;
+
+561 ià(
+x
+)
+
+562 
+	`X509_ä“
+ (
+x
+);
+
+563 
+	}
+}
+
+566 
+	$Žs_ùx_lßd_û¹_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+û¹_fže
+,
+
+567 cÚ¡ *
+û¹_fže_šlše
+)
+
+569 
+	`Žs_ùx_lßd_û¹_fže_ªd_cÝy
+ (
+ùx
+, 
+û¹_fže
+, 
+û¹_fže_šlše
+, 
+NULL
+);
+
+570 
+	}
+}
+
+573 
+	$Žs_ùx_ä“_û¹_fže
+ (
+X509
+ *
+x509
+)
+
+575 
+	`X509_ä“
+(
+x509
+);
+
+576 
+	}
+}
+
+579 
+	$Žs_ùx_lßd_´iv_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+´iv_key_fže
+,
+
+580 cÚ¡ *
+´iv_key_fže_šlše
+
+
+583 
+¡©us
+;
+
+584 
+SSL_CTX
+ *
+s¦_ùx
+ = 
+NULL
+;
+
+585 
+BIO
+ *
+š
+ = 
+NULL
+;
+
+586 
+EVP_PKEY
+ *
+pkey
+ = 
+NULL
+;
+
+587 
+»t
+ = 1;
+
+589 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+591 
+s¦_ùx
+ = 
+ùx
+->ctx;
+
+593 ià(!
+	`¡rcmp
+ (
+´iv_key_fže
+, 
+INLINE_FILE_TAG
+è&& 
+´iv_key_fže_šlše
+)
+
+594 
+š
+ = 
+	`BIO_Ãw_mem_buf
+ ((*)
+´iv_key_fže_šlše
+, -1);
+
+596 
+š
+ = 
+	`BIO_Ãw_fže
+ (
+´iv_key_fže
+, "r");
+
+598 ià(!
+š
+)
+
+599 
+’d
+;
+
+601 
+pkey
+ = 
+	`PEM_»ad_bio_Priv©eKey
+ (
+š
+, 
+NULL
+,
+
+602 
+s¦_ùx
+->
+deçuÉ_·sswd_ÿÎback
+,
+
+603 
+s¦_ùx
+->
+deçuÉ_·sswd_ÿÎback_u£rd©a
+);
+
+604 ià(!
+pkey
+)
+
+605 
+’d
+;
+
+607 ià(!
+	`SSL_CTX_u£_Priv©eKey
+ (
+s¦_ùx
+, 
+pkey
+))
+
+609 #ifdeà
+ENABLE_MANAGEMENT
+
+
+610 ià(
+mªagem’t
+ && (
+	`ERR_GET_REASON
+ (
+	`ERR_³ek_”rÜ
+()è=ð
+EVP_R_BAD_DECRYPT
+))
+
+611 
+	`mªagem’t_auth_çžu»
+ (
+mªagem’t
+, 
+UP_TYPE_PRIVATE_KEY
+, 
+NULL
+);
+
+613 
+	`msg
+ (
+M_WARN
+|
+M_SSL
+, "CªnÙ†ßd…riv©�key fž�%s", 
+´iv_key_fže
+);
+
+614 
+’d
+;
+
+616 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+´iv_key_fže
+);
+
+619 ià(!
+	`SSL_CTX_check_´iv©e_key
+ (
+s¦_ùx
+))
+
+620 
+	`msg
+ (
+M_SSLERR
+, "Private key does‚ot match�he certificate");
+
+621 
+»t
+ = 0;
+
+623 
+’d
+:
+
+624 ià(
+pkey
+)
+
+625 
+	`EVP_PKEY_ä“
+ (
+pkey
+);
+
+626 ià(
+š
+)
+
+627 
+	`BIO_ä“
+ (
+š
+);
+
+628  
+»t
+;
+
+629 
+	}
+}
+
+631 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+635 
+	$r§_pub_’c
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+637 
+	`ASSERT
+(0);
+
+639 
+	}
+}
+
+643 
+	$r§_pub_dec
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+645 
+	`ASSERT
+(0);
+
+647 
+	}
+}
+
+651 
+	$r§_´iv_dec
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+653 
+	`ASSERT
+(0);
+
+655 
+	}
+}
+
+659 
+	$r§_fšish
+(
+RSA
+ *
+r§
+)
+
+661 
+	`ä“
+ ((*)
+r§
+->
+m‘h
+);
+
+662 
+r§
+->
+m‘h
+ = 
+NULL
+;
+
+664 
+	}
+}
+
+668 
+	$r§_´iv_’c
+(
+æ’
+, cÚ¡ *
+äom
+, *
+to
+, 
+RSA
+ *
+r§
+, 
+·ddšg
+)
+
+671 *
+š_b64
+ = 
+NULL
+;
+
+672 *
+out_b64
+ = 
+NULL
+;
+
+673 
+»t
+ = -1;
+
+674 
+Ën
+;
+
+676 ià(
+·ddšg
+ !ð
+RSA_PKCS1_PADDING
+)
+
+678 
+	`RSA”r
+ (
+RSA_F_RSA_EAY_PRIVATE_ENCRYPT
+, 
+RSA_R_UNKNOWN_PADDING_TYPE
+);
+
+679 
+dÚe
+;
+
+683 ià(
+	`Ý’v²_ba£64_’code
+ (
+äom
+, 
+æ’
+, &
+š_b64
+) <= 0)
+
+684 
+dÚe
+;
+
+687 ià(
+mªagem’t
+)
+
+688 
+out_b64
+ = 
+	`mªagem’t_qu”y_r§_sig
+ (
+mªagem’t
+, 
+š_b64
+);
+
+689 ià(!
+out_b64
+)
+
+690 
+dÚe
+;
+
+693 
+Ën
+ = 
+	`RSA_size
+(
+r§
+);
+
+694 
+»t
+ = 
+	`Ý’v²_ba£64_decode
+ (
+out_b64
+, 
+to
+, 
+Ën
+);
+
+697 ià(
+»t
+ !ð
+Ën
+)
+
+698 
+»t
+ = -1;
+
+700 
+dÚe
+:
+
+701 ià(
+š_b64
+)
+
+702 
+	`ä“
+ (
+š_b64
+);
+
+703 ià(
+out_b64
+)
+
+704 
+	`ä“
+ (
+out_b64
+);
+
+705  
+»t
+;
+
+706 
+	}
+}
+
+709 
+	$Žs_ùx_u£_ex‹º®_´iv©e_key
+ (
+Žs_roÙ_ùx
+ *
+ùx
+,
+
+710 cÚ¡ *
+û¹_fže
+, cÚ¡ *
+û¹_fže_šlše
+)
+
+712 
+RSA
+ *
+r§
+ = 
+NULL
+;
+
+713 
+RSA
+ *
+pub_r§
+;
+
+714 
+RSA_METHOD
+ *
+r§_m‘h
+;
+
+715 
+X509
+ *
+û¹
+ = 
+NULL
+;
+
+717 
+	`ASSERT
+ (
+NULL
+ !ð
+ùx
+);
+
+718 
+	`ASSERT
+ (
+NULL
+ !ð
+û¹
+);
+
+720 
+	`Žs_ùx_lßd_û¹_fže_ªd_cÝy
+ (
+ùx
+, 
+û¹_fže
+, 
+û¹_fže_šlše
+, &
+û¹
+);
+
+723 
+	`ALLOC_OBJ_CLEAR
+ (
+r§_m‘h
+, 
+RSA_METHOD
+);
+
+724 
+r§_m‘h
+->
+Çme
+ = "OpenVPNƒxternal…rivate key RSA Method";
+
+725 
+r§_m‘h
+->
+r§_pub_’c
+ =„sa_pub_enc;
+
+726 
+r§_m‘h
+->
+r§_pub_dec
+ =„sa_pub_dec;
+
+727 
+r§_m‘h
+->
+r§_´iv_’c
+ =„sa_priv_enc;
+
+728 
+r§_m‘h
+->
+r§_´iv_dec
+ =„sa_priv_dec;
+
+729 
+r§_m‘h
+->
+š™
+ = 
+NULL
+;
+
+730 
+r§_m‘h
+->
+fšish
+ = 
+r§_fšish
+;
+
+731 
+r§_m‘h
+->
+æags
+ = 
+RSA_METHOD_FLAG_NO_CHECK
+;
+
+732 
+r§_m‘h
+->
+­p_d©a
+ = 
+NULL
+;
+
+735 
+r§
+ = 
+	`RSA_Ãw
+();
+
+736 ià(
+r§
+ =ð
+NULL
+)
+
+738 
+	`SSL”r
+(
+SSL_F_SSL_USE_PRIVATEKEY
+, 
+ERR_R_MALLOC_FAILURE
+);
+
+739 
+”r
+;
+
+743 
+	`ASSERT
+(
+û¹
+->
+û¹_šfo
+->
+key
+->
+pkey
+);
+
+744 
+pub_r§
+ = 
+û¹
+->
+û¹_šfo
+->
+key
+->
+pkey
+->pkey.
+r§
+;
+
+747 
+r§
+->
+n
+ = 
+	`BN_dup
+(
+pub_r§
+->n);
+
+748 
+r§
+->
+æags
+ |ð
+RSA_FLAG_EXT_PKEY
+;
+
+749 ià(!
+	`RSA_£t_m‘hod
+(
+r§
+, 
+r§_m‘h
+))
+
+750 
+”r
+;
+
+753 ià(!
+	`SSL_CTX_u£_RSAPriv©eKey
+(
+ùx
+->ùx, 
+r§
+))
+
+754 
+”r
+;
+
+756 
+	`X509_ä“
+(
+û¹
+);
+
+757 
+	`RSA_ä“
+(
+r§
+);
+
+760 
+”r
+:
+
+761 ià(
+û¹
+)
+
+762 
+	`X509_ä“
+(
+û¹
+);
+
+763 ià(
+r§
+)
+
+764 
+	`RSA_ä“
+(
+r§
+);
+
+767 ià(
+r§_m‘h
+)
+
+768 
+	`ä“
+(
+r§_m‘h
+);
+
+770 
+	`msg
+ (
+M_SSLERR
+, "Cannotƒnable SSLƒxternal…rivate key capability");
+
+772 
+	}
+}
+
+777 
+	$sk_x509_Çme_cmp
+(cÚ¡ 
+X509_NAME
+ * cÚ¡ *
+a
+, cÚ¡ X509_NAME * cÚ¡ *
+b
+)
+
+779  
+	`X509_NAME_cmp
+ (*
+a
+, *
+b
+);
+
+780 
+	}
+}
+
+783 
+	$Žs_ùx_lßd_ÿ
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+ÿ_fže
+,
+
+784 cÚ¡ *
+ÿ_fže_šlše
+,
+
+785 cÚ¡ *
+ÿ_·th
+, 
+boÞ
+ 
+Žs_£rv”
+
+
+788 
+	`STACK_OF
+(
+X509_INFO
+è*
+šfo_¡ack
+ = 
+NULL
+;
+
+789 
+	`STACK_OF
+(
+X509_NAME
+è*
+û¹_Çmes
+ = 
+NULL
+;
+
+790 
+X509_LOOKUP
+ *
+lookup
+ = 
+NULL
+;
+
+791 
+X509_STORE
+ *
+¡Üe
+ = 
+NULL
+;
+
+792 
+X509_NAME
+ *
+xn
+ = 
+NULL
+;
+
+793 
+BIO
+ *
+š
+ = 
+NULL
+;
+
+794 
+i
+, 
+added
+ = 0, 
+´ev
+ = 0;
+
+796 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+798 
+¡Üe
+ = 
+	`SSL_CTX_g‘_û¹_¡Üe
+(
+ùx
+->ctx);
+
+799 ià(!
+¡Üe
+)
+
+800 
+	`msg
+(
+M_SSLERR
+, "Cannot get certificate store (SSL_CTX_get_cert_store)");
+
+803 ià(
+ÿ_fže
+)
+
+805 ià(!
+	`¡rcmp
+ (
+ÿ_fže
+, 
+INLINE_FILE_TAG
+è&& 
+ÿ_fže_šlše
+)
+
+806 
+š
+ = 
+	`BIO_Ãw_mem_buf
+ ((*)
+ÿ_fže_šlše
+, -1);
+
+808 
+š
+ = 
+	`BIO_Ãw_fže
+ (
+ÿ_fže
+, "r");
+
+810 ià(
+š
+)
+
+811 
+šfo_¡ack
+ = 
+	`PEM_X509_INFO_»ad_bio
+ (
+š
+, 
+NULL
+, NULL, NULL);
+
+813 ià(
+šfo_¡ack
+)
+
+815 
+i
+ = 0; i < 
+	`sk_X509_INFO_num
+ (
+šfo_¡ack
+); i++)
+
+817 
+X509_INFO
+ *
+šfo
+ = 
+	`sk_X509_INFO_v®ue
+ (
+šfo_¡ack
+, 
+i
+);
+
+818 ià(
+šfo
+->
+ül
+)
+
+819 
+	`X509_STORE_add_ül
+ (
+¡Üe
+, 
+šfo
+->
+ül
+);
+
+821 ià(
+Žs_£rv”
+ && !
+šfo
+->
+x509
+)
+
+823 
+	`msg
+ (
+M_SSLERR
+, "X509‚ame was missing in TLS mode");
+
+826 ià(
+šfo
+->
+x509
+)
+
+828 
+	`X509_STORE_add_û¹
+ (
+¡Üe
+, 
+šfo
+->
+x509
+);
+
+829 
+added
+++;
+
+831 ià(!
+Žs_£rv”
+)
+
+835 ià(
+û¹_Çmes
+ =ð
+NULL
+)
+
+837 
+û¹_Çmes
+ = 
+	`sk_X509_NAME_Ãw
+ (
+sk_x509_Çme_cmp
+);
+
+838 ià(!
+û¹_Çmes
+)
+
+842 
+xn
+ = 
+	`X509_g‘_subjeù_Çme
+ (
+šfo
+->
+x509
+);
+
+843 ià(!
+xn
+)
+
+847 ià(
+	`sk_X509_NAME_fšd
+ (
+û¹_Çmes
+, 
+xn
+) == -1)
+
+849 
+xn
+ = 
+	`X509_NAME_dup
+ (xn);
+
+850 ià(!
+xn
+)
+
+852 
+	`sk_X509_NAME_push
+ (
+û¹_Çmes
+, 
+xn
+);
+
+856 ià(
+Žs_£rv”
+) {
+
+857 
+úum
+ = 
+	`sk_X509_NAME_num
+ (
+û¹_Çmes
+);
+
+858 ià(
+úum
+ !ð(
+´ev
+ + 1)) {
+
+859 
+	`msg
+ (
+M_WARN
+, "CªnÙ†ßd CA c”tifiÿ‹ fž�% ÓÁry %d did‚Ù v®id©e)", 
+	`Å
+(
+ÿ_fže
+), 
+added
+);
+
+861 
+´ev
+ = 
+úum
+;
+
+865 
+	`sk_X509_INFO_pÝ_ä“
+ (
+šfo_¡ack
+, 
+X509_INFO_ä“
+);
+
+868 ià(
+Žs_£rv”
+)
+
+869 
+	`SSL_CTX_£t_þ›Á_CA_li¡
+ (
+ùx
+->ùx, 
+û¹_Çmes
+);
+
+871 ià(!
+added
+)
+
+872 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ†ßd CA c”tifiÿ‹ fž�% ÒØ’Œ› w”�»ad)", 
+	`Å
+(
+ÿ_fže
+));
+
+874 ià(
+Žs_£rv”
+) {
+
+875 
+úum
+ = 
+	`sk_X509_NAME_num
+ (
+û¹_Çmes
+);
+
+876 ià(
+úum
+ !ð
+added
+)
+
+877 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ†ßd CA c”tifiÿ‹ fž�% (Úly %d oà%dƒÁr› w”�v®id X509‚ames)", 
+	`Å
+(
+ÿ_fže
+), 
+úum
+, 
+added
+);
+
+880 ià(
+š
+)
+
+881 
+	`BIO_ä“
+ (
+š
+);
+
+885 ià(
+ÿ_·th
+)
+
+887 
+lookup
+ = 
+	`X509_STORE_add_lookup
+ (
+¡Üe
+, 
+	`X509_LOOKUP_hash_dœ
+ ());
+
+888 ià(
+lookup
+ && 
+	`X509_LOOKUP_add_dœ
+ (lookup, 
+ÿ_·th
+, 
+X509_FILETYPE_PEM
+))
+
+889 
+	`msg
+(
+M_WARN
+, "WARNING:ƒx³rim’�ÈÝtiÚ --ÿ·th %s", 
+ÿ_·th
+);
+
+891 
+	`msg
+(
+M_SSLERR
+, "CªnÙ‡dd†ooku°© --ÿ·th %s", 
+ÿ_·th
+);
+
+892 #ià
+OPENSSL_VERSION_NUMBER
+ >= 0x00907000L
+
+893 
+	`X509_STORE_£t_æags
+ (
+¡Üe
+, 
+X509_V_FLAG_CRL_CHECK
+ | 
+X509_V_FLAG_CRL_CHECK_ALL
+);
+
+895 
+	`msg
+(
+M_WARN
+, "WARNING:�his version of OpenSSL cannot handle CRL files in capath");
+
+898 
+	}
+}
+
+901 
+	$Žs_ùx_lßd_exŒa_û¹s
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+exŒa_û¹s_fže
+,
+
+902 cÚ¡ *
+exŒa_û¹s_fže_šlše
+
+
+905 
+BIO
+ *
+š
+;
+
+906 ià(!
+	`¡rcmp
+ (
+exŒa_û¹s_fže
+, 
+INLINE_FILE_TAG
+è&& 
+exŒa_û¹s_fže_šlše
+)
+
+907 
+š
+ = 
+	`BIO_Ãw_mem_buf
+ ((*)
+exŒa_û¹s_fže_šlše
+, -1);
+
+909 
+š
+ = 
+	`BIO_Ãw_fže
+ (
+exŒa_û¹s_fže
+, "r");
+
+911 ià(
+š
+ =ð
+NULL
+)
+
+912 
+	`msg
+ (
+M_SSLERR
+, "CªnÙ†ßdƒxŒa-û¹ fže: %s", 
+exŒa_û¹s_fže
+);
+
+914 
+	`Žs_ùx_add_exŒa_û¹s
+ (
+ùx
+, 
+š
+);
+
+916 
+	`BIO_ä“
+ (
+š
+);
+
+917 
+	}
+}
+
+930 #ifdeà
+BIO_DEBUG
+
+
+932 #w¬nšg 
+BIO_DEBUG
+ 
+defšed
+
+
+934 
+FILE
+ *
+	gbioå
+;
+
+935 
+boÞ
+ 
+	gbioå_toggË
+;
+
+936 
+time_t
+ 
+	gbioå_Ï¡_Ý’
+;
+
+937 cÚ¡ 
+	gbioå_»Ý’_š‹rv®
+ = 600;
+
+940 
+	$þo£_bioå
+()
+
+942 ià(
+bioå
+)
+
+944 
+	`ASSERT
+ (!
+	`fþo£
+ (
+bioå
+));
+
+945 
+bioå
+ = 
+NULL
+;
+
+947 
+	}
+}
+
+950 
+	$Ý’_bioå
+()
+
+952 cÚ¡ 
+time_t
+ 
+cu¼’t
+ = 
+	`time
+ (
+NULL
+);
+
+953 cÚ¡ 
+pid_t
+ 
+pid
+ = 
+	`g‘pid
+ ();
+
+955 ià(
+bioå_Ï¡_Ý’
+ + 
+bioå_»Ý’_š‹rv®
+ < 
+cu¼’t
+)
+
+956 
+	`þo£_bioå
+();
+
+957 ià(!
+bioå
+)
+
+959 
+â
+[256];
+
+960 
+	`Ý’v²_¢´štf
+(
+â
+, (â), "bio/%d-%d.log", 
+pid
+, 
+bioå_toggË
+);
+
+961 
+bioå
+ = 
+	`fÝ’
+ (
+â
+, "w");
+
+962 
+	`ASSERT
+ (
+bioå
+);
+
+963 
+bioå_Ï¡_Ý’
+ = 
+	`time
+ (
+NULL
+);
+
+964 
+bioå_toggË
+ ^= 1;
+
+966 
+	}
+}
+
+969 
+	$bio_debug_d©a
+ (cÚ¡ *
+mode
+, 
+BIO
+ *
+bio
+, cÚ¡ 
+ušt8_t
+ *
+buf
+, 
+Ën
+, cÚ¡ *
+desc
+)
+
+971 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+972 ià(
+Ën
+ > 0)
+
+974 
+	`Ý’_bioå
+();
+
+975 
+	`årštf
+(
+bioå
+, "BIO_% % time=" 
+time_fÜm©
+ " bio=" 
+±r_fÜm©
+ "†en=%d data=%s\n",
+
+976 
+mode
+, 
+desc
+, 
+	`time
+ (
+NULL
+), (
+±r_ty³
+)
+bio
+, 
+Ën
+, 
+	`fÜm©_hex
+ (
+buf
+,†’, 0, &
+gc
+));
+
+977 
+	`fæush
+ (
+bioå
+);
+
+979 
+	`gc_ä“
+ (&
+gc
+);
+
+980 
+	}
+}
+
+983 
+	$bio_debug_oc
+ (cÚ¡ *
+mode
+, 
+BIO
+ *
+bio
+)
+
+985 
+	`Ý’_bioå
+();
+
+986 
+	`årštf
+(
+bioå
+, "BIO % time=" 
+time_fÜm©
+ " bio=" 
+±r_fÜm©
+ "\n",
+
+987 
+mode
+, 
+	`time
+ (
+NULL
+), (
+±r_ty³
+)
+bio
+);
+
+988 
+	`fæush
+ (
+bioå
+);
+
+989 
+	}
+}
+
+998 
+BIO
+ *
+
+999 
+	$g‘bio
+ (
+BIO_METHOD
+ * 
+ty³
+, cÚ¡ *
+desc
+)
+
+1001 
+BIO
+ *
+»t
+;
+
+1002 
+»t
+ = 
+	`BIO_Ãw
+ (
+ty³
+);
+
+1003 ià(!
+»t
+)
+
+1004 
+	`msg
+ (
+M_SSLERR
+, "E¼Ü c»©šg % BIO", 
+desc
+);
+
+1005  
+»t
+;
+
+1006 
+	}
+}
+
+1012 
+	$bio_wr™e
+ (
+BIO
+ *
+bio
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+size
+, cÚ¡ *
+desc
+)
+
+1014 
+i
+;
+
+1015 
+»t
+ = 0;
+
+1016 
+	`ASSERT
+ (
+size
+ >= 0);
+
+1017 ià(
+size
+)
+
+1025 #ifdeà
+BIO_DEBUG
+
+
+1026 
+	`bio_debug_d©a
+ ("wr™e", 
+bio
+, 
+d©a
+, 
+size
+, 
+desc
+);
+
+1028 
+i
+ = 
+	`BIO_wr™e
+ (
+bio
+, 
+d©a
+, 
+size
+);
+
+1030 ià(
+i
+ < 0)
+
+1032 ià(
+	`BIO_should_»Œy
+ (
+bio
+))
+
+1038 
+	`msg
+ (
+D_TLS_ERRORS
+ | 
+M_SSL
+, "TLS ERROR: BIO write %sƒrror",
+
+1039 
+desc
+);
+
+1040 
+»t
+ = -1;
+
+1041 
+	`ERR_þ—r_”rÜ
+ ();
+
+1044 ià(
+i
+ !ð
+size
+)
+
+1046 
+	`msg
+ (
+D_TLS_ERRORS
+ | 
+M_SSL
+,
+
+1047 "TLS ERROR: BIO wr™�% šcom¶‘�%d/%d", 
+desc
+, 
+i
+, 
+size
+);
+
+1048 
+»t
+ = -1;
+
+1049 
+	`ERR_þ—r_”rÜ
+ ();
+
+1053 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "BIO wr™�% %d by‹s", 
+desc
+, 
+i
+);
+
+1054 
+»t
+ = 1;
+
+1057  
+»t
+;
+
+1058 
+	}
+}
+
+1066 
+	$bio_wr™e_po¡
+ (cÚ¡ 
+¡©us
+, 
+bufãr
+ *
+buf
+)
+
+1068 ià(
+¡©us
+ == 1)
+
+1070 
+	`mem£t
+ (
+	`BPTR
+ (
+buf
+), 0, 
+	`BLEN
+ (buf));
+
+1071 
+buf
+->
+Ën
+ = 0;
+
+1073 
+	}
+}
+
+1079 
+	$bio_»ad
+ (
+BIO
+ *
+bio
+, 
+bufãr
+ *
+buf
+, 
+maxËn
+, cÚ¡ *
+desc
+)
+
+1081 
+i
+;
+
+1082 
+»t
+ = 0;
+
+1083 
+	`ASSERT
+ (
+buf
+->
+Ën
+ >= 0);
+
+1084 ià(
+buf
+->
+Ën
+)
+
+1090 
+Ën
+ = 
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+);
+
+1091 ià(
+maxËn
+ < 
+Ën
+)
+
+1092 
+Ën
+ = 
+maxËn
+;
+
+1098 
+i
+ = 
+	`BIO_»ad
+ (
+bio
+, 
+	`BPTR
+ (
+buf
+), 
+Ën
+);
+
+1100 
+	`VALGRIND_MAKE_READABLE
+ ((*è&
+i
+,  (i));
+
+1102 #ifdeà
+BIO_DEBUG
+
+
+1103 
+	`bio_debug_d©a
+ ("»ad", 
+bio
+, 
+	`BPTR
+ (
+buf
+), 
+i
+, 
+desc
+);
+
+1105 ià(
+i
+ < 0)
+
+1107 ià(
+	`BIO_should_»Œy
+ (
+bio
+))
+
+1113 
+	`msg
+ (
+D_TLS_ERRORS
+ | 
+M_SSL
+, "TLS_ERROR: BIO„ead %sƒrror",
+
+1114 
+desc
+);
+
+1115 
+buf
+->
+Ën
+ = 0;
+
+1116 
+»t
+ = -1;
+
+1117 
+	`ERR_þ—r_”rÜ
+ ();
+
+1120 ià(!
+i
+)
+
+1122 
+buf
+->
+Ën
+ = 0;
+
+1126 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "BIO„—d % %d by‹s", 
+desc
+, 
+i
+);
+
+1127 
+buf
+->
+Ën
+ = 
+i
+;
+
+1128 
+»t
+ = 1;
+
+1129 
+	`VALGRIND_MAKE_READABLE
+ ((*è
+	`BPTR
+ (
+buf
+), 
+	`BLEN
+ (buf));
+
+1132  
+»t
+;
+
+1133 
+	}
+}
+
+1136 
+	$key_¡©e_s¦_š™
+(
+key_¡©e_s¦
+ *
+ks_s¦
+, cÚ¡ 
+Žs_roÙ_ùx
+ *
+s¦_ùx
+, 
+boÞ
+ 
+is_£rv”
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1138 
+	`ASSERT
+(
+NULL
+ !ð
+s¦_ùx
+);
+
+1139 
+	`ASSERT
+(
+ks_s¦
+);
+
+1140 
+	`CLEAR
+ (*
+ks_s¦
+);
+
+1142 
+ks_s¦
+->
+s¦
+ = 
+	`SSL_Ãw
+ (
+s¦_ùx
+->
+ùx
+);
+
+1143 ià(!
+ks_s¦
+->
+s¦
+)
+
+1144 
+	`msg
+ (
+M_SSLERR
+, "SSL_new failed");
+
+1148 
+	`SSL_£t_ex_d©a
+ (
+ks_s¦
+->
+s¦
+, 
+myd©a_šdex
+, 
+£ssiÚ
+);
+
+1150 
+ks_s¦
+->
+s¦_bio
+ = 
+	`g‘bio
+ (
+	`BIO_f_s¦
+ (), "ssl_bio");
+
+1151 
+ks_s¦
+->
+ù_š
+ = 
+	`g‘bio
+ (
+	`BIO_s_mem
+ (), "ct_in");
+
+1152 
+ks_s¦
+->
+ù_out
+ = 
+	`g‘bio
+ (
+	`BIO_s_mem
+ (), "ct_out");
+
+1154 #ifdeà
+BIO_DEBUG
+
+
+1155 
+	`bio_debug_oc
+ ("Ý’ s¦_bio", 
+ks_s¦
+->
+s¦_bio
+);
+
+1156 
+	`bio_debug_oc
+ ("Ý’ ct_š", 
+ks_s¦
+->
+ù_š
+);
+
+1157 
+	`bio_debug_oc
+ ("Ý’ ct_out", 
+ks_s¦
+->
+ù_out
+);
+
+1160 ià(
+is_£rv”
+)
+
+1161 
+	`SSL_£t_acû±_¡©e
+ (
+ks_s¦
+->
+s¦
+);
+
+1163 
+	`SSL_£t_cÚÃù_¡©e
+ (
+ks_s¦
+->
+s¦
+);
+
+1165 
+	`SSL_£t_bio
+ (
+ks_s¦
+->
+s¦
+, ks_s¦->
+ù_š
+, ks_s¦->
+ù_out
+);
+
+1166 
+	`BIO_£t_s¦
+ (
+ks_s¦
+->
+s¦_bio
+, ks_s¦->
+s¦
+, 
+BIO_NOCLOSE
+);
+
+1167 
+	}
+}
+
+1169 
+	$key_¡©e_s¦_ä“
+(
+key_¡©e_s¦
+ *
+ks_s¦
+)
+
+1171 ià(
+ks_s¦
+->
+s¦
+) {
+
+1172 #ifdeà
+BIO_DEBUG
+
+
+1173 
+	`bio_debug_oc
+ ("þo£ s¦_bio", 
+ks_s¦
+->
+s¦_bio
+);
+
+1174 
+	`bio_debug_oc
+ ("þo£ ct_š", 
+ks_s¦
+->
+ù_š
+);
+
+1175 
+	`bio_debug_oc
+ ("þo£ ct_out", 
+ks_s¦
+->
+ù_out
+);
+
+1177 
+	`BIO_ä“_®l
+(
+ks_s¦
+->
+s¦_bio
+);
+
+1178 
+	`SSL_ä“
+ (
+ks_s¦
+->
+s¦
+);
+
+1180 
+	}
+}
+
+1183 
+	$key_¡©e_wr™e_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+)
+
+1185 
+»t
+ = 0;
+
+1186 
+	`³rf_push
+ (
+PERF_BIO_WRITE_PLAINTEXT
+);
+
+1188 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+1189 
+	`ASSERT
+ (
+NULL
+ !ð
+ks_s¦
+);
+
+1191 
+»t
+ = 
+	`bio_wr™e
+ (
+ks_s¦
+->
+s¦_bio
+, 
+	`BPTR
+(
+buf
+), 
+	`BLEN
+(buf),
+
+1193 
+	`bio_wr™e_po¡
+ (
+»t
+, 
+buf
+);
+
+1196 
+	`³rf_pÝ
+ ();
+
+1197  
+»t
+;
+
+1198 
+	}
+}
+
+1201 
+	$key_¡©e_wr™e_¶aš‹xt_cÚ¡
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+Ën
+)
+
+1203 
+»t
+ = 0;
+
+1204 
+	`³rf_push
+ (
+PERF_BIO_WRITE_PLAINTEXT
+);
+
+1206 
+	`ASSERT
+ (
+NULL
+ !ð
+ks_s¦
+);
+
+1208 
+»t
+ = 
+	`bio_wr™e
+ (
+ks_s¦
+->
+s¦_bio
+, 
+d©a
+, 
+Ën
+, "tls_write_plaintext_const");
+
+1210 
+	`³rf_pÝ
+ ();
+
+1211  
+»t
+;
+
+1212 
+	}
+}
+
+1215 
+	$key_¡©e_»ad_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+,
+
+1216 
+maxËn
+)
+
+1218 
+»t
+ = 0;
+
+1219 
+	`³rf_push
+ (
+PERF_BIO_READ_CIPHERTEXT
+);
+
+1221 
+	`ASSERT
+ (
+NULL
+ !ð
+ks_s¦
+);
+
+1223 
+»t
+ = 
+	`bio_»ad
+ (
+ks_s¦
+->
+ù_out
+, 
+buf
+, 
+maxËn
+, "tls_read_ciphertext");
+
+1225 
+	`³rf_pÝ
+ ();
+
+1226  
+»t
+;
+
+1227 
+	}
+}
+
+1230 
+	$key_¡©e_wr™e_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+)
+
+1232 
+»t
+ = 0;
+
+1233 
+	`³rf_push
+ (
+PERF_BIO_WRITE_CIPHERTEXT
+);
+
+1235 
+	`ASSERT
+ (
+NULL
+ !ð
+ks_s¦
+);
+
+1237 
+»t
+ = 
+	`bio_wr™e
+ (
+ks_s¦
+->
+ù_š
+, 
+	`BPTR
+(
+buf
+), 
+	`BLEN
+(buf), "tls_write_ciphertext");
+
+1238 
+	`bio_wr™e_po¡
+ (
+»t
+, 
+buf
+);
+
+1240 
+	`³rf_pÝ
+ ();
+
+1241  
+»t
+;
+
+1242 
+	}
+}
+
+1245 
+	$key_¡©e_»ad_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks_s¦
+, 
+bufãr
+ *
+buf
+,
+
+1246 
+maxËn
+)
+
+1248 
+»t
+ = 0;
+
+1249 
+	`³rf_push
+ (
+PERF_BIO_READ_PLAINTEXT
+);
+
+1251 
+	`ASSERT
+ (
+NULL
+ !ð
+ks_s¦
+);
+
+1253 
+»t
+ = 
+	`bio_»ad
+ (
+ks_s¦
+->
+s¦_bio
+, 
+buf
+, 
+maxËn
+, "tls_read_plaintext");
+
+1255 
+	`³rf_pÝ
+ ();
+
+1256  
+»t
+;
+
+1257 
+	}
+}
+
+1267 
+	$´št_d‘ažs
+ (
+key_¡©e_s¦
+ * 
+ks_s¦
+, cÚ¡ *
+´efix
+)
+
+1269 cÚ¡ 
+SSL_CIPHER
+ *
+c�h
+;
+
+1270 
+X509
+ *
+û¹
+;
+
+1271 
+s1
+[256];
+
+1272 
+s2
+[256];
+
+1274 
+s1
+[0] = 
+s2
+[0] = 0;
+
+1275 
+c�h
+ = 
+	`SSL_g‘_cu¼’t_c�h”
+ (
+ks_s¦
+->
+s¦
+);
+
+1276 
+	`Ý’v²_¢´štf
+ (
+s1
+,  (s1), "%s %s, cipher %s %s",
+
+1277 
+´efix
+,
+
+1278 
+	`SSL_g‘_v”siÚ
+ (
+ks_s¦
+->
+s¦
+),
+
+1279 
+	`SSL_CIPHER_g‘_v”siÚ
+ (
+c�h
+),
+
+1280 
+	`SSL_CIPHER_g‘_Çme
+ (
+c�h
+));
+
+1281 
+û¹
+ = 
+	`SSL_g‘_³”_û¹ifiÿ‹
+ (
+ks_s¦
+->
+s¦
+);
+
+1282 ià(
+û¹
+ !ð
+NULL
+)
+
+1284 
+EVP_PKEY
+ *
+pkey
+ = 
+	`X509_g‘_pubkey
+ (
+û¹
+);
+
+1285 ià(
+pkey
+ !ð
+NULL
+)
+
+1287 ià(
+pkey
+->
+ty³
+ =ð
+EVP_PKEY_RSA
+ &&…key->pkey.
+r§
+ !ð
+NULL
+
+
+1288 && 
+pkey
+->pkey.
+r§
+->
+n
+ !ð
+NULL
+)
+
+1290 
+	`Ý’v²_¢´štf
+ (
+s2
+,  (s2), ", %d bit RSA",
+
+1291 
+	`BN_num_b™s
+ (
+pkey
+->pkey.
+r§
+->
+n
+));
+
+1293 ià(
+pkey
+->
+ty³
+ =ð
+EVP_PKEY_DSA
+ &&…key->pkey.
+d§
+ !ð
+NULL
+
+
+1294 && 
+pkey
+->pkey.
+d§
+->
+p
+ !ð
+NULL
+)
+
+1296 
+	`Ý’v²_¢´štf
+ (
+s2
+,  (s2), ", %d bit DSA",
+
+1297 
+	`BN_num_b™s
+ (
+pkey
+->pkey.
+d§
+->
+p
+));
+
+1299 
+	`EVP_PKEY_ä“
+ (
+pkey
+);
+
+1301 
+	`X509_ä“
+ (
+û¹
+);
+
+1305 
+	`msg
+ (
+D_HANDSHAKE
+, "%s%s", 
+s1
+, 
+s2
+);
+
+1306 
+	}
+}
+
+1309 
+	$show_avažabË_Žs_c�h”s
+ (cÚ¡ *
+c�h”_li¡
+)
+
+1311 
+Žs_roÙ_ùx
+ 
+Žs_ùx
+;
+
+1312 
+SSL
+ *
+s¦
+;
+
+1313 cÚ¡ *
+c�h”_Çme
+;
+
+1314 cÚ¡ *
+´št_Çme
+;
+
+1315 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ *
+·œ
+;
+
+1316 
+´iÜ™y
+ = 0;
+
+1318 
+Žs_ùx
+.
+ùx
+ = 
+	`SSL_CTX_Ãw
+ (
+	`SSLv23_m‘hod
+ ());
+
+1319 ià(!
+Žs_ùx
+.
+ùx
+)
+
+1320 
+	`msg
+ (
+M_SSLERR
+, "Cannot create SSL_CTX object");
+
+1322 
+s¦
+ = 
+	`SSL_Ãw
+ (
+Žs_ùx
+.
+ùx
+);
+
+1323 ià(!
+s¦
+)
+
+1324 
+	`msg
+ (
+M_SSLERR
+, "Cannot create SSL object");
+
+1326 ià(
+c�h”_li¡
+)
+
+1327 
+	`Žs_ùx_»¡riù_c�h”s
+(&
+Žs_ùx
+, 
+c�h”_li¡
+);
+
+1329 
+	`´štf
+ ("Available TLS Ciphers,\n");
+
+1330 
+	`´štf
+ ("listed in order of…reference:\n\n");
+
+1331 (
+c�h”_Çme
+ = 
+	`SSL_g‘_c�h”_li¡
+ (
+s¦
+, 
+´iÜ™y
+++)))
+
+1333 
+·œ
+ = 
+	`Žs_g‘_c�h”_Çme_·œ
+(
+c�h”_Çme
+, 
+	`¡¾’
+(cipher_name));
+
+1335 ià(
+NULL
+ =ð
+·œ
+) {
+
+1337 
+	`´štf
+ ("% (NØIANA‚am�knowÀtØO³nVPN, u£ O³nSSL‚ame.)\n", 
+c�h”_Çme
+);
+
+1339 
+	`´štf
+ ("%s\n", 
+·œ
+->
+ŸÇ_Çme
+);
+
+1343 
+	`´štf
+ ("\n" 
+SHOW_TLS_CIPHER_LIST_WARNING
+);
+
+1345 
+	`SSL_ä“
+ (
+s¦
+);
+
+1346 
+	`SSL_CTX_ä“
+ (
+Žs_ùx
+.
+ùx
+);
+
+1347 
+	}
+}
+
+1350 
+	$g‘_highe¡_´eã»nû_Žs_c�h”
+ (*
+buf
+, 
+size
+)
+
+1352 
+SSL_CTX
+ *
+ùx
+;
+
+1353 
+SSL
+ *
+s¦
+;
+
+1354 cÚ¡ *
+c�h”_Çme
+;
+
+1356 
+ùx
+ = 
+	`SSL_CTX_Ãw
+ (
+	`SSLv23_m‘hod
+ ());
+
+1357 ià(!
+ùx
+)
+
+1358 
+	`msg
+ (
+M_SSLERR
+, "Cannot create SSL_CTX object");
+
+1359 
+s¦
+ = 
+	`SSL_Ãw
+ (
+ùx
+);
+
+1360 ià(!
+s¦
+)
+
+1361 
+	`msg
+ (
+M_SSLERR
+, "Cannot create SSL object");
+
+1363 
+c�h”_Çme
+ = 
+	`SSL_g‘_c�h”_li¡
+ (
+s¦
+, 0);
+
+1364 
+	`¡ºýyÁ
+ (
+buf
+, 
+c�h”_Çme
+, 
+size
+);
+
+1366 
+	`SSL_ä“
+ (
+s¦
+);
+
+1367 
+	`SSL_CTX_ä“
+ (
+ùx
+);
+
+1368 
+	}
+}
+
+1371 
+	$g‘_s¦_lib¿ry_v”siÚ
+()
+
+1373  
+	`SSL—y_v”siÚ
+(
+SSLEAY_VERSION
+);
+
+1374 
+	}
+}
+
+	@ssl_openssl.h
+
+30 #iâdeà
+SSL_OPENSSL_H_
+
+
+31 
+	#SSL_OPENSSL_H_
+
+
+	)
+
+33 
+	~<Ý’s¦/s¦.h
+>
+
+42 #iâdeà
+SSL_OP_NO_TICKET
+
+
+43 
+	#SSL_OP_NO_TICKET
+ 0
+
+	)
+
+51 
+	sŽs_roÙ_ùx
+ {
+
+52 
+SSL_CTX
+ *
+	mùx
+;
+
+55 
+	skey_¡©e_s¦
+ {
+
+56 
+SSL
+ *
+	ms¦
+;
+
+57 
+BIO
+ *
+	ms¦_bio
+;
+
+58 
+BIO
+ *
+	mù_š
+;
+
+59 
+BIO
+ *
+	mù_out
+;
+
+66 

+myd©a_šdex
+;
+
+68 
+Ý’s¦_£t_myd©a_šdex
+ ();
+
+	@ssl_polarssl.c
+
+31 #ifdeà
+HAVE_CONFIG_H
+
+
+32 
+	~"cÚfig.h
+"
+
+33 #–ià
+defšed
+(
+_MSC_VER
+)
+
+34 
+	~"cÚfig-msvc.h
+"
+
+37 
+	~"sysh—d.h
+"
+
+39 #ià
+defšed
+(
+ENABLE_SSL
+è&& defšed(
+ENABLE_CRYPTO_POLARSSL
+)
+
+41 
+	~"”¾ev–.h
+"
+
+42 
+	~"s¦_back’d.h
+"
+
+43 
+	~"ba£64.h
+"
+
+44 
+	~"bufãr.h
+"
+
+45 
+	~"misc.h
+"
+
+46 
+	~"mªage.h
+"
+
+47 
+	~"s¦_commÚ.h
+"
+
+49 
+	~<pÞ¬s¦/sha2.h
+>
+
+50 
+	~<pÞ¬s¦/havege.h
+>
+
+52 
+	~"s¦_v”ify_pÞ¬s¦.h
+"
+
+53 
+	~<pÞ¬s¦/”rÜ.h
+>
+
+54 
+	~<pÞ¬s¦/³m.h
+>
+
+55 
+	~<pÞ¬s¦/v”siÚ.h
+>
+
+58 
+	$Žs_š™_lib
+()
+
+60 
+	}
+}
+
+63 
+	$Žs_ä“_lib
+()
+
+65 
+	}
+}
+
+68 
+	$Žs_þ—r_”rÜ
+()
+
+70 
+	}
+}
+
+73 
+	$Žs_ùx_£rv”_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+75 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+76 
+	`CLEAR
+(*
+ùx
+);
+
+78 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+dhm_ùx
+, 
+dhm_cÚ‹xt
+);
+
+79 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+´iv_key
+, 
+r§_cÚ‹xt
+);
+
+81 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+ÿ_chaš
+, 
+x509_û¹
+);
+
+82 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+üt_chaš
+, 
+x509_û¹
+);
+
+85 
+ùx
+->
+’dpošt
+ = 
+SSL_IS_SERVER
+;
+
+86 
+ùx
+->
+š™Ÿli£d
+ = 
+Œue
+;
+
+87 
+	}
+}
+
+90 
+	$Žs_ùx_þ›Á_Ãw
+(
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+92 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+93 
+	`CLEAR
+(*
+ùx
+);
+
+95 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+dhm_ùx
+, 
+dhm_cÚ‹xt
+);
+
+96 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+´iv_key
+, 
+r§_cÚ‹xt
+);
+
+98 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+ÿ_chaš
+, 
+x509_û¹
+);
+
+99 
+	`ALLOC_OBJ_CLEAR
+(
+ùx
+->
+üt_chaš
+, 
+x509_û¹
+);
+
+101 
+ùx
+->
+’dpošt
+ = 
+SSL_IS_CLIENT
+;
+
+102 
+ùx
+->
+š™Ÿli£d
+ = 
+Œue
+;
+
+103 
+	}
+}
+
+106 
+	$Žs_ùx_ä“
+(
+Žs_roÙ_ùx
+ *
+ùx
+)
+
+108 ià(
+ùx
+)
+
+110 
+	`r§_ä“
+(
+ùx
+->
+´iv_key
+);
+
+111 
+	`ä“
+(
+ùx
+->
+´iv_key
+);
+
+113 
+	`x509_ä“
+(
+ùx
+->
+ÿ_chaš
+);
+
+114 
+	`ä“
+(
+ùx
+->
+ÿ_chaš
+);
+
+116 
+	`x509_ä“
+(
+ùx
+->
+üt_chaš
+);
+
+117 
+	`ä“
+(
+ùx
+->
+üt_chaš
+);
+
+119 
+	`dhm_ä“
+(
+ùx
+->
+dhm_ùx
+);
+
+120 
+	`ä“
+(
+ùx
+->
+dhm_ùx
+);
+
+122 #ià
+	`defšed
+(
+ENABLE_PKCS11
+)
+
+123 ià(
+ùx
+->
+´iv_key_pkcs11
+ !ð
+NULL
+) {
+
+124 
+	`pkcs11_´iv_key_ä“
+(
+ùx
+->
+´iv_key_pkcs11
+);
+
+125 
+	`ä“
+(
+ùx
+->
+´iv_key_pkcs11
+);
+
+128 #ià
+	`defšed
+(
+MANAGMENT_EXTERNAL_KEY
+)
+
+129 ià(
+ùx
+->
+ex‹º®_key
+ !ð
+NULL
+)
+
+130 
+	`ä“
+(
+ùx
+->
+ex‹º®_key
+);
+
+133 ià(
+ùx
+->
+®lowed_c�h”s
+)
+
+134 
+	`ä“
+(
+ùx
+->
+®lowed_c�h”s
+);
+
+136 
+	`CLEAR
+(*
+ùx
+);
+
+138 
+ùx
+->
+š™Ÿli£d
+ = 
+çl£
+;
+
+141 
+	}
+}
+
+143 
+boÞ
+
+
+144 
+	$Žs_ùx_š™Ÿli£d
+(
+Žs_roÙ_ùx
+ *
+ùx
+)
+
+146 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+147  
+ùx
+->
+š™Ÿli£d
+;
+
+148 
+	}
+}
+
+151 
+	$Žs_ùx_£t_ÝtiÚs
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, 
+s¦_æags
+)
+
+153 
+	}
+}
+
+156 
+	$Žs_Œª¦©e_c�h”_Çme
+ (cÚ¡ * 
+c�h”_Çme
+) {
+
+157 cÚ¡ 
+Žs_c�h”_Çme_·œ
+ * 
+·œ
+ = 
+	`Žs_g‘_c�h”_Çme_·œ
+(
+c�h”_Çme
+, 
+	`¡¾’
+(cipher_name));
+
+159 ià(
+NULL
+ =ð
+·œ
+)
+
+162  
+c�h”_Çme
+;
+
+165 ià(0 !ð
+	`¡rcmp
+(
+c�h”_Çme
+, 
+·œ
+->
+ŸÇ_Çme
+))
+
+168 
+	`msg
+(
+M_WARN
+, "D•»ÿ‹d c�h” su™�Çm�'%s',…Ëa£ u£ IANA‚am�'%s'", 
+·œ
+->
+Ý’s¦_Çme
+,…aœ->
+ŸÇ_Çme
+);
+
+171  
+·œ
+->
+ŸÇ_Çme
+;
+
+172 
+	}
+}
+
+175 
+	$Žs_ùx_»¡riù_c�h”s
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+c�h”s
+)
+
+177 *
+tmp_c�h”s
+, *
+tmp_c�h”s_Üig
+, *
+tok’
+;
+
+178 
+i
+, 
+c�h”_couÁ
+;
+
+179 
+c�h”s_Ën
+ = 
+	`¡¾’
+ (
+c�h”s
+);
+
+181 
+	`ASSERT
+ (
+NULL
+ !ð
+ùx
+);
+
+182 
+	`ASSERT
+ (0 !ð
+c�h”s_Ën
+);
+
+185 
+i
+ = 0, 
+c�h”_couÁ
+ = 1; i < 
+c�h”s_Ën
+; i++)
+
+186 ià(
+c�h”s
+[
+i
+] == ':')
+
+187 
+c�h”_couÁ
+++;
+
+190 
+	`ALLOC_ARRAY_CLEAR
+(
+ùx
+->
+®lowed_c�h”s
+, , 
+c�h”_couÁ
++1)
+
+193 
+i
+ = 0;
+
+194 
+tmp_c�h”s_Üig
+ = 
+tmp_c�h”s
+ = 
+	`¡rdup
+(
+c�h”s
+);
+
+196 
+tok’
+ = 
+	`¡¹ok
+ (
+tmp_c�h”s
+, ":");
+
+197 
+tok’
+)
+
+199 
+ùx
+->
+®lowed_c�h”s
+[
+i
+] = 
+	`s¦_g‘_c�h”su™e_id
+ (
+
+200 
+	`Žs_Œª¦©e_c�h”_Çme
+ (
+tok’
+));
+
+201 ià(0 !ð
+ùx
+->
+®lowed_c�h”s
+[
+i
+])
+
+202 
+i
+++;
+
+203 
+tok’
+ = 
+	`¡¹ok
+ (
+NULL
+, ":");
+
+205 
+	`ä“
+(
+tmp_c�h”s_Üig
+);
+
+206 
+	}
+}
+
+209 
+	$Žs_ùx_lßd_dh_·¿ms
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+dh_fže
+,
+
+210 cÚ¡ *
+dh_šlše
+
+
+213 ià(!
+	`¡rcmp
+ (
+dh_fže
+, 
+INLINE_FILE_TAG
+è&& 
+dh_šlše
+)
+
+215 ià(0 !ð
+	`x509·r£_dhm
+(
+ùx
+->
+dhm_ùx
+, (cÚ¡ *è
+dh_šlše
+,
+
+216 
+	`¡¾’
+(
+dh_šlše
+)))
+
+217 
+	`msg
+ (
+M_FATAL
+, "Cannot„ead inline DH…arameters");
+
+221 ià(0 !ð
+	`x509·r£_dhmfže
+(
+ùx
+->
+dhm_ùx
+, 
+dh_fže
+))
+
+222 
+	`msg
+ (
+M_FATAL
+, "CªnÙ„—d DH…¬am‘” äom fž�%s", 
+dh_fže
+);
+
+225 
+	`msg
+ (
+D_TLS_DEBUG_LOW
+, "Diff›-H–lmª in™Ÿlized w™h " 
+couÁ”_fÜm©
+ " bit key",
+
+226 (
+couÁ”_ty³
+è8 * 
+	`mpi_size
+(&
+ùx
+->
+dhm_ùx
+->
+P
+));
+
+227 
+	}
+}
+
+230 
+	$Žs_ùx_lßd_pkcs12
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+pkcs12_fže
+,
+
+231 cÚ¡ *
+pkcs12_fže_šlše
+,
+
+232 
+boÞ
+ 
+lßd_ÿ_fže
+
+
+235 
+	`msg
+(
+M_FATAL
+, "PKCS #12 files‚ot yet supported for PolarSSL.");
+
+237 
+	}
+}
+
+239 #ifdeà
+ENABLE_CRYPTOAPI
+
+
+241 
+	$Žs_ùx_lßd_üy±ßpi
+(
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+üy±ßpi_û¹
+)
+
+243 
+	`msg
+(
+M_FATAL
+, "Windows CryptoAPI‚ot yet supported for PolarSSL.");
+
+244 
+	}
+}
+
+248 
+	$Žs_ùx_lßd_û¹_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+û¹_fže
+,
+
+249 cÚ¡ *
+û¹_šlše
+
+
+252 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+254 ià(!
+	`¡rcmp
+ (
+û¹_fže
+, 
+INLINE_FILE_TAG
+è&& 
+û¹_šlše
+)
+
+256 ià(0 !ð
+	`x509·r£_üt
+(
+ùx
+->
+üt_chaš
+,
+
+257 (cÚ¡ *è
+û¹_šlše
+, 
+	`¡¾’
+(cert_inline)))
+
+258 
+	`msg
+ (
+M_FATAL
+, "Cannot†oad inline certificate file");
+
+262 ià(0 !ð
+	`x509·r£_ütfže
+(
+ùx
+->
+üt_chaš
+, 
+û¹_fže
+))
+
+263 
+	`msg
+ (
+M_FATAL
+, "CªnÙ†ßd c”tifiÿ‹ fž�%s", 
+û¹_fže
+);
+
+265 
+	}
+}
+
+268 
+	$Žs_ùx_lßd_´iv_fže
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+´iv_key_fže
+,
+
+269 cÚ¡ *
+´iv_key_šlše
+
+
+272 
+¡©us
+;
+
+273 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+275 ià(!
+	`¡rcmp
+ (
+´iv_key_fže
+, 
+INLINE_FILE_TAG
+è&& 
+´iv_key_šlše
+)
+
+277 
+¡©us
+ = 
+	`x509·r£_key
+(
+ùx
+->
+´iv_key
+,
+
+278 (cÚ¡ *è
+´iv_key_šlše
+, 
+	`¡¾’
+(priv_key_inline),
+
+279 
+NULL
+, 0);
+
+280 ià(
+POLARSSL_ERR_X509_PASSWORD_REQUIRED
+ =ð
+¡©us
+)
+
+282 
+·ssbuf
+[512] = {0};
+
+283 
+	`³m_·sswÜd_ÿÎback
+(
+·ssbuf
+, 512, 0, 
+NULL
+);
+
+284 
+¡©us
+ = 
+	`x509·r£_key
+(
+ùx
+->
+´iv_key
+,
+
+285 (cÚ¡ *è
+´iv_key_šlše
+, 
+	`¡¾’
+(priv_key_inline),
+
+286 (cÚ¡ *è
+·ssbuf
+, 
+	`¡¾’
+(passbuf));
+
+291 
+¡©us
+ = 
+	`x509·r£_keyfže
+(
+ùx
+->
+´iv_key
+, 
+´iv_key_fže
+, 
+NULL
+);
+
+292 ià(
+POLARSSL_ERR_X509_PASSWORD_REQUIRED
+ =ð
+¡©us
+)
+
+294 
+·ssbuf
+[512] = {0};
+
+295 
+	`³m_·sswÜd_ÿÎback
+(
+·ssbuf
+, 512, 0, 
+NULL
+);
+
+296 
+¡©us
+ = 
+	`x509·r£_keyfže
+(
+ùx
+->
+´iv_key
+, 
+´iv_key_fže
+, 
+·ssbuf
+);
+
+299 ià(0 !ð
+¡©us
+)
+
+301 #ifdeà
+ENABLE_MANAGEMENT
+
+
+302 ià(
+mªagem’t
+ && (
+POLARSSL_ERR_X509_PASSWORD_MISMATCH
+ =ð
+¡©us
+))
+
+303 
+	`mªagem’t_auth_çžu»
+ (
+mªagem’t
+, 
+UP_TYPE_PRIVATE_KEY
+, 
+NULL
+);
+
+305 
+	`msg
+ (
+M_WARN
+, "CªnÙ†ßd…riv©�key fž�%s", 
+´iv_key_fže
+);
+
+309 
+	`w¬n_if_group_Ùh”s_acûssibË
+ (
+´iv_key_fže
+);
+
+313 ià(!
+	`SSL_CTX_check_´iv©e_key
+ (
+ùx
+))
+
+314 
+	`msg
+ (
+M_SSLERR
+, "Private key does‚ot match�he certificate");
+
+317 
+	}
+}
+
+319 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+322 
+	sex‹º®_cÚ‹xt
+ {
+
+323 
+size_t
+ 
+	msigÇtu»_Ëngth
+;
+
+327 
+	$Žs_ùx_u£_ex‹º®_´iv©e_key
+ (
+Žs_roÙ_ùx
+ *
+ùx
+,
+
+328 cÚ¡ *
+û¹_fže
+, cÚ¡ *
+û¹_fže_šlše
+)
+
+330 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+332 
+	`Žs_ùx_lßd_û¹_fže
+(
+ùx
+, 
+û¹_fže
+, 
+û¹_fže_šlše
+);
+
+334 ià(
+ùx
+->
+üt_chaš
+ =ð
+NULL
+)
+
+338 
+	`ALLOC_OBJ_CLEAR
+ (
+ùx
+->
+ex‹º®_key
+, 
+ex‹º®_cÚ‹xt
+);
+
+339 
+ùx
+->
+ex‹º®_key
+->
+sigÇtu»_Ëngth
+ = ctx->
+üt_chaš
+->
+r§
+.
+Ën
+;
+
+342 
+	}
+}
+
+344 
+šlše
+ 
+	$ex‹º®_pkcs1_sign
+Ð*
+ùx_void±r
+,
+
+345 (*
+f_ºg
+)(*, *, 
+size_t
+), *
+p_ºg
+, 
+mode
+,
+
+346 
+hash_id
+, 
+hashËn
+, cÚ¡ *
+hash
+,
+
+347 *
+sig
+ )
+
+349 
+ex‹º®_cÚ‹xt
+ * cÚ¡ 
+ùx
+ = 
+ùx_void±r
+;
+
+350 *
+š_b64
+ = 
+NULL
+;
+
+351 *
+out_b64
+ = 
+NULL
+;
+
+352 
+rv
+;
+
+353 * cÚ¡ 
+p
+ = 
+sig
+;
+
+354 
+size_t
+ 
+a¢_Ën
+;
+
+356 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+358 ià(
+RSA_PRIVATE
+ !ð
+mode
+)
+
+360 
+rv
+ = 
+POLARSSL_ERR_RSA_BAD_INPUT_DATA
+;
+
+361 
+dÚe
+;
+
+370  
+hash_id
+ )
+
+372 
+SIG_RSA_RAW
+:
+
+373 
+a¢_Ën
+ = 0;
+
+374 
+	`memýy
+Ð
+p
+, 
+hash
+, 
+hashËn
+ );
+
+377 
+SIG_RSA_MD2
+:
+
+378 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_MDX
+);
+
+379 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_MDX
+, 
+a¢_Ën
+ );
+
+380 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+381 
+p
+[13] = 2; ;
+
+383 
+SIG_RSA_MD4
+:
+
+384 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_MDX
+);
+
+385 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_MDX
+, 
+a¢_Ën
+ );
+
+386 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+387 
+p
+[13] = 4; ;
+
+389 
+SIG_RSA_MD5
+:
+
+390 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_MDX
+);
+
+391 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_MDX
+, 
+a¢_Ën
+ );
+
+392 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+393 
+p
+[13] = 5; ;
+
+395 
+SIG_RSA_SHA1
+:
+
+396 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_SHA1
+);
+
+397 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_SHA1
+, 
+a¢_Ën
+ );
+
+398 
+	`memýy
+Ð
+p
+ + 15, 
+hash
+, 
+hashËn
+ );
+
+401 
+SIG_RSA_SHA224
+:
+
+402 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_SHA2X
+);
+
+403 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_SHA2X
+, 
+a¢_Ën
+ );
+
+404 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+405 
+p
+[1] +ð
+hashËn
+;…[14] = 4;…[18] += hashlen; ;
+
+407 
+SIG_RSA_SHA256
+:
+
+408 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_SHA2X
+);
+
+409 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_SHA2X
+, 
+a¢_Ën
+ );
+
+410 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+411 
+p
+[1] +ð
+hashËn
+;…[14] = 1;…[18] += hashlen; ;
+
+413 
+SIG_RSA_SHA384
+:
+
+414 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_SHA2X
+);
+
+415 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_SHA2X
+, 
+a¢_Ën
+ );
+
+416 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+417 
+p
+[1] +ð
+hashËn
+;…[14] = 2;…[18] += hashlen; ;
+
+419 
+SIG_RSA_SHA512
+:
+
+420 
+a¢_Ën
+ = 
+	`OID_SIZE
+(
+ASN1_HASH_SHA2X
+);
+
+421 
+	`memýy
+Ð
+p
+, 
+ASN1_HASH_SHA2X
+, 
+a¢_Ën
+ );
+
+422 
+	`memýy
+Ð
+p
+ + 
+a¢_Ën
+, 
+hash
+, 
+hashËn
+ );
+
+423 
+p
+[1] +ð
+hashËn
+;…[14] = 3;…[18] += hashlen; ;
+
+427 
+rv
+ = 
+POLARSSL_ERR_RSA_BAD_INPUT_DATA
+;
+
+428 
+dÚe
+;
+
+432 ià(
+	`Ý’v²_ba£64_’code
+ (
+sig
+, 
+a¢_Ën
+ + 
+hashËn
+, &
+š_b64
+) <= 0)
+
+434 
+rv
+ = 
+POLARSSL_ERR_RSA_BAD_INPUT_DATA
+;
+
+435 
+dÚe
+;
+
+439 ià(
+mªagem’t
+)
+
+440 
+out_b64
+ = 
+	`mªagem’t_qu”y_r§_sig
+ (
+mªagem’t
+, 
+š_b64
+);
+
+441 ià(!
+out_b64
+)
+
+443 
+rv
+ = 
+POLARSSL_ERR_RSA_PRIVATE_FAILED
+;
+
+444 
+dÚe
+;
+
+448 iàÐ
+	`Ý’v²_ba£64_decode
+ (
+out_b64
+, 
+sig
+, 
+ùx
+->
+sigÇtu»_Ëngth
+) !=
+
+449 
+ùx
+->
+sigÇtu»_Ëngth
+ )
+
+451 
+rv
+ = 
+POLARSSL_ERR_RSA_PRIVATE_FAILED
+;
+
+452 
+dÚe
+;
+
+455 
+rv
+ = 0;
+
+457 
+dÚe
+:
+
+458 ià(
+š_b64
+)
+
+459 
+	`ä“
+ (
+š_b64
+);
+
+460 ià(
+out_b64
+)
+
+461 
+	`ä“
+ (
+out_b64
+);
+
+462  
+rv
+;
+
+463 
+	}
+}
+
+465 
+šlše
+ 
+size_t
+ 
+	$ex‹º®_key_Ën
+(*
+vùx
+)
+
+467 
+ex‹º®_cÚ‹xt
+ * cÚ¡ 
+ùx
+ = 
+vùx
+;
+
+469  
+ùx
+->
+sigÇtu»_Ëngth
+;
+
+470 
+	}
+}
+
+473 
+	$Žs_ùx_lßd_ÿ
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+ÿ_fže
+,
+
+474 cÚ¡ *
+ÿ_šlše
+,
+
+475 cÚ¡ *
+ÿ_·th
+, 
+boÞ
+ 
+Žs_£rv”
+
+
+478 ià(
+ÿ_·th
+)
+
+479 
+	`msg
+(
+M_FATAL
+, "ERROR: PolarSSL cannot handle�he capath directive");
+
+481 ià(
+ÿ_fže
+ && !
+	`¡rcmp
+ (ÿ_fže, 
+INLINE_FILE_TAG
+è&& 
+ÿ_šlše
+)
+
+483 ià(0 !ð
+	`x509·r£_üt
+(
+ùx
+->
+ÿ_chaš
+, (cÚ¡ *è
+ÿ_šlše
+,
+
+484 
+	`¡¾’
+(
+ÿ_šlše
+)))
+
+485 
+	`msg
+ (
+M_FATAL
+, "Cannot†oad inline CA certificates");
+
+490 ià(0 !ð
+	`x509·r£_ütfže
+(
+ùx
+->
+ÿ_chaš
+, 
+ÿ_fže
+))
+
+491 
+	`msg
+ (
+M_FATAL
+, "CªnÙ†ßd CA c”tifiÿ‹ fž�%s", 
+ÿ_fže
+);
+
+493 
+	}
+}
+
+496 
+	$Žs_ùx_lßd_exŒa_û¹s
+ (
+Žs_roÙ_ùx
+ *
+ùx
+, cÚ¡ *
+exŒa_û¹s_fže
+,
+
+497 cÚ¡ *
+exŒa_û¹s_šlše
+
+
+500 
+	`ASSERT
+(
+NULL
+ !ð
+ùx
+);
+
+502 ià(!
+	`¡rcmp
+ (
+exŒa_û¹s_fže
+, 
+INLINE_FILE_TAG
+è&& 
+exŒa_û¹s_šlše
+)
+
+504 ià(0 !ð
+	`x509·r£_üt
+(
+ùx
+->
+üt_chaš
+,
+
+505 (cÚ¡ *è
+exŒa_û¹s_šlše
+,
+
+506 
+	`¡¾’
+(
+exŒa_û¹s_šlše
+)))
+
+507 
+	`msg
+ (
+M_FATAL
+, "Cannot†oad inlineƒxtra-certs file");
+
+511 ià(0 !ð
+	`x509·r£_ütfže
+(
+ùx
+->
+üt_chaš
+, 
+exŒa_û¹s_fže
+))
+
+512 
+	`msg
+ (
+M_FATAL
+, "CªnÙ†ßdƒxŒa-û¹ fže: %s", 
+exŒa_û¹s_fže
+);
+
+514 
+	}
+}
+
+526 
+šlše
+ 
+	$buf_ä“_’Œy
+(
+bufãr_’Œy
+ *
+’Œy
+)
+
+528 ià(
+NULL
+ !ð
+’Œy
+)
+
+530 
+	`ä“
+(
+’Œy
+->
+d©a
+);
+
+531 
+	`ä“
+(
+’Œy
+);
+
+533 
+	}
+}
+
+535 
+	$buf_ä“_’Œ›s
+(
+’dËss_bufãr
+ *
+buf
+)
+
+537 
+buf
+->
+fœ¡_block
+)
+
+539 
+bufãr_’Œy
+ *
+cur_block
+ = 
+buf
+->
+fœ¡_block
+;
+
+540 
+buf
+->
+fœ¡_block
+ = 
+cur_block
+->
+Ãxt_block
+;
+
+541 
+	`buf_ä“_’Œy
+(
+cur_block
+);
+
+543 
+buf
+->
+Ï¡_block
+ = 
+NULL
+;
+
+544 
+	}
+}
+
+546 
+	$’dËss_buf_»ad
+Ð* 
+ùx
+, * 
+out
+, 
+size_t
+ 
+out_Ën
+ )
+
+548 
+’dËss_bufãr
+ *
+š
+ = (’dËss_bufã¸*è
+ùx
+;
+
+549 
+size_t
+ 
+»ad_Ën
+ = 0;
+
+551 ià(
+š
+->
+fœ¡_block
+ =ð
+NULL
+)
+
+552  
+POLARSSL_ERR_NET_WANT_READ
+;
+
+554 
+š
+->
+fœ¡_block
+ !ð
+NULL
+ && 
+»ad_Ën
+ < 
+out_Ën
+)
+
+556 
+block_Ën
+ = 
+š
+->
+fœ¡_block
+->
+Ëngth
+ - in->
+d©a_¡¬t
+;
+
+557 ià(
+block_Ën
+ <ð
+out_Ën
+ - 
+»ad_Ën
+)
+
+559 
+bufãr_’Œy
+ *
+cur_’Œy
+ = 
+š
+->
+fœ¡_block
+;
+
+560 
+	`memýy
+(
+out
+ + 
+»ad_Ën
+, 
+cur_’Œy
+->
+d©a
+ + 
+š
+->
+d©a_¡¬t
+,
+
+561 
+block_Ën
+);
+
+563 
+»ad_Ën
+ +ð
+block_Ën
+;
+
+565 
+š
+->
+fœ¡_block
+ = 
+cur_’Œy
+->
+Ãxt_block
+;
+
+566 
+š
+->
+d©a_¡¬t
+ = 0;
+
+568 ià(
+š
+->
+fœ¡_block
+ =ð
+NULL
+)
+
+569 
+š
+->
+Ï¡_block
+ = 
+NULL
+;
+
+571 
+	`buf_ä“_’Œy
+(
+cur_’Œy
+);
+
+575 
+	`memýy
+(
+out
+ + 
+»ad_Ën
+, 
+š
+->
+fœ¡_block
+->
+d©a
+ + in->
+d©a_¡¬t
+,
+
+576 
+out_Ën
+ - 
+»ad_Ën
+);
+
+577 
+š
+->
+d©a_¡¬t
+ +ð
+out_Ën
+ - 
+»ad_Ën
+;
+
+578 
+»ad_Ën
+ = 
+out_Ën
+;
+
+582  
+»ad_Ën
+;
+
+583 
+	}
+}
+
+585 
+	$’dËss_buf_wr™e
+Ð*
+ùx
+, cÚ¡ *
+š
+, 
+size_t
+ 
+Ën
+ )
+
+587 
+’dËss_bufãr
+ *
+out
+ = (’dËss_bufã¸*è
+ùx
+;
+
+588 
+bufãr_’Œy
+ *
+Ãw_block
+ = 
+	`m®loc
+((buffer_entry));
+
+589 ià(
+NULL
+ =ð
+Ãw_block
+)
+
+590  
+POLARSSL_ERR_NET_SEND_FAILED
+;
+
+592 
+Ãw_block
+->
+d©a
+ = 
+	`m®loc
+(
+Ën
+);
+
+593 ià(
+NULL
+ =ð
+Ãw_block
+->
+d©a
+)
+
+595 
+	`ä“
+(
+Ãw_block
+);
+
+596  
+POLARSSL_ERR_NET_SEND_FAILED
+;
+
+599 
+Ãw_block
+->
+Ëngth
+ = 
+Ën
+;
+
+600 
+Ãw_block
+->
+Ãxt_block
+ = 
+NULL
+;
+
+602 
+	`memýy
+(
+Ãw_block
+->
+d©a
+, 
+š
+, 
+Ën
+);
+
+604 ià(
+NULL
+ =ð
+out
+->
+fœ¡_block
+)
+
+605 
+out
+->
+fœ¡_block
+ = 
+Ãw_block
+;
+
+607 ià(
+NULL
+ !ð
+out
+->
+Ï¡_block
+)
+
+608 
+out
+->
+Ï¡_block
+->
+Ãxt_block
+ = 
+Ãw_block
+;
+
+610 
+out
+->
+Ï¡_block
+ = 
+Ãw_block
+;
+
+612  
+Ën
+;
+
+613 
+	}
+}
+
+615 
+	$my_debug
+Ð*
+ùx
+, 
+Ëv–
+, cÚ¡ *
+¡r
+ )
+
+617 ià(
+Ëv–
+ == 1)
+
+619 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "PÞ¬SSL‡Ë¹: %s", 
+¡r
+);
+
+621 
+	}
+}
+
+626 
+	$Žs_ùx_³rsÚ®i£_¿ndom
+(
+Žs_roÙ_ùx
+ *
+ùx
+)
+
+628 
+Þd_sha256_hash
+[32] = {0};
+
+629 
+sha256_hash
+[32] = {0};
+
+630 
+ùr_drbg_cÚ‹xt
+ *
+cd_ùx
+ = 
+	`¿nd_ùx_g‘
+();
+
+632 ià(
+NULL
+ !ð
+ùx
+->
+üt_chaš
+)
+
+634 
+x509_û¹
+ *
+û¹
+ = 
+ùx
+->
+üt_chaš
+;
+
+636 
+	`sha2
+(
+û¹
+->
+tbs
+.
+p
+, c”t->tbs.
+Ën
+, 
+sha256_hash
+, 
+çl£
+);
+
+637 iàÐ0 !ð
+	`memcmp
+(
+Þd_sha256_hash
+, 
+sha256_hash
+, (sha256_hash)))
+
+639 
+	`ùr_drbg_upd©e
+(
+cd_ùx
+, 
+sha256_hash
+, 32);
+
+640 
+	`memýy
+(
+Þd_sha256_hash
+, 
+sha256_hash
+, (old_sha256_hash));
+
+643 
+	}
+}
+
+646 
+	$Žs_v”siÚ_max
+()
+
+648 #ià
+	`defšed
+(
+SSL_MAJOR_VERSION_3
+è&& defšed(
+SSL_MINOR_VERSION_3
+)
+
+649  
+TLS_VER_1_2
+;
+
+650 #–ià
+	`defšed
+(
+SSL_MAJOR_VERSION_3
+è&& defšed(
+SSL_MINOR_VERSION_2
+)
+
+651  
+TLS_VER_1_1
+;
+
+653  
+TLS_VER_1_0
+;
+
+655 
+	}
+}
+
+667 
+	$Žs_v”siÚ_to_majÜ_mšÜ
+(
+Žs_v”
+, *
+majÜ
+, *
+mšÜ
+) {
+
+668 
+	`ASSERT
+(
+majÜ
+);
+
+669 
+	`ASSERT
+(
+mšÜ
+);
+
+671 
+Žs_v”
+)
+
+673 
+TLS_VER_1_0
+:
+
+674 *
+majÜ
+ = 
+SSL_MAJOR_VERSION_3
+;
+
+675 *
+mšÜ
+ = 
+SSL_MINOR_VERSION_1
+;
+
+677 
+TLS_VER_1_1
+:
+
+678 *
+majÜ
+ = 
+SSL_MAJOR_VERSION_3
+;
+
+679 *
+mšÜ
+ = 
+SSL_MINOR_VERSION_2
+;
+
+681 
+TLS_VER_1_2
+:
+
+682 *
+majÜ
+ = 
+SSL_MAJOR_VERSION_3
+;
+
+683 *
+mšÜ
+ = 
+SSL_MINOR_VERSION_3
+;
+
+686 
+	`msg
+(
+M_FATAL
+, "%s: inv®id TLS v”siÚ %d", 
+__func__
+, 
+Žs_v”
+);
+
+689 
+	}
+}
+
+691 
+	$key_¡©e_s¦_š™
+(
+key_¡©e_s¦
+ *
+ks_s¦
+,
+
+692 cÚ¡ 
+Žs_roÙ_ùx
+ *
+s¦_ùx
+, 
+boÞ
+ 
+is_£rv”
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+694 
+	`ASSERT
+(
+NULL
+ !ð
+s¦_ùx
+);
+
+695 
+	`ASSERT
+(
+ks_s¦
+);
+
+696 
+	`CLEAR
+(*
+ks_s¦
+);
+
+698 
+	`ALLOC_OBJ_CLEAR
+(
+ks_s¦
+->
+ùx
+, 
+s¦_cÚ‹xt
+);
+
+699 ià(0 =ð
+	`s¦_š™
+(
+ks_s¦
+->
+ùx
+))
+
+702 
+	`s¦_£t_dbg
+ (
+ks_s¦
+->
+ùx
+, 
+my_debug
+, 
+NULL
+);
+
+703 
+	`s¦_£t_’dpošt
+ (
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+’dpošt
+);
+
+705 
+	`s¦_£t_ºg
+ (
+ks_s¦
+->
+ùx
+, 
+ùr_drbg_¿ndom
+, 
+	`¿nd_ùx_g‘
+());
+
+707 ià(
+s¦_ùx
+->
+®lowed_c�h”s
+)
+
+708 
+	`s¦_£t_c�h”su™es
+ (
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+®lowed_c�h”s
+);
+
+711 ià(
+is_£rv”
+)
+
+712 
+	`s¦_£t_dh_·¿m_ùx
+ (
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+dhm_ùx
+ );
+
+713 #ià
+	`defšed
+(
+ENABLE_PKCS11
+)
+
+714 ià(
+s¦_ùx
+->
+´iv_key_pkcs11
+ !ð
+NULL
+)
+
+715 
+	`s¦_£t_own_û¹_®t
+Ð
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+üt_chaš
+,
+
+716 
+s¦_ùx
+->
+´iv_key_pkcs11
+, 
+s¦_pkcs11_deüy±
+, 
+s¦_pkcs11_sign
+,
+
+717 
+s¦_pkcs11_key_Ën
+ );
+
+720 #ià
+	`defšed
+(
+MANAGMENT_EXTERNAL_KEY
+)
+
+721 ià(
+s¦_ùx
+->
+ex‹º®_key
+ !ð
+NULL
+)
+
+722 
+	`s¦_£t_own_û¹_®t
+Ð
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+üt_chaš
+,
+
+723 
+s¦_ùx
+->
+ex‹º®_key
+, 
+NULL
+, 
+ex‹º®_pkcs1_sign
+,
+
+724 
+ex‹º®_key_Ën
+ );
+
+727 
+	`s¦_£t_own_û¹
+Ð
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+üt_chaš
+, s¦_ùx->
+´iv_key
+ );
+
+730 #ià
+P2MP_SERVER
+
+
+731 ià(
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_CLIENT_CERT_NOT_REQUIRED
+)
+
+733 
+	`msg
+ (
+M_WARN
+, "WARNING: POTENTIALLY DANGEROUS OPTION "
+
+740 
+	`s¦_£t_authmode
+ (
+ks_s¦
+->
+ùx
+, 
+SSL_VERIFY_REQUIRED
+);
+
+741 
+	`s¦_£t_v”ify
+ (
+ks_s¦
+->
+ùx
+, 
+v”ify_ÿÎback
+, 
+£ssiÚ
+);
+
+745 
+	`s¦_£t_ÿ_chaš
+ (
+ks_s¦
+->
+ùx
+, 
+s¦_ùx
+->
+ÿ_chaš
+, 
+NULL
+, NULL );
+
+749 cÚ¡ 
+Žs_v”siÚ_mš
+ =
+
+750 (
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MIN_SHIFT
+) &
+
+751 
+SSLF_TLS_VERSION_MIN_MASK
+;
+
+754 
+majÜ
+ = 
+SSL_MAJOR_VERSION_3
+;
+
+755 
+mšÜ
+ = 
+SSL_MINOR_VERSION_1
+;
+
+757 ià(
+Žs_v”siÚ_mš
+ > 
+TLS_VER_UNSPEC
+)
+
+758 
+	`Žs_v”siÚ_to_majÜ_mšÜ
+(
+Žs_v”siÚ_mš
+, &
+majÜ
+, &
+mšÜ
+);
+
+760 
+	`s¦_£t_mš_v”siÚ
+(
+ks_s¦
+->
+ùx
+, 
+majÜ
+, 
+mšÜ
+);
+
+765 cÚ¡ 
+Žs_v”siÚ_max
+ =
+
+766 (
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ >> 
+SSLF_TLS_VERSION_MAX_SHIFT
+) &
+
+767 
+SSLF_TLS_VERSION_MAX_MASK
+;
+
+769 ià(
+Žs_v”siÚ_max
+ > 
+TLS_VER_UNSPEC
+)
+
+771 
+majÜ
+, 
+mšÜ
+;
+
+772 
+	`Žs_v”siÚ_to_majÜ_mšÜ
+(
+Žs_v”siÚ_max
+, &
+majÜ
+, &
+mšÜ
+);
+
+773 
+	`s¦_£t_max_v”siÚ
+(
+ks_s¦
+->
+ùx
+, 
+majÜ
+, 
+mšÜ
+);
+
+778 
+	`ALLOC_OBJ_CLEAR
+ (
+ks_s¦
+->
+ù_š
+, 
+’dËss_bufãr
+);
+
+779 
+	`ALLOC_OBJ_CLEAR
+ (
+ks_s¦
+->
+ù_out
+, 
+’dËss_bufãr
+);
+
+780 
+	`s¦_£t_bio
+ (
+ks_s¦
+->
+ùx
+, 
+’dËss_buf_»ad
+, ks_s¦->
+ù_š
+,
+
+781 
+’dËss_buf_wr™e
+, 
+ks_s¦
+->
+ù_out
+);
+
+783 
+	}
+}
+
+786 
+	$key_¡©e_s¦_ä“
+(
+key_¡©e_s¦
+ *
+ks_s¦
+)
+
+788 ià(
+ks_s¦
+) {
+
+789 ià(
+ks_s¦
+->
+ùx
+)
+
+791 
+	`s¦_ä“
+(
+ks_s¦
+->
+ùx
+);
+
+792 
+	`ä“
+(
+ks_s¦
+->
+ùx
+);
+
+794 ià(
+ks_s¦
+->
+ù_š
+) {
+
+795 
+	`buf_ä“_’Œ›s
+(
+ks_s¦
+->
+ù_š
+);
+
+796 
+	`ä“
+(
+ks_s¦
+->
+ù_š
+);
+
+798 ià(
+ks_s¦
+->
+ù_out
+) {
+
+799 
+	`buf_ä“_’Œ›s
+(
+ks_s¦
+->
+ù_out
+);
+
+800 
+	`ä“
+(
+ks_s¦
+->
+ù_out
+);
+
+802 
+	`CLEAR
+(*
+ks_s¦
+);
+
+804 
+	}
+}
+
+807 
+	$key_¡©e_wr™e_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks
+, 
+bufãr
+ *
+buf
+)
+
+809 
+»tv®
+ = 0;
+
+810 
+	`³rf_push
+ (
+PERF_BIO_WRITE_PLAINTEXT
+);
+
+812 
+	`ASSERT
+ (
+NULL
+ !ð
+ks
+);
+
+813 
+	`ASSERT
+ (
+buf
+);
+
+814 
+	`ASSERT
+ (
+buf
+->
+Ën
+ >= 0);
+
+816 ià(0 =ð
+buf
+->
+Ën
+)
+
+819 
+	`³rf_pÝ
+ ();
+
+822 
+»tv®
+ = 
+	`s¦_wr™e
+(
+ks
+->
+ùx
+, 
+	`BPTR
+(
+buf
+), buf->
+Ën
+);
+
+824 ià(
+»tv®
+ < 0)
+
+826 
+	`³rf_pÝ
+ ();
+
+827 ià(
+POLARSSL_ERR_NET_WANT_WRITE
+ =ð
+»tv®
+ || 
+POLARSSL_ERR_NET_WANT_READ
+ ==„etval)
+
+829 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR: write�ls_write_plaintextƒrror");
+
+833 ià(
+»tv®
+ !ð
+buf
+->
+Ën
+)
+
+835 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+837 
+»tv®
+, 
+buf
+->
+Ën
+);
+
+838 
+	`³rf_pÝ
+ ();
+
+843 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "wr™�Žs_wr™e_¶aš‹xˆ%d by‹s", 
+»tv®
+);
+
+845 
+	`mem£t
+ (
+	`BPTR
+ (
+buf
+), 0, 
+	`BLEN
+ (buf));
+
+846 
+buf
+->
+Ën
+ = 0;
+
+848 
+	`³rf_pÝ
+ ();
+
+850 
+	}
+}
+
+853 
+	$key_¡©e_wr™e_¶aš‹xt_cÚ¡
+ (
+key_¡©e_s¦
+ *
+ks
+, cÚ¡ 
+ušt8_t
+ *
+d©a
+, 
+Ën
+)
+
+855 
+»tv®
+ = 0;
+
+856 
+	`³rf_push
+ (
+PERF_BIO_WRITE_PLAINTEXT
+);
+
+858 
+	`ASSERT
+ (
+NULL
+ !ð
+ks
+);
+
+859 
+	`ASSERT
+ (
+Ën
+ >= 0);
+
+861 ià(0 =ð
+Ën
+)
+
+863 
+	`³rf_pÝ
+ ();
+
+867 
+	`ASSERT
+ (
+d©a
+);
+
+869 
+»tv®
+ = 
+	`s¦_wr™e
+(
+ks
+->
+ùx
+, 
+d©a
+, 
+Ën
+);
+
+871 ià(
+»tv®
+ < 0)
+
+873 
+	`³rf_pÝ
+ ();
+
+874 ià(
+POLARSSL_ERR_NET_WANT_WRITE
+ =ð
+»tv®
+ || 
+POLARSSL_ERR_NET_WANT_READ
+ ==„etval)
+
+876 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR: write�ls_write_plaintext_constƒrror");
+
+880 ià(
+»tv®
+ !ð
+Ën
+)
+
+882 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+884 
+»tv®
+, 
+Ën
+);
+
+885 
+	`³rf_pÝ
+ ();
+
+890 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "wr™�Žs_wr™e_¶aš‹xt_cÚ¡ %d by‹s", 
+»tv®
+);
+
+892 
+	`³rf_pÝ
+ ();
+
+894 
+	}
+}
+
+897 
+	$key_¡©e_»ad_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks
+, 
+bufãr
+ *
+buf
+,
+
+898 
+maxËn
+)
+
+900 
+»tv®
+ = 0;
+
+901 
+Ën
+ = 0;
+
+902 
+”rÜ_mes§ge
+[1024];
+
+904 
+	`³rf_push
+ (
+PERF_BIO_READ_CIPHERTEXT
+);
+
+906 
+	`ASSERT
+ (
+NULL
+ !ð
+ks
+);
+
+907 
+	`ASSERT
+ (
+buf
+);
+
+908 
+	`ASSERT
+ (
+buf
+->
+Ën
+ >= 0);
+
+910 ià(
+buf
+->
+Ën
+)
+
+912 
+	`³rf_pÝ
+ ();
+
+916 
+Ën
+ = 
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+);
+
+917 ià(
+maxËn
+ < 
+Ën
+)
+
+918 
+Ën
+ = 
+maxËn
+;
+
+920 
+»tv®
+ = 
+	`’dËss_buf_»ad
+(
+ks
+->
+ù_out
+, 
+	`BPTR
+(
+buf
+), 
+Ën
+);
+
+923 ià(
+»tv®
+ < 0)
+
+925 
+	`³rf_pÝ
+ ();
+
+926 ià(
+POLARSSL_ERR_NET_WANT_WRITE
+ =ð
+»tv®
+ || 
+POLARSSL_ERR_NET_WANT_READ
+ ==„etval)
+
+928 
+	`”rÜ_¡»¼Ü
+(
+»tv®
+, 
+”rÜ_mes§ge
+, (error_message));
+
+929 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS_ERROR:„—d�ls_»ad_c�h”‹xˆ”rÜ: %d %s", 
+»tv®
+, 
+”rÜ_mes§ge
+);
+
+930 
+buf
+->
+Ën
+ = 0;
+
+934 ià(0 =ð
+»tv®
+)
+
+936 
+buf
+->
+Ën
+ = 0;
+
+937 
+	`³rf_pÝ
+ ();
+
+942 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "»ad�ls_»ad_c�h”‹xˆ%d by‹s", 
+»tv®
+);
+
+943 
+buf
+->
+Ën
+ = 
+»tv®
+;
+
+944 
+	`³rf_pÝ
+ ();
+
+946 
+	}
+}
+
+949 
+	$key_¡©e_wr™e_c�h”‹xt
+ (
+key_¡©e_s¦
+ *
+ks
+, 
+bufãr
+ *
+buf
+)
+
+951 
+»tv®
+ = 0;
+
+952 
+	`³rf_push
+ (
+PERF_BIO_WRITE_CIPHERTEXT
+);
+
+954 
+	`ASSERT
+ (
+NULL
+ !ð
+ks
+);
+
+955 
+	`ASSERT
+ (
+buf
+);
+
+956 
+	`ASSERT
+ (
+buf
+->
+Ën
+ >= 0);
+
+958 ià(0 =ð
+buf
+->
+Ën
+)
+
+960 
+	`³rf_pÝ
+ ();
+
+964 
+»tv®
+ = 
+	`’dËss_buf_wr™e
+(
+ks
+->
+ù_š
+, 
+	`BPTR
+(
+buf
+), buf->
+Ën
+);
+
+966 ià(
+»tv®
+ < 0)
+
+968 
+	`³rf_pÝ
+ ();
+
+970 ià(
+POLARSSL_ERR_NET_WANT_WRITE
+ =ð
+»tv®
+ || 
+POLARSSL_ERR_NET_WANT_READ
+ ==„etval)
+
+972 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS ERROR: write�ls_write_ciphertextƒrror");
+
+976 ià(
+»tv®
+ !ð
+buf
+->
+Ën
+)
+
+978 
+	`msg
+ (
+D_TLS_ERRORS
+,
+
+980 
+»tv®
+, 
+buf
+->
+Ën
+);
+
+981 
+	`³rf_pÝ
+ ();
+
+986 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "wr™�Žs_wr™e_c�h”‹xˆ%d by‹s", 
+»tv®
+);
+
+988 
+	`mem£t
+ (
+	`BPTR
+ (
+buf
+), 0, 
+	`BLEN
+ (buf));
+
+989 
+buf
+->
+Ën
+ = 0;
+
+991 
+	`³rf_pÝ
+ ();
+
+993 
+	}
+}
+
+996 
+	$key_¡©e_»ad_¶aš‹xt
+ (
+key_¡©e_s¦
+ *
+ks
+, 
+bufãr
+ *
+buf
+,
+
+997 
+maxËn
+)
+
+999 
+»tv®
+ = 0;
+
+1000 
+Ën
+ = 0;
+
+1001 
+”rÜ_mes§ge
+[1024];
+
+1003 
+	`³rf_push
+ (
+PERF_BIO_READ_PLAINTEXT
+);
+
+1005 
+	`ASSERT
+ (
+NULL
+ !ð
+ks
+);
+
+1006 
+	`ASSERT
+ (
+buf
+);
+
+1007 
+	`ASSERT
+ (
+buf
+->
+Ën
+ >= 0);
+
+1009 ià(
+buf
+->
+Ën
+)
+
+1011 
+	`³rf_pÝ
+ ();
+
+1015 
+Ën
+ = 
+	`buf_fÜw¬d_ÿ·c™y
+ (
+buf
+);
+
+1016 ià(
+maxËn
+ < 
+Ën
+)
+
+1017 
+Ën
+ = 
+maxËn
+;
+
+1019 
+»tv®
+ = 
+	`s¦_»ad
+(
+ks
+->
+ùx
+, 
+	`BPTR
+(
+buf
+), 
+Ën
+);
+
+1022 ià(
+»tv®
+ < 0)
+
+1024 ià(
+POLARSSL_ERR_NET_WANT_WRITE
+ =ð
+»tv®
+ || 
+POLARSSL_ERR_NET_WANT_READ
+ ==„etval)
+
+1026 
+	`”rÜ_¡»¼Ü
+(
+»tv®
+, 
+”rÜ_mes§ge
+, (error_message));
+
+1027 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS_ERROR:„—d�ls_»ad_¶aš‹xˆ”rÜ: %d %s", 
+»tv®
+, 
+”rÜ_mes§ge
+);
+
+1028 
+buf
+->
+Ën
+ = 0;
+
+1029 
+	`³rf_pÝ
+ ();
+
+1033 ià(0 =ð
+»tv®
+)
+
+1035 
+buf
+->
+Ën
+ = 0;
+
+1036 
+	`³rf_pÝ
+ ();
+
+1041 
+	`dmsg
+ (
+D_HANDSHAKE_VERBOSE
+, "»ad�ls_»ad_¶aš‹xˆ%d by‹s", 
+»tv®
+);
+
+1042 
+buf
+->
+Ën
+ = 
+»tv®
+;
+
+1044 
+	`³rf_pÝ
+ ();
+
+1046 
+	}
+}
+
+1056 
+	$´št_d‘ažs
+ (
+key_¡©e_s¦
+ * 
+ks_s¦
+, cÚ¡ *
+´efix
+)
+
+1058 cÚ¡ 
+x509_û¹
+ *
+û¹
+;
+
+1059 
+s1
+[256];
+
+1060 
+s2
+[256];
+
+1062 
+s1
+[0] = 
+s2
+[0] = 0;
+
+1063 
+	`Ý’v²_¢´štf
+ (
+s1
+,  (s1), "%s %s, cipher %s",
+
+1064 
+´efix
+,
+
+1065 
+	`s¦_g‘_v”siÚ
+ (
+ks_s¦
+->
+ùx
+),
+
+1066 
+	`s¦_g‘_c�h”su™e
+(
+ks_s¦
+->
+ùx
+));
+
+1068 
+û¹
+ = 
+	`s¦_g‘_³”_û¹
+(
+ks_s¦
+->
+ùx
+);
+
+1069 ià(
+û¹
+ !ð
+NULL
+)
+
+1071 
+	`Ý’v²_¢´štf
+ (
+s2
+,  (s2), ", " 
+couÁ”_fÜm©
+ " b™ RSA", (
+couÁ”_ty³
+è
+û¹
+->
+r§
+.
+Ën
+ * 8);
+
+1074 
+	`msg
+ (
+D_HANDSHAKE
+, "%s%s", 
+s1
+, 
+s2
+);
+
+1075 
+	}
+}
+
+1078 
+	$show_avažabË_Žs_c�h”s
+ (cÚ¡ *
+c�h”_li¡
+)
+
+1080 
+Žs_roÙ_ùx
+ 
+Žs_ùx
+;
+
+1081 cÚ¡ *
+c�h”s
+ = 
+	`s¦_li¡_c�h”su™es
+();
+
+1083 ià(
+c�h”_li¡
+) {
+
+1084 
+	`Žs_ùx_»¡riù_c�h”s
+(&
+Žs_ùx
+, 
+c�h”_li¡
+);
+
+1085 
+c�h”s
+ = 
+Žs_ùx
+.
+®lowed_c�h”s
+;
+
+1088 #iâdeà
+ENABLE_SMALL
+
+
+1089 
+	`´štf
+ ("Available TLS Ciphers,\n");
+
+1090 
+	`´štf
+ ("listed in order of…reference:\n\n");
+
+1093 *
+c�h”s
+ != 0)
+
+1095 
+	`´štf
+ ("%s\n", 
+	`s¦_g‘_c�h”su™e_Çme
+(*
+c�h”s
+));
+
+1096 
+c�h”s
+++;
+
+1098 
+	`´štf
+ ("\n" 
+SHOW_TLS_CIPHER_LIST_WARNING
+);
+
+1099 
+	}
+}
+
+1102 
+	$g‘_highe¡_´eã»nû_Žs_c�h”
+ (*
+buf
+, 
+size
+)
+
+1104 cÚ¡ *
+c�h”_Çme
+;
+
+1105 cÚ¡ *
+c�h”s
+ = 
+	`s¦_li¡_c�h”su™es
+();
+
+1106 ià(*
+c�h”s
+ == 0)
+
+1107 
+	`msg
+ (
+M_FATAL
+, "Cannot„etrieve†ist of supported SSL ciphers.");
+
+1109 
+c�h”_Çme
+ = 
+	`s¦_g‘_c�h”su™e_Çme
+(*
+c�h”s
+);
+
+1110 
+	`¡ºýyÁ
+ (
+buf
+, 
+c�h”_Çme
+, 
+size
+);
+
+1111 
+	}
+}
+
+1114 
+	$g‘_s¦_lib¿ry_v”siÚ
+()
+
+1116 
+pÞ¬_v”siÚ
+[30];
+
+1117 
+pv
+ = 
+	`v”siÚ_g‘_numb”
+();
+
+1118 
+	`¥rštf
+Ð
+pÞ¬_v”siÚ
+, "PolarSSL %d.%d.%d",
+
+1119 (
+pv
+>>24)&0xff, (pv>>16)&0xff, (pv>>8)&0xff );
+
+1120  
+pÞ¬_v”siÚ
+;
+
+1121 
+	}
+}
+
+	@ssl_polarssl.h
+
+30 #iâdeà
+SSL_POLARSSL_H_
+
+
+31 
+	#SSL_POLARSSL_H_
+
+
+	)
+
+33 
+	~"sysh—d.h
+"
+
+35 
+	~<pÞ¬s¦/s¦.h
+>
+
+37 #ià
+defšed
+(
+ENABLE_PKCS11
+)
+
+38 
+	~<pÞ¬s¦/pkcs11.h
+>
+
+41 
+_bufãr_’Œy
+ 
+	tbufãr_’Œy
+;
+
+43 
+	s_bufãr_’Œy
+ {
+
+44 
+size_t
+ 
+	mËngth
+;
+
+45 
+ušt8_t
+ *
+	md©a
+;
+
+46 
+bufãr_’Œy
+ *
+	mÃxt_block
+;
+
+50 
+size_t
+ 
+	md©a_¡¬t
+;
+
+51 
+bufãr_’Œy
+ *
+	mfœ¡_block
+;
+
+52 
+bufãr_’Œy
+ *
+	mÏ¡_block
+;
+
+53 } 
+	t’dËss_bufãr
+;
+
+61 
+	sŽs_roÙ_ùx
+ {
+
+62 
+boÞ
+ 
+	mš™Ÿli£d
+;
+
+64 
+	m’dpošt
+;
+
+66 
+dhm_cÚ‹xt
+ *
+	mdhm_ùx
+;
+
+67 
+x509_û¹
+ *
+	müt_chaš
+;
+
+68 
+x509_û¹
+ *
+	mÿ_chaš
+;
+
+69 
+r§_cÚ‹xt
+ *
+	m´iv_key
+;
+
+70 #ià
+defšed
+(
+ENABLE_PKCS11
+)
+
+71 
+pkcs11_cÚ‹xt
+ *
+	m´iv_key_pkcs11
+;
+
+73 #ifdeà
+MANAGMENT_EXTERNAL_KEY
+
+
+74 
+ex‹º®_cÚ‹xt
+ *
+	mex‹º®_key
+;
+
+76 * 
+	m®lowed_c�h”s
+;
+
+79 
+	skey_¡©e_s¦
+ {
+
+80 
+s¦_cÚ‹xt
+ *
+	mùx
+;
+
+81 
+’dËss_bufãr
+ *
+	mù_š
+;
+
+82 
+’dËss_bufãr
+ *
+	mù_out
+;
+
+	@ssl_verify.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+40 
+	~"misc.h
+"
+
+41 
+	~"mªage.h
+"
+
+42 
+	~"s¦_v”ify.h
+"
+
+43 
+	~"s¦_v”ify_back’d.h
+"
+
+45 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+46 
+	~"s¦_v”ify_Ý’s¦.h
+"
+
+50 
+	#TLS_USERNAME_LEN
+ 64
+
+	)
+
+53 
+	#X509_NAME_CHAR_CLASS
+ (
+CC_ALNUM
+|
+CC_UNDERBAR
+|
+CC_DASH
+|
+CC_DOT
+|
+CC_AT
+|
+CC_SLASH
+|
+CC_COLON
+|
+CC_EQUAL
+)
+
+	)
+
+56 
+	#COMMON_NAME_CHAR_CLASS
+ (
+CC_ALNUM
+|
+CC_UNDERBAR
+|
+CC_DASH
+|
+CC_DOT
+|
+CC_AT
+|
+CC_SLASH
+)
+
+	)
+
+59 
+	$¡ršg_mod_»m­_Çme
+ (*
+¡r
+, cÚ¡ 
+»¡riùive_æags
+)
+
+61 ià(
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NAMES
+)
+
+62 && !
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NO_NAME_REMAPPING
+))
+
+63 
+	`¡ršg_mod
+ (
+¡r
+, 
+»¡riùive_æags
+, 0, '_');
+
+65 
+	`¡ršg_mod
+ (
+¡r
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+66 
+	}
+}
+
+72 
+	$£‹nv_uÁru¡ed
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+74 
+	`£‹nv_lšk_sock‘_aùu®
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "uÁru¡ed", &£ssiÚ->
+uÁru¡ed_addr
+, 
+SA_IP_PORT
+);
+
+75 
+	}
+}
+
+81 
+	$Žs_d—uth’tiÿ‹
+ (
+Žs_muÉi
+ *
+muÉi
+)
+
+83 ià(
+muÉi
+)
+
+85 
+i
+, 
+j
+;
+
+86 
+i
+ = 0; i < 
+TM_SIZE
+; ++i)
+
+87 
+j
+ = 0; j < 
+KS_SIZE
+; ++j)
+
+88 
+muÉi
+->
+£ssiÚ
+[
+i
+].
+key
+[
+j
+].
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+90 
+	}
+}
+
+96 
+	$£t_commÚ_Çme
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ *
+commÚ_Çme
+)
+
+98 ià(
+£ssiÚ
+->
+commÚ_Çme
+)
+
+100 
+	`ä“
+ (
+£ssiÚ
+->
+commÚ_Çme
+);
+
+101 
+£ssiÚ
+->
+commÚ_Çme
+ = 
+NULL
+;
+
+102 #ifdeà
+ENABLE_PF
+
+
+103 
+£ssiÚ
+->
+commÚ_Çme_hashv®
+ = 0;
+
+106 ià(
+commÚ_Çme
+)
+
+109 
+£ssiÚ
+->
+commÚ_Çme
+ = 
+	`¡ršg_®loc
+ (commÚ_Çme, 
+NULL
+);
+
+110 #ifdeà
+ENABLE_PF
+
+
+112 cÚ¡ 
+ušt32_t
+ 
+Ën
+ = (ušt32_tè
+	`¡¾’
+ (
+commÚ_Çme
+);
+
+113 ià(
+Ën
+)
+
+114 
+£ssiÚ
+->
+commÚ_Çme_hashv®
+ = 
+	`hash_func
+ ((cÚ¡ 
+ušt8_t
+*)
+commÚ_Çme
+, 
+Ën
++1, 0);
+
+116 
+£ssiÚ
+->
+commÚ_Çme_hashv®
+ = 0;
+
+120 
+	}
+}
+
+128 
+	$Žs_commÚ_Çme
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+boÞ
+ 
+nuÎ
+)
+
+130 cÚ¡ *
+»t
+ = 
+NULL
+;
+
+131 ià(
+muÉi
+)
+
+132 
+»t
+ = 
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+].
+commÚ_Çme
+;
+
+133 ià(
+»t
+ && 
+	`¡¾’
+ (ret))
+
+134  
+»t
+;
+
+135 ià(
+nuÎ
+)
+
+136  
+NULL
+;
+
+139 
+	}
+}
+
+145 
+	$Žs_lock_commÚ_Çme
+ (
+Žs_muÉi
+ *
+muÉi
+)
+
+147 cÚ¡ *
+ú
+ = 
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+].
+commÚ_Çme
+;
+
+148 ià(
+ú
+ && !
+muÉi
+->
+locked_ú
+)
+
+149 
+muÉi
+->
+locked_ú
+ = 
+	`¡ršg_®loc
+ (
+ú
+, 
+NULL
+);
+
+150 
+	}
+}
+
+155 
+boÞ
+
+
+156 
+	$Žs_lock_u£ºame
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ *
+u£ºame
+)
+
+158 ià(
+muÉi
+->
+locked_u£ºame
+)
+
+160 ià(!
+u£ºame
+ || 
+	`¡rcmp
+ (u£ºame, 
+muÉi
+->
+locked_u£ºame
+))
+
+162 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: username‡ttempted�o change from '%s'�o '%s' --�unnel disabled",
+
+163 
+muÉi
+->
+locked_u£ºame
+,
+
+164 
+	`Å
+(
+u£ºame
+));
+
+167 
+	`Žs_d—uth’tiÿ‹
+ (
+muÉi
+);
+
+168  
+çl£
+;
+
+173 ià(
+u£ºame
+)
+
+174 
+muÉi
+->
+locked_u£ºame
+ = 
+	`¡ršg_®loc
+ (
+u£ºame
+, 
+NULL
+);
+
+176  
+Œue
+;
+
+177 
+	}
+}
+
+180 
+	$Žs_u£ºame
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+boÞ
+ 
+nuÎ
+)
+
+182 cÚ¡ *
+»t
+ = 
+NULL
+;
+
+183 ià(
+muÉi
+)
+
+184 
+»t
+ = 
+muÉi
+->
+locked_u£ºame
+;
+
+185 ià(
+»t
+ && 
+	`¡¾’
+ (ret))
+
+186  
+»t
+;
+
+187 ià(
+nuÎ
+)
+
+188  
+NULL
+;
+
+191 
+	}
+}
+
+194 
+	$û¹_hash_»memb”
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ 
+”rÜ_d•th
+, cÚ¡ *
+sha1_hash
+)
+
+196 ià(
+”rÜ_d•th
+ >ð0 &&ƒ¼Ü_d•th < 
+MAX_CERT_DEPTH
+)
+
+198 ià(!
+£ssiÚ
+->
+û¹_hash_£t
+)
+
+199 
+	`ALLOC_OBJ_CLEAR
+ (
+£ssiÚ
+->
+û¹_hash_£t
+, cert_hash_set);
+
+200 ià(!
+£ssiÚ
+->
+û¹_hash_£t
+->
+ch
+[
+”rÜ_d•th
+])
+
+201 
+	`ALLOC_OBJ
+ (
+£ssiÚ
+->
+û¹_hash_£t
+->
+ch
+[
+”rÜ_d•th
+], 
+û¹_hash
+);
+
+203 
+û¹_hash
+ *
+ch
+ = 
+£ssiÚ
+->
+û¹_hash_£t
+->ch[
+”rÜ_d•th
+];
+
+204 
+	`memýy
+ (
+ch
+->
+sha1_hash
+, sha1_hash, 
+SHA_DIGEST_LENGTH
+);
+
+207 
+	}
+}
+
+211 
+	$û¹_hash_´št
+ (cÚ¡ 
+û¹_hash_£t
+ *
+chs
+, 
+msgËv–
+)
+
+213 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+214 
+	`msg
+ (
+msgËv–
+, "CERT_HASH");
+
+215 ià(
+chs
+)
+
+217 
+i
+;
+
+218 
+i
+ = 0; i < 
+MAX_CERT_DEPTH
+; ++i)
+
+220 cÚ¡ 
+û¹_hash
+ *
+ch
+ = 
+chs
+->ch[
+i
+];
+
+221 ià(
+ch
+)
+
+222 
+	`msg
+ (
+msgËv–
+, "%d:%s", 
+i
+, 
+	`fÜm©_hex
+(
+ch
+->
+sha1_hash
+, 
+SHA_DIGEST_LENGTH
+, 0, &
+gc
+));
+
+225 
+	`gc_ä“
+ (&
+gc
+);
+
+226 
+	}
+}
+
+230 
+	$û¹_hash_ä“
+ (
+û¹_hash_£t
+ *
+chs
+)
+
+232 ià(
+chs
+)
+
+234 
+i
+;
+
+235 
+i
+ = 0; i < 
+MAX_CERT_DEPTH
+; ++i)
+
+236 
+	`ä“
+ (
+chs
+->
+ch
+[
+i
+]);
+
+237 
+	`ä“
+ (
+chs
+);
+
+239 
+	}
+}
+
+241 
+boÞ
+
+
+242 
+	$û¹_hash_com·»
+ (cÚ¡ 
+û¹_hash_£t
+ *
+chs1
+, cÚ¡ û¹_hash_£ˆ*
+chs2
+)
+
+244 ià(
+chs1
+ && 
+chs2
+)
+
+246 
+i
+;
+
+247 
+i
+ = 0; i < 
+MAX_CERT_DEPTH
+; ++i)
+
+249 cÚ¡ 
+û¹_hash
+ *
+ch1
+ = 
+chs1
+->
+ch
+[
+i
+];
+
+250 cÚ¡ 
+û¹_hash
+ *
+ch2
+ = 
+chs2
+->
+ch
+[
+i
+];
+
+252 ià(!
+ch1
+ && !
+ch2
+)
+
+254 ià(
+ch1
+ && 
+ch2
+ && !
+	`memcmp
+ (ch1->
+sha1_hash
+, ch2->sha1_hash, 
+SHA_DIGEST_LENGTH
+))
+
+257  
+çl£
+;
+
+259  
+Œue
+;
+
+261 ià(!
+chs1
+ && !
+chs2
+)
+
+262  
+Œue
+;
+
+264  
+çl£
+;
+
+265 
+	}
+}
+
+267 
+û¹_hash_£t
+ *
+
+268 
+	$û¹_hash_cÝy
+ (cÚ¡ 
+û¹_hash_£t
+ *
+chs
+)
+
+270 
+û¹_hash_£t
+ *
+de¡
+ = 
+NULL
+;
+
+271 ià(
+chs
+)
+
+273 
+i
+;
+
+274 
+	`ALLOC_OBJ_CLEAR
+ (
+de¡
+, 
+û¹_hash_£t
+);
+
+275 
+i
+ = 0; i < 
+MAX_CERT_DEPTH
+; ++i)
+
+277 cÚ¡ 
+û¹_hash
+ *
+ch
+ = 
+chs
+->ch[
+i
+];
+
+278 ià(
+ch
+)
+
+280 
+	`ALLOC_OBJ
+ (
+de¡
+->
+ch
+[
+i
+], 
+û¹_hash
+);
+
+281 
+	`memýy
+ (
+de¡
+->
+ch
+[
+i
+]->
+sha1_hash
+, ch->sha1_hash, 
+SHA_DIGEST_LENGTH
+);
+
+285  
+de¡
+;
+
+286 
+	}
+}
+
+288 
+	$Žs_lock_û¹_hash_£t
+ (
+Žs_muÉi
+ *
+muÉi
+)
+
+290 cÚ¡ 
+û¹_hash_£t
+ *
+chs
+ = 
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+].cert_hash_set;
+
+291 ià(
+chs
+ && !
+muÉi
+->
+locked_û¹_hash_£t
+)
+
+292 
+muÉi
+->
+locked_û¹_hash_£t
+ = 
+	`û¹_hash_cÝy
+ (
+chs
+);
+
+293 
+	}
+}
+
+299 
+	$´št_nsC”tTy³
+ (
+ty³
+)
+
+301 
+ty³
+)
+
+303 
+NS_CERT_CHECK_SERVER
+:
+
+305 
+NS_CERT_CHECK_CLIENT
+:
+
+310 
+	}
+}
+
+320 
+»suÉ_t
+
+
+321 
+	$v”ify_³”_û¹
+(cÚ¡ 
+Žs_ÝtiÚs
+ *
+Ýt
+, 
+Ý’v²_x509_û¹_t
+ *
+³”_û¹
+,
+
+322 cÚ¡ *
+subjeù
+, cÚ¡ *
+commÚ_Çme
+)
+
+325 ià(
+Ýt
+->
+ns_û¹_ty³
+ !ð
+NS_CERT_CHECK_NONE
+)
+
+327 ià(
+SUCCESS
+ =ð
+	`x509_v”ify_ns_û¹_ty³
+ (
+³”_û¹
+, 
+Ýt
+->
+ns_û¹_ty³
+))
+
+329 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY OK:‚sCertType=%s",
+
+330 
+	`´št_nsC”tTy³
+ (
+Ýt
+->
+ns_û¹_ty³
+));
+
+334 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY‚sCertType ERROR: %s,„equire‚sCertType=%s",
+
+335 
+subjeù
+, 
+	`´št_nsC”tTy³
+ (
+Ýt
+->
+ns_û¹_ty³
+));
+
+336  
+FAILURE
+;
+
+340 #ià
+OPENSSL_VERSION_NUMBER
+ >ð0x00907000L || 
+ENABLE_CRYPTO_POLARSSL
+
+
+343 ià(
+Ýt
+->
+»mÙe_û¹_ku
+[0] != 0)
+
+345 ià(
+SUCCESS
+ =ð
+	`x509_v”ify_û¹_ku
+ (
+³”_û¹
+, 
+Ýt
+->
+»mÙe_û¹_ku
+, 
+MAX_PARMS
+))
+
+347 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY KU OK");
+
+351 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY KU ERROR");
+
+352  
+FAILURE
+;
+
+357 ià(
+Ýt
+->
+»mÙe_û¹_eku
+ !ð
+NULL
+)
+
+359 ià(
+SUCCESS
+ =ð
+	`x509_v”ify_û¹_eku
+ (
+³”_û¹
+, 
+Ýt
+->
+»mÙe_û¹_eku
+))
+
+361 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY EKU OK");
+
+365 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY EKU ERROR");
+
+366  
+FAILURE
+;
+
+373 ià(
+Ýt
+->
+v”ify_x509_ty³
+ !ð
+VERIFY_X509_NONE
+)
+
+375 iàÐ(
+Ýt
+->
+v”ify_x509_ty³
+ =ð
+VERIFY_X509_SUBJECT_DN
+
+
+376 && 
+	`¡rcmp
+ (
+Ýt
+->
+v”ify_x509_Çme
+, 
+subjeù
+) == 0)
+
+377 || (
+Ýt
+->
+v”ify_x509_ty³
+ =ð
+VERIFY_X509_SUBJECT_RDN
+
+
+378 && 
+	`¡rcmp
+ (
+Ýt
+->
+v”ify_x509_Çme
+, 
+commÚ_Çme
+) == 0)
+
+379 || (
+Ýt
+->
+v”ify_x509_ty³
+ =ð
+VERIFY_X509_SUBJECT_RDN_PREFIX
+
+
+380 && 
+	`¡ºcmp
+ (
+Ýt
+->
+v”ify_x509_Çme
+, 
+commÚ_Çme
+,
+
+381 
+	`¡¾’
+ (
+Ýt
+->
+v”ify_x509_Çme
+)) == 0) )
+
+382 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY X509NAME OK: %s", 
+subjeù
+);
+
+385 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY X509NAME ERROR: %s, must be %s",
+
+386 
+subjeù
+, 
+Ýt
+->
+v”ify_x509_Çme
+);
+
+387  
+FAILURE
+;
+
+391  
+SUCCESS
+;
+
+392 
+	}
+}
+
+399 
+v”ify_û¹_£t_’v
+(
+’v_£t
+ *
+es
+, 
+Ý’v²_x509_û¹_t
+ *
+³”_û¹
+, 
+û¹_d•th
+,
+
+400 cÚ¡ *
+subjeù
+, cÚ¡ *
+commÚ_Çme
+
+
+401 #ifdeà
+ENABLE_X509_TRACK
+
+
+402 , cÚ¡ 
+x509_Œack
+ *x509_track
+
+406 
+	g’vÇme
+[64];
+
+407 *
+	g£rŸl
+ = 
+NULL
+;
+
+408 
+gc_¬’a
+ 
+	ggc
+ = 
+gc_Ãw
+ ();
+
+411 #ifdeà
+ENABLE_X509_TRACK
+
+
+412 ià(
+	gx509_Œack
+)
+
+413 
+x509_£‹nv_Œack
+ (
+x509_Œack
+, 
+es
+, 
+û¹_d•th
+, 
+³”_û¹
+);
+
+416 
+x509_£‹nv
+ (
+es
+, 
+û¹_d•th
+, 
+³”_û¹
+);
+
+419 
+Ý’v²_¢´štf
+ (
+’vÇme
+, ÓnvÇme), "Žs_id_%d", 
+û¹_d•th
+);
+
+420 
+£‹nv_¡r
+ (
+es
+, 
+’vÇme
+, 
+subjeù
+);
+
+424 
+Ý’v²_¢´štf
+ (
+’vÇme
+, ÓnvÇme), "Žs_commÚ_Çme_%d", 
+û¹_d•th
+);
+
+425 
+£‹nv_¡r
+ (
+es
+, 
+’vÇme
+, 
+commÚ_Çme
+);
+
+430 *
+	gsha1_hash
+ = 
+x509_g‘_sha1_hash
+(
+³”_û¹
+, &
+gc
+);
+
+432 
+Ý’v²_¢´štf
+ (
+’vÇme
+, ÓnvÇme), "Žs_dige¡_%d", 
+û¹_d•th
+);
+
+433 
+£‹nv_¡r
+ (
+es
+, 
+’vÇme
+, 
+fÜm©_hex_ex
+(
+sha1_hash
+, 
+SHA_DIGEST_LENGTH
+, 0, 1,
+
+434 ":", &
+gc
+));
+
+438 
+	g£rŸl
+ = 
+back’d_x509_g‘_£rŸl
+(
+³”_û¹
+, &
+gc
+);
+
+439 
+Ý’v²_¢´štf
+ (
+’vÇme
+, ÓnvÇme), "Žs_£rŸl_%d", 
+û¹_d•th
+);
+
+440 
+£‹nv_¡r
+ (
+es
+, 
+’vÇme
+, 
+£rŸl
+);
+
+443 
+	g£rŸl
+ = 
+back’d_x509_g‘_£rŸl_hex
+(
+³”_û¹
+, &
+gc
+);
+
+444 
+Ý’v²_¢´štf
+ (
+’vÇme
+, ÓnvÇme), "Žs_£rŸl_hex_%d", 
+û¹_d•th
+);
+
+445 
+£‹nv_¡r
+ (
+es
+, 
+’vÇme
+, 
+£rŸl
+);
+
+447 
+gc_ä“
+(&
+gc
+);
+
+453 
+»suÉ_t
+
+
+454 
+	$v”ify_û¹_ÿÎ_¶ugš
+(cÚ¡ 
+¶ugš_li¡
+ *
+¶ugšs
+, 
+’v_£t
+ *
+es
+,
+
+455 
+û¹_d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+, *
+subjeù
+)
+
+457 ià(
+	`¶ugš_defšed
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_TLS_VERIFY
+))
+
+459 
+»t
+;
+
+460 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+462 
+	`¬gv_´štf
+ (&
+¬gv
+, "%d %s", 
+û¹_d•th
+, 
+subjeù
+);
+
+464 
+»t
+ = 
+	`¶ugš_ÿÎ_s¦
+ (
+¶ugšs
+, 
+OPENVPN_PLUGIN_TLS_VERIFY
+, &
+¬gv
+, 
+NULL
+, 
+es
+, 
+û¹_d•th
+, 
+û¹
+);
+
+466 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+468 ià(
+»t
+ =ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+)
+
+470 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY PLUGIN OK: depth=%d, %s",
+
+471 
+û¹_d•th
+, 
+subjeù
+);
+
+475 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY PLUGIN ERROR: depth=%d, %s",
+
+476 
+û¹_d•th
+, 
+subjeù
+);
+
+477  
+FAILURE
+;
+
+480  
+SUCCESS
+;
+
+481 
+	}
+}
+
+484 
+	$v”ify_û¹_expÜt_û¹
+(
+Ý’v²_x509_û¹_t
+ *
+³”û¹
+, cÚ¡ *
+tmp_dœ
+, 
+gc_¬’a
+ *
+gc
+)
+
+486 
+FILE
+ *
+³”û¹_fže
+;
+
+487 cÚ¡ *
+³”û¹_fž’ame
+="";
+
+489 if(!
+tmp_dœ
+)
+
+490  
+NULL
+;
+
+493 
+³”û¹_fž’ame
+ = 
+	`ü—‹_‹mp_fže
+ (
+tmp_dœ
+, "pcf", 
+gc
+);
+
+496 
+³”û¹_fže
+ = 
+	`fÝ’
+(
+³”û¹_fž’ame
+, "w+");
+
+497 if(!
+³”û¹_fže
+)
+
+499 
+	`msg
+ (
+M_ERR
+, "Fažed�ØÝ’�empÜ¬y fž�: %s", 
+³”û¹_fž’ame
+);
+
+500  
+NULL
+;
+
+503 ià(
+SUCCESS
+ !ð
+	`x509_wr™e_³m
+(
+³”û¹_fže
+, 
+³”û¹
+))
+
+504 
+	`msg
+ (
+M_ERR
+, "Error writing PEM file containing certificate");
+
+506 
+	`fþo£
+(
+³”û¹_fže
+);
+
+507  
+³”û¹_fž’ame
+;
+
+508 
+	}
+}
+
+514 
+»suÉ_t
+
+
+515 
+	$v”ify_û¹_ÿÎ_commªd
+(cÚ¡ *
+v”ify_commªd
+, 
+’v_£t
+ *
+es
+,
+
+516 
+û¹_d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+, *
+subjeù
+, cÚ¡ *
+v”ify_expÜt_û¹
+)
+
+518 cÚ¡ *
+tmp_fže
+ = 
+NULL
+;
+
+519 
+»t
+;
+
+520 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+521 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+523 
+	`£‹nv_¡r
+ (
+es
+, "script_type", "tls-verify");
+
+525 ià(
+v”ify_expÜt_û¹
+)
+
+527 ià((
+tmp_fže
+=
+	`v”ify_û¹_expÜt_û¹
+(
+û¹
+, 
+v”ify_expÜt_û¹
+, &
+gc
+)))
+
+529 
+	`£‹nv_¡r
+(
+es
+, "³”_û¹", 
+tmp_fže
+);
+
+533 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sø%d %s", 
+v”ify_commªd
+, 
+û¹_d•th
+, 
+subjeù
+);
+
+535 
+	`¬gv_msg_´efix
+ (
+D_TLS_DEBUG
+, &
+¬gv
+, "TLS:ƒxecuting verify command");
+
+536 
+»t
+ = 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+es
+, 0, "--tls-verify script");
+
+538 ià(
+v”ify_expÜt_û¹
+)
+
+540 ià(
+tmp_fže
+)
+
+541 
+	`¶©fÜm_uÆšk
+(
+tmp_fže
+);
+
+544 
+	`gc_ä“
+(&
+gc
+);
+
+545 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+547 ià(
+»t
+)
+
+549 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY SCRIPT OK: depth=%d, %s",
+
+550 
+û¹_d•th
+, 
+subjeù
+);
+
+551  
+SUCCESS
+;
+
+554 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY SCRIPT ERROR: depth=%d, %s",
+
+555 
+û¹_d•th
+, 
+subjeù
+);
+
+556  
+FAILURE
+;
+
+557 
+	}
+}
+
+562 
+»suÉ_t
+
+
+563 
+	$v”ify_check_ül_dœ
+(cÚ¡ *
+ül_dœ
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+)
+
+565 
+»suÉ_t
+ 
+»t
+ = 
+FAILURE
+;
+
+566 
+â
+[256];
+
+567 
+fd
+ = -1;
+
+568 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+570 *
+£rŸl
+ = 
+	`back’d_x509_g‘_£rŸl
+(
+û¹
+, &
+gc
+);
+
+572 ià(!
+	`Ý’v²_¢´štf
+(
+â
+, (â), "%s%c%s", 
+ül_dœ
+, 
+OS_SPECIFIC_DIRSEP
+, 
+£rŸl
+))
+
+574 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY CRL: filename overflow");
+
+575 
+þ—nup
+;
+
+577 
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+â
+, 
+O_RDONLY
+, 0);
+
+578 ià(
+fd
+ >= 0)
+
+580 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY CRL: c”tifiÿ‹ s”ŸÈnumb” % i »voked", 
+£rŸl
+);
+
+581 
+þ—nup
+;
+
+584 
+»t
+ = 
+SUCCESS
+;
+
+586 
+þ—nup
+:
+
+588 ià(
+fd
+ != -1)
+
+589 
+	`þo£
+(
+fd
+);
+
+590 
+	`gc_ä“
+(&
+gc
+);
+
+591  
+»t
+;
+
+592 
+	}
+}
+
+594 
+»suÉ_t
+
+
+595 
+	$v”ify_û¹
+(
+Žs_£ssiÚ
+ *
+£ssiÚ
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+û¹_d•th
+)
+
+597 
+»suÉ_t
+ 
+»t
+ = 
+FAILURE
+;
+
+598 *
+subjeù
+ = 
+NULL
+;
+
+599 
+commÚ_Çme
+[
+TLS_USERNAME_LEN
++1] = {0};
+
+600 cÚ¡ 
+Žs_ÝtiÚs
+ *
+Ýt
+;
+
+601 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+603 
+Ýt
+ = 
+£ssiÚ
+->opt;
+
+604 
+	`ASSERT
+ (
+Ýt
+);
+
+606 
+£ssiÚ
+->
+v”if›d
+ = 
+çl£
+;
+
+609 
+subjeù
+ = 
+	`x509_g‘_subjeù
+(
+û¹
+, &
+gc
+);
+
+610 ià(!
+subjeù
+)
+
+612 
+	`msg
+ (
+D_TLS_ERRORS
+, "VERIFY ERROR: depth=%d, could‚otƒxtract X509 "
+
+613 "subjeù sŒšg from c”tifiÿ‹", 
+û¹_d•th
+);
+
+614 
+þ—nup
+;
+
+618 
+	`¡ršg_mod_»m­_Çme
+ (
+subjeù
+, 
+X509_NAME_CHAR_CLASS
+);
+
+619 
+	`¡ršg_»¶aû_Ëadšg
+ (
+subjeù
+, '-', '_');
+
+622 ià(
+SUCCESS
+ !ð
+	`x509_g‘_u£ºame
+ (
+commÚ_Çme
+, (common_name),
+
+623 
+Ýt
+->
+x509_u£ºame_f›ld
+, 
+û¹
+))
+
+625 ià(!
+û¹_d•th
+)
+
+627 
+	`msg
+ (
+D_TLS_ERRORS
+, "VERIFY ERROR: could‚otƒxtract %s from X509 "
+
+630 
+Ýt
+->
+x509_u£ºame_f›ld
+,
+
+631 
+subjeù
+,
+
+632 
+TLS_USERNAME_LEN
+);
+
+633 
+þ—nup
+;
+
+638 
+	`¡ršg_mod_»m­_Çme
+ (
+commÚ_Çme
+, 
+COMMON_NAME_CHAR_CLASS
+);
+
+641 ià(
+û¹_d•th
+ >ð
+MAX_CERT_DEPTH
+)
+
+643 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS E¼Ü: CÚvÞu‹d c”tifiÿ‹ chaš d‘eùed w™h d•th [%d] g»©”�hª %d", 
+û¹_d•th
+, 
+MAX_CERT_DEPTH
+);
+
+644 
+þ—nup
+;
+
+648 ià(
+û¹_d•th
+ =ð1 && 
+Ýt
+->
+v”ify_hash
+)
+
+650 *
+sha1_hash
+ = 
+	`x509_g‘_sha1_hash
+(
+û¹
+, &
+gc
+);
+
+651 ià(
+	`memcmp
+ (
+sha1_hash
+, 
+Ýt
+->
+v”ify_hash
+, 
+SHA_DIGEST_LENGTH
+))
+
+653 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Error:†evel-1 certificate hash verification failed");
+
+654 
+þ—nup
+;
+
+659 ià(
+û¹_d•th
+ == 0)
+
+660 
+	`£t_commÚ_Çme
+ (
+£ssiÚ
+, 
+commÚ_Çme
+);
+
+662 
+£ssiÚ
+->
+v”ify_maxËv–
+ = 
+	`max_št
+ (£ssiÚ->v”ify_maxËv–, 
+û¹_d•th
+);
+
+665 
+	`v”ify_û¹_£t_’v
+(
+Ýt
+->
+es
+, 
+û¹
+, 
+û¹_d•th
+, 
+subjeù
+, 
+commÚ_Çme
+
+
+666 #ifdeà
+ENABLE_X509_TRACK
+
+
+667 , 
+Ýt
+->
+x509_Œack
+
+
+672 
+	`£‹nv_uÁru¡ed
+ (
+£ssiÚ
+);
+
+675 ià(
+û¹_d•th
+ =ð0 && 
+SUCCESS
+ !ð
+	`v”ify_³”_û¹
+(
+Ýt
+, 
+û¹
+, 
+subjeù
+, 
+commÚ_Çme
+))
+
+676 
+þ—nup
+;
+
+679 ià(
+SUCCESS
+ !ð
+	`v”ify_û¹_ÿÎ_¶ugš
+(
+Ýt
+->
+¶ugšs
+, o±->
+es
+, 
+û¹_d•th
+, 
+û¹
+, 
+subjeù
+))
+
+680 
+þ—nup
+;
+
+683 ià(
+Ýt
+->
+v”ify_commªd
+ && 
+SUCCESS
+ !ð
+	`v”ify_û¹_ÿÎ_commªd
+(opt->verify_command,
+
+684 
+Ýt
+->
+es
+, 
+û¹_d•th
+, 
+û¹
+, 
+subjeù
+, o±->
+v”ify_expÜt_û¹
+))
+
+685 
+þ—nup
+;
+
+688 ià(
+Ýt
+->
+ül_fže
+)
+
+690 ià(
+Ýt
+->
+s¦_æags
+ & 
+SSLF_CRL_VERIFY_DIR
+)
+
+692 ià(
+SUCCESS
+ !ð
+	`v”ify_check_ül_dœ
+(
+Ýt
+->
+ül_fže
+, 
+û¹
+))
+
+693 
+þ—nup
+;
+
+697 ià(
+SUCCESS
+ !ð
+	`x509_v”ify_ül
+(
+Ýt
+->
+ül_fže
+, 
+û¹
+, 
+subjeù
+))
+
+698 
+þ—nup
+;
+
+702 
+	`msg
+ (
+D_HANDSHAKE
+, "VERIFY OK: d•th=%d, %s", 
+û¹_d•th
+, 
+subjeù
+);
+
+703 
+£ssiÚ
+->
+v”if›d
+ = 
+Œue
+;
+
+704 
+»t
+ = 
+SUCCESS
+;
+
+706 
+þ—nup
+:
+
+708 ià(
+»t
+ !ð
+SUCCESS
+)
+
+710 
+	`Žs_þ—r_”rÜ
+();
+
+711 
+£ssiÚ
+->
+v”if›d
+ = 
+çl£
+;
+
+713 
+	`gc_ä“
+(&
+gc
+);
+
+715  
+»t
+;
+
+716 
+	}
+}
+
+723 #ifdeà
+ENABLE_DEF_AUTH
+
+
+726 
+	#ACF_UNDEFINED
+ 0
+
+	)
+
+727 
+	#ACF_SUCCEEDED
+ 1
+
+	)
+
+728 
+	#ACF_DISABLED
+ 2
+
+	)
+
+729 
+	#ACF_FAILED
+ 3
+
+	)
+
+732 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+734 
+	$mª_def_auth_£t_þ›Á_»asÚ
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ *
+þ›Á_»asÚ
+)
+
+736 ià(
+muÉi
+->
+þ›Á_»asÚ
+)
+
+738 
+	`ä“
+ (
+muÉi
+->
+þ›Á_»asÚ
+);
+
+739 
+muÉi
+->
+þ›Á_»asÚ
+ = 
+NULL
+;
+
+741 ià(
+þ›Á_»asÚ
+ && 
+	`¡¾’
+ (client_reason))
+
+743 
+muÉi
+->
+þ›Á_»asÚ
+ = 
+	`¡ršg_®loc
+ (þ›Á_»asÚ, 
+NULL
+);
+
+744 
+	}
+}
+
+746 
+šlše
+ 
+
+747 
+	$mª_def_auth_‹¡
+ (cÚ¡ 
+key_¡©e
+ *
+ks
+)
+
+749 ià(
+	`mªagem’t_’abË_def_auth
+ (
+mªagem’t
+))
+
+750  
+ks
+->
+mda_¡©us
+;
+
+752  
+ACF_DISABLED
+;
+
+753 
+	}
+}
+
+756 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+763 
+	$key_¡©e_rm_auth_cÚŒÞ_fže
+ (
+key_¡©e
+ *
+ks
+)
+
+765 ià(
+ks
+ && ks->
+auth_cÚŒÞ_fže
+)
+
+767 
+	`¶©fÜm_uÆšk
+ (
+ks
+->
+auth_cÚŒÞ_fže
+);
+
+768 
+	`ä“
+ (
+ks
+->
+auth_cÚŒÞ_fže
+);
+
+769 
+ks
+->
+auth_cÚŒÞ_fže
+ = 
+NULL
+;
+
+771 
+	}
+}
+
+774 
+	$key_¡©e_g’_auth_cÚŒÞ_fže
+ (
+key_¡©e
+ *
+ks
+, cÚ¡ 
+Žs_ÝtiÚs
+ *
+Ýt
+)
+
+776 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+777 cÚ¡ *
+acf
+;
+
+779 
+	`key_¡©e_rm_auth_cÚŒÞ_fže
+ (
+ks
+);
+
+780 
+acf
+ = 
+	`ü—‹_‹mp_fže
+ (
+Ýt
+->
+tmp_dœ
+, "acf", &
+gc
+);
+
+781 ià(
+acf
+) {
+
+782 
+ks
+->
+auth_cÚŒÞ_fže
+ = 
+	`¡ršg_®loc
+ (
+acf
+, 
+NULL
+);
+
+783 
+	`£‹nv_¡r
+ (
+Ýt
+->
+es
+, "auth_cÚŒÞ_fže", 
+ks
+->
+auth_cÚŒÞ_fže
+);
+
+786 
+	`gc_ä“
+ (&
+gc
+);
+
+787 
+	}
+}
+
+790 
+	$key_¡©e_‹¡_auth_cÚŒÞ_fže
+ (
+key_¡©e
+ *
+ks
+)
+
+792 ià(
+ks
+ && ks->
+auth_cÚŒÞ_fže
+)
+
+794 
+»t
+ = 
+ks
+->
+auth_cÚŒÞ_¡©us
+;
+
+795 ià(
+»t
+ =ð
+ACF_UNDEFINED
+)
+
+797 
+FILE
+ *
+å
+ = 
+	`fÝ’
+ (
+ks
+->
+auth_cÚŒÞ_fže
+, "r");
+
+798 ià(
+å
+)
+
+800 cÚ¡ 
+c
+ = 
+	`fg‘c
+ (
+å
+);
+
+801 ià(
+c
+ == '1')
+
+802 
+»t
+ = 
+ACF_SUCCEEDED
+;
+
+803 ià(
+c
+ == '0')
+
+804 
+»t
+ = 
+ACF_FAILED
+;
+
+805 
+	`fþo£
+ (
+å
+);
+
+806 
+ks
+->
+auth_cÚŒÞ_¡©us
+ = 
+»t
+;
+
+809  
+»t
+;
+
+811  
+ACF_DISABLED
+;
+
+812 
+	}
+}
+
+822 
+	$Žs_auth’tiÿtiÚ_¡©us
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+Ï‹ncy
+)
+
+824 
+boÞ
+ 
+deã¼ed
+ = 
+çl£
+;
+
+825 
+boÞ
+ 
+sucûss
+ = 
+çl£
+;
+
+826 
+boÞ
+ 
+aùive
+ = 
+çl£
+;
+
+828 #ifdeà
+ENABLE_DEF_AUTH
+
+
+829 cÚ¡ 
+acf_m”ge
+[] =
+
+831 
+ACF_UNDEFINED
+,
+
+832 
+ACF_UNDEFINED
+,
+
+833 
+ACF_UNDEFINED
+,
+
+834 
+ACF_FAILED
+,
+
+835 
+ACF_UNDEFINED
+,
+
+836 
+ACF_SUCCEEDED
+,
+
+837 
+ACF_SUCCEEDED
+,
+
+838 
+ACF_FAILED
+,
+
+839 
+ACF_UNDEFINED
+,
+
+840 
+ACF_SUCCEEDED
+,
+
+841 
+ACF_DISABLED
+,
+
+842 
+ACF_FAILED
+,
+
+843 
+ACF_FAILED
+,
+
+844 
+ACF_FAILED
+,
+
+845 
+ACF_FAILED
+,
+
+846 
+ACF_FAILED
+
+
+850 ià(
+muÉi
+)
+
+852 
+i
+;
+
+854 #ifdeà
+ENABLE_DEF_AUTH
+
+
+855 ià(
+Ï‹ncy
+ && 
+muÉi
+->
+�s_Ï¡
+ && muÉi->�s_Ï¡ +†©’cy >ð
+now
+)
+
+856  
+TLS_AUTHENTICATION_UNDEFINED
+;
+
+857 
+muÉi
+->
+�s_Ï¡
+ = 
+now
+;
+
+860 
+i
+ = 0; i < 
+KEY_SCAN_SIZE
+; ++i)
+
+862 
+key_¡©e
+ *
+ks
+ = 
+muÉi
+->
+key_sÿn
+[
+i
+];
+
+863 ià(
+	`DECRYPT_KEY_ENABLED
+ (
+muÉi
+, 
+ks
+))
+
+865 
+aùive
+ = 
+Œue
+;
+
+866 ià(
+ks
+->
+auth’tiÿ‹d
+)
+
+868 #ifdeà
+ENABLE_DEF_AUTH
+
+
+869 
+s1
+ = 
+ACF_DISABLED
+;
+
+870 
+s2
+ = 
+ACF_DISABLED
+;
+
+871 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+872 
+s1
+ = 
+	`key_¡©e_‹¡_auth_cÚŒÞ_fže
+ (
+ks
+);
+
+874 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+875 
+s2
+ = 
+	`mª_def_auth_‹¡
+ (
+ks
+);
+
+877 
+	`ASSERT
+ (
+s1
+ < 4 && 
+s2
+ < 4);
+
+878 
+acf_m”ge
+[(
+s1
+<<2è+ 
+s2
+])
+
+880 
+ACF_SUCCEEDED
+:
+
+881 
+ACF_DISABLED
+:
+
+882 
+sucûss
+ = 
+Œue
+;
+
+883 
+ks
+->
+auth_deã¼ed
+ = 
+çl£
+;
+
+885 
+ACF_UNDEFINED
+:
+
+886 ià(
+now
+ < 
+ks
+->
+auth_deã¼ed_expœe
+)
+
+887 
+deã¼ed
+ = 
+Œue
+;
+
+889 
+ACF_FAILED
+:
+
+890 
+ks
+->
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+893 
+	`ASSERT
+ (0);
+
+896 
+sucûss
+ = 
+Œue
+;
+
+904 
+	`dmsg
+ (
+D_TLS_ERRORS
+, "TAS:‡=%d s=%d d=%d", 
+aùive
+, 
+sucûss
+, 
+deã¼ed
+);
+
+907 ià(
+sucûss
+)
+
+908  
+TLS_AUTHENTICATION_SUCCEEDED
+;
+
+909 ià(!
+aùive
+ || 
+deã¼ed
+)
+
+910  
+TLS_AUTHENTICATION_DEFERRED
+;
+
+912  
+TLS_AUTHENTICATION_FAILED
+;
+
+913 
+	}
+}
+
+915 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+920 
+boÞ
+
+
+921 
+	$Žs_auth’tiÿ‹_key
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+mda_key_id
+, cÚ¡ 
+boÞ
+ 
+auth
+, cÚ¡ *
+þ›Á_»asÚ
+)
+
+923 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+924 ià(
+muÉi
+)
+
+926 
+i
+;
+
+927 
+	`mª_def_auth_£t_þ›Á_»asÚ
+ (
+muÉi
+, 
+þ›Á_»asÚ
+);
+
+928 
+i
+ = 0; i < 
+KEY_SCAN_SIZE
+; ++i)
+
+930 
+key_¡©e
+ *
+ks
+ = 
+muÉi
+->
+key_sÿn
+[
+i
+];
+
+931 ià(
+ks
+->
+mda_key_id
+ == mda_key_id)
+
+933 
+ks
+->
+mda_¡©us
+ = 
+auth
+ ? 
+ACF_SUCCEEDED
+ : 
+ACF_FAILED
+;
+
+934 
+»t
+ = 
+Œue
+;
+
+938  
+»t
+;
+
+939 
+	}
+}
+
+956 
+boÞ
+
+
+957 
+	$v”ify_u£r_·ss_sü�t
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ 
+u£r_·ss
+ *
+up
+)
+
+959 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+960 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+961 cÚ¡ *
+tmp_fže
+ = "";
+
+962 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+965 ià((
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+è|| 
+	`¡¾’
+ (
+up
+->
+u£ºame
+))
+
+968 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "script_type", "user-pass-verify");
+
+970 ià(
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+)
+
+972 
+¡©us_ou�ut
+ *
+so
+;
+
+974 
+tmp_fže
+ = 
+	`ü—‹_‹mp_fže
+ (
+£ssiÚ
+->
+Ýt
+->
+tmp_dœ
+, "up", &
+gc
+);
+
+975 ifÐ
+tmp_fže
+ ) {
+
+976 
+so
+ = 
+	`¡©us_Ý’
+ (
+tmp_fže
+, 0, -1, 
+NULL
+, 
+STATUS_OUTPUT_WRITE
+);
+
+977 
+	`¡©us_´štf
+ (
+so
+, "%s", 
+up
+->
+u£ºame
+);
+
+978 
+	`¡©us_´štf
+ (
+so
+, "%s", 
+up
+->
+·sswÜd
+);
+
+979 ià(!
+	`¡©us_þo£
+ (
+so
+))
+
+981 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: could‚ot write username/password�o file: %s",
+
+982 
+tmp_fže
+);
+
+983 
+dÚe
+;
+
+986 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: could‚ot create write "
+
+992 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "u£ºame", 
+up
+->
+u£ºame
+);
+
+993 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "·sswÜd", 
+up
+->
+·sswÜd
+);
+
+997 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "commÚ_Çme", sessiÚ->
+commÚ_Çme
+);
+
+1000 
+	`£‹nv_uÁru¡ed
+ (
+£ssiÚ
+);
+
+1003 
+	`¬gv_´štf
+ (&
+¬gv
+, "%sø%s", 
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_v”ify_sü�t
+, 
+tmp_fže
+);
+
+1006 
+»t
+ = 
+	`Ý’v²_run_sü�t
+ (&
+¬gv
+, 
+£ssiÚ
+->
+Ýt
+->
+es
+, 0,
+
+1009 ià(!
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_v”ify_sü�t_vŸ_fže
+)
+
+1010 
+	`£‹nv_d–
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "password");
+
+1014 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error:…eer…rovided‡ blank username");
+
+1017 
+dÚe
+:
+
+1018 ià(
+tmp_fže
+ && 
+	`¡¾’
+ (tmp_file) > 0)
+
+1019 
+	`¶©fÜm_uÆšk
+ (
+tmp_fže
+);
+
+1021 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1022 
+	`gc_ä“
+ (&
+gc
+);
+
+1023  
+»t
+;
+
+1024 
+	}
+}
+
+1030 
+	$v”ify_u£r_·ss_¶ugš
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ 
+u£r_·ss
+ *
+up
+, cÚ¡ *
+¿w_u£ºame
+)
+
+1032 
+»tv®
+ = 
+OPENVPN_PLUGIN_FUNC_ERROR
+;
+
+1033 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1036 ià((
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+è|| 
+	`¡¾’
+ (
+up
+->
+u£ºame
+))
+
+1039 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "u£ºame", (
+¿w_u£ºame
+ ?„aw_u£ºam�: 
+up
+->
+u£ºame
+));
+
+1040 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "·sswÜd", 
+up
+->
+·sswÜd
+);
+
+1043 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "commÚ_Çme", sessiÚ->
+commÚ_Çme
+);
+
+1046 
+	`£‹nv_uÁru¡ed
+ (
+£ssiÚ
+);
+
+1048 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+1050 
+	`key_¡©e_g’_auth_cÚŒÞ_fže
+ (
+ks
+, 
+£ssiÚ
+->
+Ýt
+);
+
+1054 
+»tv®
+ = 
+	`¶ugš_ÿÎ
+ (
+£ssiÚ
+->
+Ýt
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
+, 
+NULL
+, NULL, sessiÚ->Ýt->
+es
+);
+
+1056 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+1058 ià(
+»tv®
+ !ð
+OPENVPN_PLUGIN_FUNC_DEFERRED
+)
+
+1059 
+	`key_¡©e_rm_auth_cÚŒÞ_fže
+ (
+ks
+);
+
+1062 
+	`£‹nv_d–
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "password");
+
+1063 ià(
+¿w_u£ºame
+)
+
+1064 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "u£ºame", 
+up
+->
+u£ºame
+);
+
+1068 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error (verify_user_pass_plugin):…eer…rovided‡ blank username");
+
+1071  
+»tv®
+;
+
+1072 
+	}
+}
+
+1075 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1079 
+	#KMDA_ERROR
+ 0
+
+	)
+
+1080 
+	#KMDA_SUCCESS
+ 1
+
+	)
+
+1081 
+	#KMDA_UNDEF
+ 2
+
+	)
+
+1082 
+	#KMDA_DEF
+ 3
+
+	)
+
+1085 
+	$v”ify_u£r_·ss_mªagem’t
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ 
+u£r_·ss
+ *
+up
+, cÚ¡ *
+¿w_u£ºame
+)
+
+1087 
+»tv®
+ = 
+KMDA_ERROR
+;
+
+1088 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1091 ià((
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_AUTH_USER_PASS_OPTIONAL
+è|| 
+	`¡¾’
+ (
+up
+->
+u£ºame
+))
+
+1094 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "u£ºame", (
+¿w_u£ºame
+ ?„aw_u£ºam�: 
+up
+->
+u£ºame
+));
+
+1095 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "·sswÜd", 
+up
+->
+·sswÜd
+);
+
+1098 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "commÚ_Çme", sessiÚ->
+commÚ_Çme
+);
+
+1101 
+	`£‹nv_uÁru¡ed
+ (
+£ssiÚ
+);
+
+1103 ià(
+mªagem’t
+)
+
+1104 
+	`mªagem’t_nÙify_þ›Á_Ãedšg_auth
+ (
+mªagem’t
+, 
+ks
+->
+mda_key_id
+, 
+£ssiÚ
+->
+Ýt
+->
+mda_cÚ‹xt
+, sessiÚ->Ýt->
+es
+);
+
+1106 
+	`£‹nv_d–
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "password");
+
+1107 ià(
+¿w_u£ºame
+)
+
+1108 
+	`£‹nv_¡r
+ (
+£ssiÚ
+->
+Ýt
+->
+es
+, "u£ºame", 
+up
+->
+u£ºame
+);
+
+1110 
+»tv®
+ = 
+KMDA_SUCCESS
+;
+
+1114 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error (verify_user_pass_management):…eer…rovided‡ blank username");
+
+1117  
+»tv®
+;
+
+1118 
+	}
+}
+
+1125 
+	$v”ify_u£r_·ss
+(
+u£r_·ss
+ *
+up
+, 
+Žs_muÉi
+ *
+muÉi
+,
+
+1126 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1128 
+s1
+ = 
+OPENVPN_PLUGIN_FUNC_SUCCESS
+;
+
+1129 
+boÞ
+ 
+s2
+ = 
+Œue
+;
+
+1130 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1132 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1133 *
+¿w_u£ºame
+ = 
+NULL
+;
+
+1135 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1136 
+mª_def_auth
+ = 
+KMDA_UNDEF
+;
+
+1138 ià(
+	`mªagem’t_’abË_def_auth
+ (
+mªagem’t
+))
+
+1139 
+mª_def_auth
+ = 
+KMDA_DEF
+;
+
+1146 ià(
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NAMES
+))
+
+1148 
+	`ALLOC_ARRAY_CLEAR_GC
+ (
+¿w_u£ºame
+, , 
+USER_PASS_LEN
+, &
+gc
+);
+
+1149 
+	`¡rýy
+ (
+¿w_u£ºame
+, 
+up
+->
+u£ºame
+);
+
+1150 
+	`¡ršg_mod
+ (
+¿w_u£ºame
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+1154 
+	`¡ršg_mod_»m­_Çme
+ (
+up
+->
+u£ºame
+, 
+COMMON_NAME_CHAR_CLASS
+);
+
+1155 
+	`¡ršg_mod
+ (
+up
+->
+·sswÜd
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+1158 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1159 ià(
+mª_def_auth
+ =ð
+KMDA_DEF
+)
+
+1160 
+mª_def_auth
+ = 
+	`v”ify_u£r_·ss_mªagem’t
+ (
+£ssiÚ
+, 
+up
+, 
+¿w_u£ºame
+);
+
+1162 ià(
+	`¶ugš_defšed
+ (
+£ssiÚ
+->
+Ýt
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
+))
+
+1163 
+s1
+ = 
+	`v”ify_u£r_·ss_¶ugš
+ (
+£ssiÚ
+, 
+up
+, 
+¿w_u£ºame
+);
+
+1164 ià(
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_v”ify_sü�t
+)
+
+1165 
+s2
+ = 
+	`v”ify_u£r_·ss_sü�t
+ (
+£ssiÚ
+, 
+up
+);
+
+1168 ià((
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+è&& 
+	`¡¾’
+ (
+up
+->
+u£ºame
+è> 
+TLS_USERNAME_LEN
+)
+
+1170 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth E¼Ü: --u£ºame-as-commÚ‚am�¥ecif›d‡nd u£ºam�i lÚg”�hª�h�maximum…”m™‹d CommÚ Nam�Ëngth oà%d ch¬aù”s", 
+TLS_USERNAME_LEN
+);
+
+1171 
+s1
+ = 
+OPENVPN_PLUGIN_FUNC_ERROR
+;
+
+1175 ià((
+s1
+ =ð
+OPENVPN_PLUGIN_FUNC_SUCCESS
+
+
+1176 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+1177 || 
+s1
+ =ð
+OPENVPN_PLUGIN_FUNC_DEFERRED
+
+
+1179 è&& 
+s2
+
+
+1180 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1181 && 
+mª_def_auth
+ !ð
+KMDA_ERROR
+
+
+1183 && 
+	`Žs_lock_u£ºame
+ (
+muÉi
+, 
+up
+->
+u£ºame
+))
+
+1185 
+ks
+->
+auth’tiÿ‹d
+ = 
+Œue
+;
+
+1186 #ifdeà
+PLUGIN_DEF_AUTH
+
+
+1187 ià(
+s1
+ =ð
+OPENVPN_PLUGIN_FUNC_DEFERRED
+)
+
+1188 
+ks
+->
+auth_deã¼ed
+ = 
+Œue
+;
+
+1190 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+1191 ià(
+mª_def_auth
+ !ð
+KMDA_UNDEF
+)
+
+1192 
+ks
+->
+auth_deã¼ed
+ = 
+Œue
+;
+
+1194 ià((
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+))
+
+1195 
+	`£t_commÚ_Çme
+ (
+£ssiÚ
+, 
+up
+->
+u£ºame
+);
+
+1196 #ifdeà
+ENABLE_DEF_AUTH
+
+
+1197 
+	`msg
+ (
+D_HANDSHAKE
+, "TLS: Username/Password‡uthentication %s for username '%s' %s",
+
+1198 
+ks
+->
+auth_deã¼ed
+ ? "deferred" : "succeeded",
+
+1199 
+up
+->
+u£ºame
+,
+
+1200 (
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+) ? "[CN SET]" : "");
+
+1202 
+	`msg
+ (
+D_HANDSHAKE
+, "TLS: Username/Password‡uthentication %s for username '%s' %s",
+
+1204 
+up
+->
+u£ºame
+,
+
+1205 (
+£ssiÚ
+->
+Ýt
+->
+s¦_æags
+ & 
+SSLF_USERNAME_AS_COMMON_NAME
+) ? "[CN SET]" : "");
+
+1210 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: Auth Username/Password verification failed for…eer");
+
+1213 
+	`gc_ä“
+ (&
+gc
+);
+
+1214 
+	}
+}
+
+1217 
+	$v”ify_fš®_auth_checks
+(
+Žs_muÉi
+ *
+muÉi
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+1219 
+key_¡©e
+ *
+ks
+ = &
+£ssiÚ
+->
+key
+[
+KS_PRIMARY
+];
+
+1222 ià(!
+£ssiÚ
+->
+commÚ_Çme
+)
+
+1223 
+	`£t_commÚ_Çme
+ (
+£ssiÚ
+, "");
+
+1226 ià(
+ks
+->
+auth’tiÿ‹d
+ && 
+muÉi
+->
+locked_ú
+)
+
+1228 cÚ¡ *
+ú
+ = 
+£ssiÚ
+->
+commÚ_Çme
+;
+
+1229 ià(
+ú
+ && 
+	`¡rcmp
+ (ú, 
+muÉi
+->
+locked_ú
+))
+
+1231 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: TLS object CN‡ttempted�o change from '%s'�o '%s' --�unnel disabled",
+
+1232 
+muÉi
+->
+locked_ú
+,
+
+1233 
+ú
+);
+
+1236 
+	`£t_commÚ_Çme
+ (
+£ssiÚ
+, 
+muÉi
+->
+locked_ú
+);
+
+1237 
+	`Žs_d—uth’tiÿ‹
+ (
+muÉi
+);
+
+1242 ià(
+ks
+->
+auth’tiÿ‹d
+ && 
+muÉi
+->
+locked_û¹_hash_£t
+)
+
+1244 cÚ¡ 
+û¹_hash_£t
+ *
+chs
+ = 
+£ssiÚ
+->cert_hash_set;
+
+1245 ià(
+chs
+ && !
+	`û¹_hash_com·»
+ (chs, 
+muÉi
+->
+locked_û¹_hash_£t
+))
+
+1247 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: TLS object CN=%s client-provided SSL certs unexpectedly changed during mid-session„eauth",
+
+1248 
+£ssiÚ
+->
+commÚ_Çme
+);
+
+1251 
+	`Žs_d—uth’tiÿ‹
+ (
+muÉi
+);
+
+1256 ià(
+ks
+->
+auth’tiÿ‹d
+ && 
+£ssiÚ
+->
+Ýt
+->
+þ›Á_cÚfig_dœ_exþusive
+)
+
+1258 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1260 cÚ¡ *
+ú
+ = 
+£ssiÚ
+->
+commÚ_Çme
+;
+
+1261 cÚ¡ *
+·th
+ = 
+	`g’_·th
+ (
+£ssiÚ
+->
+Ýt
+->
+þ›Á_cÚfig_dœ_exþusive
+, 
+ú
+, &
+gc
+);
+
+1262 ià(!
+ú
+ || !
+	`¡rcmp
+ (ú, 
+CCD_DEFAULT
+è|| !
+	`‹¡_fže
+ (
+·th
+))
+
+1264 
+ks
+->
+auth’tiÿ‹d
+ = 
+çl£
+;
+
+1265 
+	`msg
+ (
+D_TLS_ERRORS
+, "TLS Auth Error: --client-config-dir‡uthentication failed for common‚ame '%s' file='%s'",
+
+1266 
+£ssiÚ
+->
+commÚ_Çme
+,
+
+1267 
+·th
+ ?…ath : "UNDEF");
+
+1270 
+	`gc_ä“
+ (&
+gc
+);
+
+1272 
+	}
+}
+
+	@ssl_verify.h
+
+30 #iâdeà
+SSL_VERIFY_H_
+
+
+31 
+	#SSL_VERIFY_H_
+
+
+	)
+
+33 
+	~"sysh—d.h
+"
+
+34 
+	~"misc.h
+"
+
+35 
+	~"mªage.h
+"
+
+36 
+	~"s¦_commÚ.h
+"
+
+39 #ifdeà
+ENABLE_CRYPTO_OPENSSL
+
+
+40 
+	~"s¦_v”ify_Ý’s¦.h
+"
+
+42 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+43 
+	~"s¦_v”ify_pÞ¬s¦.h
+"
+
+46 
+	~"s¦_v”ify_back’d.h
+"
+
+53 
+	#MAX_CERT_DEPTH
+ 16
+
+	)
+
+56 
+	sû¹_hash
+ {
+
+57 
+	msha1_hash
+[
+SHA_DIGEST_LENGTH
+];
+
+61 
+	sû¹_hash_£t
+ {
+
+62 
+û¹_hash
+ *
+	mch
+[
+MAX_CERT_DEPTH
+];
+
+65 
+	#VERIFY_X509_NONE
+ 0
+
+	)
+
+66 
+	#VERIFY_X509_SUBJECT_DN
+ 1
+
+	)
+
+67 
+	#VERIFY_X509_SUBJECT_RDN
+ 2
+
+	)
+
+68 
+	#VERIFY_X509_SUBJECT_RDN_PREFIX
+ 3
+
+	)
+
+69 
+	#TLS_REMOTE_SUBJECT_DN
+ 1 + 0x100
+
+	)
+
+70 
+	#TLS_REMOTE_SUBJECT_RDN_PREFIX
+ 3 + 0x100
+
+	)
+
+72 
+	#TLS_AUTHENTICATION_SUCCEEDED
+ 0
+
+	)
+
+73 
+	#TLS_AUTHENTICATION_FAILED
+ 1
+
+	)
+
+74 
+	#TLS_AUTHENTICATION_DEFERRED
+ 2
+
+	)
+
+75 
+	#TLS_AUTHENTICATION_UNDEFINED
+ 3
+
+	)
+
+83 
+Žs_auth’tiÿtiÚ_¡©us
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+Ï‹ncy
+);
+
+93 
+	#DECRYPT_KEY_ENABLED
+(
+muÉi
+, 
+ks
+è((ks)->
+¡©e
+ >ð(
+S_GOT_KEY
+ - (muÉi)->
+Ýt
+.
+£rv”
+))
+
+	)
+
+100 
+key_¡©e_rm_auth_cÚŒÞ_fže
+ (
+key_¡©e
+ *
+ks
+);
+
+107 
+û¹_hash_ä“
+ (
+û¹_hash_£t
+ *
+chs
+);
+
+114 
+Žs_lock_û¹_hash_£t
+ (
+Žs_muÉi
+ *
+muÉi
+);
+
+121 
+Žs_lock_commÚ_Çme
+ (
+Žs_muÉi
+ *
+muÉi
+);
+
+129 cÚ¡ *
+Žs_commÚ_Çme
+ (cÚ¡ 
+Žs_muÉi
+* 
+muÉi
+, cÚ¡ 
+boÞ
+ 
+nuÎ
+);
+
+137 cÚ¡ *
+Žs_u£ºame
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+boÞ
+ 
+nuÎ
+);
+
+139 #ifdeà
+ENABLE_PF
+
+
+150 
+šlše
+ 
+boÞ
+
+
+151 
+	$Žs_commÚ_Çme_hash
+ (cÚ¡ 
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ **
+ú
+, 
+ušt32_t
+ *
+ú_hash
+)
+
+153 ià(
+muÉi
+)
+
+155 cÚ¡ 
+Žs_£ssiÚ
+ *
+s
+ = &
+muÉi
+->
+£ssiÚ
+[
+TM_ACTIVE
+];
+
+156 ià(
+s
+->
+commÚ_Çme
+ && s->common_name[0] != '\0')
+
+158 *
+ú
+ = 
+s
+->
+commÚ_Çme
+;
+
+159 *
+ú_hash
+ = 
+s
+->
+commÚ_Çme_hashv®
+;
+
+160  
+Œue
+;
+
+163  
+çl£
+;
+
+164 
+	}
+}
+
+177 
+šlše
+ 
+boÞ
+ 
+	$v”ify_u£r_·ss_’abËd
+(
+Žs_£ssiÚ
+ *
+£ssiÚ
+)
+
+179  (
+£ssiÚ
+->
+Ýt
+->
+auth_u£r_·ss_v”ify_sü�t
+
+
+180 || 
+	`¶ugš_defšed
+ (
+£ssiÚ
+->
+Ýt
+->
+¶ugšs
+, 
+OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY
+)
+
+181 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+182 || 
+	`mªagem’t_’abË_def_auth
+ (
+mªagem’t
+)
+
+185 
+	}
+}
+
+200 
+v”ify_u£r_·ss
+(
+u£r_·ss
+ *
+up
+, 
+Žs_muÉi
+ *
+muÉi
+,
+
+201 
+Žs_£ssiÚ
+ *
+£ssiÚ
+);
+
+212 
+v”ify_fš®_auth_checks
+(
+Žs_muÉi
+ *
+muÉi
+, 
+Žs_£ssiÚ
+ *
+£ssiÚ
+);
+
+214 #ifdeà
+ENABLE_X509_TRACK
+
+
+216 
+	sx509_Œack
+
+
+218 cÚ¡ 
+x509_Œack
+ *
+	mÃxt
+;
+
+219 cÚ¡ *
+	mÇme
+;
+
+220 
+	#XT_FULL_CHAIN
+ (1<<0)
+
+	)
+
+221 
+	mæags
+;
+
+222 
+	mnid
+;
+
+225 
+x509_Œack_add
+ (cÚ¡ 
+x509_Œack
+ **
+Î_h—d
+, cÚ¡ *
+Çme
+, 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+);
+
+233 
+	#NS_CERT_CHECK_NONE
+ (0)
+
+	)
+
+235 
+	#NS_CERT_CHECK_SERVER
+ (1<<0)
+
+	)
+
+237 
+	#NS_CERT_CHECK_CLIENT
+ (1<<1)
+
+	)
+
+242 #ifdeà
+MANAGEMENT_DEF_AUTH
+
+
+243 
+boÞ
+ 
+Žs_auth’tiÿ‹_key
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ 
+mda_key_id
+, cÚ¡ boÞ 
+auth
+, cÚ¡ *
+þ›Á_»asÚ
+);
+
+244 
+mª_def_auth_£t_þ›Á_»asÚ
+ (
+Žs_muÉi
+ *
+muÉi
+, cÚ¡ *
+þ›Á_»asÚ
+);
+
+247 
+šlše
+ const *
+
+248 
+	$Žs_þ›Á_»asÚ
+ (
+Žs_muÉi
+ *
+muÉi
+)
+
+250 #ifdeà
+ENABLE_DEF_AUTH
+
+
+251  
+muÉi
+->
+þ›Á_»asÚ
+;
+
+253  
+NULL
+;
+
+255 
+	}
+}
+
+	@ssl_verify_backend.h
+
+30 #iâdeà
+SSL_VERIFY_BACKEND_H_
+
+
+31 
+	#SSL_VERIFY_BACKEND_H_
+
+
+	)
+
+36 ’um { 
+	mSUCCESS
+=0, 
+	mFAILURE
+=1 } 
+	t»suÉ_t
+;
+
+58 
+»suÉ_t
+ 
+v”ify_û¹
+(
+Žs_£ssiÚ
+ *
+£ssiÚ
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+û¹_d•th
+);
+
+71 
+û¹_hash_»memb”
+ (
+Žs_£ssiÚ
+ *
+£ssiÚ
+, cÚ¡ 
+û¹_d•th
+,
+
+72 cÚ¡ *
+sha1_hash
+);
+
+88 *
+x509_g‘_subjeù
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+);
+
+97 *
+x509_g‘_sha1_hash
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+);
+
+112 
+»suÉ_t
+ 
+x509_g‘_u£ºame
+ (*
+commÚ_Çme
+, 
+ú_Ën
+,
+
+113 * 
+x509_u£ºame_f›ld
+, 
+Ý’v²_x509_û¹_t
+ *
+³”_û¹
+);
+
+126 *
+back’d_x509_g‘_£rŸl
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+);
+
+139 *
+back’d_x509_g‘_£rŸl_hex
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+,
+
+140 
+gc_¬’a
+ *
+gc
+);
+
+151 
+x509_£‹nv
+ (
+’v_£t
+ *
+es
+, 
+û¹_d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+);
+
+153 #ifdeà
+ENABLE_X509_TRACK
+
+
+166 
+x509_Œack_add
+ (cÚ¡ 
+x509_Œack
+ **
+Î_h—d
+, cÚ¡ *
+Çme
+,
+
+167 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+);
+
+189 
+x509_£‹nv_Œack
+ (cÚ¡ 
+x509_Œack
+ *
+xt
+, 
+’v_£t
+ *
+es
+,
+
+190 cÚ¡ 
+d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+x509
+);
+
+205 
+»suÉ_t
+ 
+x509_v”ify_ns_û¹_ty³
+(cÚ¡ 
+Ý’v²_x509_û¹_t
+ *
+û¹
+, cÚ¡ 
+u§ge
+);
+
+207 #ià
+OPENSSL_VERSION_NUMBER
+ >ð0x00907000L || 
+ENABLE_CRYPTO_POLARSSL
+
+
+219 
+»suÉ_t
+ 
+x509_v”ify_û¹_ku
+ (
+Ý’v²_x509_û¹_t
+ *
+x509
+, cÚ¡ * cÚ¡ 
+ex³ùed_ku
+,
+
+220 
+ex³ùed_Ën
+);
+
+235 
+»suÉ_t
+ 
+x509_v”ify_û¹_eku
+ (
+Ý’v²_x509_û¹_t
+ *
+x509
+, cÚ¡ * cÚ¡ 
+ex³ùed_oid
+);
+
+248 
+»suÉ_t
+ 
+x509_wr™e_³m
+(
+FILE
+ *
+³”û¹_fže
+, 
+Ý’v²_x509_û¹_t
+ *
+³”û¹
+);
+
+261 
+»suÉ_t
+ 
+x509_v”ify_ül
+(cÚ¡ *
+ül_fže
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+,
+
+262 cÚ¡ *
+subjeù
+);
+
+	@ssl_verify_openssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_SSL
+è&& defšed(
+ENABLE_CRYPTO_OPENSSL
+)
+
+40 
+	~"s¦_v”ify.h
+"
+
+41 
+	~"s¦_v”ify_back’d.h
+"
+
+42 
+	~"s¦_Ý’s¦.h
+"
+
+43 
+	~<Ý’s¦/x509v3.h
+>
+
+44 
+	~<Ý’s¦/”r.h
+>
+
+47 
+	$v”ify_ÿÎback
+ (
+´ev”ify_ok
+, 
+X509_STORE_CTX
+ * 
+ùx
+)
+
+49 
+»t
+ = 0;
+
+50 
+Žs_£ssiÚ
+ *
+£ssiÚ
+;
+
+51 
+SSL
+ *
+s¦
+;
+
+52 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+55 
+s¦
+ = 
+	`X509_STORE_CTX_g‘_ex_d©a
+ (
+ùx
+, 
+	`SSL_g‘_ex_d©a_X509_STORE_CTX_idx
+());
+
+56 
+	`ASSERT
+ (
+s¦
+);
+
+57 
+£ssiÚ
+ = (
+Žs_£ssiÚ
+ *è
+	`SSL_g‘_ex_d©a
+ (
+s¦
+, 
+myd©a_šdex
+);
+
+58 
+	`ASSERT
+ (
+£ssiÚ
+);
+
+60 
+	`û¹_hash_»memb”
+ (
+£ssiÚ
+, 
+ùx
+->
+”rÜ_d•th
+,
+
+61 
+	`x509_g‘_sha1_hash
+(
+ùx
+->
+cu¼’t_û¹
+, &
+gc
+));
+
+64 ià(!
+´ev”ify_ok
+)
+
+67 *
+subjeù
+ = 
+	`x509_g‘_subjeù
+(
+ùx
+->
+cu¼’t_û¹
+, &
+gc
+);
+
+69 ià(
+subjeù
+)
+
+72 
+	`msg
+ (
+D_TLS_ERRORS
+, "VERIFY ERROR: depth=%d,ƒrror=%s: %s",
+
+73 
+ùx
+->
+”rÜ_d•th
+,
+
+74 
+	`X509_v”ify_û¹_”rÜ_¡ršg
+ (
+ùx
+->
+”rÜ
+),
+
+75 
+subjeù
+);
+
+78 
+	`ERR_þ—r_”rÜ
+();
+
+80 
+£ssiÚ
+->
+v”if›d
+ = 
+çl£
+;
+
+81 
+þ—nup
+;
+
+84 ià(
+SUCCESS
+ !ð
+	`v”ify_û¹
+(
+£ssiÚ
+, 
+ùx
+->
+cu¼’t_û¹
+, ctx->
+”rÜ_d•th
+))
+
+85 
+þ—nup
+;
+
+87 
+»t
+ = 1;
+
+89 
+þ—nup
+:
+
+90 
+	`gc_ä“
+(&
+gc
+);
+
+92  
+»t
+;
+
+93 
+	}
+}
+
+95 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+97 
+boÞ
+ 
+	$exŒaù_x509_ex‹nsiÚ
+(
+X509
+ *
+û¹
+, *
+f›ldÇme
+, *
+out
+, 
+size
+)
+
+99 
+boÞ
+ 
+»tv®
+ = 
+çl£
+;
+
+100 *
+buf
+ = 0;
+
+101 
+GENERAL_NAMES
+ *
+ex‹nsiÚs
+;
+
+102 
+nid
+ = 
+	`OBJ_txt2nid
+(
+f›ldÇme
+);
+
+104 
+ex‹nsiÚs
+ = (
+GENERAL_NAMES
+ *)
+	`X509_g‘_ext_d2i
+(
+û¹
+, 
+nid
+, 
+NULL
+, NULL);
+
+105 iàÐ
+ex‹nsiÚs
+ )
+
+107 
+num®ts
+;
+
+108 
+i
+;
+
+114 
+num®ts
+ = 
+	`sk_GENERAL_NAME_num
+(
+ex‹nsiÚs
+);
+
+117 
+i
+=0; i<
+num®ts
+; i++)
+
+120 cÚ¡ 
+GENERAL_NAME
+ *
+Çme
+ = 
+	`sk_GENERAL_NAME_v®ue
+ (
+ex‹nsiÚs
+, 
+i
+ );
+
+122 
+Çme
+->
+ty³
+)
+
+124 
+GEN_EMAIL
+:
+
+125 
+	`ASN1_STRING_to_UTF8
+((**)&
+buf
+, 
+Çme
+->
+d
+.
+Ÿ5
+);
+
+126 iàÐ
+	`¡¾’
+ (
+buf
+è!ð
+Çme
+->
+d
+.
+Ÿ5
+->
+Ëngth
+ )
+
+128 
+	`msg
+ (
+D_TLS_ERRORS
+, "ASN1 ERROR: string contained�erminating zero");
+
+129 
+	`OPENSSL_ä“
+ (
+buf
+);
+
+131 
+	`¡ºýyÁ
+(
+out
+, 
+buf
+, 
+size
+);
+
+132 
+	`OPENSSL_ä“
+(
+buf
+);
+
+133 
+»tv®
+ = 
+Œue
+;
+
+137 
+	`msg
+ (
+D_TLS_ERRORS
+, "ASN1 ERROR: can‚ot handle field�ype %i",
+
+138 
+Çme
+->
+ty³
+);
+
+142 
+	`sk_GENERAL_NAME_ä“
+ (
+ex‹nsiÚs
+);
+
+144  
+»tv®
+;
+
+145 
+	}
+}
+
+160 
+»suÉ_t
+
+
+161 
+	$exŒaù_x509_f›ld_s¦
+ (
+X509_NAME
+ *
+x509
+, cÚ¡ *
+f›ld_Çme
+, *
+out
+,
+
+162 
+size
+)
+
+164 
+Ï¡pos
+ = -1;
+
+165 
+tmp
+ = -1;
+
+166 
+X509_NAME_ENTRY
+ *
+x509Ã
+ = 0;
+
+167 
+ASN1_STRING
+ *
+a¢1
+ = 0;
+
+168 *
+buf
+ = (*)1;
+
+169 
+nid
+ = 
+	`OBJ_txt2nid
+((*)
+f›ld_Çme
+);
+
+171 
+	`ASSERT
+ (
+size
+ > 0);
+
+172 *
+out
+ = '\0';
+
+174 
+Ï¡pos
+ = 
+tmp
+;
+
+175 
+tmp
+ = 
+	`X509_NAME_g‘_šdex_by_NID
+(
+x509
+, 
+nid
+, 
+Ï¡pos
+);
+
+176 } 
+tmp
+ > -1);
+
+179 ià(
+Ï¡pos
+ == -1)
+
+180  
+FAILURE
+;
+
+182 
+x509Ã
+ = 
+	`X509_NAME_g‘_’Œy
+(
+x509
+, 
+Ï¡pos
+);
+
+183 ià(!
+x509Ã
+)
+
+184  
+FAILURE
+;
+
+186 
+a¢1
+ = 
+	`X509_NAME_ENTRY_g‘_d©a
+(
+x509Ã
+);
+
+187 ià(!
+a¢1
+)
+
+188  
+FAILURE
+;
+
+189 
+tmp
+ = 
+	`ASN1_STRING_to_UTF8
+(&
+buf
+, 
+a¢1
+);
+
+190 ià(
+tmp
+ <= 0)
+
+191  
+FAILURE
+;
+
+193 
+	`¡ºýyÁ
+(
+out
+, (*)
+buf
+, 
+size
+);
+
+196 cÚ¡ 
+»suÉ_t
+ 
+»t
+ = (
+	`¡¾’
+ ((*)
+buf
+è< 
+size
+è? 
+SUCCESS
+: 
+FAILURE
+;
+
+197 
+	`OPENSSL_ä“
+ (
+buf
+);
+
+198  
+»t
+;
+
+200 
+	}
+}
+
+202 
+»suÉ_t
+
+
+203 
+	$x509_g‘_u£ºame
+ (*
+commÚ_Çme
+, 
+ú_Ën
+,
+
+204 * 
+x509_u£ºame_f›ld
+, 
+X509
+ *
+³”_û¹
+)
+
+206 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+207 ià(
+	`¡ºcmp
+("ext:",
+x509_u£ºame_f›ld
+,4) == 0)
+
+209 ià(!
+	`exŒaù_x509_ex‹nsiÚ
+ (
+³”_û¹
+, 
+x509_u£ºame_f›ld
++4, 
+commÚ_Çme
+, 
+ú_Ën
+))
+
+210  
+FAILURE
+;
+
+213 ià(
+FAILURE
+ =ð
+	`exŒaù_x509_f›ld_s¦
+ (
+	`X509_g‘_subjeù_Çme
+ (
+³”_û¹
+),
+
+214 
+x509_u£ºame_f›ld
+, 
+commÚ_Çme
+, 
+ú_Ën
+))
+
+215  
+FAILURE
+;
+
+217  
+SUCCESS
+;
+
+218 
+	}
+}
+
+221 
+	$back’d_x509_g‘_£rŸl
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+223 
+ASN1_INTEGER
+ *
+a¢1_i
+;
+
+224 
+BIGNUM
+ *
+bignum
+;
+
+225 *
+Ý’s¦_£rŸl
+, *
+£rŸl
+;
+
+227 
+a¢1_i
+ = 
+	`X509_g‘_£rŸlNumb”
+(
+û¹
+);
+
+228 
+bignum
+ = 
+	`ASN1_INTEGER_to_BN
+(
+a¢1_i
+, 
+NULL
+);
+
+229 
+Ý’s¦_£rŸl
+ = 
+	`BN_bn2dec
+(
+bignum
+);
+
+231 
+£rŸl
+ = 
+	`¡ršg_®loc
+(
+Ý’s¦_£rŸl
+, 
+gc
+);
+
+233 
+	`BN_ä“
+(
+bignum
+);
+
+234 
+	`OPENSSL_ä“
+(
+Ý’s¦_£rŸl
+);
+
+236  
+£rŸl
+;
+
+237 
+	}
+}
+
+240 
+	$back’d_x509_g‘_£rŸl_hex
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+242 cÚ¡ 
+ASN1_INTEGER
+ *
+a¢1_i
+ = 
+	`X509_g‘_£rŸlNumb”
+(
+û¹
+);
+
+244  
+	`fÜm©_hex_ex
+(
+a¢1_i
+->
+d©a
+,‡¢1_i->
+Ëngth
+, 0, 1, ":", 
+gc
+);
+
+245 
+	}
+}
+
+248 
+	$x509_g‘_sha1_hash
+ (
+X509
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+250 *
+hash
+ = 
+	`gc_m®loc
+(
+SHA_DIGEST_LENGTH
+, 
+çl£
+, 
+gc
+);
+
+251 
+	`memýy
+(
+hash
+, 
+û¹
+->
+sha1_hash
+, 
+SHA_DIGEST_LENGTH
+);
+
+252  
+hash
+;
+
+253 
+	}
+}
+
+256 
+	$x509_g‘_subjeù
+ (
+X509
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+258 
+BIO
+ *
+subjeù_bio
+ = 
+NULL
+;
+
+259 
+BUF_MEM
+ *
+subjeù_mem
+;
+
+260 *
+subjeù
+ = 
+NULL
+;
+
+261 
+maxËn
+ = 0;
+
+267 ià(
+	`com·t_æag
+ (
+COMPAT_FLAG_QUERY
+ | 
+COMPAT_NAMES
+))
+
+269 
+subjeù
+ = 
+	`gc_m®loc
+ (256, 
+çl£
+, 
+gc
+);
+
+270 
+	`X509_NAME_Ú–še
+ (
+	`X509_g‘_subjeù_Çme
+ (
+û¹
+), 
+subjeù
+, 256);
+
+271 
+subjeù
+[255] = '\0';
+
+272  
+subjeù
+;
+
+275 
+subjeù_bio
+ = 
+	`BIO_Ãw
+ (
+	`BIO_s_mem
+ ());
+
+276 ià(
+subjeù_bio
+ =ð
+NULL
+)
+
+277 
+”r
+;
+
+279 
+	`X509_NAME_´št_ex
+ (
+subjeù_bio
+, 
+	`X509_g‘_subjeù_Çme
+ (
+û¹
+),
+
+280 0, 
+XN_FLAG_SEP_CPLUS_SPC
+ | 
+XN_FLAG_FN_SN
+ |
+
+281 
+ASN1_STRFLGS_UTF8_CONVERT
+ | 
+ASN1_STRFLGS_ESC_CTRL
+);
+
+283 ià(
+	`BIO_eof
+ (
+subjeù_bio
+))
+
+284 
+”r
+;
+
+286 
+	`BIO_g‘_mem_±r
+ (
+subjeù_bio
+, &
+subjeù_mem
+);
+
+288 
+maxËn
+ = 
+subjeù_mem
+->
+Ëngth
+ + 1;
+
+289 
+subjeù
+ = 
+	`gc_m®loc
+ (
+maxËn
+, 
+çl£
+, 
+gc
+);
+
+291 
+	`memýy
+ (
+subjeù
+, 
+subjeù_mem
+->
+d©a
+, 
+maxËn
+);
+
+292 
+subjeù
+[
+maxËn
+ - 1] = '\0';
+
+294 
+”r
+:
+
+295 ià(
+subjeù_bio
+)
+
+296 
+	`BIO_ä“
+ (
+subjeù_bio
+);
+
+298  
+subjeù
+;
+
+299 
+	}
+}
+
+302 #ifdeà
+ENABLE_X509_TRACK
+
+
+305 
+	$x509_Œack_add
+ (cÚ¡ 
+x509_Œack
+ **
+Î_h—d
+, cÚ¡ *
+Çme
+, 
+msgËv–
+, 
+gc_¬’a
+ *
+gc
+)
+
+307 
+x509_Œack
+ *
+xt
+;
+
+308 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+xt
+, 
+x509_Œack
+, 
+gc
+);
+
+309 ià(*
+Çme
+ == '+')
+
+311 
+xt
+->
+æags
+ |ð
+XT_FULL_CHAIN
+;
+
+312 ++
+Çme
+;
+
+314 
+xt
+->
+Çme
+ =‚ame;
+
+315 
+xt
+->
+nid
+ = 
+	`OBJ_txt2nid
+(
+Çme
+);
+
+316 ià(
+xt
+->
+nid
+ !ð
+NID_undef
+)
+
+318 
+xt
+->
+Ãxt
+ = *
+Î_h—d
+;
+
+319 *
+Î_h—d
+ = 
+xt
+;
+
+322 
+	`msg
+(
+msgËv–
+, "x509_Œack:‚Øsuch‡‰ribu‹ '%s'", 
+Çme
+);
+
+323 
+	}
+}
+
+327 
+	$do_£‹nv_x509
+ (
+’v_£t
+ *
+es
+, cÚ¡ *
+Çme
+, *
+v®ue
+, 
+d•th
+)
+
+329 *
+Çme_ex·nd
+;
+
+330 
+size_t
+ 
+Çme_ex·nd_size
+;
+
+332 
+	`¡ršg_mod
+ (
+v®ue
+, 
+CC_ANY
+, 
+CC_CRLF
+, '?');
+
+333 
+	`msg
+ (
+D_X509_ATTR
+, "X509 ATTRIBUTE‚ame='%s' v®ue='%s' d•th=%d", 
+Çme
+, 
+v®ue
+, 
+d•th
+);
+
+334 
+Çme_ex·nd_size
+ = 64 + 
+	`¡¾’
+ (
+Çme
+);
+
+335 
+Çme_ex·nd
+ = (*è
+	`m®loc
+ (
+Çme_ex·nd_size
+);
+
+336 
+	`check_m®loc_»tuº
+ (
+Çme_ex·nd
+);
+
+337 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, 
+Çme_ex·nd_size
+, "X509_%d_%s", 
+d•th
+, 
+Çme
+);
+
+338 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_ex·nd
+, 
+v®ue
+);
+
+339 
+	`ä“
+ (
+Çme_ex·nd
+);
+
+340 
+	}
+}
+
+343 
+	$x509_£‹nv_Œack
+ (cÚ¡ 
+x509_Œack
+ *
+xt
+, 
+’v_£t
+ *
+es
+, cÚ¡ 
+d•th
+, 
+X509
+ *
+x509
+)
+
+345 
+X509_NAME
+ *
+x509_Çme
+ = 
+	`X509_g‘_subjeù_Çme
+ (
+x509
+);
+
+346 cÚ¡ 
+nuÎc
+ = '\0';
+
+347 
+i
+;
+
+349 
+xt
+)
+
+351 ià(
+d•th
+ =ð0 || (
+xt
+->
+æags
+ & 
+XT_FULL_CHAIN
+))
+
+353 
+i
+ = 
+	`X509_NAME_g‘_šdex_by_NID
+(
+x509_Çme
+, 
+xt
+->
+nid
+, -1);
+
+354 ià(
+i
+ >= 0)
+
+356 
+X509_NAME_ENTRY
+ *
+’t
+ = 
+	`X509_NAME_g‘_’Œy
+(
+x509_Çme
+, 
+i
+);
+
+357 ià(
+’t
+)
+
+359 
+ASN1_STRING
+ *
+v®
+ = 
+	`X509_NAME_ENTRY_g‘_d©a
+ (
+’t
+);
+
+360 *
+buf
+;
+
+361 
+buf
+ = (*)1;
+
+362 ià(
+	`ASN1_STRING_to_UTF8
+ (&
+buf
+, 
+v®
+) > 0)
+
+364 
+	`do_£‹nv_x509
+(
+es
+, 
+xt
+->
+Çme
+, (*)
+buf
+, 
+d•th
+);
+
+365 
+	`OPENSSL_ä“
+ (
+buf
+);
+
+371 
+i
+ = 
+	`X509_g‘_ext_by_NID
+(
+x509
+, 
+xt
+->
+nid
+, -1);
+
+372 ià(
+i
+ >= 0)
+
+374 
+X509_EXTENSION
+ *
+ext
+ = 
+	`X509_g‘_ext
+(
+x509
+, 
+i
+);
+
+375 ià(
+ext
+)
+
+377 
+BIO
+ *
+bio
+ = 
+	`BIO_Ãw
+(
+	`BIO_s_mem
+());
+
+378 ià(
+bio
+)
+
+380 ià(
+	`X509V3_EXT_´št
+(
+bio
+, 
+ext
+, 0, 0))
+
+382 ià(
+	`BIO_wr™e
+(
+bio
+, &
+nuÎc
+, 1) == 1)
+
+384 *
+¡r
+;
+
+385 
+	`BIO_g‘_mem_d©a
+(
+bio
+, &
+¡r
+);
+
+386 
+	`do_£‹nv_x509
+(
+es
+, 
+xt
+->
+Çme
+, 
+¡r
+, 
+d•th
+);
+
+389 
+	`BIO_ä“
+(
+bio
+);
+
+395 
+xt
+ = xt->
+Ãxt
+;
+
+397 
+	}
+}
+
+406 
+	$x509_£‹nv
+ (
+’v_£t
+ *
+es
+, 
+û¹_d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+³”_û¹
+)
+
+408 
+i
+, 
+n
+;
+
+409 
+â_nid
+;
+
+410 
+ASN1_OBJECT
+ *
+â
+;
+
+411 
+ASN1_STRING
+ *
+v®
+;
+
+412 
+X509_NAME_ENTRY
+ *
+’t
+;
+
+413 cÚ¡ *
+objbuf
+;
+
+414 *
+buf
+;
+
+415 *
+Çme_ex·nd
+;
+
+416 
+size_t
+ 
+Çme_ex·nd_size
+;
+
+417 
+X509_NAME
+ *
+x509
+ = 
+	`X509_g‘_subjeù_Çme
+ (
+³”_û¹
+);
+
+419 
+n
+ = 
+	`X509_NAME_’Œy_couÁ
+ (
+x509
+);
+
+420 
+i
+ = 0; i < 
+n
+; ++i)
+
+422 
+’t
+ = 
+	`X509_NAME_g‘_’Œy
+ (
+x509
+, 
+i
+);
+
+423 ià(!
+’t
+)
+
+425 
+â
+ = 
+	`X509_NAME_ENTRY_g‘_objeù
+ (
+’t
+);
+
+426 ià(!
+â
+)
+
+428 
+v®
+ = 
+	`X509_NAME_ENTRY_g‘_d©a
+ (
+’t
+);
+
+429 ià(!
+v®
+)
+
+431 
+â_nid
+ = 
+	`OBJ_obj2nid
+ (
+â
+);
+
+432 ià(
+â_nid
+ =ð
+NID_undef
+)
+
+434 
+objbuf
+ = 
+	`OBJ_nid2¢
+ (
+â_nid
+);
+
+435 ià(!
+objbuf
+)
+
+437 
+buf
+ = (*)1;
+
+438 ià(
+	`ASN1_STRING_to_UTF8
+ (&
+buf
+, 
+v®
+) <= 0)
+
+440 
+Çme_ex·nd_size
+ = 64 + 
+	`¡¾’
+ (
+objbuf
+);
+
+441 
+Çme_ex·nd
+ = (*è
+	`m®loc
+ (
+Çme_ex·nd_size
+);
+
+442 
+	`check_m®loc_»tuº
+ (
+Çme_ex·nd
+);
+
+443 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, 
+Çme_ex·nd_size
+, "X509_%d_%s", 
+û¹_d•th
+,
+
+444 
+objbuf
+);
+
+445 
+	`¡ršg_mod
+ (
+Çme_ex·nd
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+446 
+	`¡ršg_mod
+ ((*)
+buf
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+447 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_ex·nd
+, (*)
+buf
+);
+
+448 
+	`ä“
+ (
+Çme_ex·nd
+);
+
+449 
+	`OPENSSL_ä“
+ (
+buf
+);
+
+451 
+	}
+}
+
+453 
+»suÉ_t
+
+
+454 
+	$x509_v”ify_ns_û¹_ty³
+(cÚ¡ 
+Ý’v²_x509_û¹_t
+ *
+³”_û¹
+, cÚ¡ 
+u§ge
+)
+
+456 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_NONE
+)
+
+457  
+SUCCESS
+;
+
+458 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_CLIENT
+)
+
+459  ((
+³”_û¹
+->
+ex_æags
+ & 
+EXFLAG_NSCERT
+)
+
+460 && (
+³”_û¹
+->
+ex_nsû¹
+ & 
+NS_SSL_CLIENT
+)è? 
+SUCCESS
+: 
+FAILURE
+;
+
+461 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_SERVER
+)
+
+462  ((
+³”_û¹
+->
+ex_æags
+ & 
+EXFLAG_NSCERT
+)
+
+463 && (
+³”_û¹
+->
+ex_nsû¹
+ & 
+NS_SSL_SERVER
+)è? 
+SUCCESS
+: 
+FAILURE
+;
+
+465  
+FAILURE
+;
+
+466 
+	}
+}
+
+468 #ià
+OPENSSL_VERSION_NUMBER
+ >= 0x00907000L
+
+470 
+»suÉ_t
+
+
+471 
+	$x509_v”ify_û¹_ku
+ (
+X509
+ *
+x509
+, cÚ¡ * cÚ¡ 
+ex³ùed_ku
+,
+
+472 
+ex³ùed_Ën
+)
+
+474 
+ASN1_BIT_STRING
+ *
+ku
+ = 
+NULL
+;
+
+475 
+»suÉ_t
+ 
+fFound
+ = 
+FAILURE
+;
+
+477 ià((
+ku
+ = (
+ASN1_BIT_STRING
+ *è
+	`X509_g‘_ext_d2i
+ (
+x509
+, 
+NID_key_u§ge
+, 
+NULL
+,
+
+478 
+NULL
+)) == NULL)
+
+480 
+	`msg
+ (
+D_HANDSHAKE
+, "Certificate does‚ot have key usageƒxtension");
+
+484 
+nku
+ = 0;
+
+485 
+i
+;
+
+486 
+i
+ = 0; i < 8; i++)
+
+488 ià(
+	`ASN1_BIT_STRING_g‘_b™
+ (
+ku
+, 
+i
+))
+
+489 
+nku
+ |ð1 << (7 - 
+i
+);
+
+495 ià((
+nku
+ & 0xff) == 0)
+
+497 
+nku
+ >>= 8;
+
+500 
+	`msg
+ (
+D_HANDSHAKE
+, "Validating certificate key usage");
+
+501 
+i
+ = 0; 
+fFound
+ !ð
+SUCCESS
+ && i < 
+ex³ùed_Ën
+; i++)
+
+503 ià(
+ex³ùed_ku
+[
+i
+] != 0)
+
+505 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has key usage %04x,ƒxpects "
+
+506 "%04x", 
+nku
+, 
+ex³ùed_ku
+[
+i
+]);
+
+508 ià(
+nku
+ =ð
+ex³ùed_ku
+[
+i
+])
+
+509 
+fFound
+ = 
+SUCCESS
+;
+
+514 ià(
+ku
+ !ð
+NULL
+)
+
+515 
+	`ASN1_BIT_STRING_ä“
+ (
+ku
+);
+
+517  
+fFound
+;
+
+518 
+	}
+}
+
+520 
+»suÉ_t
+
+
+521 
+	$x509_v”ify_û¹_eku
+ (
+X509
+ *
+x509
+, cÚ¡ * cÚ¡ 
+ex³ùed_oid
+)
+
+523 
+EXTENDED_KEY_USAGE
+ *
+eku
+ = 
+NULL
+;
+
+524 
+»suÉ_t
+ 
+fFound
+ = 
+FAILURE
+;
+
+526 ià((
+eku
+ = (
+EXTENDED_KEY_USAGE
+ *è
+	`X509_g‘_ext_d2i
+ (
+x509
+, 
+NID_ext_key_u§ge
+,
+
+527 
+NULL
+, NULL)) == NULL)
+
+529 
+	`msg
+ (
+D_HANDSHAKE
+, "Certificate does‚ot haveƒxtended key usageƒxtension");
+
+533 
+i
+;
+
+535 
+	`msg
+ (
+D_HANDSHAKE
+, "Validating certificateƒxtended key usage");
+
+536 
+i
+ = 0; 
+SUCCESS
+ !ð
+fFound
+ && i < 
+	`sk_ASN1_OBJECT_num
+ (
+eku
+); i++)
+
+538 
+ASN1_OBJECT
+ *
+oid
+ = 
+	`sk_ASN1_OBJECT_v®ue
+ (
+eku
+, 
+i
+);
+
+539 
+szOid
+[1024];
+
+541 ià(
+SUCCESS
+ !ð
+fFound
+ && 
+	`OBJ_obj2txt
+ (
+szOid
+, (szOid), 
+oid
+, 0) != -1)
+
+543 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has EKU (str) %s,ƒxpects %s",
+
+544 
+szOid
+, 
+ex³ùed_oid
+);
+
+545 ià(!
+	`¡rcmp
+ (
+ex³ùed_oid
+, 
+szOid
+))
+
+546 
+fFound
+ = 
+SUCCESS
+;
+
+548 ià(
+SUCCESS
+ !ð
+fFound
+ && 
+	`OBJ_obj2txt
+ (
+szOid
+, (szOid), 
+oid
+, 1) != -1)
+
+550 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has EKU (oid) %s,ƒxpects %s",
+
+551 
+szOid
+, 
+ex³ùed_oid
+);
+
+552 ià(!
+	`¡rcmp
+ (
+ex³ùed_oid
+, 
+szOid
+))
+
+553 
+fFound
+ = 
+SUCCESS
+;
+
+558 ià(
+eku
+ !ð
+NULL
+)
+
+559 
+	`sk_ASN1_OBJECT_pÝ_ä“
+ (
+eku
+, 
+ASN1_OBJECT_ä“
+);
+
+561  
+fFound
+;
+
+562 
+	}
+}
+
+564 
+»suÉ_t
+
+
+565 
+	$x509_wr™e_³m
+(
+FILE
+ *
+³”û¹_fže
+, 
+X509
+ *
+³”û¹
+)
+
+567 ià(
+	`PEM_wr™e_X509
+(
+³”û¹_fže
+, 
+³”û¹
+) < 0)
+
+569 
+	`msg
+ (
+M_ERR
+, "Failed�o write…eer certificate in PEM format");
+
+570  
+FAILURE
+;
+
+572  
+SUCCESS
+;
+
+573 
+	}
+}
+
+580 
+»suÉ_t
+
+
+581 
+	$x509_v”ify_ül
+(cÚ¡ *
+ül_fže
+, 
+X509
+ *
+³”_û¹
+, cÚ¡ *
+subjeù
+)
+
+583 
+X509_CRL
+ *
+ül
+=
+NULL
+;
+
+584 
+X509_REVOKED
+ *
+»voked
+;
+
+585 
+BIO
+ *
+š
+=
+NULL
+;
+
+586 
+n
+,
+i
+;
+
+587 
+»suÉ_t
+ 
+»tv®
+ = 
+FAILURE
+;
+
+589 
+š
+ = 
+	`BIO_Ãw_fže
+ (
+ül_fže
+, "r");
+
+591 ià(
+š
+ =ð
+NULL
+) {
+
+592 
+	`msg
+ (
+M_WARN
+, "CRL: cªnÙ„—d: %s", 
+ül_fže
+);
+
+593 
+’d
+;
+
+595 
+ül
+=
+	`PEM_»ad_bio_X509_CRL
+(
+š
+,
+NULL
+,NULL,NULL);
+
+596 ià(
+ül
+ =ð
+NULL
+) {
+
+597 
+	`msg
+ (
+M_WARN
+, "CRL: cªnÙ„—d CRL from fž�%s", 
+ül_fže
+);
+
+598 
+’d
+;
+
+601 ià(
+	`X509_NAME_cmp
+(
+	`X509_CRL_g‘_issu”
+(
+ül
+), 
+	`X509_g‘_issu”_Çme
+(
+³”_û¹
+)) != 0) {
+
+602 
+	`msg
+ (
+M_WARN
+, "CRL: CRL %s is from‡ different issuer�han�he issuer of "
+
+603 "û¹ifiÿ‹ %s", 
+ül_fže
+, 
+subjeù
+);
+
+604 
+»tv®
+ = 
+SUCCESS
+;
+
+605 
+’d
+;
+
+608 
+n
+ = 
+	`sk_X509_REVOKED_num
+(
+	`X509_CRL_g‘_REVOKED
+(
+ül
+));
+
+609 
+i
+ = 0; i < 
+n
+; i++) {
+
+610 
+»voked
+ = (
+X509_REVOKED
+ *)
+	`sk_X509_REVOKED_v®ue
+(
+	`X509_CRL_g‘_REVOKED
+(
+ül
+), 
+i
+);
+
+611 ià(
+	`ASN1_INTEGER_cmp
+(
+»voked
+->
+£rŸlNumb”
+, 
+	`X509_g‘_£rŸlNumb”
+(
+³”_û¹
+)) == 0) {
+
+612 
+	`msg
+ (
+D_HANDSHAKE
+, "CRL CHECK FAILED: % i REVOKED",
+subjeù
+);
+
+613 
+’d
+;
+
+617 
+»tv®
+ = 
+SUCCESS
+;
+
+618 
+	`msg
+ (
+D_HANDSHAKE
+, "CRL CHECK OK: %s",
+subjeù
+);
+
+620 
+’d
+:
+
+621 
+	`BIO_ä“
+(
+š
+);
+
+622 ià(
+ül
+)
+
+623 
+	`X509_CRL_ä“
+ (
+ül
+);
+
+625  
+»tv®
+;
+
+626 
+	}
+}
+
+	@ssl_verify_openssl.h
+
+31 #iâdeà
+SSL_VERIFY_OPENSSL_H_
+
+
+32 
+	#SSL_VERIFY_OPENSSL_H_
+
+
+	)
+
+34 
+	~<Ý’s¦/x509.h
+>
+
+36 #iâdeà
+__OPENVPN_X509_CERT_T_DECLARED
+
+
+37 
+	#__OPENVPN_X509_CERT_T_DECLARED
+
+
+	)
+
+38 
+X509
+ 
+	tÝ’v²_x509_û¹_t
+;
+
+72 
+v”ify_ÿÎback
+ (
+´ev”ify_ok
+, 
+X509_STORE_CTX
+ * 
+ùx
+);
+
+	@ssl_verify_polarssl.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ià
+defšed
+(
+ENABLE_SSL
+è&& defšed(
+ENABLE_CRYPTO_POLARSSL
+)
+
+40 
+	~"s¦_v”ify.h
+"
+
+41 
+	~<pÞ¬s¦/”rÜ.h
+>
+
+42 
+	~<pÞ¬s¦/bignum.h
+>
+
+43 
+	~<pÞ¬s¦/sha1.h
+>
+
+45 
+	#MAX_SUBJECT_LENGTH
+ 256
+
+	)
+
+48 
+	$v”ify_ÿÎback
+ (*
+£ssiÚ_obj
+, 
+x509_û¹
+ *
+û¹
+, 
+û¹_d•th
+,
+
+49 *
+æags
+)
+
+51 
+Žs_£ssiÚ
+ *
+£ssiÚ
+ = (Žs_£ssiÚ *è
+£ssiÚ_obj
+;
+
+52 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+();
+
+54 
+	`ASSERT
+ (
+û¹
+);
+
+55 
+	`ASSERT
+ (
+£ssiÚ
+);
+
+57 
+£ssiÚ
+->
+v”if›d
+ = 
+çl£
+;
+
+60 
+	`û¹_hash_»memb”
+ (
+£ssiÚ
+, 
+û¹_d•th
+, 
+	`x509_g‘_sha1_hash
+(
+û¹
+, &
+gc
+));
+
+63 ià(*
+æags
+ != 0)
+
+65 *
+subjeù
+ = 
+	`x509_g‘_subjeù
+(
+û¹
+, &
+gc
+);
+
+67 ià(
+subjeù
+)
+
+68 
+	`msg
+ (
+D_TLS_ERRORS
+, "VERIFY ERROR: d•th=%d, fÏgs=%x, %s", 
+û¹_d•th
+, *
+æags
+, 
+subjeù
+);
+
+70 
+	`msg
+ (
+D_TLS_ERRORS
+, "VERIFY ERROR: depth=%d, flags=%x, could‚otƒxtract X509 "
+
+71 "subjeù sŒšg from c”tifiÿ‹", *
+æags
+, 
+û¹_d•th
+);
+
+75 ià(
+SUCCESS
+ !ð
+	`v”ify_û¹
+(
+£ssiÚ
+, 
+û¹
+, 
+û¹_d•th
+))
+
+77 *
+æags
+ |ð
+BADCERT_OTHER
+;
+
+80 
+	`gc_ä“
+(&
+gc
+);
+
+86 
+	}
+}
+
+88 #ifdeà
+ENABLE_X509ALTUSERNAME
+
+
+92 
+»suÉ_t
+
+
+93 
+	$x509_g‘_u£ºame
+ (*
+ú
+, 
+ú_Ën
+,
+
+94 *
+x509_u£ºame_f›ld
+, 
+x509_û¹
+ *
+û¹
+)
+
+96 
+x509_Çme
+ *
+Çme
+;
+
+98 
+	`ASSERT
+Ð
+ú
+ !ð
+NULL
+ );
+
+100 
+Çme
+ = &
+û¹
+->
+subjeù
+;
+
+103  
+Çme
+ !ð
+NULL
+ )
+
+105 ifÐ
+	`memcmp
+Ð
+Çme
+->
+oid
+.
+p
+, 
+OID_CN
+, 
+	`OID_SIZE
+(OID_CN) ) == 0)
+
+108 
+Çme
+ =‚ame->
+Ãxt
+;
+
+112 ifÐ
+Çme
+ =ð
+NULL
+ )
+
+113  
+FAILURE
+;
+
+116 ià(
+ú_Ën
+ > 
+Çme
+->
+v®
+.
+Ën
+)
+
+117 
+	`memýy
+Ð
+ú
+, 
+Çme
+->
+v®
+.
+p
+,‚ame->v®.
+Ën
+ );
+
+120 
+	`memýy
+Ð
+ú
+, 
+Çme
+->
+v®
+.
+p
+, 
+ú_Ën
+);
+
+121 
+ú
+[
+ú_Ën
+-1] = '\0';
+
+124  
+SUCCESS
+;
+
+125 
+	}
+}
+
+128 
+	$back’d_x509_g‘_£rŸl
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+130 
+»t
+ = 0;
+
+131 
+i
+ = 0;
+
+132 *
+buf
+ = 
+NULL
+;
+
+133 
+size_t
+ 
+buæ’
+ = 0;
+
+134 
+mpi
+ 
+£rŸl_mpi
+ = { 0 };
+
+135 
+»tv®
+ = 0;
+
+138 
+	`mpi_š™
+(&
+£rŸl_mpi
+);
+
+139 
+»tv®
+ = 
+	`mpi_»ad_bš¬y
+(&
+£rŸl_mpi
+, 
+û¹
+->
+£rŸl
+.
+p
+, c”t->£rŸl.
+Ën
+);
+
+140 ià(
+»tv®
+ < 0)
+
+142 
+”rbuf
+[128];
+
+143 
+	`”rÜ_¡»¼Ü
+(
+»tv®
+, 
+”rbuf
+, (errbuf));
+
+145 
+	`msg
+(
+M_WARN
+, "Fažed�Ø»Œ›v�£rŸÈäom c”tifiÿ‹: %s.", 
+”rbuf
+);
+
+146  
+NULL
+;
+
+150 
+	`mpi_wr™e_¡ršg
+(&
+£rŸl_mpi
+, 10, 
+buf
+, &
+buæ’
+);
+
+151 
+buf
+ = 
+	`gc_m®loc
+(
+buæ’
+, 
+Œue
+, 
+gc
+);
+
+154 
+»tv®
+ = 
+	`mpi_wr™e_¡ršg
+(&
+£rŸl_mpi
+, 10, 
+buf
+, &
+buæ’
+);
+
+155 ià(
+»tv®
+ < 0)
+
+157 
+”rbuf
+[128];
+
+158 
+	`”rÜ_¡»¼Ü
+(
+»tv®
+, 
+”rbuf
+, (errbuf));
+
+160 
+	`msg
+(
+M_WARN
+, "Fažed�Øwr™�£rŸÈtØ¡ršg: %s.", 
+”rbuf
+);
+
+161  
+NULL
+;
+
+164  
+buf
+;
+
+165 
+	}
+}
+
+168 
+	$back’d_x509_g‘_£rŸl_hex
+ (
+Ý’v²_x509_û¹_t
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+170 *
+buf
+ = 
+NULL
+;
+
+171 
+size_t
+ 
+Ën
+ = 
+û¹
+->
+£rŸl
+.len * 3 + 1;
+
+173 
+buf
+ = 
+	`gc_m®loc
+(
+Ën
+, 
+Œue
+, 
+gc
+);
+
+175 if(
+	`x509·r£_£rŸl_g‘s
+(
+buf
+, 
+Ën
+-1, &
+û¹
+->
+£rŸl
+) < 0)
+
+176 
+buf
+ = 
+NULL
+;
+
+178  
+buf
+;
+
+179 
+	}
+}
+
+182 
+	$x509_g‘_sha1_hash
+ (
+x509_û¹
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+184 *
+sha1_hash
+ = 
+	`gc_m®loc
+(
+SHA_DIGEST_LENGTH
+, 
+çl£
+, 
+gc
+);
+
+185 
+	`sha1
+(
+û¹
+->
+tbs
+.
+p
+, c”t->tbs.
+Ën
+, 
+sha1_hash
+);
+
+186  
+sha1_hash
+;
+
+187 
+	}
+}
+
+190 
+	$x509_g‘_subjeù
+(
+x509_û¹
+ *
+û¹
+, 
+gc_¬’a
+ *
+gc
+)
+
+192 
+tmp_subjeù
+[
+MAX_SUBJECT_LENGTH
+] = {0};
+
+193 *
+subjeù
+ = 
+NULL
+;
+
+195 
+»t
+ = 0;
+
+197 
+»t
+ = 
+	`x509·r£_dn_g‘s
+Ð
+tmp_subjeù
+, 
+MAX_SUBJECT_LENGTH
+-1, &
+û¹
+->
+subjeù
+ );
+
+198 ià(
+»t
+ > 0)
+
+201 
+subjeù
+ = 
+	`¡ršg_®loc
+(
+tmp_subjeù
+, 
+gc
+);
+
+204  
+subjeù
+;
+
+205 
+	}
+}
+
+213 
+	$x509_£‹nv
+ (
+’v_£t
+ *
+es
+, 
+û¹_d•th
+, 
+Ý’v²_x509_û¹_t
+ *
+û¹
+)
+
+215 
+i
+;
+
+216 
+c
+;
+
+217 cÚ¡ 
+x509_Çme
+ *
+Çme
+;
+
+218 
+s
+[128];
+
+220 
+Çme
+ = &
+û¹
+->
+subjeù
+;
+
+222 
+	`mem£t
+Ð
+s
+, 0, ( s ) );
+
+224  
+Çme
+ !ð
+NULL
+ )
+
+226 
+Çme_ex·nd
+[64+8];
+
+228 ifÐ
+Çme
+->
+oid
+.
+Ën
+ =ð2 && 
+	`memcmp
+ÐÇme->oid.
+p
+, 
+OID_X520
+, 2 ) == 0 )
+
+230  
+Çme
+->
+oid
+.
+p
+[2] )
+
+232 
+X520_COMMON_NAME
+:
+
+233 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_CN",
+
+234 
+û¹_d•th
+); ;
+
+236 
+X520_COUNTRY
+:
+
+237 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_C",
+
+238 
+û¹_d•th
+); ;
+
+240 
+X520_LOCALITY
+:
+
+241 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_L",
+
+242 
+û¹_d•th
+); ;
+
+244 
+X520_STATE
+:
+
+245 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_ST",
+
+246 
+û¹_d•th
+); ;
+
+248 
+X520_ORGANIZATION
+:
+
+249 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_O",
+
+250 
+û¹_d•th
+); ;
+
+252 
+X520_ORG_UNIT
+:
+
+253 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_OU",
+
+254 
+û¹_d•th
+); ;
+
+257 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand),
+
+258 "X509_%d_0x%02X", 
+û¹_d•th
+, 
+Çme
+->
+oid
+.
+p
+[2]);
+
+262 ifÐ
+Çme
+->
+oid
+.
+Ën
+ =ð8 && 
+	`memcmp
+ÐÇme->oid.
+p
+, 
+OID_PKCS9
+, 8 ) == 0 )
+
+264  
+Çme
+->
+oid
+.
+p
+[8] )
+
+266 
+PKCS9_EMAIL
+:
+
+267 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand),
+
+268 "X509_%d_emažAdd»ss", 
+û¹_d•th
+); ;
+
+271 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand),
+
+272 "X509_%d_0x%02X", 
+û¹_d•th
+, 
+Çme
+->
+oid
+.
+p
+[8]);
+
+278 
+	`Ý’v²_¢´štf
+ (
+Çme_ex·nd
+, (name_expand), "X509_%d_\?\?",
+
+279 
+û¹_d•th
+);
+
+282  
+i
+ = 0; i < 
+Çme
+->
+v®
+.
+Ën
+; i++ )
+
+284 ifÐ
+i
+ >ð(èÐ
+s
+ ) - 1 )
+
+287 
+c
+ = 
+Çme
+->
+v®
+.
+p
+[
+i
+];
+
+288 ifÐ
+c
+ < 32 || c == 127 || ( c > 128 && c < 160 ) )
+
+289 
+s
+[
+i
+] = '?';
+
+290 
+s
+[
+i
+] = 
+c
+;
+
+292 
+s
+[
+i
+] = '\0';
+
+295 
+	`¡ršg_mod
+ (
+Çme_ex·nd
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+296 
+	`¡ršg_mod
+ ((*)
+s
+, 
+CC_PRINT
+, 
+CC_CRLF
+, '_');
+
+297 
+	`£‹nv_¡r
+ (
+es
+, 
+Çme_ex·nd
+, (*)
+s
+);
+
+299 
+Çme
+ =‚ame->
+Ãxt
+;
+
+301 
+	}
+}
+
+303 
+»suÉ_t
+
+
+304 
+	$x509_v”ify_ns_û¹_ty³
+(cÚ¡ 
+x509_û¹
+ *
+û¹
+, cÚ¡ 
+u§ge
+)
+
+306 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_NONE
+)
+
+307  
+SUCCESS
+;
+
+308 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_CLIENT
+)
+
+309  ((
+û¹
+->
+ext_ty³s
+ & 
+EXT_NS_CERT_TYPE
+)
+
+310 && (
+û¹
+->
+ns_û¹_ty³
+ & 
+NS_CERT_TYPE_SSL_CLIENT
+)è? 
+SUCCESS
+ : 
+FAILURE
+;
+
+311 ià(
+u§ge
+ =ð
+NS_CERT_CHECK_SERVER
+)
+
+312  ((
+û¹
+->
+ext_ty³s
+ & 
+EXT_NS_CERT_TYPE
+)
+
+313 && (
+û¹
+->
+ns_û¹_ty³
+ & 
+NS_CERT_TYPE_SSL_SERVER
+)è? 
+SUCCESS
+ : 
+FAILURE
+;
+
+315  
+FAILURE
+;
+
+316 
+	}
+}
+
+318 
+»suÉ_t
+
+
+319 
+	$x509_v”ify_û¹_ku
+ (
+x509_û¹
+ *
+û¹
+, cÚ¡ * cÚ¡ 
+ex³ùed_ku
+,
+
+320 
+ex³ùed_Ën
+)
+
+322 
+»suÉ_t
+ 
+fFound
+ = 
+FAILURE
+;
+
+324 if(!(
+û¹
+->
+ext_ty³s
+ & 
+EXT_KEY_USAGE
+))
+
+326 
+	`msg
+ (
+D_HANDSHAKE
+, "Certificate does‚ot have key usageƒxtension");
+
+330 
+i
+;
+
+331 
+nku
+ = 
+û¹
+->
+key_u§ge
+;
+
+333 
+	`msg
+ (
+D_HANDSHAKE
+, "Validating certificate key usage");
+
+334 
+i
+=0; 
+SUCCESS
+ !ð
+fFound
+ && i<
+ex³ùed_Ën
+; i++)
+
+336 ià(
+ex³ùed_ku
+[
+i
+] != 0)
+
+338 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has key usage %04x,ƒxpects "
+
+339 "%04x", 
+nku
+, 
+ex³ùed_ku
+[
+i
+]);
+
+341 ià(
+nku
+ =ð
+ex³ùed_ku
+[
+i
+])
+
+343 
+fFound
+ = 
+SUCCESS
+;
+
+348  
+fFound
+;
+
+349 
+	}
+}
+
+351 
+»suÉ_t
+
+
+352 
+	$x509_v”ify_û¹_eku
+ (
+x509_û¹
+ *
+û¹
+, cÚ¡ * cÚ¡ 
+ex³ùed_oid
+)
+
+354 
+»suÉ_t
+ 
+fFound
+ = 
+FAILURE
+;
+
+356 ià(!(
+û¹
+->
+ext_ty³s
+ & 
+EXT_EXTENDED_KEY_USAGE
+))
+
+358 
+	`msg
+ (
+D_HANDSHAKE
+, "Certificate does‚ot haveƒxtended key usageƒxtension");
+
+362 
+x509_£qu’û
+ *
+oid_£q
+ = &(
+û¹
+->
+ext_key_u§ge
+);
+
+364 
+	`msg
+ (
+D_HANDSHAKE
+, "Validating certificateƒxtended key usage");
+
+365 
+oid_£q
+ !ð
+NULL
+)
+
+367 
+x509_buf
+ *
+oid
+ = &
+oid_£q
+->
+buf
+;
+
+368 
+oid_num_¡r
+[1024];
+
+369 cÚ¡ *
+oid_¡r
+;
+
+371 
+oid_¡r
+ = 
+	`x509_oid_g‘_desü�tiÚ
+(
+oid
+);
+
+372 ià(
+oid_¡r
+ !ð
+NULL
+)
+
+374 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has EKU (str) %s,ƒxpects %s",
+
+375 
+oid_¡r
+, 
+ex³ùed_oid
+);
+
+376 ià(!
+	`¡rcmp
+ (
+ex³ùed_oid
+, 
+oid_¡r
+))
+
+378 
+fFound
+ = 
+SUCCESS
+;
+
+383 ià(0 < 
+	`x509_oid_g‘_num”ic_¡ršg
+Ð
+oid_num_¡r
+,
+
+384  (
+oid_num_¡r
+), 
+oid
+))
+
+386 
+	`msg
+ (
+D_HANDSHAKE
+, "++ Certificate has EKU (oid) %s,ƒxpects %s",
+
+387 
+oid_num_¡r
+, 
+ex³ùed_oid
+);
+
+388 ià(!
+	`¡rcmp
+ (
+ex³ùed_oid
+, 
+oid_num_¡r
+))
+
+390 
+fFound
+ = 
+SUCCESS
+;
+
+394 
+oid_£q
+ = oid_£q->
+Ãxt
+;
+
+398  
+fFound
+;
+
+399 
+	}
+}
+
+401 
+»suÉ_t
+
+
+402 
+	$x509_wr™e_³m
+(
+FILE
+ *
+³”û¹_fže
+, 
+x509_û¹
+ *
+³”û¹
+)
+
+404 
+	`msg
+ (
+M_WARN
+, "PolarSSL does‚ot support writing…eer certificate in PEM format");
+
+405  
+FAILURE
+;
+
+406 
+	}
+}
+
+411 
+»suÉ_t
+
+
+412 
+	$x509_v”ify_ül
+(cÚ¡ *
+ül_fže
+, 
+x509_û¹
+ *
+û¹
+, cÚ¡ *
+subjeù
+)
+
+414 
+»suÉ_t
+ 
+»tv®
+ = 
+FAILURE
+;
+
+415 
+x509_ül
+ 
+ül
+ = {0};
+
+417 
+pÞ¬_»tv®
+ = 
+	`x509·r£_ülfže
+(&
+ül
+, 
+ül_fže
+);
+
+418 ià(
+pÞ¬_»tv®
+ != 0)
+
+420 
+”r¡r
+[128];
+
+421 
+	`”rÜ_¡»¼Ü
+(
+pÞ¬_»tv®
+, 
+”r¡r
+, (errstr));
+
+422 
+	`msg
+ (
+M_WARN
+, "CRL: cªnÙ„—d CRL from fž�% (%s)", 
+ül_fže
+, 
+”r¡r
+);
+
+423 
+’d
+;
+
+426 if(
+û¹
+->
+issu”_¿w
+.
+Ën
+ !ð
+ül
+.issuer_raw.len ||
+
+427 
+	`memcmp
+(
+ül
+.
+issu”_¿w
+.
+p
+, 
+û¹
+->issu”_¿w.p, c¾.issu”_¿w.
+Ën
+) != 0)
+
+429 
+	`msg
+ (
+M_WARN
+, "CRL: CRL %s is from‡ different issuer�han�he issuer of "
+
+430 "û¹ifiÿ‹ %s", 
+ül_fže
+, 
+subjeù
+);
+
+431 
+»tv®
+ = 
+SUCCESS
+;
+
+432 
+’d
+;
+
+435 ià(0 !ð
+	`x509·r£_»voked
+(
+û¹
+, &
+ül
+))
+
+437 
+	`msg
+ (
+D_HANDSHAKE
+, "CRL CHECK FAILED: % i REVOKED", 
+subjeù
+);
+
+438 
+’d
+;
+
+441 
+»tv®
+ = 
+SUCCESS
+;
+
+442 
+	`msg
+ (
+D_HANDSHAKE
+, "CRL CHECK OK: %s",
+subjeù
+);
+
+444 
+’d
+:
+
+445 
+	`x509_ül_ä“
+(&
+ül
+);
+
+446  
+»tv®
+;
+
+447 
+	}
+}
+
+	@ssl_verify_polarssl.h
+
+30 #iâdeà
+SSL_VERIFY_POLARSSL_H_
+
+
+31 
+	#SSL_VERIFY_POLARSSL_H_
+
+
+	)
+
+33 
+	~"sysh—d.h
+"
+
+34 
+	~"misc.h
+"
+
+35 
+	~"mªage.h
+"
+
+36 
+	~<pÞ¬s¦/x509.h
+>
+
+38 #iâdeà
+__OPENVPN_X509_CERT_T_DECLARED
+
+
+39 
+	#__OPENVPN_X509_CERT_T_DECLARED
+
+
+	)
+
+40 
+x509_û¹
+ 
+	tÝ’v²_x509_û¹_t
+;
+
+75 
+v”ify_ÿÎback
+ (*
+£ssiÚ_obj
+, 
+x509_û¹
+ *
+û¹
+, 
+û¹_d•th
+,
+
+76 *
+æags
+);
+
+	@status.c
+
+25 #ifdeà
+HAVE_CONFIG_H
+
+
+26 
+	~"cÚfig.h
+"
+
+27 #–ià
+defšed
+(
+_MSC_VER
+)
+
+28 
+	~"cÚfig-msvc.h
+"
+
+31 
+	~"sysh—d.h
+"
+
+33 
+	~"¡©us.h
+"
+
+34 
+	~"³rf.h
+"
+
+35 
+	~"misc.h
+"
+
+36 
+	~"fdmisc.h
+"
+
+38 
+	~"memdbg.h
+"
+
+45 
+	$´št_¡©us_mode
+ (
+æags
+)
+
+47 
+æags
+)
+
+49 
+STATUS_OUTPUT_WRITE
+:
+
+51 
+STATUS_OUTPUT_READ
+:
+
+53 
+STATUS_OUTPUT_READ
+|
+STATUS_OUTPUT_WRITE
+:
+
+58 
+	}
+}
+
+60 
+¡©us_ou�ut
+ *
+
+61 
+	$¡©us_Ý’
+ (cÚ¡ *
+fž’ame
+,
+
+62 cÚ¡ 
+»äesh_äeq
+,
+
+63 cÚ¡ 
+msgËv–
+,
+
+64 cÚ¡ 
+vœtu®_ou�ut
+ *
+vout
+,
+
+65 cÚ¡ 
+æags
+)
+
+67 
+¡©us_ou�ut
+ *
+so
+ = 
+NULL
+;
+
+68 ià(
+fž’ame
+ || 
+msgËv–
+ >ð0 || 
+vout
+)
+
+70 
+	`ALLOC_OBJ_CLEAR
+ (
+so
+, 
+¡©us_ou�ut
+);
+
+71 
+so
+->
+æags
+ = flags;
+
+72 
+so
+->
+msgËv–
+ = msglevel;
+
+73 
+so
+->
+vout
+ = vout;
+
+74 
+so
+->
+fd
+ = -1;
+
+75 
+	`buf_»£t
+ (&
+so
+->
+»ad_buf
+);
+
+76 
+	`ev’t_timeout_þ—r
+ (&
+so
+->
+‘
+);
+
+77 ià(
+fž’ame
+)
+
+79 
+so
+->
+æags
+)
+
+81 
+STATUS_OUTPUT_WRITE
+:
+
+82 
+so
+->
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fž’ame
+,
+
+83 
+O_CREAT
+ | 
+O_TRUNC
+ | 
+O_WRONLY
+,
+
+84 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+86 
+STATUS_OUTPUT_READ
+:
+
+87 
+so
+->
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fž’ame
+,
+
+88 
+O_RDONLY
+,
+
+89 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+91 
+STATUS_OUTPUT_READ
+|
+STATUS_OUTPUT_WRITE
+:
+
+92 
+so
+->
+fd
+ = 
+	`¶©fÜm_Ý’
+ (
+fž’ame
+,
+
+93 
+O_CREAT
+ | 
+O_RDWR
+,
+
+94 
+S_IRUSR
+ | 
+S_IWUSR
+);
+
+97 
+	`ASSERT
+ (0);
+
+99 ià(
+so
+->
+fd
+ >= 0)
+
+101 
+so
+->
+fž’ame
+ = 
+	`¡ršg_®loc
+ (fž’ame, 
+NULL
+);
+
+102 
+	`£t_þÛxec
+ (
+so
+->
+fd
+);
+
+105 ià(
+so
+->
+æags
+ & 
+STATUS_OUTPUT_READ
+)
+
+106 
+so
+->
+»ad_buf
+ = 
+	`®loc_buf
+ (512);
+
+110 
+	`msg
+ (
+M_WARN
+, "NÙe: cªnÙ o³À% fÜ %s", 
+fž’ame
+, 
+	`´št_¡©us_mode
+ (
+so
+->
+æags
+));
+
+111 
+so
+->
+”rÜs
+ = 
+Œue
+;
+
+115 
+so
+->
+æags
+ = 
+STATUS_OUTPUT_WRITE
+;
+
+117 ià((
+so
+->
+æags
+ & 
+STATUS_OUTPUT_WRITE
+è&& 
+»äesh_äeq
+ > 0)
+
+119 
+	`ev’t_timeout_š™
+ (&
+so
+->
+‘
+, 
+»äesh_äeq
+, 0);
+
+122  
+so
+;
+
+123 
+	}
+}
+
+125 
+boÞ
+
+
+126 
+	$¡©us_Œigg”
+ (
+¡©us_ou�ut
+ *
+so
+)
+
+128 ià(
+so
+)
+
+130 
+timev®
+ 
+nuÎ
+;
+
+131 
+	`CLEAR
+ (
+nuÎ
+);
+
+132  
+	`ev’t_timeout_Œigg”
+ (&
+so
+->
+‘
+, &
+nuÎ
+, 
+ETT_DEFAULT
+);
+
+135  
+çl£
+;
+
+136 
+	}
+}
+
+138 
+boÞ
+
+
+139 
+	$¡©us_Œigg”_tv
+ (
+¡©us_ou�ut
+ *
+so
+, 
+timev®
+ *
+tv
+)
+
+141 ià(
+so
+)
+
+142  
+	`ev’t_timeout_Œigg”
+ (&
+so
+->
+‘
+, 
+tv
+, 
+ETT_DEFAULT
+);
+
+144  
+çl£
+;
+
+145 
+	}
+}
+
+148 
+	$¡©us_»£t
+ (
+¡©us_ou�ut
+ *
+so
+)
+
+150 ià(
+so
+ && so->
+fd
+ >= 0)
+
+151 
+	`l£ek
+ (
+so
+->
+fd
+, (
+off_t
+)0, 
+SEEK_SET
+);
+
+152 
+	}
+}
+
+155 
+	$¡©us_æush
+ (
+¡©us_ou�ut
+ *
+so
+)
+
+157 ià(
+so
+ && so->
+fd
+ >ð0 && (so->
+æags
+ & 
+STATUS_OUTPUT_WRITE
+))
+
+159 #ià
+	`defšed
+(
+HAVE_FTRUNCATE
+)
+
+161 cÚ¡ 
+off_t
+ 
+off
+ = 
+	`l£ek
+ (
+so
+->
+fd
+, (off_t)0, 
+SEEK_CUR
+);
+
+162 ià(
+	`árunÿ‹
+ (
+so
+->
+fd
+, 
+off
+) != 0) {
+
+163 
+	`msg
+ (
+M_WARN
+, "Fažed�ØŒunÿ‹ s�tu fže: %s", 
+	`¡»¼Ü
+(
+”ºo
+));
+
+166 #–ià
+	`defšed
+(
+HAVE_CHSIZE
+)
+
+168 cÚ¡ 
+off
+ = (è
+	`l£ek
+ (
+so
+->
+fd
+, (
+off_t
+)0, 
+SEEK_CUR
+);
+
+169 
+	`chsize
+ (
+so
+->
+fd
+, 
+off
+);
+
+172 #w¬nšg 
+bÙh
+ 
+árunÿ‹
+ 
+ªd
+ 
+chsize
+ 
+funùiÚs
+ 
+­³¬
+ 
+to
+ 
+be
+ 
+missšg
+ 
+äom
+ 
+this
+ 
+OS
+
+
+176 ià(
+	`buf_defšed
+ (&
+so
+->
+»ad_buf
+))
+
+178 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+so
+->
+»ad_buf
+, 0));
+
+181 
+	}
+}
+
+184 
+boÞ
+
+
+185 
+	$¡©us_þo£
+ (
+¡©us_ou�ut
+ *
+so
+)
+
+187 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+188 ià(
+so
+)
+
+190 ià(
+so
+->
+”rÜs
+)
+
+191 
+»t
+ = 
+çl£
+;
+
+192 ià(
+so
+->
+fd
+ >= 0)
+
+194 ià(
+	`þo£
+ (
+so
+->
+fd
+) < 0)
+
+195 
+»t
+ = 
+çl£
+;
+
+197 ià(
+so
+->
+fž’ame
+)
+
+198 
+	`ä“
+ (
+so
+->
+fž’ame
+);
+
+199 ià(
+	`buf_defšed
+ (&
+so
+->
+»ad_buf
+))
+
+200 
+	`ä“_buf
+ (&
+so
+->
+»ad_buf
+);
+
+201 
+	`ä“
+ (
+so
+);
+
+204 
+»t
+ = 
+çl£
+;
+
+205  
+»t
+;
+
+206 
+	}
+}
+
+208 
+	#STATUS_PRINTF_MAXLEN
+ 512
+
+	)
+
+211 
+	$¡©us_´štf
+ (
+¡©us_ou�ut
+ *
+so
+, cÚ¡ *
+fÜm©
+, ...)
+
+213 ià(
+so
+ && (so->
+æags
+ & 
+STATUS_OUTPUT_WRITE
+))
+
+215 
+buf
+[
+STATUS_PRINTF_MAXLEN
++2];
+
+216 
+va_li¡
+ 
+¬gli¡
+;
+
+217 
+¡©
+;
+
+219 
+	`va_¡¬t
+ (
+¬gli¡
+, 
+fÜm©
+);
+
+220 
+¡©
+ = 
+	`v¢´štf
+ (
+buf
+, 
+STATUS_PRINTF_MAXLEN
+, 
+fÜm©
+, 
+¬gli¡
+);
+
+221 
+	`va_’d
+ (
+¬gli¡
+);
+
+222 
+buf
+[
+STATUS_PRINTF_MAXLEN
+ - 1] = 0;
+
+224 ià(
+¡©
+ < 0 || s�ˆ>ð
+STATUS_PRINTF_MAXLEN
+)
+
+225 
+so
+->
+”rÜs
+ = 
+Œue
+;
+
+227 ià(
+so
+->
+msgËv–
+ >ð0 && !so->
+”rÜs
+)
+
+228 
+	`msg
+ (
+so
+->
+msgËv–
+, "%s", 
+buf
+);
+
+230 ià(
+so
+->
+fd
+ >ð0 && !so->
+”rÜs
+)
+
+232 
+Ën
+;
+
+233 
+	`¡rÿt
+ (
+buf
+, "\n");
+
+234 
+Ën
+ = 
+	`¡¾’
+ (
+buf
+);
+
+235 ià(
+Ën
+ > 0)
+
+237 ià(
+	`wr™e
+ (
+so
+->
+fd
+, 
+buf
+, 
+Ën
+) !=†en)
+
+238 
+so
+->
+”rÜs
+ = 
+Œue
+;
+
+242 ià(
+so
+->
+vout
+ && !so->
+”rÜs
+)
+
+244 
+	`chomp
+ (
+buf
+);
+
+245 (*
+so
+->
+vout
+->
+func
+è(so->vout->
+¬g
+, so->vout->
+æags_deçuÉ
+, 
+buf
+);
+
+248 
+	}
+}
+
+250 
+boÞ
+
+
+251 
+	$¡©us_»ad
+ (
+¡©us_ou�ut
+ *
+so
+, 
+bufãr
+ *
+buf
+)
+
+253 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+255 ià(
+so
+ && so->
+fd
+ >ð0 && (so->
+æags
+ & 
+STATUS_OUTPUT_READ
+))
+
+257 
+	`ASSERT
+ (
+	`buf_defšed
+ (&
+so
+->
+»ad_buf
+));
+
+258 
+	`ASSERT
+ (
+	`buf_defšed
+ (
+buf
+));
+
+259 
+Œue
+)
+
+261 cÚ¡ 
+c
+ = 
+	`buf_»ad_u8
+ (&
+so
+->
+»ad_buf
+);
+
+264 ià(
+c
+ == -1)
+
+266 
+Ën
+;
+
+268 
+	`ASSERT
+ (
+	`buf_š™
+ (&
+so
+->
+»ad_buf
+, 0));
+
+269 
+Ën
+ = 
+	`»ad
+ (
+so
+->
+fd
+, 
+	`BPTR
+ (&so->
+»ad_buf
+), 
+	`BCAP
+ (&so->read_buf));
+
+270 ià(
+Ën
+ <= 0)
+
+273 
+	`ASSERT
+ (
+	`buf_šc_Ën
+ (&
+so
+->
+»ad_buf
+, 
+Ën
+));
+
+277 
+»t
+ = 
+Œue
+;
+
+279 ià(
+c
+ == '\r')
+
+282 ià(
+c
+ == '\n')
+
+285 
+	`buf_wr™e_u8
+ (
+buf
+, 
+c
+);
+
+288 
+	`buf_nuÎ_‹rmš©e
+ (
+buf
+);
+
+291  
+»t
+;
+
+292 
+	}
+}
+
+	@status.h
+
+25 #iâdeà
+STATUS_H
+
+
+26 
+	#STATUS_H
+
+
+	)
+
+28 
+	~"š‹rv®.h
+"
+
+33 
+	svœtu®_ou�ut
+ {
+
+34 *
+	m¬g
+;
+
+35 
+	mæags_deçuÉ
+;
+
+36 (*
+	mfunc
+è(*
+	m¬g
+, cÚ¡ 
+	mæags
+, cÚ¡ *
+	m¡r
+);
+
+39 
+šlše
+ 
+
+40 
+	$vœtu®_ou�ut_´št
+ (cÚ¡ 
+vœtu®_ou�ut
+ *
+vo
+, cÚ¡ 
+æags
+, cÚ¡ *
+¡r
+)
+
+42 (*
+vo
+->
+func
+è(vo->
+¬g
+, 
+æags
+, 
+¡r
+);
+
+43 
+	}
+}
+
+49 
+	s¡©us_ou�ut
+
+
+51 
+	#STATUS_OUTPUT_READ
+ (1<<0)
+
+	)
+
+52 
+	#STATUS_OUTPUT_WRITE
+ (1<<1)
+
+	)
+
+53 
+	mæags
+;
+
+55 *
+	mfž’ame
+;
+
+56 
+	mfd
+;
+
+57 
+	mmsgËv–
+;
+
+58 cÚ¡ 
+vœtu®_ou�ut
+ *
+	mvout
+;
+
+60 
+bufãr
+ 
+	m»ad_buf
+;
+
+62 
+ev’t_timeout
+ 
+	m‘
+;
+
+64 
+boÞ
+ 
+	m”rÜs
+;
+
+67 
+¡©us_ou�ut
+ *
+¡©us_Ý’
+ (cÚ¡ *
+fž’ame
+,
+
+68 cÚ¡ 
+»äesh_äeq
+,
+
+69 cÚ¡ 
+msgËv–
+,
+
+70 cÚ¡ 
+vœtu®_ou�ut
+ *
+vout
+,
+
+71 cÚ¡ 
+æags
+);
+
+73 
+boÞ
+ 
+¡©us_Œigg”_tv
+ (
+¡©us_ou�ut
+ *
+so
+, 
+timev®
+ *
+tv
+);
+
+74 
+boÞ
+ 
+¡©us_Œigg”
+ (
+¡©us_ou�ut
+ *
+so
+);
+
+75 
+¡©us_»£t
+ (
+¡©us_ou�ut
+ *
+so
+);
+
+76 
+¡©us_æush
+ (
+¡©us_ou�ut
+ *
+so
+);
+
+77 
+boÞ
+ 
+¡©us_þo£
+ (
+¡©us_ou�ut
+ *
+so
+);
+
+78 
+	$¡©us_´štf
+ (
+¡©us_ou�ut
+ *
+so
+, cÚ¡ *
+fÜm©
+, ...)
+
+79 #ifdeà
+__GNUC__
+
+
+80 #ià
+__USE_MINGW_ANSI_STDIO
+
+
+81 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+gnu_´štf
+, 2, 3)))
+
+83 
+	`__©Œibu‹__
+ ((
+	$fÜm©
+ (
+__´štf__
+, 2, 3)))
+
+88 
+boÞ
+ 
+	`¡©us_»ad
+ (
+¡©us_ou�ut
+ *
+so
+, 
+bufãr
+ *
+buf
+);
+
+90 
+šlše
+ 
+
+91 
+	$¡©us_rw_æags
+ (cÚ¡ 
+¡©us_ou�ut
+ *
+so
+)
+
+93 ià(
+so
+)
+
+94  
+so
+->
+æags
+;
+
+97 
+	}
+}
+
+	@syshead.h
+
+25 #iâdeà
+SYSHEAD_H
+
+
+26 
+	#SYSHEAD_H
+
+
+	)
+
+28 
+	~"com·t.h
+"
+
+29 
+	~"com·t-¡dboÞ.h
+"
+
+32 #ià
+defšed
+(
+__GNUC__
+)
+
+33 
+	#lik–y
+(
+x
+è
+	`__bužtš_ex³ù
+((x),1)
+
+	)
+
+34 
+	#uÆik–y
+(
+x
+è
+	`__bužtš_ex³ù
+((x),0)
+
+	)
+
+36 
+	#lik–y
+(
+x
+è(x)
+
+	)
+
+37 
+	#uÆik–y
+(
+x
+è(x)
+
+	)
+
+40 #ifdeà
+WIN32
+
+
+41 
+	~<wšdows.h
+>
+
+42 
+	~<wšsock2.h
+>
+
+43 
+	#¦“p
+(
+x
+è
+	`SË•
+((x)*1000)
+
+	)
+
+44 
+	#¿ndom
+ 
+¿nd
+
+
+	)
+
+45 
+	#¤ªdom
+ 
+¤ªd
+
+
+	)
+
+48 #ifdeà
+_MSC_VER
+
+
+49 
+	#__func__
+ 
+__FUNCTION__
+
+
+	)
+
+52 #ià
+defšed
+(
+__APPLE__
+)
+
+53 #ià
+__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ >= 1070
+
+54 
+	#__APPLE_USE_RFC_3542
+ 1
+
+	)
+
+58 #ifdeà
+HAVE_SYS_TYPES_H
+
+
+59 
+	~<sys/ty³s.h
+>
+
+62 #ifdeà
+HAVE_SYS_WAIT_H
+
+
+63 
+	~<sys/wa™.h
+>
+
+66 #iâdeà
+WIN32
+
+
+67 #iâdeà
+WEXITSTATUS
+
+
+68 
+	#WEXITSTATUS
+(
+¡©_v®
+è(()(¡©_v®è>> 8)
+
+	)
+
+70 #iâdeà
+WIFEXITED
+
+
+71 
+	#WIFEXITED
+(
+¡©_v®
+è(((¡©_v®è& 255è=ð0)
+
+	)
+
+75 #ifdeà
+HAVE_SYS_TIME_H
+
+
+76 
+	~<sys/time.h
+>
+
+79 #ifdeà
+HAVE_TIME_H
+
+
+80 
+	~<time.h
+>
+
+83 #ifdeà
+HAVE_SYS_SOCKET_H
+
+
+84 
+	~<sys/sock‘.h
+>
+
+87 #ifdeà
+HAVE_SYS_UN_H
+
+
+88 
+	~<sys/un.h
+>
+
+91 #ifdeà
+HAVE_SYS_IOCTL_H
+
+
+92 
+	~<sys/ioùl.h
+>
+
+95 #ifdeà
+HAVE_SYS_STAT_H
+
+
+96 
+	~<sys/¡©.h
+>
+
+99 #ifdeà
+HAVE_FCNTL_H
+
+
+100 
+	~<fúŽ.h
+>
+
+103 #ifdeà
+HAVE_DIRECT_H
+
+
+104 
+	~<dœeù.h
+>
+
+107 #ifdeà
+HAVE_IO_H
+
+
+108 
+	~<io.h
+>
+
+111 #ifdeà
+HAVE_SYS_FILE_H
+
+
+112 
+	~<sys/fže.h
+>
+
+115 #ifdeà
+HAVE_STDLIB_H
+
+
+116 
+	~<¡dlib.h
+>
+
+119 #ifdeà
+HAVE_INTTYPES_H
+
+
+120 
+	~<š‰y³s.h
+>
+
+121 #–ià
+defšed
+(
+HAVE_STDINT_H
+)
+
+122 
+	~<¡dšt.h
+>
+
+125 #ifdeà
+HAVE_STDARG_H
+
+
+126 
+	~<¡d¬g.h
+>
+
+129 #ifdeà
+HAVE_UNISTD_H
+
+
+130 
+	~<uni¡d.h
+>
+
+133 #ifdeà
+HAVE_SIGNAL_H
+
+
+134 
+	~<sigÇl.h
+>
+
+137 #ifdeà
+HAVE_LIMITS_H
+
+
+138 
+	~<lim™s.h
+>
+
+141 #ifdeà
+HAVE_STDIO_H
+
+
+142 
+	~<¡dio.h
+>
+
+145 #ifdeà
+HAVE_CTYPE_H
+
+
+146 
+	~<ùy³.h
+>
+
+149 #ifdeà
+HAVE_ERRNO_H
+
+
+150 
+	~<”ºo.h
+>
+
+153 #ifdeà
+HAVE_ERR_H
+
+
+154 
+	~<”r.h
+>
+
+157 #ifdeà
+HAVE_SYSLOG_H
+
+
+158 
+	~<sy¦og.h
+>
+
+161 #ifdeà
+HAVE_PWD_H
+
+
+162 
+	~<pwd.h
+>
+
+165 #ifdeà
+HAVE_GRP_H
+
+
+166 
+	~<g½.h
+>
+
+169 #ifdeà
+HAVE_NETDB_H
+
+
+170 
+	~<Ãtdb.h
+>
+
+173 #ifdeà
+HAVE_NETINET_IN_H
+
+
+174 
+	~<Ãtš‘/š.h
+>
+
+177 #ifdeà
+HAVE_RESOLV_H
+
+
+178 
+	~<»sÞv.h
+>
+
+181 #ifdeà
+HAVE_SYS_POLL_H
+
+
+182 
+	~<sys/pÞl.h
+>
+
+185 #ifdeà
+HAVE_SYS_EPOLL_H
+
+
+186 
+	~<sys/•Þl.h
+>
+
+189 #ifdeà
+ENABLE_SELINUX
+
+
+190 
+	~<£lšux/£lšux.h
+>
+
+193 #ià
+defšed
+(
+HAVE_LIBGEN_H
+)
+
+194 
+	~<libg’.h
+>
+
+197 #ifdeà
+TARGET_SOLARIS
+
+
+198 #ifdeà
+HAVE_STRINGS_H
+
+
+199 
+	~<¡ršgs.h
+>
+
+202 #ifdeà
+HAVE_STRING_H
+
+
+203 
+	~<¡ršg.h
+>
+
+207 #ifdeà
+HAVE_ARPA_INET_H
+
+
+208 
+	~<¬·/š‘.h
+>
+
+211 #ifdeà
+HAVE_NET_IF_H
+
+
+212 
+	~<Ãt/if.h
+>
+
+215 #ifdeà
+TARGET_NETBSD
+
+
+216 
+	~<Ãt/if_�p.h
+>
+
+219 #ifdeà
+TARGET_LINUX
+
+
+221 #ifdeà
+HAVE_LINUX_IF_TUN_H
+
+
+222 
+	~<lšux/if_tun.h
+>
+
+225 #ifdeà
+HAVE_NETINET_IP_H
+
+
+226 
+	~<Ãtš‘/�.h
+>
+
+229 #ifdeà
+HAVE_LINUX_SOCKIOS_H
+
+
+230 
+	~<lšux/sockios.h
+>
+
+233 #ifdeà
+HAVE_LINUX_TYPES_H
+
+
+234 
+	~<lšux/ty³s.h
+>
+
+237 #ifdeà
+HAVE_LINUX_ERRQUEUE_H
+
+
+238 
+	~<lšux/”rqueue.h
+>
+
+241 #ifdeà
+HAVE_NETINET_TCP_H
+
+
+242 
+	~<Ãtš‘/tý.h
+>
+
+247 #ifdeà
+TARGET_SOLARIS
+
+
+249 #ifdeà
+HAVE_STROPTS_H
+
+
+250 
+	~<¡rÝts.h
+>
+
+251 #undeà
+S_ERROR
+
+
+254 #ifdeà
+HAVE_NET_IF_TUN_H
+
+
+255 
+	~<Ãt/if_tun.h
+>
+
+258 #ifdeà
+HAVE_SYS_SOCKIO_H
+
+
+259 
+	~<sys/sockio.h
+>
+
+262 #ifdeà
+HAVE_NETINET_IN_SYSTM_H
+
+
+263 
+	~<Ãtš‘/š_sy¡m.h
+>
+
+266 #ifdeà
+HAVE_NETINET_IP_H
+
+
+267 
+	~<Ãtš‘/�.h
+>
+
+270 #ifdeà
+HAVE_NETINET_TCP_H
+
+
+271 
+	~<Ãtš‘/tý.h
+>
+
+276 #ifdeà
+TARGET_OPENBSD
+
+
+278 #ifdeà
+HAVE_SYS_UIO_H
+
+
+279 
+	~<sys/uio.h
+>
+
+282 #ifdeà
+HAVE_NETINET_IN_SYSTM_H
+
+
+283 
+	~<Ãtš‘/š_sy¡m.h
+>
+
+286 #ifdeà
+HAVE_NETINET_IP_H
+
+
+287 
+	~<Ãtš‘/�.h
+>
+
+290 #ifdeà
+HAVE_NET_IF_TUN_H
+
+
+291 
+	~<Ãt/if_tun.h
+>
+
+296 #ifdeà
+TARGET_FREEBSD
+
+
+298 #ifdeà
+HAVE_SYS_UIO_H
+
+
+299 
+	~<sys/uio.h
+>
+
+302 #ifdeà
+HAVE_NETINET_IN_SYSTM_H
+
+
+303 
+	~<Ãtš‘/š_sy¡m.h
+>
+
+306 #ifdeà
+HAVE_NETINET_IP_H
+
+
+307 
+	~<Ãtš‘/�.h
+>
+
+310 #ifdeà
+HAVE_NETINET_TCP_H
+
+
+311 
+	~<Ãtš‘/tý.h
+>
+
+314 #ifdeà
+HAVE_NET_IF_TUN_H
+
+
+315 
+	~<Ãt/if_tun.h
+>
+
+320 #ifdeà
+TARGET_NETBSD
+
+
+322 #ifdeà
+HAVE_NET_IF_TUN_H
+
+
+323 
+	~<Ãt/if_tun.h
+>
+
+326 #ifdeà
+HAVE_NETINET_TCP_H
+
+
+327 
+	~<Ãtš‘/tý.h
+>
+
+332 #ifdeà
+TARGET_DRAGONFLY
+
+
+334 #ifdeà
+HAVE_SYS_UIO_H
+
+
+335 
+	~<sys/uio.h
+>
+
+338 #ifdeà
+HAVE_NETINET_IN_SYSTM_H
+
+
+339 
+	~<Ãtš‘/š_sy¡m.h
+>
+
+342 #ifdeà
+HAVE_NETINET_IP_H
+
+
+343 
+	~<Ãtš‘/�.h
+>
+
+346 #ifdeà
+HAVE_NET_TUN_IF_TUN_H
+
+
+347 
+	~<Ãt/tun/if_tun.h
+>
+
+352 #ifdeà
+TARGET_DARWIN
+
+
+354 #ifdeà
+HAVE_NETINET_TCP_H
+
+
+355 
+	~<Ãtš‘/tý.h
+>
+
+360 #ifdeà
+WIN32
+
+
+361 
+	~<�hÍ­i.h
+>
+
+362 
+	~<Áddndis.h
+>
+
+363 
+	~<wšš‘.h
+>
+
+364 
+	~<sh–Ïpi.h
+>
+
+366 
+	~<wšsock2.h
+>
+
+367 
+	~<ws2tý�.h
+>
+
+370 #ifdeà
+HAVE_SYS_MMAN_H
+
+
+371 #ifdeà
+TARGET_DARWIN
+
+
+372 
+	#_P1003_1B_VISIBLE
+
+
+	)
+
+374 
+	~<sys/mmª.h
+>
+
+381 #ifdeà
+__STRICT_ANSI__
+
+
+382 
+	#PEDANTIC
+ 1
+
+	)
+
+383 #undeà
+HAVE_CPP_VARARG_MACRO_GCC
+
+
+384 #undeà
+HAVE_CPP_VARARG_MACRO_ISO
+
+
+385 #undeà
+EMPTY_ARRAY_SIZE
+
+
+386 
+	#EMPTY_ARRAY_SIZE
+ 1
+
+	)
+
+387 #undeà
+šlše
+
+
+388 
+	#šlše
+
+
+	)
+
+390 
+	#PEDANTIC
+ 0
+
+	)
+
+396 #ià
+defšed
+(
+IPPROTO_IP
+è&& defšed(
+IP_TOS
+è&& defšed(
+HAVE_SETSOCKOPT
+)
+
+397 
+	#PASSTOS_CAPABILITY
+ 1
+
+	)
+
+399 
+	#PASSTOS_CAPABILITY
+ 0
+
+	)
+
+405 #ià
+defšed
+(
+HAVE_GETTIMEOFDAY
+è|| defšed(
+WIN32
+)
+
+406 
+	#HAVE_GETTIMEOFDAY_NANOSECONDS
+ 1
+
+	)
+
+412 #iâdeà
+MIN
+
+
+413 
+	#MIN
+(
+a
+,
+b
+è((×)<(b))?×):(b))
+
+	)
+
+419 #ià
+defšed
+(
+HAVE_LINUX_TYPES_H
+è&& defšed(
+HAVE_LINUX_ERRQUEUE_H
+è&& defšed(
+HAVE_SOCK_EXTENDED_ERR
+è&& defšed(
+HAVE_MSGHDR
+è&& defšed(
+HAVE_CMSGHDR
+è&& defšed(
+CMSG_FIRSTHDR
+è&& defšed(
+CMSG_NXTHDR
+è&& defšed(
+IP_RECVERR
+è&& defšed(
+MSG_ERRQUEUE
+è&& defšed(
+SOL_IP
+è&& defšed(
+HAVE_IOVEC
+)
+
+420 
+	#EXTENDED_SOCKET_ERROR_CAPABILITY
+ 1
+
+	)
+
+422 
+	#EXTENDED_SOCKET_ERROR_CAPABILITY
+ 0
+
+	)
+
+429 #ià
+defšed
+(
+ENABLE_MULTIHOME
+è&& ((defšed(
+HAVE_IN_PKTINFO
+)&&defšed(
+IP_PKTINFO
+)è|| defšed(
+IP_RECVDSTADDR
+)è&& defšed(
+HAVE_MSGHDR
+è&& defšed(
+HAVE_CMSGHDR
+è&& defšed(
+HAVE_IOVEC
+è&& defšed(
+CMSG_FIRSTHDR
+è&& defšed(
+CMSG_NXTHDR
+è&& defšed(
+HAVE_RECVMSG
+è&& defšed(
+HAVE_SENDMSG
+)
+
+430 
+	#ENABLE_IP_PKTINFO
+ 1
+
+	)
+
+432 
+	#ENABLE_IP_PKTINFO
+ 0
+
+	)
+
+439 #iâdeà
+SOL_IP
+
+
+440 
+	#SOL_IP
+ 
+IPPROTO_IP
+
+
+	)
+
+447 #undeà
+EXTENDED_SOCKET_ERROR_CAPABILITY
+
+
+448 
+	#EXTENDED_SOCKET_ERROR_CAPABILITY
+ 0
+
+	)
+
+454 #ià
+defšed
+(
+HAVE_OPENLOG
+è&& defšed(
+HAVE_SYSLOG
+)
+
+455 
+	#SYSLOG_CAPABILITY
+ 1
+
+	)
+
+457 
+	#SYSLOG_CAPABILITY
+ 0
+
+	)
+
+463 #iâdeà
+O_BINARY
+
+
+464 
+	#O_BINARY
+ 0
+
+	)
+
+470 #ifdeà
+WIN32
+
+
+471 
+	#OS_SPECIFIC_DIRSEP
+ '\\'
+
+	)
+
+473 
+	#OS_SPECIFIC_DIRSEP
+ '/'
+
+	)
+
+480 #ifdeà
+WIN32
+
+
+481 
+	#WIN32_0_1
+ 1
+
+	)
+
+483 
+	#WIN32_0_1
+ 0
+
+	)
+
+489 #ifdeà
+WIN32
+
+
+490 
+	#SOCKET_UNDEFINED
+ (
+INVALID_SOCKET
+)
+
+	)
+
+491 
+SOCKET
+ 
+	tsock‘_desü�tÜ_t
+;
+
+493 
+	#SOCKET_UNDEFINED
+ (-1)
+
+	)
+
+494 
+	tsock‘_desü�tÜ_t
+;
+
+497 
+šlše
+ 
+
+498 
+	$sock‘_defšed
+ (cÚ¡ 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+500  
+sd
+ !ð
+SOCKET_UNDEFINED
+;
+
+501 
+	}
+}
+
+506 
+	#USE_64_BIT_COUNTERS
+
+
+	)
+
+512 #ià
+defšed
+(
+HAVE_EXECVE
+è&& defšed(
+HAVE_FORK
+)
+
+513 
+	#ENABLE_FEATURE_EXECVE
+
+
+	)
+
+520 #ià
+defšed
+(
+ENABLE_CLIENT_SERVER
+è&& defšed(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+è&& defšed(
+HAVE_GETTIMEOFDAY_NANOSECONDS
+)
+
+521 
+	#P2MP
+ 1
+
+	)
+
+523 
+	#P2MP
+ 0
+
+	)
+
+526 #ià
+P2MP
+ && !
+defšed
+(
+ENABLE_CLIENT_ONLY
+)
+
+527 
+	#P2MP_SERVER
+ 1
+
+	)
+
+529 
+	#P2MP_SERVER
+ 0
+
+	)
+
+535 #ià
+defšed
+(
+ENABLE_PORT_SHARE
+è&& 
+P2MP_SERVER
+ && defšed(
+SCM_RIGHTS
+è&& defšed(
+HAVE_MSGHDR
+è&& defšed(
+HAVE_CMSGHDR
+è&& defšed(
+HAVE_IOVEC
+è&& defšed(
+CMSG_FIRSTHDR
+è&& defšed(
+CMSG_NXTHDR
+è&& defšed(
+HAVE_RECVMSG
+è&& defšed(
+HAVE_SENDMSG
+)
+
+536 
+	#PORT_SHARE
+ 1
+
+	)
+
+538 
+	#PORT_SHARE
+ 0
+
+	)
+
+544 #ià
+defšed
+(
+ENABLE_DEF_AUTH
+è&& 
+P2MP_SERVER
+ && defšed(
+ENABLE_PLUGIN
+)
+
+545 
+	#PLUGIN_DEF_AUTH
+
+
+	)
+
+547 #ià
+defšed
+(
+ENABLE_DEF_AUTH
+è&& 
+P2MP_SERVER
+ && defšed(
+ENABLE_MANAGEMENT
+)
+
+548 
+	#MANAGEMENT_DEF_AUTH
+
+
+	)
+
+550 #ià!
+defšed
+(
+PLUGIN_DEF_AUTH
+è&& !defšed(
+MANAGEMENT_DEF_AUTH
+)
+
+551 #undeà
+ENABLE_DEF_AUTH
+
+
+557 #ià
+defšed
+(
+ENABLE_MANAGEMENT
+è&& defšed(
+ENABLE_SSL
+)
+
+558 
+	#MANAGMENT_EXTERNAL_KEY
+
+
+	)
+
+562 #ifdeà
+ENABLE_CRYPTO_POLARSSL
+
+
+563 
+	#ENABLE_PREDICTION_RESISTANCE
+
+
+	)
+
+570 #ià
+defšed
+(
+MANAGEMENT_DEF_AUTH
+è|| defšed(
+MANAGMENT_EXTERNAL_KEY
+)
+
+571 
+	#MANAGEMENT_IN_EXTRA
+
+
+	)
+
+577 #ià
+defšed
+(
+ENABLE_PF
+è&& 
+P2MP_SERVER
+ && defšed(
+ENABLE_PLUGIN
+è&& defšed(
+HAVE_STAT
+)
+
+578 
+	#PLUGIN_PF
+
+
+	)
+
+580 #ià
+defšed
+(
+ENABLE_PF
+è&& 
+P2MP_SERVER
+ && defšed(
+MANAGEMENT_DEF_AUTH
+)
+
+581 
+	#MANAGEMENT_PF
+
+
+	)
+
+583 #ià!
+defšed
+(
+PLUGIN_PF
+è&& !defšed(
+MANAGEMENT_PF
+)
+
+584 #undeà
+ENABLE_PF
+
+
+590 #ià
+defšed
+(
+PF_UNIX
+è&& !defšed(
+WIN32
+)
+
+591 
+	#UNIX_SOCK_SUPPORT
+ 1
+
+	)
+
+593 
+	#UNIX_SOCK_SUPPORT
+ 0
+
+	)
+
+599 
+	#ENABLE_BUFFER_LIST
+
+
+	)
+
+604 #iâdeà
+ENABLE_SMALL
+
+
+605 
+	#ENABLE_OCC
+
+
+	)
+
+611 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_HTTP_PROXY
+)
+
+612 
+	#NTLM
+ 1
+
+	)
+
+614 
+	#NTLM
+ 0
+
+	)
+
+620 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_HTTP_PROXY
+)
+
+621 
+	#PROXY_DIGEST_AUTH
+ 1
+
+	)
+
+623 
+	#PROXY_DIGEST_AUTH
+ 0
+
+	)
+
+629 #ià
+defšed
+(
+ENABLE_HTTP_PROXY
+è|| defšed(
+ENABLE_SOCKS
+)
+
+630 
+	#GENERAL_PROXY_SUPPORT
+
+
+	)
+
+636 #ià
+defšed
+(
+WIN32
+è&& defšed(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+è&& defšed(
+ENABLE_CRYPTO_OPENSSL
+)
+
+637 
+	#ENABLE_CRYPTOAPI
+
+
+	)
+
+643 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+è&& defšed (
+ENABLE_CRYPTO_OPENSSL
+)
+
+644 
+	#ENABLE_X509_TRACK
+
+
+	)
+
+650 #ià
+defšed
+(
+HAVE_POLL
+è&& defšed(
+HAVE_SYS_POLL_H
+)
+
+651 
+	#POLL
+ 1
+
+	)
+
+653 
+	#POLL
+ 0
+
+	)
+
+659 #ià
+defšed
+(
+HAVE_EPOLL_CREATE
+è&& defšed(
+HAVE_SYS_EPOLL_H
+)
+
+660 
+	#EPOLL
+ 1
+
+	)
+
+662 
+	#EPOLL
+ 0
+
+	)
+
+667 #undeà
+EPOLL
+
+
+668 
+	#EPOLL
+ 0
+
+	)
+
+674 #ià
+defšed
+(
+ENABLE_MANAGEMENT
+è&& defšed(
+ENABLE_HTTP_PROXY
+)
+
+675 
+	#HTTP_PROXY_OVERRIDE
+ 1
+
+	)
+
+677 
+	#HTTP_PROXY_OVERRIDE
+ 0
+
+	)
+
+684 #ià
+defšed
+(
+HAVE_GETTIMEOFDAY_NANOSECONDS
+)
+
+685 
+	#TIME_BACKTRACK_PROTECTION
+ 1
+
+	)
+
+691 #ià
+defšed
+(
+HAVE_GETTIMEOFDAY_NANOSECONDS
+)
+
+692 
+	#ENABLE_FEATURE_SHAPER
+ 1
+
+	)
+
+698 #ià
+defšed
+(
+HAVE_GETSOCKOPT
+è&& defšed(
+SOL_SOCKET
+è&& defšed(
+SO_ERROR
+è&& defšed(
+EINPROGRESS
+è&& defšed(
+ETIMEDOUT
+)
+
+699 
+	#CONNECT_NONBLOCK
+
+
+	)
+
+705 #ià
+defšed
+(
+ENABLE_AUTO_USERID
+)
+
+706 
+	#AUTO_USERID
+ 1
+
+	)
+
+708 
+	#AUTO_USERID
+ 0
+
+	)
+
+714 #ià
+defšed
+(
+ENABLE_MANAGEMENT
+)
+
+715 
+	#ENABLE_CLIENT_CR
+
+
+	)
+
+721 #ià
+defšed
+(
+ENABLE_CRYPTO
+è&& defšed(
+ENABLE_SSL
+)
+
+722 
+	#ENABLE_PUSH_PEER_INFO
+
+
+	)
+
+728 
+	#ENABLE_CLIENT_NAT
+
+
+	)
+
+733 #ifdeà
+TARGET_LINUX
+
+
+734 
+	#ENABLE_MEMSTATS
+
+
+	)
+
+	@tun.c
+
+33 #ifdeà
+HAVE_CONFIG_H
+
+
+34 
+	~"cÚfig.h
+"
+
+35 #–ià
+defšed
+(
+_MSC_VER
+)
+
+36 
+	~"cÚfig-msvc.h
+"
+
+39 
+	~"sysh—d.h
+"
+
+41 
+	~"tun.h
+"
+
+42 
+	~"fdmisc.h
+"
+
+43 
+	~"commÚ.h
+"
+
+44 
+	~"misc.h
+"
+
+45 
+	~"sock‘.h
+"
+
+46 
+	~"mªage.h
+"
+
+47 
+	~"rou‹.h
+"
+
+48 
+	~"wš32.h
+"
+
+50 
+	~"memdbg.h
+"
+
+52 #ifdeà
+WIN32
+
+
+56 
+	#NI_TEST_FIRST
+ (1<<0)
+
+	)
+
+57 
+	#NI_IP_NETMASK
+ (1<<1)
+
+	)
+
+58 
+	#NI_OPTIONS
+ (1<<2)
+
+	)
+
+60 
+Ãtsh_ifcÚfig
+ (cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+to
+,
+
+61 cÚ¡ *
+æex_Çme
+,
+
+62 cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+63 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+,
+
+64 cÚ¡ 
+æags
+);
+
+65 
+Ãtsh_commªd
+ (cÚ¡ 
+¬gv
+ *
+a
+, 
+n
+);
+
+67 cÚ¡ *
+Ãtsh_g‘_id
+ (cÚ¡ *
+dev_node
+, 
+gc_¬’a
+ *
+gc
+);
+
+71 #ifdeà
+TARGET_SOLARIS
+
+
+72 
+sÞ¬is_”rÜ_þo£
+ (
+tuÁ­
+ *
+‰
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ *
+aùu®
+, 
+boÞ
+ 
+uÅlumb_š‘6
+);
+
+73 
+	~<¡rÝts.h
+>
+
+76 #ià
+defšed
+(
+TARGET_DARWIN
+è&& 
+HAVE_NET_IF_UTUN_H
+
+
+77 
+	~<sys/k”n_cÚŒÞ.h
+>
+
+78 
+	~<Ãt/if_utun.h
+>
+
+79 
+	~<sys/sys_domaš.h
+>
+
+82 
+þ—r_tuÁ­
+ (
+tuÁ­
+ *tuntap);
+
+84 
+boÞ
+
+
+85 
+	$is_dev_ty³
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+m©ch_ty³
+)
+
+87 
+	`ASSERT
+ (
+m©ch_ty³
+);
+
+88 ià(!
+dev
+)
+
+89  
+çl£
+;
+
+90 ià(
+dev_ty³
+)
+
+91  !
+	`¡rcmp
+ (
+dev_ty³
+, 
+m©ch_ty³
+);
+
+93  !
+	`¡ºcmp
+ (
+dev
+, 
+m©ch_ty³
+, 
+	`¡¾’
+ (match_type));
+
+94 
+	}
+}
+
+97 
+	$dev_ty³_’um
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+)
+
+99 ià(
+	`is_dev_ty³
+ (
+dev
+, 
+dev_ty³
+, "tun"))
+
+100  
+DEV_TYPE_TUN
+;
+
+101 ià(
+	`is_dev_ty³
+ (
+dev
+, 
+dev_ty³
+, "tap"))
+
+102  
+DEV_TYPE_TAP
+;
+
+103 ià(
+	`is_dev_ty³
+ (
+dev
+, 
+dev_ty³
+, "null"))
+
+104  
+DEV_TYPE_NULL
+;
+
+106  
+DEV_TYPE_UNDEF
+;
+
+107 
+	}
+}
+
+110 
+	$dev_ty³_¡ršg
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+)
+
+112 
+	`dev_ty³_’um
+ (
+dev
+, 
+dev_ty³
+))
+
+114 
+DEV_TYPE_TUN
+:
+
+116 
+DEV_TYPE_TAP
+:
+
+118 
+DEV_TYPE_NULL
+:
+
+123 
+	}
+}
+
+130 
+	$guess_tuÁ­_dev
+ (cÚ¡ *
+dev
+,
+
+131 cÚ¡ *
+dev_ty³
+,
+
+132 cÚ¡ *
+dev_node
+,
+
+133 
+gc_¬’a
+ *
+gc
+)
+
+135 #ifdeà
+WIN32
+
+
+136 cÚ¡ 
+dt
+ = 
+	`dev_ty³_’um
+ (
+dev
+, 
+dev_ty³
+);
+
+137 ià(
+dt
+ =ð
+DEV_TYPE_TUN
+ || dˆ=ð
+DEV_TYPE_TAP
+)
+
+139  
+	`Ãtsh_g‘_id
+ (
+dev_node
+, 
+gc
+);
+
+144  
+dev
+;
+
+145 
+	}
+}
+
+149 cÚ¡ 
+	gifcÚfig_w¬n_how_to_sž’û
+[] = "(silence�his warning with --ifconfig-nowarn)";
+
+159 
+	$ifcÚfig_§n™y_check
+ (
+boÞ
+ 
+tun
+, 
+š_addr_t
+ 
+addr
+, 
+tÝÞogy
+)
+
+161 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+162 cÚ¡ 
+boÞ
+ 
+looks_like_Ãtmask
+ = ((
+addr
+ & 0xFF000000) == 0xFF000000);
+
+163 ià(
+tun
+)
+
+165 ià(
+looks_like_Ãtmask
+ && (
+tÝÞogy
+ =ð
+TOP_NET30
+ ||�ÝÞogy =ð
+TOP_P2P
+))
+
+166 
+	`msg
+ (
+M_WARN
+, "WARNING: Since you‡re using --dev�un with‡…oint-to-point�opology,�he second‡rgument�o --ifconfig must be‡n IP‡ddress. You‡re using something (%s)�hat†ooks more†ike‡‚etmask. %s",
+
+167 
+	`´št_š_addr_t
+ (
+addr
+, 0, &
+gc
+),
+
+168 
+ifcÚfig_w¬n_how_to_sž’û
+);
+
+172 ià(!
+looks_like_Ãtmask
+)
+
+173 
+	`msg
+ (
+M_WARN
+, "WARNING: Since you‡re using --dev�ap,�he second‡rgument�o --ifconfig must be‡‚etmask, forƒxample something†ike 255.255.255.0. %s",
+
+174 
+ifcÚfig_w¬n_how_to_sž’û
+);
+
+176 
+	`gc_ä“
+ (&
+gc
+);
+
+177 
+	}
+}
+
+182 
+š_addr_t
+
+
+183 
+	$g’”©e_ifcÚfig_brßdÿ¡_addr
+ (
+š_addr_t
+ 
+loÿl
+,
+
+184 
+š_addr_t
+ 
+Ãtmask
+)
+
+186  
+loÿl
+ | ~
+Ãtmask
+;
+
+187 
+	}
+}
+
+194 
+	$check_addr_þash
+ (cÚ¡ *
+Çme
+,
+
+195 
+ty³
+,
+
+196 
+š_addr_t
+ 
+public
+,
+
+197 
+š_addr_t
+ 
+loÿl
+,
+
+198 
+š_addr_t
+ 
+»mÙe_Ãtmask
+)
+
+200 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+202 
+	`msg
+ (
+M_INFO
+, "CHECK_ADDR_CLASH�ype=%d…ublic=%s†ocal=%s,„emote_netmask=%s",
+
+203 
+ty³
+,
+
+204 
+	`´št_š_addr_t
+ (
+public
+, 0, &
+gc
+),
+
+205 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+206 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 0, &
+gc
+));
+
+209 ià(
+public
+)
+
+211 ià(
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+213 cÚ¡ 
+š_addr_t
+ 
+‹¡_Ãtmask
+ = 0xFFFFFF00;
+
+214 cÚ¡ 
+š_addr_t
+ 
+public_Ãt
+ = 
+public
+ & 
+‹¡_Ãtmask
+;
+
+215 cÚ¡ 
+š_addr_t
+ 
+loÿl_Ãt
+ = 
+loÿl
+ & 
+‹¡_Ãtmask
+;
+
+216 cÚ¡ 
+š_addr_t
+ 
+»mÙe_Ãt
+ = 
+»mÙe_Ãtmask
+ & 
+‹¡_Ãtmask
+;
+
+218 ià(
+public
+ =ð
+loÿl
+ ||…ubliø=ð
+»mÙe_Ãtmask
+)
+
+219 
+	`msg
+ (
+M_WARN
+,
+
+221 
+Çme
+,
+
+222 
+	`´št_š_addr_t
+ (
+public
+, 0, &
+gc
+),
+
+223 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+224 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 0, &
+gc
+),
+
+225 
+ifcÚfig_w¬n_how_to_sž’û
+);
+
+227 ià(
+public_Ãt
+ =ð
+loÿl_Ãt
+ ||…ublic_Ãˆ=ð
+»mÙe_Ãt
+)
+
+228 
+	`msg
+ (
+M_WARN
+,
+
+230 
+Çme
+,
+
+231 
+	`´št_š_addr_t
+ (
+public
+, 0, &
+gc
+),
+
+232 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+233 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 0, &
+gc
+),
+
+234 
+ifcÚfig_w¬n_how_to_sž’û
+);
+
+236 ià(
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+238 cÚ¡ 
+š_addr_t
+ 
+public_ÃtwÜk
+ = 
+public
+ & 
+»mÙe_Ãtmask
+;
+
+239 cÚ¡ 
+š_addr_t
+ 
+vœtu®_ÃtwÜk
+ = 
+loÿl
+ & 
+»mÙe_Ãtmask
+;
+
+240 ià(
+public_ÃtwÜk
+ =ð
+vœtu®_ÃtwÜk
+)
+
+241 
+	`msg
+ (
+M_WARN
+,
+
+243 
+Çme
+,
+
+244 
+	`´št_š_addr_t
+ (
+public
+, 0, &
+gc
+),
+
+245 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+246 
+	`´št_š_addr_t
+ (
+»mÙe_Ãtmask
+, 0, &
+gc
+),
+
+247 
+ifcÚfig_w¬n_how_to_sž’û
+);
+
+250 
+	`gc_ä“
+ (&
+gc
+);
+
+251 
+	}
+}
+
+261 
+	$check_subÃt_cÚæiù
+ (cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+262 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+,
+
+263 cÚ¡ *
+´efix
+)
+
+266 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+267 
+š_addr_t
+ 
+Ïn_gw
+ = 0;
+
+268 
+š_addr_t
+ 
+Ïn_Ãtmask
+ = 0;
+
+270 ià(
+	`g‘_deçuÉ_g©eway
+ (&
+Ïn_gw
+, &
+Ïn_Ãtmask
+) &&†an_netmask)
+
+272 cÚ¡ 
+š_addr_t
+ 
+Ïn_ÃtwÜk
+ = 
+Ïn_gw
+ & 
+Ïn_Ãtmask
+;
+
+273 cÚ¡ 
+š_addr_t
+ 
+ÃtwÜk
+ = 
+�
+ & 
+Ãtmask
+;
+
+276 ià((
+ÃtwÜk
+ & 
+Ïn_Ãtmask
+è=ð
+Ïn_ÃtwÜk
+
+
+277 || (
+Ïn_ÃtwÜk
+ & 
+Ãtmask
+è=ð
+ÃtwÜk
+)
+
+279 
+	`msg
+ (
+M_WARN
+, "WARNING:…otential %s subnet conflict between†ocal LAN [%s/%s]‡nd„emote VPN [%s/%s]",
+
+280 
+´efix
+,
+
+281 
+	`´št_š_addr_t
+ (
+Ïn_ÃtwÜk
+, 0, &
+gc
+),
+
+282 
+	`´št_š_addr_t
+ (
+Ïn_Ãtmask
+, 0, &
+gc
+),
+
+283 
+	`´št_š_addr_t
+ (
+ÃtwÜk
+, 0, &
+gc
+),
+
+284 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, &
+gc
+));
+
+287 
+	`gc_ä“
+ (&
+gc
+);
+
+289 
+	}
+}
+
+292 
+	$w¬n_Ú_u£_of_commÚ_subÃts
+ ()
+
+294 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+295 
+rou‹_g©eway_šfo
+ 
+rgi
+;
+
+296 cÚ¡ 
+Ãeded
+ = (
+RGI_ADDR_DEFINED
+|
+RGI_NETMASK_DEFINED
+);
+
+298 
+	`g‘_deçuÉ_g©eway
+ (&
+rgi
+);
+
+299 ià((
+rgi
+.
+æags
+ & 
+Ãeded
+) ==‚eeded)
+
+301 cÚ¡ 
+š_addr_t
+ 
+Ïn_ÃtwÜk
+ = 
+rgi
+.
+g©eway
+.
+addr
+ &„gi.g©eway.
+Ãtmask
+;
+
+302 ià(
+Ïn_ÃtwÜk
+ == 0xC0A80000 ||†an_network == 0xC0A80100)
+
+303 
+	`msg
+ (
+M_WARN
+, "NOTE: your†ocal LAN uses�heƒxtremely common subnet‡ddress 192.168.0.x or 192.168.1.x. Be‡ware�hat�his might create„outing conflicts if you connect�o�he VPN server from…ublic†ocations such‡s internet cafes�hat use�he same subnet.");
+
+305 
+	`gc_ä“
+ (&
+gc
+);
+
+306 
+	}
+}
+
+313 
+	$ifcÚfig_ÝtiÚs_¡ršg
+ (cÚ¡ 
+tuÁ­
+* 
+‰
+, 
+boÞ
+ 
+»mÙe
+, boÞ 
+di§bË
+, 
+gc_¬’a
+ *
+gc
+)
+
+315 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+316 ià(
+‰
+->
+did_ifcÚfig_£tup
+ && !
+di§bË
+)
+
+318 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ || (‰->ty³ =ð
+DEV_TYPE_TUN
+ &&�t->
+tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+320 
+	`buf_´štf
+ (&
+out
+, "%s %s",
+
+321 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+, 0, 
+gc
+),
+
+322 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, 
+gc
+));
+
+324 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+326 cÚ¡ *
+l
+, *
+r
+;
+
+327 ià(
+»mÙe
+)
+
+329 
+r
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, 
+gc
+);
+
+330 
+l
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, 
+gc
+);
+
+334 
+l
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, 
+gc
+);
+
+335 
+r
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, 
+gc
+);
+
+337 
+	`buf_´štf
+ (&
+out
+, "% %s", 
+r
+, 
+l
+);
+
+340 
+	`buf_´štf
+ (&
+out
+, "[undef]");
+
+342  
+	`BSTR
+ (&
+out
+);
+
+343 
+	}
+}
+
+349 
+	$tun_¡©
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+rwæags
+, 
+gc_¬’a
+ *
+gc
+)
+
+351 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (64, 
+gc
+);
+
+352 ià(
+‰
+)
+
+354 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+356 
+	`buf_´štf
+ (&
+out
+, "T%s",
+
+357 (
+‰
+->
+rwæags_debug
+ & 
+EVENT_READ
+) ? "R" : "r");
+
+358 #ifdeà
+WIN32
+
+
+359 
+	`buf_´štf
+ (&
+out
+, "%s",
+
+360 
+	`ov”Ïµed_io_¡©e_ascii
+ (&
+‰
+->
+»ads
+));
+
+363 ià(
+rwæags
+ & 
+EVENT_WRITE
+)
+
+365 
+	`buf_´štf
+ (&
+out
+, "T%s",
+
+366 (
+‰
+->
+rwæags_debug
+ & 
+EVENT_WRITE
+) ? "W" : "w");
+
+367 #ifdeà
+WIN32
+
+
+368 
+	`buf_´štf
+ (&
+out
+, "%s",
+
+369 
+	`ov”Ïµed_io_¡©e_ascii
+ (&
+‰
+->
+wr™es
+));
+
+375 
+	`buf_´štf
+ (&
+out
+, "T?");
+
+377  
+	`BSTR
+ (&
+out
+);
+
+378 
+	}
+}
+
+383 
+boÞ
+
+
+384 
+	$is_tun_p2p
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+386 
+boÞ
+ 
+tun
+ = 
+çl£
+;
+
+388 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ || (‰->ty³ =ð
+DEV_TYPE_TUN
+ &&�t->
+tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+389 
+tun
+ = 
+çl£
+;
+
+390 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+391 
+tun
+ = 
+Œue
+;
+
+393 
+	`msg
+ (
+M_FATAL
+, "Error:…roblem with�un vs.�ap setting");
+
+395  
+tun
+;
+
+396 
+	}
+}
+
+402 
+	$do_ifcÚfig_£‹nv
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+’v_£t
+ *
+es
+)
+
+404 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+405 cÚ¡ *
+ifcÚfig_loÿl
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+);
+
+406 cÚ¡ *
+ifcÚfig_»mÙe_Ãtmask
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, &
+gc
+);
+
+411 ià(
+‰
+->
+did_ifcÚfig_£tup
+)
+
+413 
+boÞ
+ 
+tun
+ = 
+	`is_tun_p2p
+ (
+‰
+);
+
+415 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_loÿl", 
+ifcÚfig_loÿl
+);
+
+416 ià(
+tun
+)
+
+418 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_»mÙe", 
+ifcÚfig_»mÙe_Ãtmask
+);
+
+422 cÚ¡ *
+ifcÚfig_brßdÿ¡
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+brßdÿ¡
+, 0, &
+gc
+);
+
+423 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_Ãtmask", 
+ifcÚfig_»mÙe_Ãtmask
+);
+
+424 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_brßdÿ¡", 
+ifcÚfig_brßdÿ¡
+);
+
+428 ià(
+‰
+->
+did_ifcÚfig_�v6_£tup
+)
+
+430 cÚ¡ *
+ifcÚfig_�v6_loÿl
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+loÿl_�v6
+, 0, &
+gc
+);
+
+431 cÚ¡ *
+ifcÚfig_�v6_»mÙe
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+»mÙe_�v6
+, 0, &
+gc
+);
+
+433 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_�v6_loÿl", 
+ifcÚfig_�v6_loÿl
+);
+
+434 
+	`£‹nv_št
+ (
+es
+, "ifcÚfig_�v6_Ãtb™s", 
+‰
+->
+Ãtb™s_�v6
+);
+
+435 
+	`£‹nv_¡r
+ (
+es
+, "ifcÚfig_�v6_»mÙe", 
+ifcÚfig_�v6_»mÙe
+);
+
+438 
+	`gc_ä“
+ (&
+gc
+);
+
+439 
+	}
+}
+
+447 
+tuÁ­
+ *
+
+448 
+	$š™_tun
+ (cÚ¡ *
+dev
+,
+
+449 cÚ¡ *
+dev_ty³
+,
+
+450 
+tÝÞogy
+,
+
+451 cÚ¡ *
+ifcÚfig_loÿl_·rm
+,
+
+452 cÚ¡ *
+ifcÚfig_»mÙe_Ãtmask_·rm
+,
+
+453 cÚ¡ *
+ifcÚfig_�v6_loÿl_·rm
+,
+
+454 
+ifcÚfig_�v6_Ãtb™s_·rm
+,
+
+455 cÚ¡ *
+ifcÚfig_�v6_»mÙe_·rm
+,
+
+456 
+š_addr_t
+ 
+loÿl_public
+,
+
+457 
+š_addr_t
+ 
+»mÙe_public
+,
+
+458 cÚ¡ 
+boÞ
+ 
+¡riù_w¬n
+,
+
+459 
+’v_£t
+ *
+es
+)
+
+461 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+462 
+tuÁ­
+ *
+‰
+;
+
+464 
+	`ALLOC_OBJ
+ (
+‰
+, 
+tuÁ­
+);
+
+465 
+	`þ—r_tuÁ­
+ (
+‰
+);
+
+467 
+‰
+->
+ty³
+ = 
+	`dev_ty³_’um
+ (
+dev
+, 
+dev_ty³
+);
+
+468 
+‰
+->
+tÝÞogy
+ =�opology;
+
+470 ià(
+ifcÚfig_loÿl_·rm
+ && 
+ifcÚfig_»mÙe_Ãtmask_·rm
+)
+
+472 
+boÞ
+ 
+tun
+ = 
+çl£
+;
+
+477 
+tun
+ = 
+	`is_tun_p2p
+ (
+‰
+);
+
+483 
+‰
+->
+loÿl
+ = 
+	`g‘addr
+ (
+
+484 
+GETADDR_RESOLVE
+
+
+485 | 
+GETADDR_HOST_ORDER
+
+
+486 | 
+GETADDR_FATAL_ON_SIGNAL
+
+
+487 | 
+GETADDR_FATAL
+,
+
+488 
+ifcÚfig_loÿl_·rm
+,
+
+490 
+NULL
+,
+
+491 
+NULL
+);
+
+493 
+‰
+->
+»mÙe_Ãtmask
+ = 
+	`g‘addr
+ (
+
+494 (
+tun
+ ? 
+GETADDR_RESOLVE
+ : 0)
+
+495 | 
+GETADDR_HOST_ORDER
+
+
+496 | 
+GETADDR_FATAL_ON_SIGNAL
+
+
+497 | 
+GETADDR_FATAL
+,
+
+498 
+ifcÚfig_»mÙe_Ãtmask_·rm
+,
+
+500 
+NULL
+,
+
+501 
+NULL
+);
+
+506 ià(
+¡riù_w¬n
+)
+
+508 
+	`ifcÚfig_§n™y_check
+ (
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+,�t->
+»mÙe_Ãtmask
+,�t->
+tÝÞogy
+);
+
+515 
+	`check_addr_þash
+ ("local",
+
+516 
+‰
+->
+ty³
+,
+
+517 
+loÿl_public
+,
+
+518 
+‰
+->
+loÿl
+,
+
+519 
+‰
+->
+»mÙe_Ãtmask
+);
+
+521 
+	`check_addr_þash
+ ("remote",
+
+522 
+‰
+->
+ty³
+,
+
+523 
+»mÙe_public
+,
+
+524 
+‰
+->
+loÿl
+,
+
+525 
+‰
+->
+»mÙe_Ãtmask
+);
+
+527 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ || (‰->ty³ =ð
+DEV_TYPE_TUN
+ &&�t->
+tÝÞogy
+ =ð
+TOP_SUBNET
+))
+
+528 
+	`check_subÃt_cÚæiù
+ (
+‰
+->
+loÿl
+,�t->
+»mÙe_Ãtmask
+, "TUN/TAP‡dapter");
+
+529 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+530 
+	`check_subÃt_cÚæiù
+ (
+‰
+->
+loÿl
+, 
+IPV4_NETMASK_HOST
+, "TUN/TAP‡dapter");
+
+536 ià(!
+tun
+)
+
+538 
+‰
+->
+brßdÿ¡
+ = 
+	`g’”©e_ifcÚfig_brßdÿ¡_addr
+ (‰->
+loÿl
+,�t->
+»mÙe_Ãtmask
+);
+
+542 
+‰
+->
+did_ifcÚfig_£tup
+ = 
+Œue
+;
+
+545 ià(
+ifcÚfig_�v6_loÿl_·rm
+ && 
+ifcÚfig_�v6_»mÙe_·rm
+)
+
+552 iàÐ
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+ifcÚfig_�v6_loÿl_·rm
+, &
+‰
+->
+loÿl_�v6
+ ) != 1 ||
+
+553 
+	`š‘_±Ú
+Ð
+AF_INET6
+, 
+ifcÚfig_�v6_»mÙe_·rm
+, &
+‰
+->
+»mÙe_�v6
+ ) != 1 )
+
+555 
+	`msg
+Ð
+M_FATAL
+, "š™_tun:…robËm cÚv”tšg IPv6 ifcÚfig‡dd»s£ % ªd % tØbš¬y", 
+ifcÚfig_�v6_loÿl_·rm
+, 
+ifcÚfig_�v6_»mÙe_·rm
+ );
+
+557 
+‰
+->
+Ãtb™s_�v6
+ = 
+ifcÚfig_�v6_Ãtb™s_·rm
+;
+
+559 
+‰
+->
+did_ifcÚfig_�v6_£tup
+ = 
+Œue
+;
+
+565 ià(
+es
+è
+	`do_ifcÚfig_£‹nv
+(
+‰
+,ƒs);
+
+567 
+	`gc_ä“
+ (&
+gc
+);
+
+568  
+‰
+;
+
+569 
+	}
+}
+
+575 
+	$š™_tun_po¡
+ (
+tuÁ­
+ *
+‰
+,
+
+576 cÚ¡ 
+äame
+ *frame,
+
+577 cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+ÝtiÚs
+)
+
+579 
+‰
+->
+ÝtiÚs
+ = *options;
+
+580 #ifdeà
+WIN32
+
+
+581 
+	`ov”Ïµed_io_š™
+ (&
+‰
+->
+»ads
+, 
+äame
+, 
+FALSE
+, 
+Œue
+);
+
+582 
+	`ov”Ïµed_io_š™
+ (&
+‰
+->
+wr™es
+, 
+äame
+, 
+TRUE
+, 
+Œue
+);
+
+583 
+‰
+->
+rw_hªdË
+.
+»ad
+ =�t->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+;
+
+584 
+‰
+->
+rw_hªdË
+.
+wr™e
+ =�t->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+;
+
+585 
+‰
+->
+ad­‹r_šdex
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+587 
+	}
+}
+
+589 #ià
+defšed
+(
+WIN32
+) || \
+
+590 
+defšed
+(
+TARGET_DARWIN
+è|| defšed(
+TARGET_NETBSD
+è|| 
+	$defšed
+(
+TARGET_OPENBSD
+)
+
+597 
+	$add_rou‹_cÚÃùed_v6_Ãt
+(
+tuÁ­
+ * 
+‰
+,
+
+598 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+600 
+rou‹_�v6
+ 
+r6
+;
+
+602 
+r6
+.
+defšed
+ = 
+Œue
+;
+
+603 
+r6
+.
+ÃtwÜk
+ = 
+‰
+->
+loÿl_�v6
+;
+
+604 
+r6
+.
+Ãtb™s
+ = 
+‰
+->
+Ãtb™s_�v6
+;
+
+605 
+r6
+.
+g©eway
+ = 
+‰
+->
+loÿl_�v6
+;
+
+606 
+r6
+.
+m‘ric
+ = 0;
+
+607 
+r6
+.
+m‘ric_defšed
+ = 
+Œue
+;
+
+608 
+	`add_rou‹_�v6
+ (&
+r6
+, 
+‰
+, 0, 
+es
+);
+
+609 
+	}
+}
+
+611 
+	$d–‘e_rou‹_cÚÃùed_v6_Ãt
+(
+tuÁ­
+ * 
+‰
+,
+
+612 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+614 
+rou‹_�v6
+ 
+r6
+;
+
+616 
+r6
+.
+defšed
+ = 
+Œue
+;
+
+617 
+r6
+.
+ÃtwÜk
+ = 
+‰
+->
+loÿl_�v6
+;
+
+618 
+r6
+.
+Ãtb™s
+ = 
+‰
+->
+Ãtb™s_�v6
+;
+
+619 
+r6
+.
+g©eway
+ = 
+‰
+->
+loÿl_�v6
+;
+
+620 
+r6
+.
+m‘ric
+ = 0;
+
+621 
+r6
+.
+m‘ric_defšed
+ = 
+Œue
+;
+
+622 
+	`d–‘e_rou‹_�v6
+ (&
+r6
+, 
+‰
+, 0, 
+es
+);
+
+623 
+	}
+}
+
+626 #ià
+defšed
+(
+TARGET_FREEBSD
+)||defšed(
+TARGET_DRAGONFLY
+)
+
+637 
+	$ü—‹_¬b™¿ry_»mÙe
+Ð
+tuÁ­
+ *
+‰
+, 
+gc_¬’a
+ * 
+gc
+ )
+
+639 
+š_addr_t
+ 
+»mÙe
+;
+
+641 
+»mÙe
+ = (
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+) +1;
+
+643 iàÐ
+»mÙe
+ =ð
+‰
+->
+loÿl
+ )„emote ++;
+
+645  
+	`´št_š_addr_t
+ (
+»mÙe
+, 0, &
+gc
+);
+
+646 
+	}
+}
+
+651 
+	$do_ifcÚfig
+ (
+tuÁ­
+ *
+‰
+,
+
+652 cÚ¡ *
+aùu®
+,
+
+653 
+tun_mtu
+,
+
+654 cÚ¡ 
+’v_£t
+ *
+es
+)
+
+656 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+658 ià(
+‰
+->
+did_ifcÚfig_£tup
+)
+
+660 
+boÞ
+ 
+tun
+ = 
+çl£
+;
+
+661 cÚ¡ *
+ifcÚfig_loÿl
+ = 
+NULL
+;
+
+662 cÚ¡ *
+ifcÚfig_»mÙe_Ãtmask
+ = 
+NULL
+;
+
+663 cÚ¡ *
+ifcÚfig_brßdÿ¡
+ = 
+NULL
+;
+
+664 cÚ¡ *
+ifcÚfig_�v6_loÿl
+ = 
+NULL
+;
+
+665 cÚ¡ *
+ifcÚfig_�v6_»mÙe
+ = 
+NULL
+;
+
+666 
+boÞ
+ 
+do_�v6
+ = 
+çl£
+;
+
+667 
+¬gv
+‡rgv;
+
+669 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+671 
+	`msg
+Ð
+M_INFO
+, "do_ifconfig,�t->ipv6=%d,�t->did_ifconfig_ipv6_setup=%d",
+
+672 
+‰
+->
+�v6
+,�t->
+did_ifcÚfig_�v6_£tup
+ );
+
+677 
+tun
+ = 
+	`is_tun_p2p
+ (
+‰
+);
+
+682 
+ifcÚfig_loÿl
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+);
+
+683 
+ifcÚfig_»mÙe_Ãtmask
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, &
+gc
+);
+
+685 iàÐ
+‰
+->
+�v6
+ &&�t->
+did_ifcÚfig_�v6_£tup
+ )
+
+687 
+ifcÚfig_�v6_loÿl
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+loÿl_�v6
+, 0, &
+gc
+);
+
+688 
+ifcÚfig_�v6_»mÙe
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+»mÙe_�v6
+, 0, &
+gc
+);
+
+689 
+do_�v6
+ = 
+Œue
+;
+
+695 ià(!
+tun
+)
+
+696 
+ifcÚfig_brßdÿ¡
+ = 
+	`´št_š_addr_t
+ (
+‰
+->
+brßdÿ¡
+, 0, &
+gc
+);
+
+698 #ifdeà
+ENABLE_MANAGEMENT
+
+
+699 ià(
+mªagem’t
+)
+
+701 
+	`mªagem’t_£t_¡©e
+ (
+mªagem’t
+,
+
+702 
+OPENVPN_STATE_ASSIGN_IP
+,
+
+703 
+NULL
+,
+
+704 
+‰
+->
+loÿl
+,
+
+710 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+711 #ifdeà
+ENABLE_IPROUTE
+
+
+715 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+717 
+�rou‹_·th
+,
+
+718 
+aùu®
+,
+
+719 
+tun_mtu
+
+
+721 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+722 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ip†ink set failed");
+
+724 ià(
+tun
+) {
+
+729 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+731 
+�rou‹_·th
+,
+
+732 
+aùu®
+,
+
+733 
+ifcÚfig_loÿl
+,
+
+734 
+ifcÚfig_»mÙe_Ãtmask
+
+
+736 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+737 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ip‡ddr‡dd failed");
+
+739 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+741 
+�rou‹_·th
+,
+
+742 
+aùu®
+,
+
+743 
+ifcÚfig_loÿl
+,
+
+744 
+	`couÁ_Ãtmask_b™s
+(
+ifcÚfig_»mÙe_Ãtmask
+),
+
+745 
+ifcÚfig_brßdÿ¡
+
+
+747 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+748 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ip‡ddr‡dd failed");
+
+750 iàÐ
+do_�v6
+ )
+
+752 
+	`¬gv_´štf
+Ð&
+¬gv
+,
+
+754 
+�rou‹_·th
+,
+
+755 
+ifcÚfig_�v6_loÿl
+,
+
+756 
+‰
+->
+Ãtb™s_�v6
+,
+
+757 
+aùu®
+
+
+759 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+760 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ip -6‡ddr‡dd failed");
+
+762 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+764 ià(
+tun
+)
+
+765 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+767 
+IFCONFIG_PATH
+,
+
+768 
+aùu®
+,
+
+769 
+ifcÚfig_loÿl
+,
+
+770 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+771 
+tun_mtu
+
+
+774 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+776 
+IFCONFIG_PATH
+,
+
+777 
+aùu®
+,
+
+778 
+ifcÚfig_loÿl
+,
+
+779 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+780 
+tun_mtu
+,
+
+781 
+ifcÚfig_brßdÿ¡
+
+
+783 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+784 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ifconfig failed");
+
+785 iàÐ
+do_�v6
+ )
+
+787 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+789 
+IFCONFIG_PATH
+,
+
+790 
+aùu®
+,
+
+791 
+ifcÚfig_�v6_loÿl
+,
+
+792 
+‰
+->
+Ãtb™s_�v6
+
+
+794 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+795 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Linux ifconfig inet6 failed");
+
+797 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+800 #–ià
+	`defšed
+(
+TARGET_SOLARIS
+)
+
+807 ià(
+tun
+)
+
+809 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+811 
+IFCONFIG_PATH
+,
+
+812 
+aùu®
+,
+
+813 
+ifcÚfig_loÿl
+,
+
+814 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+815 
+tun_mtu
+
+
+818 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+819 ià(!
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig…hase-1 failed"))
+
+820 
+	`sÞ¬is_”rÜ_þo£
+ (
+‰
+, 
+es
+, 
+aùu®
+, 
+çl£
+);
+
+822 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+824 
+IFCONFIG_PATH
+,
+
+825 
+aùu®
+
+
+829 ià(
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+831 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+833 
+IFCONFIG_PATH
+,
+
+834 
+aùu®
+,
+
+835 
+ifcÚfig_loÿl
+,
+
+836 
+ifcÚfig_loÿl
+,
+
+837 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+838 
+tun_mtu
+
+
+842 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+844 
+IFCONFIG_PATH
+,
+
+845 
+aùu®
+,
+
+846 
+ifcÚfig_loÿl
+,
+
+847 
+ifcÚfig_»mÙe_Ãtmask
+
+
+850 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+851 ià(!
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig…hase-2 failed"))
+
+852 
+	`sÞ¬is_”rÜ_þo£
+ (
+‰
+, 
+es
+, 
+aùu®
+, 
+çl£
+);
+
+854 iàÐ
+do_�v6
+ )
+
+856 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s inet6 unplumb",
+
+857 
+IFCONFIG_PATH
+, 
+aùu®
+ );
+
+858 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+859 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+NULL
+);
+
+861 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+ )
+
+863 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+865 
+IFCONFIG_PATH
+,
+
+866 
+aùu®
+,
+
+867 
+ifcÚfig_�v6_loÿl
+,
+
+868 
+‰
+->
+Ãtb™s_�v6
+,
+
+869 
+ifcÚfig_�v6_»mÙe
+
+
+876 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s inet6…lumb up",
+
+877 
+IFCONFIG_PATH
+, 
+aùu®
+ );
+
+878 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+879 ià(!
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig IPv6 (prepare) failed"))
+
+880 
+	`sÞ¬is_”rÜ_þo£
+ (
+‰
+, 
+es
+, 
+aùu®
+, 
+Œue
+);
+
+890 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+892 
+IFCONFIG_PATH
+, 
+aùu®
+,
+
+893 
+ifcÚfig_�v6_loÿl
+, 
+‰
+->
+Ãtb™s_�v6
+ );
+
+895 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+896 ià(!
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig IPv6 failed"))
+
+897 
+	`sÞ¬is_”rÜ_þo£
+ (
+‰
+, 
+es
+, 
+aùu®
+, 
+Œue
+);
+
+900 ià(!
+tun
+ && 
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+903 
+rou‹_�v4
+ 
+r
+;
+
+904 
+	`CLEAR
+ (
+r
+);
+
+905 
+r
+.
+æags
+ = 
+RT_DEFINED
+ | 
+RT_METRIC_DEFINED
+;
+
+906 
+r
+.
+ÃtwÜk
+ = 
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+;
+
+907 
+r
+.
+Ãtmask
+ = 
+‰
+->
+»mÙe_Ãtmask
+;
+
+908 
+r
+.
+g©eway
+ = 
+‰
+->
+loÿl
+;
+
+909 
+r
+.
+m‘ric
+ = 0;
+
+910 
+	`add_rou‹
+ (&
+r
+, 
+‰
+, 0, 
+NULL
+, 
+es
+);
+
+913 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+915 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+924 ià(
+tun
+)
+
+925 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+927 
+IFCONFIG_PATH
+,
+
+928 
+aùu®
+,
+
+929 
+ifcÚfig_loÿl
+,
+
+930 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+931 
+tun_mtu
+
+
+934 iàÐ
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+ )
+
+936 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+938 
+IFCONFIG_PATH
+,
+
+939 
+aùu®
+,
+
+940 
+ifcÚfig_loÿl
+,
+
+941 
+ifcÚfig_loÿl
+,
+
+942 
+tun_mtu
+,
+
+943 
+ifcÚfig_»mÙe_Ãtmask
+
+
+947 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+949 
+IFCONFIG_PATH
+,
+
+950 
+aùu®
+,
+
+951 
+ifcÚfig_loÿl
+,
+
+952 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+953 
+tun_mtu
+,
+
+954 
+ifcÚfig_brßdÿ¡
+
+
+956 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+957 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "OpenBSD ifconfig failed");
+
+958 iàÐ
+do_�v6
+ )
+
+960 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+962 
+IFCONFIG_PATH
+,
+
+963 
+aùu®
+,
+
+964 
+ifcÚfig_�v6_loÿl
+,
+
+965 
+‰
+->
+Ãtb™s_�v6
+
+
+967 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+968 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "OpenBSD ifconfig inet6 failed");
+
+971 
+	`add_rou‹_cÚÃùed_v6_Ãt
+(
+‰
+, 
+es
+);
+
+973 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+975 #–ià
+	`defšed
+(
+TARGET_NETBSD
+)
+
+980 #ifdeà
+TUNSIFHEAD
+
+
+981 
+	#NETBSD_MULTI_AF
+
+
+	)
+
+984 ià(
+tun
+)
+
+985 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+987 
+IFCONFIG_PATH
+,
+
+988 
+aùu®
+,
+
+989 
+ifcÚfig_loÿl
+,
+
+990 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+991 
+tun_mtu
+
+
+994 iàÐ
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+ )
+
+996 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+998 
+IFCONFIG_PATH
+,
+
+999 
+aùu®
+,
+
+1000 
+ifcÚfig_loÿl
+,
+
+1001 
+ifcÚfig_loÿl
+,
+
+1002 
+tun_mtu
+,
+
+1003 
+ifcÚfig_»mÙe_Ãtmask
+
+
+1012 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1014 
+IFCONFIG_PATH
+,
+
+1015 
+aùu®
+,
+
+1016 
+ifcÚfig_loÿl
+,
+
+1017 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1018 
+tun_mtu
+,
+
+1019 
+ifcÚfig_brßdÿ¡
+
+
+1021 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1022 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "NetBSD ifconfig failed");
+
+1024 iàÐ
+do_�v6
+ )
+
+1026 #ifdeà
+NETBSD_MULTI_AF
+
+
+1027 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1029 
+IFCONFIG_PATH
+,
+
+1030 
+aùu®
+,
+
+1031 
+ifcÚfig_�v6_loÿl
+,
+
+1032 
+‰
+->
+Ãtb™s_�v6
+
+
+1034 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1035 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "NetBSD ifconfig inet6 failed");
+
+1038 
+	`add_rou‹_cÚÃùed_v6_Ãt
+(
+‰
+, 
+es
+);
+
+1040 
+	`msg
+Ð
+M_INFO
+, "no IPv6 support for�un interfaces on NetBSD before 4.0 (if your system is‚ewer,„ecompile openvpn)" );
+
+1041 
+‰
+->
+�v6
+ = 
+çl£
+;
+
+1044 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+1046 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+1051 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1053 
+IFCONFIG_PATH
+,
+
+1054 
+aùu®
+);
+
+1055 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1056 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+NULL
+);
+
+1057 
+	`msg
+ (
+M_INFO
+, "NOTE: Tried�o delete…re-existing�un/tap instance -- No Problem if failure");
+
+1061 ià(
+tun
+)
+
+1062 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1064 
+IFCONFIG_PATH
+,
+
+1065 
+aùu®
+,
+
+1066 
+ifcÚfig_loÿl
+,
+
+1067 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1068 
+tun_mtu
+
+
+1072 ià(
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+1073 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1075 
+IFCONFIG_PATH
+,
+
+1076 
+aùu®
+,
+
+1077 
+ifcÚfig_loÿl
+,
+
+1078 
+ifcÚfig_loÿl
+,
+
+1079 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1080 
+tun_mtu
+
+
+1083 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1085 
+IFCONFIG_PATH
+,
+
+1086 
+aùu®
+,
+
+1087 
+ifcÚfig_loÿl
+,
+
+1088 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1089 
+tun_mtu
+
+
+1093 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1094 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "Mac OS X ifconfig failed");
+
+1095 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+1098 ià(!
+tun
+ && 
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+1100 
+rou‹_�v4
+ 
+r
+;
+
+1101 
+	`CLEAR
+ (
+r
+);
+
+1102 
+r
+.
+æags
+ = 
+RT_DEFINED
+;
+
+1103 
+r
+.
+ÃtwÜk
+ = 
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+;
+
+1104 
+r
+.
+Ãtmask
+ = 
+‰
+->
+»mÙe_Ãtmask
+;
+
+1105 
+r
+.
+g©eway
+ = 
+‰
+->
+loÿl
+;
+
+1106 
+	`add_rou‹
+ (&
+r
+, 
+‰
+, 0, 
+NULL
+, 
+es
+);
+
+1109 iàÐ
+do_�v6
+ )
+
+1111 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1113 
+IFCONFIG_PATH
+,
+
+1114 
+aùu®
+,
+
+1115 
+ifcÚfig_�v6_loÿl
+,
+
+1116 
+‰
+->
+Ãtb™s_�v6
+
+
+1118 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1119 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "MacOS X ifconfig inet6 failed");
+
+1122 
+	`add_rou‹_cÚÃùed_v6_Ãt
+(
+‰
+, 
+es
+);
+
+1125 #–ià
+	`defšed
+(
+TARGET_FREEBSD
+)||defšed(
+TARGET_DRAGONFLY
+)
+
+1128 ià(
+tun
+)
+
+1129 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1131 
+IFCONFIG_PATH
+,
+
+1132 
+aùu®
+,
+
+1133 
+ifcÚfig_loÿl
+,
+
+1134 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1135 
+tun_mtu
+
+
+1137 iàÐ
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+ )
+
+1139 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1141 
+IFCONFIG_PATH
+,
+
+1142 
+aùu®
+,
+
+1143 
+ifcÚfig_loÿl
+,
+
+1144 
+	`ü—‹_¬b™¿ry_»mÙe
+Ð
+‰
+, &
+gc
+ ),
+
+1145 
+tun_mtu
+,
+
+1146 
+ifcÚfig_»mÙe_Ãtmask
+
+
+1150 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1152 
+IFCONFIG_PATH
+,
+
+1153 
+aùu®
+,
+
+1154 
+ifcÚfig_loÿl
+,
+
+1155 
+ifcÚfig_»mÙe_Ãtmask
+,
+
+1156 
+tun_mtu
+
+
+1159 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1160 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "FreeBSD ifconfig failed");
+
+1161 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+1164 ià(!
+tun
+ && 
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+1166 
+rou‹_�v4
+ 
+r
+;
+
+1167 
+	`CLEAR
+ (
+r
+);
+
+1168 
+r
+.
+æags
+ = 
+RT_DEFINED
+;
+
+1169 
+r
+.
+ÃtwÜk
+ = 
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+;
+
+1170 
+r
+.
+Ãtmask
+ = 
+‰
+->
+»mÙe_Ãtmask
+;
+
+1171 
+r
+.
+g©eway
+ = 
+‰
+->
+loÿl
+;
+
+1172 
+	`add_rou‹
+ (&
+r
+, 
+‰
+, 0, 
+NULL
+, 
+es
+);
+
+1175 iàÐ
+do_�v6
+ )
+
+1177 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1179 
+IFCONFIG_PATH
+,
+
+1180 
+aùu®
+,
+
+1181 
+ifcÚfig_�v6_loÿl
+,
+
+1182 
+‰
+->
+Ãtb™s_�v6
+
+
+1184 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1185 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 
+S_FATAL
+, "FreeBSD ifconfig inet6 failed");
+
+1188 #–ià
+	`defšed
+ (
+WIN32
+)
+
+1194 ià(
+tun
+)
+
+1196 
+	`v”ify_255_255_255_252
+ (
+‰
+->
+loÿl
+,�t->
+»mÙe_Ãtmask
+);
+
+1197 
+‰
+->
+ad­‹r_Ãtmask
+ = ~3;
+
+1201 
+‰
+->
+ad­‹r_Ãtmask
+ =�t->
+»mÙe_Ãtmask
+;
+
+1204 
+‰
+->
+ÝtiÚs
+.
+�_wš32_ty³
+)
+
+1206 
+IPW32_SET_MANUAL
+:
+
+1207 
+	`msg
+ (
+M_INFO
+, "******** NOTE: Please manually set�he IP/netmask of '%s'�o %s/%s (if it is‚ot‡lready set)",
+
+1208 
+aùu®
+,
+
+1209 
+ifcÚfig_loÿl
+,
+
+1210 
+	`´št_š_addr_t
+ (
+‰
+->
+ad­‹r_Ãtmask
+, 0, &
+gc
+));
+
+1212 
+IPW32_SET_NETSH
+:
+
+1213 ià(!
+	`¡rcmp
+ (
+aùu®
+, "NULL"))
+
+1214 
+	`msg
+ (
+M_FATAL
+, "Error: When using --ip-win32‚etsh, if you have more�han one TAP-Windows‡dapter, you must‡lso specify --dev-node");
+
+1216 
+	`Ãtsh_ifcÚfig
+ (&
+‰
+->
+ÝtiÚs
+,
+
+1217 
+aùu®
+,
+
+1218 
+‰
+->
+loÿl
+,
+
+1219 
+‰
+->
+ad­‹r_Ãtmask
+,
+
+1220 
+NI_IP_NETMASK
+|
+NI_OPTIONS
+);
+
+1224 
+‰
+->
+did_ifcÚfig
+ = 
+Œue
+;
+
+1228 iàÐ
+do_�v6
+ )
+
+1230 * 
+§ved_aùu®
+;
+
+1232 ià(!
+	`¡rcmp
+ (
+aùu®
+, "NULL"))
+
+1233 
+	`msg
+ (
+M_FATAL
+, "Error: When using --tun-ipv6, if you have more�han one TAP-Windows‡dapter, you must‡lso specify --dev-node");
+
+1236 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1238 
+	`g‘_wš_sys_·th
+(),
+
+1239 
+NETSH_PATH_SUFFIX
+,
+
+1240 
+aùu®
+,
+
+1241 
+ifcÚfig_�v6_loÿl
+ );
+
+1243 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 4);
+
+1250 
+§ved_aùu®
+ = 
+‰
+->
+aùu®_Çme
+;
+
+1251 
+‰
+->
+aùu®_Çme
+ = (*è
+aùu®
+;
+
+1252 
+	`add_rou‹_cÚÃùed_v6_Ãt
+(
+‰
+, 
+es
+);
+
+1253 
+‰
+->
+aùu®_Çme
+ = 
+§ved_aùu®
+;
+
+1256 
+	`msg
+ (
+M_FATAL
+, "Sorry, but I don't know how�o do 'ifconfig' commands on�his operating system. You should ifconfig your TUN/TAP device manually or use‡n --up script.");
+
+1258 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1260 
+	`gc_ä“
+ (&
+gc
+);
+
+1261 
+	}
+}
+
+1264 
+	$þ—r_tuÁ­
+ (
+tuÁ­
+ *tuntap)
+
+1266 
+	`CLEAR
+ (*
+tuÁ­
+);
+
+1267 #ifdeà
+WIN32
+
+
+1268 
+tuÁ­
+->
+hªd
+ = 
+NULL
+;
+
+1270 
+tuÁ­
+->
+fd
+ = -1;
+
+1272 #ifdeà
+TARGET_SOLARIS
+
+
+1273 
+tuÁ­
+->
+�_fd
+ = -1;
+
+1275 
+tuÁ­
+->
+�v6
+ = 
+çl£
+;
+
+1276 
+	}
+}
+
+1279 
+	$Ý’_nuÎ
+ (
+tuÁ­
+ *
+‰
+)
+
+1281 
+‰
+->
+aùu®_Çme
+ = 
+	`¡ršg_®loc
+ ("nuÎ", 
+NULL
+);
+
+1282 
+	}
+}
+
+1285 #ià
+defšed
+ (
+TARGET_OPENBSD
+è|| (defšed(
+TARGET_DARWIN
+è&& 
+HAVE_NET_IF_UTUN_H
+)
+
+1305 
+	~<Ãtš‘/�.h
+>
+
+1306 
+	~<sys/uio.h
+>
+
+1308 
+šlše
+ 
+
+1309 
+	$h—d”_modify_»ad_wr™e_»tuº
+ (
+Ën
+)
+
+1311 ià(
+Ën
+ > 0)
+
+1312  
+Ën
+ >  (
+u_št32_t
+) ?†en -  (u_int32_t) : 0;
+
+1314  
+Ën
+;
+
+1315 
+	}
+}
+
+1318 
+	$wr™e_tun_h—d”
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+1320 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1322 
+u_št32_t
+ 
+ty³
+;
+
+1323 
+iovec
+ 
+iv
+[2];
+
+1324 
+�
+ *
+�h
+;
+
+1326 
+�h
+ = (
+�
+ *è
+buf
+;
+
+1328 ià(
+‰
+->
+�v6
+ && 
+�h
+->
+�_v
+ == 6)
+
+1329 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET6
+);
+
+1331 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET
+);
+
+1333 
+iv
+[0].
+iov_ba£
+ = &
+ty³
+;
+
+1334 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+1335 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+1336 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+1338  
+	`h—d”_modify_»ad_wr™e_»tuº
+ (
+	`wr™ev
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+1341  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+1342 
+	}
+}
+
+1345 
+	$»ad_tun_h—d”
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+1347 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1349 
+u_št32_t
+ 
+ty³
+;
+
+1350 
+iovec
+ 
+iv
+[2];
+
+1352 
+iv
+[0].
+iov_ba£
+ = &
+ty³
+;
+
+1353 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+1354 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+1355 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+1357  
+	`h—d”_modify_»ad_wr™e_»tuº
+ (
+	`»adv
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+1360  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+1361 
+	}
+}
+
+1365 #iâdeà
+WIN32
+
+
+1367 
+	$Ý’_tun_g’”ic
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+,
+
+1368 
+boÞ
+ 
+�v6_ex¶ic™ly_suµÜ‹d
+, boÞ 
+dyÇmic
+,
+
+1369 
+tuÁ­
+ *
+‰
+)
+
+1371 
+tuÂame
+[256];
+
+1372 
+dyÇmic_Çme
+[256];
+
+1373 
+boÞ
+ 
+dyÇmic_Ý’ed
+ = 
+çl£
+;
+
+1376 iàÐ
+‰
+->
+�v6
+ && ! 
+�v6_ex¶ic™ly_suµÜ‹d
+ )
+
+1377 
+	`msg
+ (
+M_WARN
+, "NOTE:ƒxplicit support for IPv6�un devices is‚ot…rovided for�his OS");
+
+1379 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_NULL
+)
+
+1381 
+	`Ý’_nuÎ
+ (
+‰
+);
+
+1388 ià(
+dev_node
+)
+
+1390 
+	`Ý’v²_¢´štf
+ (
+tuÂame
+,  (tuÂame), "%s", 
+dev_node
+);
+
+1399 #ifdeà
+TARGET_NETBSD
+
+
+1404 iàÐ
+dyÇmic
+ && 
+	`¡rcmp
+Ð
+dev
+, "tap" ) == 0 )
+
+1406 
+iäeq
+ 
+iä
+;
+
+1407 ià((
+‰
+->
+fd
+ = 
+	`Ý’
+ ( "/dev/�p", 
+O_RDWR
+)) < 0)
+
+1409 
+	`msg
+ (
+M_FATAL
+, "Cannot‡llocate NetBSD TAP dev dynamically");
+
+1411 iàÐ
+	`ioùl
+Ð
+‰
+->
+fd
+, 
+TAPGIFNAME
+, (*)&
+iä
+ ) < 0 )
+
+1413 
+	`msg
+ (
+M_FATAL
+, "Cannot query NetBSD TAP device‚ame");
+
+1415 
+	`CLEAR
+(
+dyÇmic_Çme
+);
+
+1416 
+	`¡ºýy
+Ð
+dyÇmic_Çme
+, 
+iä
+.
+iä_Çme
+, (dynamic_name)-1 );
+
+1417 
+dyÇmic_Ý’ed
+ = 
+Œue
+;
+
+1418 
+	`Ý’v²_¢´štf
+ (
+tuÂame
+,  (tuÂame), "/dev/%s", 
+dyÇmic_Çme
+ );
+
+1423 ià(
+dyÇmic
+ && !
+	`has_dig™
+((*)
+dev
+))
+
+1425 
+i
+;
+
+1426 
+i
+ = 0; i < 256; ++i)
+
+1428 
+	`Ý’v²_¢´štf
+ (
+tuÂame
+,  (tunname),
+
+1429 "/dev/%s%d", 
+dev
+, 
+i
+);
+
+1430 
+	`Ý’v²_¢´štf
+ (
+dyÇmic_Çme
+,  (dynamic_name),
+
+1431 "%s%d", 
+dev
+, 
+i
+);
+
+1432 ià((
+‰
+->
+fd
+ = 
+	`Ý’
+ (
+tuÂame
+, 
+O_RDWR
+)) > 0)
+
+1434 
+dyÇmic_Ý’ed
+ = 
+Œue
+;
+
+1437 
+	`msg
+ (
+D_READ_WRITE
+ | 
+M_ERRNO
+, "Tr›d o³nšg % (çžed)", 
+tuÂame
+);
+
+1439 ià(!
+dyÇmic_Ý’ed
+)
+
+1440 
+	`msg
+ (
+M_FATAL
+, "Cannot‡llocate TUN/TAP dev dynamically");
+
+1447 
+	`Ý’v²_¢´štf
+ (
+tuÂame
+,  (tuÂame), "/dev/%s", 
+dev
+);
+
+1451 ià(!
+dyÇmic_Ý’ed
+)
+
+1454 iàÐ
+	`if_Çm‘ošdex
+Ð
+dev
+ ) > 0 )
+
+1456 
+	`msg
+ (
+M_INFO
+, "TUN/TAP deviû % exi¡ ´eviou¦y, k“°©…rog¿mƒnd", 
+dev
+ );
+
+1457 
+‰
+->
+³rsi¡’t_if
+ = 
+Œue
+;
+
+1460 ià((
+‰
+->
+fd
+ = 
+	`Ý’
+ (
+tuÂame
+, 
+O_RDWR
+)) < 0)
+
+1461 
+	`msg
+ (
+M_ERR
+, "CªnÙ o³ÀTUN/TAP dev %s", 
+tuÂame
+);
+
+1464 
+	`£t_nÚblock
+ (
+‰
+->
+fd
+);
+
+1465 
+	`£t_þÛxec
+ (
+‰
+->
+fd
+);
+
+1466 
+	`msg
+ (
+M_INFO
+, "TUN/TAP deviû % Ý’ed", 
+tuÂame
+);
+
+1469 
+‰
+->
+aùu®_Çme
+ = 
+	`¡ršg_®loc
+ (
+dyÇmic_Ý’ed
+ ? 
+dyÇmic_Çme
+ : 
+dev
+, 
+NULL
+);
+
+1471 
+	}
+}
+
+1474 
+	$þo£_tun_g’”ic
+ (
+tuÁ­
+ *
+‰
+)
+
+1476 ià(
+‰
+->
+fd
+ >= 0)
+
+1477 
+	`þo£
+ (
+‰
+->
+fd
+);
+
+1478 ià(
+‰
+->
+aùu®_Çme
+)
+
+1479 
+	`ä“
+ (
+‰
+->
+aùu®_Çme
+);
+
+1480 
+	`þ—r_tuÁ­
+ (
+‰
+);
+
+1481 
+	}
+}
+
+1485 #ià
+defšed
+(
+TARGET_LINUX
+)
+
+1487 #ifdeà
+HAVE_LINUX_IF_TUN_H
+
+
+1489 #iâdeà
+HAVE_LINUX_SOCKIOS_H
+
+
+1490 #”rÜ 
+h—d”
+ 
+fže
+ 
+lšux
+/
+sockios
+.
+h
+ 
+»quœed
+
+
+1493 #ià!
+PEDANTIC
+
+
+1496 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+1498 
+iäeq
+ 
+iä
+;
+
+1503 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_NULL
+)
+
+1505 
+	`Ý’_nuÎ
+ (
+‰
+);
+
+1512 cÚ¡ *
+node
+ = 
+dev_node
+;
+
+1513 ià(!
+node
+)
+
+1514 
+node
+ = "/dev/net/tun";
+
+1519 ià((
+‰
+->
+fd
+ = 
+	`Ý’
+ (
+node
+, 
+O_RDWR
+)) < 0)
+
+1521 
+	`msg
+ (
+M_ERR
+, "ERROR: CªnÙ o³ÀTUN/TAP dev %s", 
+node
+);
+
+1527 
+	`CLEAR
+ (
+iä
+);
+
+1528 ià(!
+‰
+->
+�v6
+)
+
+1529 
+iä
+.
+iä_æags
+ = 
+IFF_NO_PI
+;
+
+1531 #ià
+	`defšed
+(
+IFF_ONE_QUEUE
+è&& defšed(
+SIOCSIFTXQLEN
+)
+
+1532 
+iä
+.
+iä_æags
+ |ð
+IFF_ONE_QUEUE
+;
+
+1538 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1540 
+iä
+.
+iä_æags
+ |ð
+IFF_TUN
+;
+
+1542 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+1544 
+iä
+.
+iä_æags
+ |ð
+IFF_TAP
+;
+
+1548 
+	`msg
+ (
+M_FATAL
+, "I don't„ecognize device %s‡s‡�un or�ap device",
+
+1549 
+dev
+);
+
+1555 ià(
+	`¡rcmp
+(
+dev
+, "tun") && strcmp(dev, "tap"))
+
+1556 
+	`¡ºýyÁ
+ (
+iä
+.
+iä_Çme
+, 
+dev
+, 
+IFNAMSIZ
+);
+
+1562 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSETIFF
+, (*è&
+iä
+) < 0)
+
+1564 
+	`msg
+ (
+M_ERR
+, "ERROR: CªnÙ ioùÈTUNSETIFF %s", 
+dev
+);
+
+1567 
+	`msg
+ (
+M_INFO
+, "TUN/TAP deviû % Ý’ed", 
+iä
+.
+iä_Çme
+);
+
+1572 #ià
+	`defšed
+(
+IFF_ONE_QUEUE
+è&& defšed(
+SIOCSIFTXQLEN
+)
+
+1573 ià(
+‰
+->
+ÝtiÚs
+.
+txqueu–’
+) {
+
+1574 
+iäeq
+ 
+Ãtiä
+;
+
+1575 
+ùl_fd
+;
+
+1577 ià((
+ùl_fd
+ = 
+	`sock‘
+ (
+AF_INET
+, 
+SOCK_DGRAM
+, 0)) >= 0)
+
+1579 
+	`CLEAR
+ (
+Ãtiä
+);
+
+1580 
+	`¡ºýyÁ
+ (
+Ãtiä
+.
+iä_Çme
+, 
+iä
+.iä_Çme, 
+IFNAMSIZ
+);
+
+1581 
+Ãtiä
+.
+iä_qËn
+ = 
+‰
+->
+ÝtiÚs
+.
+txqueu–’
+;
+
+1582 ià(
+	`ioùl
+ (
+ùl_fd
+, 
+SIOCSIFTXQLEN
+, (*è&
+Ãtiä
+) >= 0)
+
+1583 
+	`msg
+ (
+D_OSBUF
+, "TUN/TAP TX queu�Ëngth s‘�Ø%d", 
+‰
+->
+ÝtiÚs
+.
+txqueu–’
+);
+
+1585 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "NÙe: CªnÙ s‘�x queu�Ëngth oÀ%s", 
+iä
+.
+iä_Çme
+);
+
+1586 
+	`þo£
+ (
+ùl_fd
+);
+
+1590 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "NÙe: CªnÙ o³ÀcÚŒÞ sock‘ oÀ%s", 
+iä
+.
+iä_Çme
+);
+
+1595 
+	`£t_nÚblock
+ (
+‰
+->
+fd
+);
+
+1596 
+	`£t_þÛxec
+ (
+‰
+->
+fd
+);
+
+1597 
+‰
+->
+aùu®_Çme
+ = 
+	`¡ršg_®loc
+ (
+iä
+.
+iä_Çme
+, 
+NULL
+);
+
+1600 
+	}
+}
+
+1605 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+1607 
+	`ASSERT
+ (0);
+
+1608 
+	}
+}
+
+1615 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+1617 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+çl£
+, 
+Œue
+, 
+‰
+);
+
+1618 
+	}
+}
+
+1622 #ifdeà
+ENABLE_FEATURE_TUN_PERSIST
+
+
+1629 #iâdeà
+TUNSETOWNER
+
+
+1630 
+	#TUNSETOWNER
+ 
+	`_IOW
+('T', 204, )
+
+	)
+
+1632 #iâdeà
+TUNSETGROUP
+
+
+1633 
+	#TUNSETGROUP
+ 
+	`_IOW
+('T', 206, )
+
+	)
+
+1637 
+	$tuncfg
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+³rsi¡_mode
+, cÚ¡ *
+u£ºame
+, cÚ¡ *
+grou²ame
+, cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+ÝtiÚs
+)
+
+1639 
+tuÁ­
+ *
+‰
+;
+
+1641 
+	`ALLOC_OBJ
+ (
+‰
+, 
+tuÁ­
+);
+
+1642 
+	`þ—r_tuÁ­
+ (
+‰
+);
+
+1643 
+‰
+->
+ty³
+ = 
+	`dev_ty³_’um
+ (
+dev
+, 
+dev_ty³
+);
+
+1644 
+‰
+->
+ÝtiÚs
+ = *options;
+
+1645 
+	`Ý’_tun
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+‰
+);
+
+1646 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSETPERSIST
+, 
+³rsi¡_mode
+) < 0)
+
+1647 
+	`msg
+ (
+M_ERR
+, "CªnÙ ioùÈTUNSETPERSIST(%dè%s", 
+³rsi¡_mode
+, 
+dev
+);
+
+1648 ià(
+u£ºame
+ !ð
+NULL
+)
+
+1650 
+¶©fÜm_¡©e_u£r
+…latform_state_user;
+
+1652 ià(!
+	`¶©fÜm_u£r_g‘
+ (
+u£ºame
+, &
+¶©fÜm_¡©e_u£r
+))
+
+1653 
+	`msg
+ (
+M_ERR
+, "CªnÙ g‘ u£¸’Œy fÜ %s", 
+u£ºame
+);
+
+1655 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSETOWNER
+, 
+¶©fÜm_¡©e_u£r
+.
+pw
+->
+pw_uid
+) < 0)
+
+1656 
+	`msg
+ (
+M_ERR
+, "CªnÙ ioùÈTUNSETOWNER(%sè%s", 
+u£ºame
+, 
+dev
+);
+
+1658 ià(
+grou²ame
+ !ð
+NULL
+)
+
+1660 
+¶©fÜm_¡©e_group
+…latform_state_group;
+
+1662 ià(!
+	`¶©fÜm_group_g‘
+ (
+grou²ame
+, &
+¶©fÜm_¡©e_group
+))
+
+1663 
+	`msg
+ (
+M_ERR
+, "CªnÙ g‘ grou°’Œy fÜ %s", 
+grou²ame
+);
+
+1665 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSETGROUP
+, 
+¶©fÜm_¡©e_group
+.
+gr
+->
+gr_gid
+) < 0)
+
+1666 
+	`msg
+ (
+M_ERR
+, "CªnÙ ioùÈTUNSETOWNER(%sè%s", 
+grou²ame
+, 
+dev
+);
+
+1668 
+	`þo£_tun
+ (
+‰
+);
+
+1669 
+	`msg
+ (
+M_INFO
+, "P”si¡ s�‹ s‘�o: %s", (
+³rsi¡_mode
+ ? "ON" : "OFF"));
+
+1670 
+	}
+}
+
+1675 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+1677 ià(
+‰
+)
+
+1679 ià(
+‰
+->
+ty³
+ !ð
+DEV_TYPE_NULL
+ &&�t->
+did_ifcÚfig
+)
+
+1681 
+¬gv
+‡rgv;
+
+1682 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+1683 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+1685 #ifdeà
+ENABLE_IPROUTE
+
+
+1686 ià(
+	`is_tun_p2p
+ (
+‰
+))
+
+1688 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1690 
+�rou‹_·th
+,
+
+1691 
+‰
+->
+aùu®_Çme
+,
+
+1692 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+),
+
+1693 
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, &
+gc
+)
+
+1698 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1700 
+�rou‹_·th
+,
+
+1701 
+‰
+->
+aùu®_Çme
+,
+
+1702 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+),
+
+1703 
+	`couÁ_Ãtmask_b™s
+(
+	`´št_š_addr_t
+ (
+‰
+->
+»mÙe_Ãtmask
+, 0, &
+gc
+))
+
+1707 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1709 
+IFCONFIG_PATH
+,
+
+1710 
+‰
+->
+aùu®_Çme
+
+
+1714 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1715 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "Linux ip‡ddr del failed");
+
+1717 ià(
+‰
+->
+�v6
+ &&�t->
+did_ifcÚfig_�v6_£tup
+)
+
+1719 cÚ¡ * 
+ifcÚfig_�v6_loÿl
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+loÿl_�v6
+, 0, &
+gc
+);
+
+1721 #ifdeà
+ENABLE_IPROUTE
+
+
+1722 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s -6‡ddr del %s/%d dev %s",
+
+1723 
+�rou‹_·th
+,
+
+1724 
+ifcÚfig_�v6_loÿl
+,
+
+1725 
+‰
+->
+Ãtb™s_�v6
+,
+
+1726 
+‰
+->
+aùu®_Çme
+
+
+1728 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1729 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "Linux ip -6‡ddr del failed");
+
+1731 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+1733 
+IFCONFIG_PATH
+,
+
+1734 
+‰
+->
+aùu®_Çme
+,
+
+1735 
+ifcÚfig_�v6_loÿl
+,
+
+1736 
+‰
+->
+Ãtb™s_�v6
+
+
+1738 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+1739 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "Linux ifconfig inet6 del failed");
+
+1743 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+1744 
+	`gc_ä“
+ (&
+gc
+);
+
+1746 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+1747 
+	`ä“
+ (
+‰
+);
+
+1749 
+	}
+}
+
+1752 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+1754 ià(
+‰
+->
+�v6
+)
+
+1756 
+tun_pi
+ 
+pi
+;
+
+1757 
+�hdr
+ *
+�h
+;
+
+1758 
+iovec
+ 
+veù
+[2];
+
+1759 
+»t
+;
+
+1761 
+�h
+ = (
+�hdr
+ *)
+buf
+;
+
+1763 
+pi
+.
+æags
+ = 0;
+
+1765 if(
+�h
+->
+v”siÚ
+ == 6)
+
+1766 
+pi
+.
+´Ùo
+ = 
+	`htÚs
+(
+OPENVPN_ETH_P_IPV6
+);
+
+1768 
+pi
+.
+´Ùo
+ = 
+	`htÚs
+(
+OPENVPN_ETH_P_IPV4
+);
+
+1770 
+veù
+[0].
+iov_Ën
+ = (
+pi
+);
+
+1771 
+veù
+[0].
+iov_ba£
+ = &
+pi
+;
+
+1772 
+veù
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+1773 
+veù
+[1].
+iov_ba£
+ = 
+buf
+;
+
+1775 
+»t
+ = 
+	`wr™ev
+(
+‰
+->
+fd
+, 
+veù
+, 2);
+
+1776 (
+»t
+ - (
+pi
+));
+
+1779  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+1780 
+	}
+}
+
+1783 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+1785 ià(
+‰
+->
+�v6
+)
+
+1787 
+iovec
+ 
+veù
+[2];
+
+1788 
+tun_pi
+ 
+pi
+;
+
+1789 
+»t
+;
+
+1791 
+veù
+[0].
+iov_Ën
+ = (
+pi
+);
+
+1792 
+veù
+[0].
+iov_ba£
+ = &
+pi
+;
+
+1793 
+veù
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+1794 
+veù
+[1].
+iov_ba£
+ = 
+buf
+;
+
+1796 
+»t
+ = 
+	`»adv
+(
+‰
+->
+fd
+, 
+veù
+, 2);
+
+1797 (
+»t
+ - (
+pi
+));
+
+1800  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+1801 
+	}
+}
+
+1803 #–ià
+defšed
+(
+TARGET_SOLARIS
+)
+
+1805 #iâdeà
+TUNNEWPPA
+
+
+1806 #”rÜ 
+I
+ 
+Ãed
+ 
+the
+ 
+symbÞ
+ 
+TUNNEWPPA
+ 
+äom
+ 
+Ãt
+/
+if_tun
+.
+h
+
+
+1810 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+1812 
+if_fd
+, 
+�_muxid
+, 
+¬p_muxid
+, 
+¬p_fd
+, 
+µa
+ = -1;
+
+1813 
+liäeq
+ 
+iä
+;
+
+1814 cÚ¡ *
+±r
+;
+
+1815 cÚ¡ *
+�_node
+, *
+¬p_node
+;
+
+1816 cÚ¡ *
+dev_tuÁ­_ty³
+;
+
+1817 
+lšk_ty³
+;
+
+1818 
+boÞ
+ 
+is_tun
+;
+
+1819 
+¡rioùl
+ 
+¡rioc_if
+, 
+¡rioc_µa
+;
+
+1825 
+	`CLEAR
+(
+iä
+);
+
+1827 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_NULL
+)
+
+1829 
+	`Ý’_nuÎ
+ (
+‰
+);
+
+1833 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1835 
+�_node
+ = "/dev/udp";
+
+1836 ià(!
+dev_node
+)
+
+1837 
+dev_node
+ = "/dev/tun";
+
+1838 
+dev_tuÁ­_ty³
+ = "tun";
+
+1839 
+lšk_ty³
+ = 
+I_PLINK
+;
+
+1840 
+is_tun
+ = 
+Œue
+;
+
+1842 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+1844 
+�_node
+ = "/dev/udp";
+
+1845 ià(!
+dev_node
+)
+
+1846 
+dev_node
+ = "/dev/tap";
+
+1847 
+¬p_node
+ = 
+dev_node
+;
+
+1848 
+dev_tuÁ­_ty³
+ = "tap";
+
+1849 
+lšk_ty³
+ = 
+I_PLINK
+;
+
+1850 
+is_tun
+ = 
+çl£
+;
+
+1854 
+	`msg
+ (
+M_FATAL
+, "I don't„ecognize device %s‡s‡�un or�ap device",
+
+1855 
+dev
+);
+
+1858 ià((
+‰
+->
+�_fd
+ = 
+	`Ý’
+ (
+�_node
+, 
+O_RDWR
+, 0)) < 0)
+
+1859 
+	`msg
+ (
+M_ERR
+, "Cª'ˆÝ’ %s", 
+�_node
+);
+
+1861 ià((
+‰
+->
+fd
+ = 
+	`Ý’
+ (
+dev_node
+, 
+O_RDWR
+, 0)) < 0)
+
+1862 
+	`msg
+ (
+M_ERR
+, "Cª'ˆÝ’ %s", 
+dev_node
+);
+
+1865 ià(*
+dev
+)
+
+1867 
+±r
+ = 
+dev
+;
+
+1868 *
+±r
+ && !
+	`isdig™
+ (() *ptr))
+
+1869 
+±r
+++;
+
+1870 
+µa
+ = 
+	`©oi
+ (
+±r
+);
+
+1874 
+¡rioc_µa
+.
+ic_cmd
+ = 
+TUNNEWPPA
+;
+
+1875 
+¡rioc_µa
+.
+ic_timout
+ = 0;
+
+1876 
+¡rioc_µa
+.
+ic_Ën
+ = (
+µa
+);
+
+1877 
+¡rioc_µa
+.
+ic_dp
+ = (*)&
+µa
+;
+
+1879 iàÐ*
+±r
+ == '\0' )
+
+1881 
+boÞ
+ 
+found_Úe
+ = 
+çl£
+;
+
+1882  ! 
+found_Úe
+ && 
+µa
+ < 64 )
+
+1884 
+Ãw_µa
+ = 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+I_STR
+, &
+¡rioc_µa
+);
+
+1885 iàÐ
+Ãw_µa
+ >= 0 )
+
+1887 
+	`msg
+Ð
+M_INFO
+, "Ý’_tun: gÙ dyÇmiøš‹rçû '%s%d'", 
+dev_tuÁ­_ty³
+, 
+Ãw_µa
+ );
+
+1888 
+µa
+ = 
+Ãw_µa
+;
+
+1889 
+found_Úe
+ = 
+Œue
+;
+
+1892 iàÐ
+”ºo
+ !ð
+EEXIST
+ )
+
+1893 
+	`msg
+ (
+M_ERR
+, "Ý’_tun: uÃx³ùedƒ¼Ü�ryšg�Øfšd f»�% š‹rçû", 
+dev_tuÁ­_ty³
+ );
+
+1894 
+µa
+++;
+
+1896 iàÐ!
+found_Úe
+ )
+
+1897 
+	`msg
+ (
+M_ERR
+, "Ý’_tun: could‚Ù fšd f»�% š‹rçû, giv�up.", 
+dev_tuÁ­_ty³
+ );
+
+1901 ià((
+µa
+ = 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+I_STR
+, &
+¡rioc_µa
+)) < 0)
+
+1902 
+	`msg
+ (
+M_ERR
+, "Cª'ˆassigÀPPA fÜ‚ew iÁ”çû (%s%d)", 
+dev_tuÁ­_ty³
+, 
+µa
+ );
+
+1905 ià((
+if_fd
+ = 
+	`Ý’
+ (
+dev_node
+, 
+O_RDWR
+, 0)) < 0)
+
+1906 
+	`msg
+ (
+M_ERR
+, "Cª'ˆÝ’ % (2)", 
+dev_node
+);
+
+1908 ià(
+	`ioùl
+ (
+if_fd
+, 
+I_PUSH
+, "ip") < 0)
+
+1909 
+	`msg
+ (
+M_ERR
+, "Can't…ush IP module");
+
+1911 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+1914 ià(
+	`ioùl
+ (
+if_fd
+, 
+IF_UNITSEL
+, (*è&
+µa
+) < 0)
+
+1915 
+	`msg
+ (
+M_ERR
+, "Cª'ˆ£ˆPPA %d", 
+µa
+);
+
+1918 
+‰
+->
+aùu®_Çme
+ = (*è
+	`m®loc
+ (32);
+
+1919 
+	`check_m®loc_»tuº
+ (
+‰
+->
+aùu®_Çme
+);
+
+1921 
+	`Ý’v²_¢´štf
+ (
+‰
+->
+aùu®_Çme
+, 32, "%s%d", 
+dev_tuÁ­_ty³
+, 
+µa
+);
+
+1923 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+1925 ià(
+	`ioùl
+(
+if_fd
+, 
+SIOCGLIFFLAGS
+, &
+iä
+) < 0)
+
+1926 
+	`msg
+ (
+M_ERR
+, "Can't get flags\n");
+
+1927 
+	`¡ºýyÁ
+ (
+iä
+.
+liä_Çme
+, 
+‰
+->
+aùu®_Çme
+,  (ifr.lifr_name));
+
+1928 
+iä
+.
+liä_µa
+ = 
+µa
+;
+
+1930 ià(
+	`ioùl
+ (
+if_fd
+, 
+SIOCSLIFNAME
+, &
+iä
+) < 0)
+
+1931 
+	`msg
+ (
+M_ERR
+, "Cª'ˆ£ˆPPA %d", 
+µa
+);
+
+1932 ià(
+	`ioùl
+(
+if_fd
+, 
+SIOCGLIFFLAGS
+, &
+iä
+) <0)
+
+1933 
+	`msg
+ (
+M_ERR
+, "Can't get flags\n");
+
+1935 ià(
+	`ioùl
+ (
+if_fd
+, 
+I_PUSH
+, "arp") < 0)
+
+1936 
+	`msg
+ (
+M_ERR
+, "Can't…ush ARP module");
+
+1939 
+Œue
+)
+
+1941 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_POP
+, 
+NULL
+) < 0)
+
+1945 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_PUSH
+, "arp") < 0)
+
+1946 
+	`msg
+ (
+M_ERR
+, "Can't…ush ARP module\n");
+
+1949 ià((
+¬p_fd
+ = 
+	`Ý’
+ (
+¬p_node
+, 
+O_RDWR
+, 0)) < 0)
+
+1950 
+	`msg
+ (
+M_ERR
+, "Cª'ˆÝ’ %s\n", 
+¬p_node
+);
+
+1952 ià(
+	`ioùl
+ (
+¬p_fd
+, 
+I_PUSH
+, "arp") < 0)
+
+1953 
+	`msg
+ (
+M_ERR
+, "Can't…ush ARP module\n");
+
+1956 
+¡rioc_if
+.
+ic_cmd
+ = 
+SIOCSLIFNAME
+;
+
+1957 
+¡rioc_if
+.
+ic_timout
+ = 0;
+
+1958 
+¡rioc_if
+.
+ic_Ën
+ = (
+iä
+);
+
+1959 
+¡rioc_if
+.
+ic_dp
+ = (*)&
+iä
+;
+
+1960 ià(
+	`ioùl
+(
+¬p_fd
+, 
+I_STR
+, &
+¡rioc_if
+) < 0){
+
+1961 
+	`msg
+ (
+M_ERR
+, "Can't set ifname�o‡rp\n");
+
+1965 ià((
+�_muxid
+ = 
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+lšk_ty³
+, 
+if_fd
+)) < 0)
+
+1966 
+	`msg
+ (
+M_ERR
+, "Cª'ˆlšk % deviû�ØIP", 
+dev_tuÁ­_ty³
+);
+
+1968 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+) {
+
+1969 ià((
+¬p_muxid
+ = 
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+lšk_ty³
+, 
+¬p_fd
+)) < 0)
+
+1970 
+	`msg
+ (
+M_ERR
+, "Cª'ˆlšk % deviû�ØARP", 
+dev_tuÁ­_ty³
+);
+
+1971 
+	`þo£
+ (
+¬p_fd
+);
+
+1974 
+	`CLEAR
+ (
+iä
+);
+
+1975 
+	`¡ºýyÁ
+ (
+iä
+.
+liä_Çme
+, 
+‰
+->
+aùu®_Çme
+,  (ifr.lifr_name));
+
+1976 
+iä
+.
+liä_�_muxid
+ = 
+�_muxid
+;
+
+1977 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+) {
+
+1978 
+iä
+.
+liä_¬p_muxid
+ = 
+¬p_muxid
+;
+
+1981 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+SIOCSLIFMUXID
+, &
+iä
+) < 0)
+
+1983 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+1985 
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_PUNLINK
+ , 
+¬p_muxid
+);
+
+1987 
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_PUNLINK
+, 
+�_muxid
+);
+
+1988 
+	`msg
+ (
+M_ERR
+, "Can't set multiplexor id");
+
+1991 
+	`£t_nÚblock
+ (
+‰
+->
+fd
+);
+
+1992 
+	`£t_þÛxec
+ (
+‰
+->
+fd
+);
+
+1993 
+	`£t_þÛxec
+ (
+‰
+->
+�_fd
+);
+
+1995 
+	`msg
+ (
+M_INFO
+, "TUN/TAP deviû % Ý’ed", 
+‰
+->
+aùu®_Çme
+);
+
+1996 
+	}
+}
+
+1999 
+	$sÞ¬is_þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+2001 ià(
+‰
+)
+
+2004 iàÐ
+‰
+->
+�v6
+ &&�t->
+did_ifcÚfig_�v6_£tup
+ )
+
+2006 
+¬gv
+‡rgv;
+
+2007 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2008 
+	`¬gv_´štf
+Ð&
+¬gv
+, "%s %s inet6 unplumb",
+
+2009 
+IFCONFIG_PATH
+, 
+‰
+->
+aùu®_Çme
+ );
+
+2010 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2011 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "Solaris ifconfig inet6 unplumb failed");
+
+2012 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+2015 ià(
+‰
+->
+�_fd
+ >= 0)
+
+2017 
+liäeq
+ 
+iä
+;
+
+2018 
+	`CLEAR
+ (
+iä
+);
+
+2019 
+	`¡ºýyÁ
+ (
+iä
+.
+liä_Çme
+, 
+‰
+->
+aùu®_Çme
+,  (ifr.lifr_name));
+
+2021 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+SIOCGLIFFLAGS
+, &
+iä
+) < 0)
+
+2022 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't get iface flags");
+
+2024 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+SIOCGLIFMUXID
+, &
+iä
+) < 0)
+
+2025 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't get multiplexor id");
+
+2027 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+)
+
+2029 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_PUNLINK
+, 
+iä
+.
+liä_¬p_muxid
+) < 0)
+
+2030 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't unlink interface(arp)");
+
+2033 ià(
+	`ioùl
+ (
+‰
+->
+�_fd
+, 
+I_PUNLINK
+, 
+iä
+.
+liä_�_muxid
+) < 0)
+
+2034 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't unlink interface(ip)");
+
+2036 
+	`þo£
+ (
+‰
+->
+�_fd
+);
+
+2037 
+‰
+->
+�_fd
+ = -1;
+
+2040 ià(
+‰
+->
+fd
+ >= 0)
+
+2042 
+	`þo£
+ (
+‰
+->
+fd
+);
+
+2043 
+‰
+->
+fd
+ = -1;
+
+2046 
+	}
+}
+
+2052 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+2054 ià(
+‰
+)
+
+2056 
+	`sÞ¬is_þo£_tun
+ (
+‰
+);
+
+2058 ià(
+‰
+->
+aùu®_Çme
+)
+
+2059 
+	`ä“
+ (
+‰
+->
+aùu®_Çme
+);
+
+2061 
+	`þ—r_tuÁ­
+ (
+‰
+);
+
+2062 
+	`ä“
+ (
+‰
+);
+
+2064 
+	}
+}
+
+2067 
+	$sÞ¬is_”rÜ_þo£
+ (
+tuÁ­
+ *
+‰
+, cÚ¡ 
+’v_£t
+ *
+es
+,
+
+2068 cÚ¡ *
+aùu®
+, 
+boÞ
+ 
+uÅlumb_š‘6
+ )
+
+2070 
+¬gv
+‡rgv;
+
+2071 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2073 ià(
+uÅlumb_š‘6
+)
+
+2075 
+	`¬gv_´štf
+Ð&
+¬gv
+, "%s %s inet6 unplumb",
+
+2076 
+IFCONFIG_PATH
+, 
+aùu®
+ );
+
+2077 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2078 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig inet6 unplumb failed");
+
+2081 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+2083 
+IFCONFIG_PATH
+,
+
+2084 
+aùu®
+);
+
+2086 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2087 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, "Solaris ifconfig unplumb failed");
+
+2088 
+	`þo£_tun
+ (
+‰
+);
+
+2089 
+	`msg
+ (
+M_FATAL
+, "Solaris ifconfig failed");
+
+2090 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+2091 
+	}
+}
+
+2094 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2096 
+¡rbuf
+ 
+sbuf
+;
+
+2097 
+sbuf
+.
+Ën
+ =†en;
+
+2098 
+sbuf
+.
+buf
+ = (*)buf;
+
+2099  
+	`putmsg
+ (
+‰
+->
+fd
+, 
+NULL
+, &
+sbuf
+, 0è>ð0 ? sbuf.
+Ën
+ : -1;
+
+2100 
+	}
+}
+
+2103 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2105 
+¡rbuf
+ 
+sbuf
+;
+
+2106 
+f
+ = 0;
+
+2108 
+sbuf
+.
+maxËn
+ = 
+Ën
+;
+
+2109 
+sbuf
+.
+buf
+ = (*)buf;
+
+2110  
+	`g‘msg
+ (
+‰
+->
+fd
+, 
+NULL
+, &
+sbuf
+, &
+f
+è>ð0 ? sbuf.
+Ën
+ : -1;
+
+2111 
+	}
+}
+
+2113 #–ià
+defšed
+(
+TARGET_OPENBSD
+)
+
+2116 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2118 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+Œue
+,�rue, 
+‰
+);
+
+2121 ià(
+‰
+->
+fd
+ >= 0)
+
+2123 
+tunšfo
+ 
+šfo
+;
+
+2125 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNGIFINFO
+, &
+šfo
+) < 0) {
+
+2126 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't get interface info: %s",
+
+2127 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2130 #ifdeà
+IFF_MULTICAST
+
+
+2131 
+šfo
+.
+æags
+ |ð
+IFF_MULTICAST
+;
+
+2134 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFINFO
+, &
+šfo
+) < 0) {
+
+2135 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Can't set interface info: %s",
+
+2136 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2139 
+	}
+}
+
+2151 
+	$þo£_tun
+ (
+tuÁ­
+* 
+‰
+)
+
+2155 ià(
+‰
+ && (‰->
+ty³
+ =ð
+DEV_TYPE_TUN
+ ||�t->
+³rsi¡’t_if
+ ) )
+
+2157 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2158 
+	`ä“
+(
+‰
+);
+
+2160 ià(
+‰
+)
+
+2162 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2163 
+¬gv
+‡rgv;
+
+2168 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2169 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s destroy",
+
+2170 
+IFCONFIG_PATH
+, 
+‰
+->
+aùu®_Çme
+);
+
+2172 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2174 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2175 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "OpenBSD 'destroy�un interface' failed (non-critical)");
+
+2177 
+	`ä“
+ (
+‰
+);
+
+2179 
+	}
+}
+
+2182 
+	$wr™e_tun
+(
+tuÁ­
+ *
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2184  
+	`wr™e_tun_h—d”
+ (
+‰
+, 
+buf
+, 
+Ën
+);
+
+2185 
+	}
+}
+
+2188 
+	$»ad_tun
+ (
+tuÁ­
+ *
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2190  
+	`»ad_tun_h—d”
+ (
+‰
+, 
+buf
+, 
+Ën
+);
+
+2191 
+	}
+}
+
+2193 #–ià
+defšed
+(
+TARGET_NETBSD
+)
+
+2210 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2212 #ifdeà
+NETBSD_MULTI_AF
+
+
+2213 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+Œue
+,�rue, 
+‰
+);
+
+2215 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+çl£
+, 
+Œue
+, 
+‰
+);
+
+2218 ià(
+‰
+->
+fd
+ >= 0)
+
+2220 
+i
+ = 
+IFF_POINTOPOINT
+|
+IFF_MULTICAST
+;
+
+2221 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFMODE
+, &
+i
+);
+
+2222 
+i
+ = 0;
+
+2223 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSLMODE
+, &
+i
+);
+
+2225 #ifdeà
+NETBSD_MULTI_AF
+
+
+2226 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+ )
+
+2228 
+i
+ = 1;
+
+2229 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFHEAD
+, &
+i
+) < 0)
+
+2231 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "ioùl(TUNSIFHEAD): %s", 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2236 
+	}
+}
+
+2243 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+2247 ià(
+‰
+ && (�t->
+ty³
+ !ð
+DEV_TYPE_TUN
+ ||�t->
+³rsi¡’t_if
+ ) )
+
+2249 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2250 
+	`ä“
+(
+‰
+);
+
+2252 ià(
+‰
+)
+
+2254 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2255 
+¬gv
+‡rgv;
+
+2260 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2261 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s destroy",
+
+2262 
+IFCONFIG_PATH
+, 
+‰
+->
+aùu®_Çme
+);
+
+2264 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2266 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2267 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "NetBSD 'destroy�un interface' failed (non-critical)");
+
+2269 
+	`ä“
+ (
+‰
+);
+
+2271 
+	}
+}
+
+2273 #ifdeà
+NETBSD_MULTI_AF
+
+
+2275 
+šlše
+ 
+
+2276 
+	$Ãtbsd_modify_»ad_wr™e_»tuº
+ (
+Ën
+)
+
+2278 ià(
+Ën
+ > 0)
+
+2279  
+Ën
+ >  (
+u_št32_t
+) ?†en -  (u_int32_t) : 0;
+
+2281  
+Ën
+;
+
+2282 
+	}
+}
+
+2285 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2287 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2289 
+u_št32_t
+ 
+ty³
+;
+
+2290 
+iovec
+ 
+iv
+[2];
+
+2291 
+Ý’v²_�hdr
+ *
+�h
+;
+
+2293 
+�h
+ = (
+Ý’v²_�hdr
+ *è
+buf
+;
+
+2295 ià(
+‰
+->
+�v6
+ && 
+	`OPENVPN_IPH_GET_VER
+(
+�h
+->
+v”siÚ_Ën
+) == 6)
+
+2296 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET6
+);
+
+2298 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET
+);
+
+2300 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2301 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2302 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2303 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2305  
+	`Ãtbsd_modify_»ad_wr™e_»tuº
+ (
+	`wr™ev
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2308  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2309 
+	}
+}
+
+2312 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2314 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2316 
+u_št32_t
+ 
+ty³
+;
+
+2317 
+iovec
+ 
+iv
+[2];
+
+2319 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2320 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2321 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2322 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2324  
+	`Ãtbsd_modify_»ad_wr™e_»tuº
+ (
+	`»adv
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2327  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2328 
+	}
+}
+
+2333 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2335  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2336 
+	}
+}
+
+2339 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2341  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2342 
+	}
+}
+
+2345 #–ià
+defšed
+(
+TARGET_FREEBSD
+)
+
+2347 
+šlše
+ 
+
+2348 
+	$ä“bsd_modify_»ad_wr™e_»tuº
+ (
+Ën
+)
+
+2350 ià(
+Ën
+ > 0)
+
+2351  
+Ën
+ >  (
+u_št32_t
+) ?†en -  (u_int32_t) : 0;
+
+2353  
+Ën
+;
+
+2354 
+	}
+}
+
+2357 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2359 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+Œue
+,�rue, 
+‰
+);
+
+2361 ià(
+‰
+->
+fd
+ >ð0 &&�t->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2363 
+i
+ = 
+IFF_POINTOPOINT
+ | 
+IFF_MULTICAST
+;
+
+2365 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFMODE
+, &
+i
+) < 0) {
+
+2366 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "ioùl(TUNSIFMODE): %s", 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2368 
+i
+ = 1;
+
+2369 ià(
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFHEAD
+, &
+i
+) < 0) {
+
+2370 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "ioùl(TUNSIFHEAD): %s", 
+	`¡»¼Ü
+(
+”ºo
+));
+
+2373 
+	}
+}
+
+2383 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+2385 ià(
+‰
+ &&�t->
+³rsi¡’t_if
+ )
+
+2387 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2388 
+	`ä“
+ (
+‰
+);
+
+2390 ià(
+‰
+)
+
+2392 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2393 
+¬gv
+‡rgv;
+
+2398 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2399 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s %s destroy",
+
+2400 
+IFCONFIG_PATH
+, 
+‰
+->
+aùu®_Çme
+);
+
+2402 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2404 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2405 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "FreeBSD 'destroy�un interface' failed (non-critical)");
+
+2407 
+	`ä“
+ (
+‰
+);
+
+2409 
+	}
+}
+
+2412 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2414 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2416 
+u_št32_t
+ 
+ty³
+;
+
+2417 
+iovec
+ 
+iv
+[2];
+
+2418 
+�
+ *
+�h
+;
+
+2420 
+�h
+ = (
+�
+ *è
+buf
+;
+
+2422 ià(
+‰
+->
+�v6
+ && 
+�h
+->
+�_v
+ == 6)
+
+2423 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET6
+);
+
+2425 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET
+);
+
+2427 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2428 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2429 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2430 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2432  
+	`ä“bsd_modify_»ad_wr™e_»tuº
+ (
+	`wr™ev
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2435  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2436 
+	}
+}
+
+2439 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2441 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2443 
+u_št32_t
+ 
+ty³
+;
+
+2444 
+iovec
+ 
+iv
+[2];
+
+2446 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2447 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2448 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2449 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2451  
+	`ä“bsd_modify_»ad_wr™e_»tuº
+ (
+	`»adv
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2454  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2455 
+	}
+}
+
+2457 #–ià
+defšed
+(
+TARGET_DRAGONFLY
+)
+
+2459 
+šlše
+ 
+
+2460 
+	$d¿gÚæy_modify_»ad_wr™e_»tuº
+ (
+Ën
+)
+
+2462 ià(
+Ën
+ > 0)
+
+2463  
+Ën
+ >  (
+u_št32_t
+) ?†en -  (u_int32_t) : 0;
+
+2465  
+Ën
+;
+
+2466 
+	}
+}
+
+2469 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2471 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+Œue
+,�rue, 
+‰
+);
+
+2473 ià(
+‰
+->
+fd
+ >= 0)
+
+2475 
+i
+ = 0;
+
+2478 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSLMODE
+, &
+i
+);
+
+2479 
+i
+ = 1;
+
+2480 
+	`ioùl
+ (
+‰
+->
+fd
+, 
+TUNSIFHEAD
+, &
+i
+);
+
+2482 
+	}
+}
+
+2485 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+2487 ià(
+‰
+)
+
+2489 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2490 
+	`ä“
+ (
+‰
+);
+
+2492 
+	}
+}
+
+2495 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2497 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2499 
+u_št32_t
+ 
+ty³
+;
+
+2500 
+iovec
+ 
+iv
+[2];
+
+2501 
+�
+ *
+�h
+;
+
+2503 
+�h
+ = (
+�
+ *è
+buf
+;
+
+2505 ià(
+‰
+->
+�v6
+ && 
+�h
+->
+�_v
+ == 6)
+
+2506 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET6
+);
+
+2508 
+ty³
+ = 
+	`htÚl
+ (
+AF_INET
+);
+
+2510 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2511 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2512 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2513 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2515  
+	`d¿gÚæy_modify_»ad_wr™e_»tuº
+ (
+	`wr™ev
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2518  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2519 
+	}
+}
+
+2522 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2524 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+2526 
+u_št32_t
+ 
+ty³
+;
+
+2527 
+iovec
+ 
+iv
+[2];
+
+2529 
+iv
+[0].
+iov_ba£
+ = (*)&
+ty³
+;
+
+2530 
+iv
+[0].
+iov_Ën
+ =  (
+ty³
+);
+
+2531 
+iv
+[1].
+iov_ba£
+ = 
+buf
+;
+
+2532 
+iv
+[1].
+iov_Ën
+ = 
+Ën
+;
+
+2534  
+	`d¿gÚæy_modify_»ad_wr™e_»tuº
+ (
+	`»adv
+ (
+‰
+->
+fd
+, 
+iv
+, 2));
+
+2537  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2538 
+	}
+}
+
+2540 #–ià
+defšed
+(
+TARGET_DARWIN
+)
+
+2556 #ifdeà
+HAVE_NET_IF_UTUN_H
+
+
+2563 
+	$utun_Ý’_h–³r
+ (
+ùl_šfo
+ 
+ùlInfo
+, 
+utuÂum
+)
+
+2565 
+sockaddr_ùl
+ 
+sc
+;
+
+2566 
+fd
+;
+
+2568 
+fd
+ = 
+	`sock‘
+(
+PF_SYSTEM
+, 
+SOCK_DGRAM
+, 
+SYSPROTO_CONTROL
+);
+
+2570 ià(
+fd
+ < 0)
+
+2572 
+	`msg
+ (
+M_INFO
+, "Opening utun (%s): %s", "socket(SYSPROTO_CONTROL)",
+
+2573 
+	`¡»¼Ü
+ (
+”ºo
+));
+
+2577 ià(
+	`ioùl
+(
+fd
+, 
+CTLIOCGINFO
+, &
+ùlInfo
+) == -1)
+
+2579 
+	`þo£
+ (
+fd
+);
+
+2580 
+	`msg
+ (
+M_INFO
+, "Opening utun (%s): %s", "ioctl(CTLIOCGINFO)",
+
+2581 
+	`¡»¼Ü
+ (
+”ºo
+));
+
+2586 
+sc
+.
+sc_id
+ = 
+ùlInfo
+.
+ùl_id
+;
+
+2587 
+sc
+.
+sc_Ën
+ = (sc);
+
+2588 
+sc
+.
+sc_çmžy
+ = 
+AF_SYSTEM
+;
+
+2589 
+sc
+.
+ss_sy§ddr
+ = 
+AF_SYS_CONTROL
+;
+
+2591 
+sc
+.
+sc_un™
+ = 
+utuÂum
++1;
+
+2597 ià(
+	`cÚÃù
+ (
+fd
+, (
+sockaddr
+ *)&
+sc
+, (sc)) < 0)
+
+2599 
+	`msg
+ (
+M_INFO
+, "Opening utun (%s): %s", "connect(AF_SYS_CONTROL)",
+
+2600 
+	`¡»¼Ü
+ (
+”ºo
+));
+
+2601 
+	`þo£
+(
+fd
+);
+
+2605 
+	`£t_nÚblock
+ (
+fd
+);
+
+2606 
+	`£t_þÛxec
+ (
+fd
+);
+
+2608  
+fd
+;
+
+2609 
+	}
+}
+
+2612 
+	$Ý’_d¬wš_utun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2614 
+ùl_šfo
+ 
+ùlInfo
+;
+
+2615 
+fd
+;
+
+2616 
+utuÂame
+[20];
+
+2617 
+utuÂum
+ =-1;
+
+2618 
+sockËn_t
+ 
+utuÂame_Ën
+ = (
+utuÂame
+);
+
+2622 ià(
+dev_node
+ && !
+	`¡rcmp
+ ("utun", dev_node)==0)
+
+2624 ià(!
+	`ssÿnf
+ (
+dev_node
+, "utun%d", &
+utuÂum
+)==1)
+
+2625 
+	`msg
+ (
+M_FATAL
+, "Cannot…arse 'dev-node %s'…lease use 'dev-node utunX'"
+
+2626 "tØu£‡ utuÀdeviû‚umb” X", 
+dev_node
+);
+
+2631 
+	`CLEAR
+ (
+ùlInfo
+);
+
+2632 ià(
+	`¡¾ýy
+(
+ùlInfo
+.
+ùl_Çme
+, 
+UTUN_CONTROL_NAME
+, (ctlInfo.ctl_name)) >=
+
+2633 (
+ùlInfo
+.
+ùl_Çme
+))
+
+2635 
+	`msg
+ (
+M_ERR
+, "Opening utun: UTUN_CONTROL_NAME�oo†ong");
+
+2639 ià(
+utuÂum
+ == -1)
+
+2641 
+utuÂum
+=0; utunnum<255; utunnum++)
+
+2643 
+fd
+ = 
+	`utun_Ý’_h–³r
+ (
+ùlInfo
+, 
+utuÂum
+);
+
+2646 ià(
+fd
+ !=-1)
+
+2652 
+fd
+ = 
+	`utun_Ý’_h–³r
+ (
+ùlInfo
+, 
+utuÂum
+);
+
+2656 
+‰
+->
+fd
+ = fd;
+
+2658 ià(
+fd
+ < 0)
+
+2662 ià(
+	`g‘sockÝt
+ (
+fd
+, 
+SYSPROTO_CONTROL
+, 
+UTUN_OPT_IFNAME
+, 
+utuÂame
+, &
+utuÂame_Ën
+))
+
+2663 
+	`msg
+ (
+M_ERR
+ | 
+M_ERRNO
+, "Error„etrieving utun interface‚ame");
+
+2665 
+‰
+->
+aùu®_Çme
+ = 
+	`¡ršg_®loc
+ (
+utuÂame
+, 
+NULL
+);
+
+2667 
+	`msg
+ (
+M_INFO
+, "O³Ãd utuÀdeviû %s", 
+utuÂame
+);
+
+2668 
+‰
+->
+is_utun
+ = 
+Œue
+;
+
+2669 
+	}
+}
+
+2674 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+2676 #ifdeà
+HAVE_NET_IF_UTUN_H
+
+
+2678 ià((!
+dev_node
+ && 
+‰
+->
+ty³
+==
+DEV_TYPE_TUN
+) ||
+
+2679 (
+dev_node
+ && !
+	`¡ºcmp
+ (dev_node, "utun", 4)))
+
+2684 ià(
+‰
+->
+ty³
+!=
+DEV_TYPE_TUN
+)
+
+2685 
+	`msg
+ (
+M_FATAL
+, "Cannot use utun devices with --dev-type %s",
+
+2686 
+	`dev_ty³_¡ršg
+ (
+dev
+, 
+dev_ty³
+));
+
+2690 
+	`Ý’_d¬wš_utun
+(
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+‰
+);
+
+2692 ià(!
+‰
+->
+is_utun
+)
+
+2694 ià(!
+dev_node
+)
+
+2697 
+	`msg
+ (
+M_INFO
+, "Failed�o open utun device. Falling back�o /dev/tun device");
+
+2698 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+NULL
+, 
+Œue
+,�rue, 
+‰
+);
+
+2704 
+	`msg
+ (
+M_FATAL
+, "Cannot open utun device");
+
+2716 ià(
+dev_node
+ && 
+	`¡rcmp
+ (dev_node, "tun")==0)
+
+2717 
+dev_node
+=
+NULL
+;
+
+2719 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+Œue
+,�rue, 
+‰
+);
+
+2721 
+	}
+}
+
+2724 
+	$þo£_tun
+ (
+tuÁ­
+* 
+‰
+)
+
+2726 ià(
+‰
+)
+
+2728 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2729 
+¬gv
+‡rgv;
+
+2730 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+2732 iàÐ
+‰
+->
+�v6
+ &&�t->
+did_ifcÚfig_�v6_£tup
+ )
+
+2734 cÚ¡ * 
+ifcÚfig_�v6_loÿl
+ =
+
+2735 
+	`´št_š6_addr
+ (
+‰
+->
+loÿl_�v6
+, 0, &
+gc
+);
+
+2737 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s delete -inet6 %s",
+
+2738 
+ROUTE_PATH
+, 
+ifcÚfig_�v6_loÿl
+ );
+
+2739 
+	`¬gv_msg
+ (
+M_INFO
+, &
+¬gv
+);
+
+2740 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+NULL
+, 0, "MacOS X 'remove inet6„oute' failed (non-critical)");
+
+2743 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+2744 
+	`ä“
+ (
+‰
+);
+
+2745 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+2746 
+	`gc_ä“
+ (&
+gc
+);
+
+2748 
+	}
+}
+
+2751 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2753 #ifdeà
+HAVE_NET_IF_UTUN_H
+
+
+2754 ià(
+‰
+->
+is_utun
+)
+
+2755  
+	`wr™e_tun_h—d”
+ (
+‰
+, 
+buf
+, 
+Ën
+);
+
+2758  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2759 
+	}
+}
+
+2762 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+2764 #ifdeà
+HAVE_NET_IF_UTUN_H
+
+
+2765 ià(
+‰
+->
+is_utun
+)
+
+2766  
+	`»ad_tun_h—d”
+ (
+‰
+, 
+buf
+, 
+Ën
+);
+
+2769  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+2770 
+	}
+}
+
+2772 #–ià
+defšed
+(
+WIN32
+)
+
+2775 
+	$tun_»ad_queue
+ (
+tuÁ­
+ *
+‰
+, 
+maxsize
+)
+
+2777 ià(
+‰
+->
+»ads
+.
+io¡©e
+ =ð
+IOSTATE_INITIAL
+)
+
+2779 
+DWORD
+ 
+Ën
+;
+
+2780 
+BOOL
+ 
+¡©us
+;
+
+2781 
+”r
+;
+
+2784 
+‰
+->
+»ads
+.
+buf
+ =�t->»ads.
+buf_š™
+;
+
+2786 
+Ën
+ = 
+maxsize
+ ? maxsiz�: 
+	`BLEN
+ (&
+‰
+->
+»ads
+.
+buf
+);
+
+2787 
+	`ASSERT
+ (
+Ën
+ <ð
+	`BLEN
+ (&
+‰
+->
+»ads
+.
+buf
+));
+
+2790 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+‰
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2792 
+¡©us
+ = 
+	`R—dFže
+(
+
+2793 
+‰
+->
+hªd
+,
+
+2794 
+	`BPTR
+ (&
+‰
+->
+»ads
+.
+buf
+),
+
+2795 
+Ën
+,
+
+2796 &
+‰
+->
+»ads
+.
+size
+,
+
+2797 &
+‰
+->
+»ads
+.
+ov”Ïµed
+
+
+2800 ià(
+¡©us
+)
+
+2803 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+‰
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2805 
+‰
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2806 
+‰
+->
+»ads
+.
+¡©us
+ = 0;
+
+2808 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Read immediate„eturn [%d,%d]",
+
+2809 (è
+Ën
+,
+
+2810 (è
+‰
+->
+»ads
+.
+size
+);
+
+2814 
+”r
+ = 
+	`G‘La¡E¼Ü
+ ();
+
+2815 ià(
+”r
+ =ð
+ERROR_IO_PENDING
+)
+
+2817 
+‰
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_QUEUED
+;
+
+2818 
+‰
+->
+»ads
+.
+¡©us
+ = 
+”r
+;
+
+2819 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Read queued [%d]",
+
+2820 (è
+Ën
+);
+
+2824 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2825 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+‰
+->
+»ads
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2826 
+‰
+->
+»ads
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2827 
+‰
+->
+»ads
+.
+¡©us
+ = 
+”r
+;
+
+2828 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Readƒrror [%d] : %s",
+
+2829 (è
+Ën
+,
+
+2830 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+2831 
+	`gc_ä“
+ (&
+gc
+);
+
+2835  
+‰
+->
+»ads
+.
+io¡©e
+;
+
+2836 
+	}
+}
+
+2839 
+	$tun_wr™e_queue
+ (
+tuÁ­
+ *
+‰
+, 
+bufãr
+ *
+buf
+)
+
+2841 ià(
+‰
+->
+wr™es
+.
+io¡©e
+ =ð
+IOSTATE_INITIAL
+)
+
+2843 
+BOOL
+ 
+¡©us
+;
+
+2844 
+”r
+;
+
+2847 
+‰
+->
+wr™es
+.
+buf
+ =�t->wr™es.
+buf_š™
+;
+
+2848 
+‰
+->
+wr™es
+.
+buf
+.
+Ën
+ = 0;
+
+2849 
+	`ASSERT
+ (
+	`buf_cÝy
+ (&
+‰
+->
+wr™es
+.
+buf
+, buf));
+
+2852 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+‰
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2854 
+¡©us
+ = 
+	`Wr™eFže
+(
+
+2855 
+‰
+->
+hªd
+,
+
+2856 
+	`BPTR
+ (&
+‰
+->
+wr™es
+.
+buf
+),
+
+2857 
+	`BLEN
+ (&
+‰
+->
+wr™es
+.
+buf
+),
+
+2858 &
+‰
+->
+wr™es
+.
+size
+,
+
+2859 &
+‰
+->
+wr™es
+.
+ov”Ïµed
+
+
+2862 ià(
+¡©us
+)
+
+2864 
+‰
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2867 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+‰
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2869 
+‰
+->
+wr™es
+.
+¡©us
+ = 0;
+
+2871 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Write immediate„eturn [%d,%d]",
+
+2872 
+	`BLEN
+ (&
+‰
+->
+wr™es
+.
+buf
+),
+
+2873 (è
+‰
+->
+wr™es
+.
+size
+);
+
+2877 
+”r
+ = 
+	`G‘La¡E¼Ü
+ ();
+
+2878 ià(
+”r
+ =ð
+ERROR_IO_PENDING
+)
+
+2880 
+‰
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_QUEUED
+;
+
+2881 
+‰
+->
+wr™es
+.
+¡©us
+ = 
+”r
+;
+
+2882 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Write queued [%d]",
+
+2883 
+	`BLEN
+ (&
+‰
+->
+wr™es
+.
+buf
+));
+
+2887 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+2888 
+	`ASSERT
+ (
+	`S‘Ev’t
+ (
+‰
+->
+wr™es
+.
+ov”Ïµed
+.
+hEv’t
+));
+
+2889 
+‰
+->
+wr™es
+.
+io¡©e
+ = 
+IOSTATE_IMMEDIATE_RETURN
+;
+
+2890 
+‰
+->
+wr™es
+.
+¡©us
+ = 
+”r
+;
+
+2891 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Writeƒrror [%d] : %s",
+
+2892 
+	`BLEN
+ (&
+‰
+->
+wr™es
+.
+buf
+),
+
+2893 
+	`¡»¼Ü_wš32
+ (
+”r
+, &
+gc
+));
+
+2894 
+	`gc_ä“
+ (&
+gc
+);
+
+2898  
+‰
+->
+wr™es
+.
+io¡©e
+;
+
+2899 
+	}
+}
+
+2902 
+	$tun_fš®ize
+ (
+
+2903 
+HANDLE
+ 
+h
+,
+
+2904 
+ov”Ïµed_io
+ *
+io
+,
+
+2905 
+bufãr
+ *
+buf
+)
+
+2907 
+»t
+ = -1;
+
+2908 
+BOOL
+ 
+¡©us
+;
+
+2910 
+io
+->
+io¡©e
+)
+
+2912 
+IOSTATE_QUEUED
+:
+
+2913 
+¡©us
+ = 
+	`G‘Ov”ÏµedResuÉ
+(
+
+2914 
+h
+,
+
+2915 &
+io
+->
+ov”Ïµed
+,
+
+2916 &
+io
+->
+size
+,
+
+2917 
+FALSE
+
+
+2919 ià(
+¡©us
+)
+
+2922 ià(
+buf
+)
+
+2923 *
+buf
+ = 
+io
+->buf;
+
+2924 
+»t
+ = 
+io
+->
+size
+;
+
+2925 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+2926 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+2927 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Com¶‘iÚ sucûs [%d]", 
+»t
+);
+
+2932 
+»t
+ = -1;
+
+2933 ià(
+	`G‘La¡E¼Ü
+(è!ð
+ERROR_IO_INCOMPLETE
+)
+
+2937 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+2938 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+2939 
+	`msg
+ (
+D_WIN32_IO
+ | 
+M_ERRNO
+, "WIN32 I/O: TAP Completionƒrror");
+
+2944 
+IOSTATE_IMMEDIATE_RETURN
+:
+
+2945 
+io
+->
+io¡©e
+ = 
+IOSTATE_INITIAL
+;
+
+2946 
+	`ASSERT
+ (
+	`Re£tEv’t
+ (
+io
+->
+ov”Ïµed
+.
+hEv’t
+));
+
+2947 ià(
+io
+->
+¡©us
+)
+
+2950 
+	`S‘La¡E¼Ü
+ (
+io
+->
+¡©us
+);
+
+2951 
+»t
+ = -1;
+
+2952 
+	`msg
+ (
+D_WIN32_IO
+ | 
+M_ERRNO
+, "WIN32 I/O: TAP Completion‚on-queuedƒrror");
+
+2957 ià(
+buf
+)
+
+2958 *
+buf
+ = 
+io
+->buf;
+
+2959 
+»t
+ = 
+io
+->
+size
+;
+
+2960 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Com¶‘iÚ‚Ú-queued sucûs [%d]", 
+»t
+);
+
+2964 
+IOSTATE_INITIAL
+:
+
+2965 
+	`S‘La¡E¼Ü
+ (
+ERROR_INVALID_FUNCTION
+);
+
+2966 
+»t
+ = -1;
+
+2967 
+	`dmsg
+ (
+D_WIN32_IO
+, "WIN32 I/O: TAP Completion BAD STATE");
+
+2971 
+	`ASSERT
+ (0);
+
+2974 ià(
+buf
+)
+
+2975 
+buf
+->
+Ën
+ = 
+»t
+;
+
+2976  
+»t
+;
+
+2977 
+	}
+}
+
+2979 cÚ¡ 
+�p_»g
+ *
+
+2980 
+	$g‘_�p_»g
+ (
+gc_¬’a
+ *
+gc
+)
+
+2982 
+HKEY
+ 
+ad­‹r_key
+;
+
+2983 
+LONG
+ 
+¡©us
+;
+
+2984 
+DWORD
+ 
+Ën
+;
+
+2985 
+�p_»g
+ *
+fœ¡
+ = 
+NULL
+;
+
+2986 
+�p_»g
+ *
+Ï¡
+ = 
+NULL
+;
+
+2987 
+i
+ = 0;
+
+2989 
+¡©us
+ = 
+	`RegO³nKeyEx
+(
+
+2990 
+HKEY_LOCAL_MACHINE
+,
+
+2991 
+ADAPTER_KEY
+,
+
+2993 
+KEY_READ
+,
+
+2994 &
+ad­‹r_key
+);
+
+2996 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+2997 
+	`msg
+ (
+M_FATAL
+, "E¼Ü o³nšg„egi¡ry key: %s", 
+ADAPTER_KEY
+);
+
+2999 
+Œue
+)
+
+3001 
+’um_Çme
+[256];
+
+3002 
+un™_¡ršg
+[256];
+
+3003 
+HKEY
+ 
+un™_key
+;
+
+3004 
+compÚ’t_id_¡ršg
+[] = "ComponentId";
+
+3005 
+compÚ’t_id
+[256];
+
+3006 
+Ãt_cfg_š¡ªû_id_¡ršg
+[] = "NetCfgInstanceId";
+
+3007 
+Ãt_cfg_š¡ªû_id
+[256];
+
+3008 
+DWORD
+ 
+d©a_ty³
+;
+
+3010 
+Ën
+ =  (
+’um_Çme
+);
+
+3011 
+¡©us
+ = 
+	`RegEnumKeyEx
+(
+
+3012 
+ad­‹r_key
+,
+
+3013 
+i
+,
+
+3014 
+’um_Çme
+,
+
+3015 &
+Ën
+,
+
+3016 
+NULL
+,
+
+3017 
+NULL
+,
+
+3018 
+NULL
+,
+
+3019 
+NULL
+);
+
+3020 ià(
+¡©us
+ =ð
+ERROR_NO_MORE_ITEMS
+)
+
+3022 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+3023 
+	`msg
+ (
+M_FATAL
+, "Errorƒnumerating„egistry subkeys of key: %s",
+
+3024 
+ADAPTER_KEY
+);
+
+3026 
+	`Ý’v²_¢´štf
+ (
+un™_¡ršg
+, (unit_string), "%s\\%s",
+
+3027 
+ADAPTER_KEY
+, 
+’um_Çme
+);
+
+3029 
+¡©us
+ = 
+	`RegO³nKeyEx
+(
+
+3030 
+HKEY_LOCAL_MACHINE
+,
+
+3031 
+un™_¡ršg
+,
+
+3033 
+KEY_READ
+,
+
+3034 &
+un™_key
+);
+
+3036 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+3037 
+	`dmsg
+ (
+D_REGISTRY
+, "E¼Ü o³nšg„egi¡ry key: %s", 
+un™_¡ršg
+);
+
+3040 
+Ën
+ =  (
+compÚ’t_id
+);
+
+3041 
+¡©us
+ = 
+	`RegQu”yV®ueEx
+(
+
+3042 
+un™_key
+,
+
+3043 
+compÚ’t_id_¡ršg
+,
+
+3044 
+NULL
+,
+
+3045 &
+d©a_ty³
+,
+
+3046 
+compÚ’t_id
+,
+
+3047 &
+Ën
+);
+
+3049 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+ || 
+d©a_ty³
+ !ð
+REG_SZ
+)
+
+3050 
+	`dmsg
+ (
+D_REGISTRY
+, "Error opening„egistry key: %s\\%s",
+
+3051 
+un™_¡ršg
+, 
+compÚ’t_id_¡ršg
+);
+
+3054 
+Ën
+ =  (
+Ãt_cfg_š¡ªû_id
+);
+
+3055 
+¡©us
+ = 
+	`RegQu”yV®ueEx
+(
+
+3056 
+un™_key
+,
+
+3057 
+Ãt_cfg_š¡ªû_id_¡ršg
+,
+
+3058 
+NULL
+,
+
+3059 &
+d©a_ty³
+,
+
+3060 
+Ãt_cfg_š¡ªû_id
+,
+
+3061 &
+Ën
+);
+
+3063 ià(
+¡©us
+ =ð
+ERROR_SUCCESS
+ && 
+d©a_ty³
+ =ð
+REG_SZ
+)
+
+3065 ià(!
+	`¡rcmp
+ (
+compÚ’t_id
+, 
+TAP_WIN_COMPONENT_ID
+))
+
+3067 
+�p_»g
+ *
+»g
+;
+
+3068 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+»g
+, 
+�p_»g
+, 
+gc
+);
+
+3069 
+»g
+->
+guid
+ = 
+	`¡ršg_®loc
+ (
+Ãt_cfg_š¡ªû_id
+, 
+gc
+);
+
+3072 ià(!
+fœ¡
+)
+
+3073 
+fœ¡
+ = 
+»g
+;
+
+3074 ià(
+Ï¡
+)
+
+3075 
+Ï¡
+->
+Ãxt
+ = 
+»g
+;
+
+3076 
+Ï¡
+ = 
+»g
+;
+
+3080 
+	`RegClo£Key
+ (
+un™_key
+);
+
+3082 ++
+i
+;
+
+3085 
+	`RegClo£Key
+ (
+ad­‹r_key
+);
+
+3086  
+fœ¡
+;
+
+3087 
+	}
+}
+
+3089 cÚ¡ 
+·Ãl_»g
+ *
+
+3090 
+	$g‘_·Ãl_»g
+ (
+gc_¬’a
+ *
+gc
+)
+
+3092 
+LONG
+ 
+¡©us
+;
+
+3093 
+HKEY
+ 
+ÃtwÜk_cÚÃùiÚs_key
+;
+
+3094 
+DWORD
+ 
+Ën
+;
+
+3095 
+·Ãl_»g
+ *
+fœ¡
+ = 
+NULL
+;
+
+3096 
+·Ãl_»g
+ *
+Ï¡
+ = 
+NULL
+;
+
+3097 
+i
+ = 0;
+
+3099 
+¡©us
+ = 
+	`RegO³nKeyEx
+(
+
+3100 
+HKEY_LOCAL_MACHINE
+,
+
+3101 
+NETWORK_CONNECTIONS_KEY
+,
+
+3103 
+KEY_READ
+,
+
+3104 &
+ÃtwÜk_cÚÃùiÚs_key
+);
+
+3106 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+3107 
+	`msg
+ (
+M_FATAL
+, "E¼Ü o³nšg„egi¡ry key: %s", 
+NETWORK_CONNECTIONS_KEY
+);
+
+3109 
+Œue
+)
+
+3111 
+’um_Çme
+[256];
+
+3112 
+cÚÃùiÚ_¡ršg
+[256];
+
+3113 
+HKEY
+ 
+cÚÃùiÚ_key
+;
+
+3114 
+WCHAR
+ 
+Çme_d©a
+[256];
+
+3115 
+DWORD
+ 
+Çme_ty³
+;
+
+3116 cÚ¡ 
+WCHAR
+ 
+Çme_¡ršg
+[] = 
+L
+"Name";
+
+3118 
+Ën
+ =  (
+’um_Çme
+);
+
+3119 
+¡©us
+ = 
+	`RegEnumKeyEx
+(
+
+3120 
+ÃtwÜk_cÚÃùiÚs_key
+,
+
+3121 
+i
+,
+
+3122 
+’um_Çme
+,
+
+3123 &
+Ën
+,
+
+3124 
+NULL
+,
+
+3125 
+NULL
+,
+
+3126 
+NULL
+,
+
+3127 
+NULL
+);
+
+3128 ià(
+¡©us
+ =ð
+ERROR_NO_MORE_ITEMS
+)
+
+3130 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+3131 
+	`msg
+ (
+M_FATAL
+, "Errorƒnumerating„egistry subkeys of key: %s",
+
+3132 
+NETWORK_CONNECTIONS_KEY
+);
+
+3134 
+	`Ý’v²_¢´štf
+ (
+cÚÃùiÚ_¡ršg
+, (connection_string),
+
+3136 
+NETWORK_CONNECTIONS_KEY
+, 
+’um_Çme
+);
+
+3138 
+¡©us
+ = 
+	`RegO³nKeyEx
+(
+
+3139 
+HKEY_LOCAL_MACHINE
+,
+
+3140 
+cÚÃùiÚ_¡ršg
+,
+
+3142 
+KEY_READ
+,
+
+3143 &
+cÚÃùiÚ_key
+);
+
+3145 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+)
+
+3146 
+	`dmsg
+ (
+D_REGISTRY
+, "E¼Ü o³nšg„egi¡ry key: %s", 
+cÚÃùiÚ_¡ršg
+);
+
+3149 
+Ën
+ =  (
+Çme_d©a
+);
+
+3150 
+¡©us
+ = 
+	`RegQu”yV®ueExW
+(
+
+3151 
+cÚÃùiÚ_key
+,
+
+3152 
+Çme_¡ršg
+,
+
+3153 
+NULL
+,
+
+3154 &
+Çme_ty³
+,
+
+3155 (
+LPBYTE
+è
+Çme_d©a
+,
+
+3156 &
+Ën
+);
+
+3158 ià(
+¡©us
+ !ð
+ERROR_SUCCESS
+ || 
+Çme_ty³
+ !ð
+REG_SZ
+)
+
+3159 
+	`dmsg
+ (
+D_REGISTRY
+, "Error opening„egistry key: %s\\%s\\%s",
+
+3160 
+NETWORK_CONNECTIONS_KEY
+, 
+cÚÃùiÚ_¡ršg
+, 
+Çme_¡ršg
+);
+
+3163 
+n
+;
+
+3164 
+LPSTR
+ 
+Çme
+;
+
+3165 
+·Ãl_»g
+ *
+»g
+;
+
+3167 
+	`ALLOC_OBJ_CLEAR_GC
+ (
+»g
+, 
+·Ãl_»g
+, 
+gc
+);
+
+3168 
+n
+ = 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+Çme_d©a
+, -1, 
+NULL
+, 0, NULL, NULL);
+
+3169 
+Çme
+ = 
+	`gc_m®loc
+ (
+n
+, 
+çl£
+, 
+gc
+);
+
+3170 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+Çme_d©a
+, -1, 
+Çme
+, 
+n
+, 
+NULL
+, NULL);
+
+3171 
+»g
+->
+Çme
+ =‚ame;
+
+3172 
+»g
+->
+guid
+ = 
+	`¡ršg_®loc
+ (
+’um_Çme
+, 
+gc
+);
+
+3175 ià(!
+fœ¡
+)
+
+3176 
+fœ¡
+ = 
+»g
+;
+
+3177 ià(
+Ï¡
+)
+
+3178 
+Ï¡
+->
+Ãxt
+ = 
+»g
+;
+
+3179 
+Ï¡
+ = 
+»g
+;
+
+3181 
+	`RegClo£Key
+ (
+cÚÃùiÚ_key
+);
+
+3183 ++
+i
+;
+
+3186 
+	`RegClo£Key
+ (
+ÃtwÜk_cÚÃùiÚs_key
+);
+
+3188  
+fœ¡
+;
+
+3189 
+	}
+}
+
+3195 
+	$v”ify_255_255_255_252
+ (
+š_addr_t
+ 
+loÿl
+, in_addr_ˆ
+»mÙe
+)
+
+3197 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3198 cÚ¡ 
+mask
+ = 3;
+
+3199 cÚ¡ *
+”r
+ = 
+NULL
+;
+
+3201 ià(
+loÿl
+ =ð
+»mÙe
+)
+
+3203 
+”r
+ = "must be different";
+
+3204 
+”rÜ
+;
+
+3206 ià((
+loÿl
+ & (~
+mask
+)è!ð(
+»mÙe
+ & (~mask)))
+
+3208 
+”r
+ = "mustƒxist within�he same 255.255.255.252 subnet. This is‡†imitation of --dev�un when used with�he TAP-WIN32 driver";
+
+3209 
+”rÜ
+;
+
+3211 ià((
+loÿl
+ & 
+mask
+) == 0
+
+3212 || (
+loÿl
+ & 
+mask
+) == 3
+
+3213 || (
+»mÙe
+ & 
+mask
+) == 0
+
+3214 || (
+»mÙe
+ & 
+mask
+) == 3)
+
+3216 
+”r
+ = "cannot use�he first or†ast‡ddress within‡ given 255.255.255.252 subnet. This is‡†imitation of --dev�un when used with�he TAP-WIN32 driver";
+
+3217 
+”rÜ
+;
+
+3220 
+	`gc_ä“
+ (&
+gc
+);
+
+3223 
+”rÜ
+:
+
+3224 
+	`msg
+ (
+M_FATAL
+, "Th”�i ¨´obËm iÀyou¸£ËùiÚ oà--ifcÚfigƒndpošt [loÿl=%s,„emÙe=%s]. Th�loÿÈªd„emÙ�VPNƒndpošt %s. Try '" 
+PACKAGE
+ " --show-valid-subnets' option for more info.",
+
+3225 
+	`´št_š_addr_t
+ (
+loÿl
+, 0, &
+gc
+),
+
+3226 
+	`´št_š_addr_t
+ (
+»mÙe
+, 0, &
+gc
+),
+
+3227 
+”r
+);
+
+3228 
+	`gc_ä“
+ (&
+gc
+);
+
+3229 
+	}
+}
+
+3231 
+	$show_v®id_wš32_tun_subÃts
+ ()
+
+3233 
+i
+;
+
+3234 
+cÞ
+ = 0;
+
+3236 
+	`´štf
+ ("On Windows,…oint-to-point IP support (i.e. --dev�un)\n");
+
+3237 
+	`´štf
+ ("isƒmulated by�he TAP-Windows driver. The major†imitation\n");
+
+3238 
+	`´štf
+ ("imposed by�his‡pproach is�hat�he --ifconfig†ocal‡nd\n");
+
+3239 
+	`´štf
+ ("remoteƒndpoints must be…art of�he same 255.255.255.252\n");
+
+3240 
+	`´štf
+ ("subnet. The following†ist showsƒxamples ofƒndpoint\n");
+
+3241 
+	`´štf
+ ("pairs which satisfy�his„equirement. Only�he final\n");
+
+3242 
+	`´štf
+ ("component of�he IP‡ddress…airs is‡t issue.\n\n");
+
+3243 
+	`´štf
+ ("As‡nƒxample,�he following option would be correct:\n");
+
+3244 
+	`´štf
+ (" --ifconfig 10.7.0.5 10.7.0.6 (on host A)\n");
+
+3245 
+	`´štf
+ (" --ifconfig 10.7.0.6 10.7.0.5 (on host B)\n");
+
+3246 
+	`´štf
+ ("because [5,6] is…art of�he below†ist.\n\n");
+
+3248 
+i
+ = 0; i < 256; i += 4)
+
+3250 
+	`´štf
+("[%3d,%3d] ", 
+i
++1, i+2);
+
+3251 ià(++
+cÞ
+ > 4)
+
+3253 
+cÞ
+ = 0;
+
+3254 
+	`´štf
+ ("\n");
+
+3257 ià(
+cÞ
+)
+
+3258 
+	`´štf
+ ("\n");
+
+3259 
+	}
+}
+
+3262 
+	$show_�p_wš_ad­‹rs
+ (
+msgËv
+, 
+w¬Æev
+)
+
+3264 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3266 
+boÞ
+ 
+w¬n_·Ãl_nuÎ
+ = 
+çl£
+;
+
+3267 
+boÞ
+ 
+w¬n_·Ãl_dup
+ = 
+çl£
+;
+
+3268 
+boÞ
+ 
+w¬n_�p_dup
+ = 
+çl£
+;
+
+3270 
+lšks
+;
+
+3272 cÚ¡ 
+�p_»g
+ *
+Œ
+;
+
+3273 cÚ¡ 
+�p_»g
+ *
+Œ1
+;
+
+3274 cÚ¡ 
+·Ãl_»g
+ *
+´
+;
+
+3276 cÚ¡ 
+�p_»g
+ *�p_»g = 
+	`g‘_�p_»g
+ (&
+gc
+);
+
+3277 cÚ¡ 
+·Ãl_»g
+ *·Ãl_»g = 
+	`g‘_·Ãl_»g
+ (&
+gc
+);
+
+3279 
+	`msg
+ (
+msgËv
+, "Available TAP-WIN32‡dapters [name, GUID]:");
+
+3282 
+Œ
+ = 
+�p_»g
+;�¸!ð
+NULL
+;�¸ðŒ->
+Ãxt
+)
+
+3284 
+lšks
+ = 0;
+
+3287 
+´
+ = 
+·Ãl_»g
+;…¸!ð
+NULL
+;…¸ð´->
+Ãxt
+)
+
+3289 ià(!
+	`¡rcmp
+ (
+Œ
+->
+guid
+, 
+´
+->guid))
+
+3291 
+	`msg
+ (
+msgËv
+, "'%s' %s", 
+´
+->
+Çme
+, 
+Œ
+->
+guid
+);
+
+3292 ++
+lšks
+;
+
+3296 ià(
+lšks
+ > 1)
+
+3298 
+w¬n_·Ãl_dup
+ = 
+Œue
+;
+
+3300 ià(
+lšks
+ == 0)
+
+3304 
+w¬n_·Ãl_nuÎ
+ = 
+Œue
+;
+
+3305 
+	`msg
+ (
+msgËv
+, "[NULL] %s", 
+Œ
+->
+guid
+);
+
+3310 
+Œ
+ = 
+�p_»g
+;�¸!ð
+NULL
+;�¸ðŒ->
+Ãxt
+)
+
+3312 
+Œ1
+ = 
+�p_»g
+;�r1 !ð
+NULL
+;�r1 =�r1->
+Ãxt
+)
+
+3314 ià(
+Œ
+ !ð
+Œ1
+ && !
+	`¡rcmp
+ (Œ->
+guid
+,�r1->guid))
+
+3315 
+w¬n_�p_dup
+ = 
+Œue
+;
+
+3320 ià(
+w¬n_�p_dup
+)
+
+3321 
+	`msg
+ (
+w¬Æev
+, "WARNING: Some TAP-Windows‡dapters have duplicate GUIDs");
+
+3323 ià(
+w¬n_·Ãl_dup
+)
+
+3324 
+	`msg
+ (
+w¬Æev
+, "WARNING: Some TAP-Windows‡dapters have duplicate†inks from�he Network Connections control…anel");
+
+3326 ià(
+w¬n_·Ãl_nuÎ
+)
+
+3327 
+	`msg
+ (
+w¬Æev
+, "WARNING: Some TAP-Windows‡dapters have‚o†ink from�he Network Connections control…anel");
+
+3329 
+	`gc_ä“
+ (&
+gc
+);
+
+3330 
+	}
+}
+
+3335 
+boÞ
+
+
+3336 
+	$is_�p_wš
+ (cÚ¡ *
+guid
+, cÚ¡ 
+�p_»g
+ *tap_reg)
+
+3338 cÚ¡ 
+�p_»g
+ *
+Œ
+;
+
+3340 
+Œ
+ = 
+�p_»g
+;�¸!ð
+NULL
+;�¸ðŒ->
+Ãxt
+)
+
+3342 ià(
+guid
+ && !
+	`¡rcmp
+ (
+Œ
+->guid, guid))
+
+3343  
+Œue
+;
+
+3346  
+çl£
+;
+
+3347 
+	}
+}
+
+3350 
+	$guid_to_Çme
+ (cÚ¡ *
+guid
+, cÚ¡ 
+·Ãl_»g
+ *panel_reg)
+
+3352 cÚ¡ 
+·Ãl_»g
+ *
+´
+;
+
+3354 
+´
+ = 
+·Ãl_»g
+;…¸!ð
+NULL
+;…¸ð´->
+Ãxt
+)
+
+3356 ià(
+guid
+ && !
+	`¡rcmp
+ (
+´
+->guid, guid))
+
+3357  
+´
+->
+Çme
+;
+
+3360  
+NULL
+;
+
+3361 
+	}
+}
+
+3364 
+	$Çme_to_guid
+ (cÚ¡ *
+Çme
+, cÚ¡ 
+�p_»g
+ *�p_»g, cÚ¡ 
+·Ãl_»g
+ *panel_reg)
+
+3366 cÚ¡ 
+·Ãl_»g
+ *
+´
+;
+
+3368 
+´
+ = 
+·Ãl_»g
+;…¸!ð
+NULL
+;…¸ð´->
+Ãxt
+)
+
+3370 ià(
+Çme
+ && !
+	`¡rcmp
+ (
+´
+->Çme,‚ameè&& 
+	`is_�p_wš
+ (´->
+guid
+, 
+�p_»g
+))
+
+3371  
+´
+->
+guid
+;
+
+3374  
+NULL
+;
+
+3375 
+	}
+}
+
+3378 
+	$©_Ëa¡_Úe_�p_wš
+ (cÚ¡ 
+�p_»g
+ *tap_reg)
+
+3380 ià(!
+�p_»g
+)
+
+3381 
+	`msg
+ (
+M_FATAL
+, "There‡re‚o TAP-Windows‡dapters on�his system. You should be‡ble�o create‡ TAP-Windows‡dapter by going�o Start -> All Programs -> TAP-Windows -> Utilities -> Add‡‚ew TAP-Windows virtualƒthernet‡dapter.");
+
+3382 
+	}
+}
+
+3389 
+	$g‘_un¥ecif›d_deviû_guid
+ (cÚ¡ 
+deviû_numb”
+,
+
+3390 *
+aùu®_Çme
+,
+
+3391 
+aùu®_Çme_size
+,
+
+3392 cÚ¡ 
+�p_»g
+ *
+�p_»g_¤c
+,
+
+3393 cÚ¡ 
+·Ãl_»g
+ *
+·Ãl_»g_¤c
+,
+
+3394 
+gc_¬’a
+ *
+gc
+)
+
+3396 cÚ¡ 
+�p_»g
+ *�p_»g = 
+�p_»g_¤c
+;
+
+3397 
+bufãr
+ 
+»t
+ = 
+	`þ—r_buf
+ ();
+
+3398 
+bufãr
+ 
+aùu®
+ = 
+	`þ—r_buf
+ ();
+
+3399 
+i
+;
+
+3401 
+	`ASSERT
+ (
+deviû_numb”
+ >= 0);
+
+3404 ià(!
+�p_»g
+)
+
+3405  
+NULL
+;
+
+3408 ià(
+aùu®_Çme
+)
+
+3410 
+	`ASSERT
+ (
+aùu®_Çme_size
+ > 0);
+
+3411 
+	`buf_£t_wr™e
+ (&
+aùu®
+, 
+aùu®_Çme
+, 
+aùu®_Çme_size
+);
+
+3415 
+i
+ = 0; i < 
+deviû_numb”
+; i++)
+
+3417 
+�p_»g
+ =�­_»g->
+Ãxt
+;
+
+3418 ià(!
+�p_»g
+)
+
+3419  
+NULL
+;
+
+3423 ià(
+aùu®_Çme
+)
+
+3425 cÚ¡ *
+aù
+ = 
+	`guid_to_Çme
+ (
+�p_»g
+->
+guid
+, 
+·Ãl_»g_¤c
+);
+
+3426 ià(
+aù
+)
+
+3427 
+	`buf_´štf
+ (&
+aùu®
+, "%s", 
+aù
+);
+
+3429 
+	`buf_´štf
+ (&
+aùu®
+, "%s", 
+�p_»g
+->
+guid
+);
+
+3433 
+»t
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+3434 
+	`buf_´štf
+ (&
+»t
+, "%s", 
+�p_»g
+->
+guid
+);
+
+3435  
+	`BSTR
+ (&
+»t
+);
+
+3436 
+	}
+}
+
+3443 
+	$g‘_deviû_guid
+ (cÚ¡ *
+Çme
+,
+
+3444 *
+aùu®_Çme
+,
+
+3445 
+aùu®_Çme_size
+,
+
+3446 cÚ¡ 
+�p_»g
+ *tap_reg,
+
+3447 cÚ¡ 
+·Ãl_»g
+ *panel_reg,
+
+3448 
+gc_¬’a
+ *
+gc
+)
+
+3450 
+bufãr
+ 
+»t
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+3451 
+bufãr
+ 
+aùu®
+ = 
+	`þ—r_buf
+ ();
+
+3454 ià(!
+�p_»g
+)
+
+3455  
+NULL
+;
+
+3458 ià(
+aùu®_Çme
+)
+
+3460 
+	`ASSERT
+ (
+aùu®_Çme_size
+ > 0);
+
+3461 
+	`buf_£t_wr™e
+ (&
+aùu®
+, 
+aùu®_Çme
+, 
+aùu®_Çme_size
+);
+
+3465 ià(
+	`is_�p_wš
+ (
+Çme
+, 
+�p_»g
+))
+
+3467 cÚ¡ *
+aù
+ = 
+	`guid_to_Çme
+ (
+Çme
+, 
+·Ãl_»g
+);
+
+3468 
+	`buf_´štf
+ (&
+»t
+, "%s", 
+Çme
+);
+
+3469 ià(
+aù
+)
+
+3470 
+	`buf_´štf
+ (&
+aùu®
+, "%s", 
+aù
+);
+
+3472 
+	`buf_´štf
+ (&
+aùu®
+, "%s", 
+Çme
+);
+
+3473  
+	`BSTR
+ (&
+»t
+);
+
+3478 cÚ¡ *
+guid
+ = 
+	`Çme_to_guid
+ (
+Çme
+, 
+�p_»g
+, 
+·Ãl_»g
+);
+
+3479 ià(
+guid
+)
+
+3481 
+	`buf_´štf
+ (&
+aùu®
+, "%s", 
+Çme
+);
+
+3482 
+	`buf_´štf
+ (&
+»t
+, "%s", 
+guid
+);
+
+3483  
+	`BSTR
+ (&
+»t
+);
+
+3487  
+NULL
+;
+
+3488 
+	}
+}
+
+3493 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+
+3494 
+	$g‘_ad­‹r_šfo_li¡
+ (
+gc_¬’a
+ *
+gc
+)
+
+3496 
+ULONG
+ 
+size
+ = 0;
+
+3497 
+IP_ADAPTER_INFO
+ *
+pi
+ = 
+NULL
+;
+
+3498 
+DWORD
+ 
+¡©us
+;
+
+3500 ià((
+¡©us
+ = 
+	`G‘Ad­‹rsInfo
+ (
+NULL
+, &
+size
+)è!ð
+ERROR_BUFFER_OVERFLOW
+)
+
+3502 
+	`msg
+ (
+M_INFO
+, "GetAdaptersInfo #1 failed (status=%u) : %s",
+
+3503 ()
+¡©us
+,
+
+3504 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3508 
+pi
+ = (
+PIP_ADAPTER_INFO
+è
+	`gc_m®loc
+ (
+size
+, 
+çl£
+, 
+gc
+);
+
+3509 ià((
+¡©us
+ = 
+	`G‘Ad­‹rsInfo
+ (
+pi
+, &
+size
+)è=ð
+NO_ERROR
+)
+
+3510  
+pi
+;
+
+3513 
+	`msg
+ (
+M_INFO
+, "GetAdaptersInfo #2 failed (status=%u) : %s",
+
+3514 ()
+¡©us
+,
+
+3515 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3518  
+pi
+;
+
+3519 
+	}
+}
+
+3521 cÚ¡ 
+IP_PER_ADAPTER_INFO
+ *
+
+3522 
+	$g‘_³r_ad­‹r_šfo
+ (cÚ¡ 
+DWORD
+ 
+šdex
+, 
+gc_¬’a
+ *
+gc
+)
+
+3524 
+ULONG
+ 
+size
+ = 0;
+
+3525 
+IP_PER_ADAPTER_INFO
+ *
+pi
+ = 
+NULL
+;
+
+3526 
+DWORD
+ 
+¡©us
+;
+
+3528 ià(
+šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3530 ià((
+¡©us
+ = 
+	`G‘P”Ad­‹rInfo
+ (
+šdex
+, 
+NULL
+, &
+size
+)è!ð
+ERROR_BUFFER_OVERFLOW
+)
+
+3532 
+	`msg
+ (
+M_INFO
+, "GetPerAdapterInfo #1 failed (status=%u) : %s",
+
+3533 ()
+¡©us
+,
+
+3534 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3538 
+pi
+ = (
+PIP_PER_ADAPTER_INFO
+è
+	`gc_m®loc
+ (
+size
+, 
+çl£
+, 
+gc
+);
+
+3539 ià((
+¡©us
+ = 
+	`G‘P”Ad­‹rInfo
+ ((
+ULONG
+)
+šdex
+, 
+pi
+, &
+size
+)è=ð
+ERROR_SUCCESS
+)
+
+3540  
+pi
+;
+
+3543 
+	`msg
+ (
+M_INFO
+, "GetPerAdapterInfo #2 failed (status=%u) : %s",
+
+3544 ()
+¡©us
+,
+
+3545 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3549  
+pi
+;
+
+3550 
+	}
+}
+
+3552 cÚ¡ 
+IP_INTERFACE_INFO
+ *
+
+3553 
+	$g‘_š‹rçû_šfo_li¡
+ (
+gc_¬’a
+ *
+gc
+)
+
+3555 
+ULONG
+ 
+size
+ = 0;
+
+3556 
+IP_INTERFACE_INFO
+ *
+ii
+ = 
+NULL
+;
+
+3557 
+DWORD
+ 
+¡©us
+;
+
+3559 ià((
+¡©us
+ = 
+	`G‘IÁ”çûInfo
+ (
+NULL
+, &
+size
+)è!ð
+ERROR_INSUFFICIENT_BUFFER
+)
+
+3561 
+	`msg
+ (
+M_INFO
+, "GetInterfaceInfo #1 failed (status=%u) : %s",
+
+3562 ()
+¡©us
+,
+
+3563 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3567 
+ii
+ = (
+PIP_INTERFACE_INFO
+è
+	`gc_m®loc
+ (
+size
+, 
+çl£
+, 
+gc
+);
+
+3568 ià((
+¡©us
+ = 
+	`G‘IÁ”çûInfo
+ (
+ii
+, &
+size
+)è=ð
+NO_ERROR
+)
+
+3569  
+ii
+;
+
+3572 
+	`msg
+ (
+M_INFO
+, "GetInterfaceInfo #2 failed (status=%u) : %s",
+
+3573 ()
+¡©us
+,
+
+3574 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, 
+gc
+));
+
+3577  
+ii
+;
+
+3578 
+	}
+}
+
+3580 cÚ¡ 
+IP_ADAPTER_INDEX_MAP
+ *
+
+3581 
+	$g‘_š‹rçû_šfo
+ (
+DWORD
+ 
+šdex
+, 
+gc_¬’a
+ *
+gc
+)
+
+3583 cÚ¡ 
+IP_INTERFACE_INFO
+ *
+li¡
+ = 
+	`g‘_š‹rçû_šfo_li¡
+ (
+gc
+);
+
+3584 ià(
+li¡
+)
+
+3586 
+i
+;
+
+3587 
+i
+ = 0; i < 
+li¡
+->
+NumAd­‹rs
+; ++i)
+
+3589 cÚ¡ 
+IP_ADAPTER_INDEX_MAP
+ *
+š‹r
+ = &
+li¡
+->
+Ad­‹r
+[
+i
+];
+
+3590 ià(
+šdex
+ =ð
+š‹r
+->
+Index
+)
+
+3591  
+š‹r
+;
+
+3594  
+NULL
+;
+
+3595 
+	}
+}
+
+3602 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+
+3603 
+	$g‘_ad­‹r
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+, 
+DWORD
+ 
+šdex
+)
+
+3605 ià(
+ai
+ && 
+šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3607 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+a
+;
+
+3610 
+a
+ = 
+ai
+;‡ !ð
+NULL
+;‡ =‡->
+Next
+)
+
+3612 ià(
+a
+->
+Index
+ =ð
+šdex
+)
+
+3613  
+a
+;
+
+3616  
+NULL
+;
+
+3617 
+	}
+}
+
+3619 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+
+3620 
+	$g‘_ad­‹r_šfo
+ (
+DWORD
+ 
+šdex
+, 
+gc_¬’a
+ *
+gc
+)
+
+3622  
+	`g‘_ad­‹r
+ (
+	`g‘_ad­‹r_šfo_li¡
+ (
+gc
+), 
+šdex
+);
+
+3623 
+	}
+}
+
+3626 
+	$g‘_ad­‹r_n_�_Ãtmask
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+)
+
+3628 ià(
+ai
+)
+
+3630 
+n
+ = 0;
+
+3631 cÚ¡ 
+IP_ADDR_STRING
+ *
+�
+ = &
+ai
+->
+IpAdd»ssLi¡
+;
+
+3633 
+�
+)
+
+3635 ++
+n
+;
+
+3636 
+�
+ = ip->
+Next
+;
+
+3638  
+n
+;
+
+3642 
+	}
+}
+
+3644 
+boÞ
+
+
+3645 
+	$g‘_ad­‹r_�_Ãtmask
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+, cÚ¡ 
+n
+, 
+š_addr_t
+ *
+�
+, in_addr_ˆ*
+Ãtmask
+)
+
+3647 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3648 *
+�
+ = 0;
+
+3649 *
+Ãtmask
+ = 0;
+
+3651 ià(
+ai
+)
+
+3653 cÚ¡ 
+IP_ADDR_STRING
+ *
+�li¡
+ = &
+ai
+->
+IpAdd»ssLi¡
+;
+
+3654 
+i
+ = 0;
+
+3656 
+�li¡
+)
+
+3658 ià(
+i
+ =ð
+n
+)
+
+3660 ++
+i
+;
+
+3661 
+�li¡
+ = i¶i¡->
+Next
+;
+
+3664 ià(
+�li¡
+)
+
+3666 cÚ¡ 
+g‘addr_æags
+ = 
+GETADDR_HOST_ORDER
+;
+
+3667 cÚ¡ *
+�_¡r
+ = 
+�li¡
+->
+IpAdd»ss
+.
+SŒšg
+;
+
+3668 cÚ¡ *
+Ãtmask_¡r
+ = 
+�li¡
+->
+IpMask
+.
+SŒšg
+;
+
+3669 
+boÞ
+ 
+sucûed1
+ = 
+çl£
+;
+
+3670 
+boÞ
+ 
+sucûed2
+ = 
+çl£
+;
+
+3672 ià(
+�_¡r
+ && 
+Ãtmask_¡r
+ && 
+	`¡¾’
+ (ip_str) && strlen (netmask_str))
+
+3674 *
+�
+ = 
+	`g‘addr
+ (
+g‘addr_æags
+, 
+�_¡r
+, 0, &
+sucûed1
+, 
+NULL
+);
+
+3675 *
+Ãtmask
+ = 
+	`g‘addr
+ (
+g‘addr_æags
+, 
+Ãtmask_¡r
+, 0, &
+sucûed2
+, 
+NULL
+);
+
+3676 
+»t
+ = (
+sucûed1
+ =ð
+Œue
+ && 
+sucûed2
+ ==�rue);
+
+3681  
+»t
+;
+
+3682 
+	}
+}
+
+3684 
+boÞ
+
+
+3685 
+	$‹¡_ad­‹r_�_Ãtmask
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+, cÚ¡ 
+š_addr_t
+ 
+�
+, cÚ¡ in_addr_ˆ
+Ãtmask
+)
+
+3687 ià(
+ai
+)
+
+3689 
+š_addr_t
+ 
+�_ad­‹r
+ = 0;
+
+3690 
+š_addr_t
+ 
+Ãtmask_ad­‹r
+ = 0;
+
+3691 cÚ¡ 
+boÞ
+ 
+¡©us
+ = 
+	`g‘_ad­‹r_�_Ãtmask
+ (
+ai
+, 0, &
+�_ad­‹r
+, &
+Ãtmask_ad­‹r
+);
+
+3692  (
+¡©us
+ && 
+�_ad­‹r
+ =ð
+�
+ && 
+Ãtmask_ad­‹r
+ =ð
+Ãtmask
+);
+
+3695  
+çl£
+;
+
+3696 
+	}
+}
+
+3698 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+
+3699 
+	$g‘_tun_ad­‹r
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+)
+
+3701 ià(
+li¡
+ && 
+‰
+)
+
+3702  
+	`g‘_ad­‹r
+ (
+li¡
+, 
+‰
+->
+ad­‹r_šdex
+);
+
+3704  
+NULL
+;
+
+3705 
+	}
+}
+
+3707 
+boÞ
+
+
+3708 
+	$is_ad­‹r_up
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+)
+
+3710 
+i
+;
+
+3711 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3713 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+ = 
+	`g‘_tun_ad­‹r
+ (
+‰
+, 
+li¡
+);
+
+3715 ià(
+ai
+)
+
+3717 cÚ¡ 
+n
+ = 
+	`g‘_ad­‹r_n_�_Ãtmask
+ (
+ai
+);
+
+3720 
+i
+ = 0; i < 
+n
+; ++i)
+
+3722 
+š_addr_t
+ 
+�
+, 
+Ãtmask
+;
+
+3723 ià(
+	`g‘_ad­‹r_�_Ãtmask
+ (
+ai
+, 
+i
+, &
+�
+, &
+Ãtmask
+))
+
+3725 ià(
+‰
+->
+loÿl
+ &&�t->
+ad­‹r_Ãtmask
+)
+
+3728 ià(
+‰
+->
+loÿl
+ =ð
+�
+ &&�t->
+ad­‹r_Ãtmask
+ =ð
+Ãtmask
+)
+
+3729 
+»t
+ = 
+Œue
+;
+
+3734 ià(
+�
+ && 
+Ãtmask
+)
+
+3735 
+»t
+ = 
+Œue
+;
+
+3741 
+»t
+ = 
+Œue
+;
+
+3743  
+»t
+;
+
+3744 
+	}
+}
+
+3746 
+boÞ
+
+
+3747 
+	$is_�_š_ad­‹r_subÃt
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+, cÚ¡ 
+š_addr_t
+ 
+�
+, in_addr_ˆ*
+highe¡_Ãtmask
+)
+
+3749 
+i
+;
+
+3750 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+3752 ià(
+highe¡_Ãtmask
+)
+
+3753 *
+highe¡_Ãtmask
+ = 0;
+
+3755 ià(
+ai
+)
+
+3757 cÚ¡ 
+n
+ = 
+	`g‘_ad­‹r_n_�_Ãtmask
+ (
+ai
+);
+
+3758 
+i
+ = 0; i < 
+n
+; ++i)
+
+3760 
+š_addr_t
+ 
+ad­‹r_�
+, 
+ad­‹r_Ãtmask
+;
+
+3761 ià(
+	`g‘_ad­‹r_�_Ãtmask
+ (
+ai
+, 
+i
+, &
+ad­‹r_�
+, &
+ad­‹r_Ãtmask
+))
+
+3763 ià(
+ad­‹r_�
+ && 
+ad­‹r_Ãtmask
+ && (
+�
+ &‡dapter_netmask) == (adapter_ip &‡dapter_netmask))
+
+3765 ià(
+highe¡_Ãtmask
+ && 
+ad­‹r_Ãtmask
+ > *highest_netmask)
+
+3766 *
+highe¡_Ãtmask
+ = 
+ad­‹r_Ãtmask
+;
+
+3767 
+»t
+ = 
+Œue
+;
+
+3772  
+»t
+;
+
+3773 
+	}
+}
+
+3775 
+DWORD
+
+
+3776 
+	$ad­‹r_šdex_of_�
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+,
+
+3777 cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+3778 *
+couÁ
+,
+
+3779 
+š_addr_t
+ *
+Ãtmask
+)
+
+3781 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3782 
+DWORD
+ 
+»t
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+3783 
+š_addr_t
+ 
+highe¡_Ãtmask
+ = 0;
+
+3784 
+boÞ
+ 
+fœ¡
+ = 
+Œue
+;
+
+3786 ià(
+couÁ
+)
+
+3787 *
+couÁ
+ = 0;
+
+3789 
+li¡
+)
+
+3791 
+š_addr_t
+ 
+hn
+;
+
+3793 ià(
+	`is_�_š_ad­‹r_subÃt
+ (
+li¡
+, 
+�
+, &
+hn
+))
+
+3795 ià(
+fœ¡
+ || 
+hn
+ > 
+highe¡_Ãtmask
+)
+
+3797 
+highe¡_Ãtmask
+ = 
+hn
+;
+
+3798 ià(
+couÁ
+)
+
+3799 *
+couÁ
+ = 1;
+
+3800 
+»t
+ = 
+li¡
+->
+Index
+;
+
+3801 
+fœ¡
+ = 
+çl£
+;
+
+3803 ià(
+hn
+ =ð
+highe¡_Ãtmask
+)
+
+3805 ià(
+couÁ
+)
+
+3806 ++*
+couÁ
+;
+
+3809 
+li¡
+ =†i¡->
+Next
+;
+
+3812 
+	`dmsg
+ (
+D_ROUTE_DEBUG
+, "DEBUG: IP Locate: ip=%s‚m=%s index=%d count=%d",
+
+3813 
+	`´št_š_addr_t
+ (
+�
+, 0, &
+gc
+),
+
+3814 
+	`´št_š_addr_t
+ (
+highe¡_Ãtmask
+, 0, &
+gc
+),
+
+3815 ()
+»t
+,
+
+3816 
+couÁ
+ ? *count : -1);
+
+3818 ià(
+»t
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+ && 
+couÁ
+)
+
+3819 *
+couÁ
+ = 0;
+
+3821 ià(
+Ãtmask
+)
+
+3822 *
+Ãtmask
+ = 
+highe¡_Ãtmask
+;
+
+3824 
+	`gc_ä“
+ (&
+gc
+);
+
+3825  
+»t
+;
+
+3826 
+	}
+}
+
+3833 
+	#DHCP_STATUS_UNDEF
+ 0
+
+	)
+
+3834 
+	#DHCP_STATUS_ENABLED
+ 1
+
+	)
+
+3835 
+	#DHCP_STATUS_DISABLED
+ 2
+
+	)
+
+3838 
+	$dhý_¡©us
+ (
+DWORD
+ 
+šdex
+)
+
+3840 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3841 
+»t
+ = 
+DHCP_STATUS_UNDEF
+;
+
+3842 ià(
+šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3844 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+ = 
+	`g‘_ad­‹r_šfo
+ (
+šdex
+, &
+gc
+);
+
+3846 ià(
+ai
+)
+
+3848 ià(
+ai
+->
+DhýEÇbËd
+)
+
+3849 
+»t
+ = 
+DHCP_STATUS_ENABLED
+;
+
+3851 
+»t
+ = 
+DHCP_STATUS_DISABLED
+;
+
+3854 
+	`gc_ä“
+ (&
+gc
+);
+
+3855  
+»t
+;
+
+3856 
+	}
+}
+
+3863 
+	$d–‘e_‹mp_add»s£s
+ (
+DWORD
+ 
+šdex
+)
+
+3865 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3866 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+a
+ = 
+	`g‘_ad­‹r_šfo
+ (
+šdex
+, &
+gc
+);
+
+3868 ià(
+a
+)
+
+3870 cÚ¡ 
+IP_ADDR_STRING
+ *
+�
+ = &
+a
+->
+IpAdd»ssLi¡
+;
+
+3871 
+�
+)
+
+3873 
+DWORD
+ 
+¡©us
+;
+
+3874 cÚ¡ 
+DWORD
+ 
+cÚ‹xt
+ = 
+�
+->
+CÚ‹xt
+;
+
+3876 ià((
+¡©us
+ = 
+	`D–‘eIPAdd»ss
+ ((
+ULONG
+è
+cÚ‹xt
+)è=ð
+NO_ERROR
+)
+
+3878 
+	`msg
+ (
+M_INFO
+, "Successfully deleted…reviously set dynamic IP/netmask: %s/%s",
+
+3879 
+�
+->
+IpAdd»ss
+.
+SŒšg
+,
+
+3880 
+�
+->
+IpMask
+.
+SŒšg
+);
+
+3884 cÚ¡ *
+em±y
+ = "0.0.0.0";
+
+3885 ià(
+	`¡rcmp
+ (
+�
+->
+IpAdd»ss
+.
+SŒšg
+, 
+em±y
+)
+
+3886 || 
+	`¡rcmp
+ (
+�
+->
+IpMask
+.
+SŒšg
+, 
+em±y
+))
+
+3887 
+	`msg
+ (
+M_INFO
+, "NOTE: could‚ot delete…reviously set dynamic IP/netmask: %s/%s (status=%u)",
+
+3888 
+�
+->
+IpAdd»ss
+.
+SŒšg
+,
+
+3889 
+�
+->
+IpMask
+.
+SŒšg
+,
+
+3890 ()
+¡©us
+);
+
+3892 
+�
+ = ip->
+Next
+;
+
+3895 
+	`gc_ä“
+ (&
+gc
+);
+
+3896 
+	}
+}
+
+3901 
+DWORD
+
+
+3902 
+	$g‘_ad­‹r_šdex_m‘hod_1
+ (cÚ¡ *
+guid
+)
+
+3904 
+DWORD
+ 
+šdex
+;
+
+3905 
+ULONG
+ 
+ašdex
+;
+
+3906 
+wch¬_t
+ 
+wbuf
+[256];
+
+3907 
+	`_¢w´štf
+ (
+wbuf
+, 
+	`SIZE
+ (wbuf), 
+L
+"\\DEVICE\\TCPIP_%S", 
+guid
+);
+
+3908 
+wbuf
+ [
+	`SIZE
+(wbuf) - 1] = 0;
+
+3909 ià(
+	`G‘Ad­‹rIndex
+ (
+wbuf
+, &
+ašdex
+è!ð
+NO_ERROR
+)
+
+3910 
+šdex
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+3912 
+šdex
+ = (
+DWORD
+)
+ašdex
+;
+
+3913  
+šdex
+;
+
+3914 
+	}
+}
+
+3916 
+DWORD
+
+
+3917 
+	$g‘_ad­‹r_šdex_m‘hod_2
+ (cÚ¡ *
+guid
+)
+
+3919 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3920 
+DWORD
+ 
+šdex
+ = 
+TUN_ADAPTER_INDEX_INVALID
+;
+
+3922 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+3924 
+li¡
+)
+
+3926 ià(!
+	`¡rcmp
+ (
+guid
+, 
+li¡
+->
+Ad­‹rName
+))
+
+3928 
+šdex
+ = 
+li¡
+->
+Index
+;
+
+3931 
+li¡
+ =†i¡->
+Next
+;
+
+3934 
+	`gc_ä“
+ (&
+gc
+);
+
+3935  
+šdex
+;
+
+3936 
+	}
+}
+
+3938 
+DWORD
+
+
+3939 
+	$g‘_ad­‹r_šdex
+ (cÚ¡ *
+guid
+)
+
+3941 
+DWORD
+ 
+šdex
+;
+
+3942 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_1
+ (
+guid
+);
+
+3943 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3944 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_2
+ (
+guid
+);
+
+3945 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3946 
+	`msg
+ (
+M_INFO
+, "NOTE: could‚Ù g‘‡d­‹¸šdex fÜ %s", 
+guid
+);
+
+3947  
+šdex
+;
+
+3948 
+	}
+}
+
+3950 
+DWORD
+
+
+3951 
+	$g‘_ad­‹r_šdex_æexibË
+ (cÚ¡ *
+Çme
+)
+
+3953 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+3954 
+DWORD
+ 
+šdex
+;
+
+3955 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_1
+ (
+Çme
+);
+
+3956 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3957 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_2
+ (
+Çme
+);
+
+3958 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3960 cÚ¡ 
+�p_»g
+ *�p_»g = 
+	`g‘_�p_»g
+ (&
+gc
+);
+
+3961 cÚ¡ 
+·Ãl_»g
+ *·Ãl_»g = 
+	`g‘_·Ãl_»g
+ (&
+gc
+);
+
+3962 cÚ¡ *
+guid
+ = 
+	`Çme_to_guid
+ (
+Çme
+, 
+�p_»g
+, 
+·Ãl_»g
+);
+
+3963 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_1
+ (
+guid
+);
+
+3964 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3965 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_m‘hod_2
+ (
+guid
+);
+
+3967 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+3968 
+	`msg
+ (
+M_INFO
+, "NOTE: could‚Ù g‘‡d­‹¸šdex fÜ‚ame/GUID '%s'", 
+Çme
+);
+
+3969 
+	`gc_ä“
+ (&
+gc
+);
+
+3970  
+šdex
+;
+
+3971 
+	}
+}
+
+3977 
+	$fÜm©_�_addr_¡ršg
+ (cÚ¡ 
+IP_ADDR_STRING
+ *
+�
+, 
+gc_¬’a
+ *
+gc
+)
+
+3979 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+3980 
+�
+)
+
+3982 
+	`buf_´štf
+ (&
+out
+, "%s", 
+�
+->
+IpAdd»ss
+.
+SŒšg
+);
+
+3983 ià(
+	`¡¾’
+ (
+�
+->
+IpMask
+.
+SŒšg
+))
+
+3985 
+	`buf_´štf
+ (&
+out
+, "/");
+
+3986 
+	`buf_´štf
+ (&
+out
+, "%s", 
+�
+->
+IpMask
+.
+SŒšg
+);
+
+3988 
+	`buf_´štf
+ (&
+out
+, " ");
+
+3989 
+�
+ = ip->
+Next
+;
+
+3991  
+	`BSTR
+ (&
+out
+);
+
+3992 
+	}
+}
+
+3998 
+	$show_ad­‹r
+ (
+msgËv
+, cÚ¡ 
+IP_ADAPTER_INFO
+ *
+a
+, 
+gc_¬’a
+ *
+gc
+)
+
+4000 
+	`msg
+ (
+msgËv
+, "%s", 
+a
+->
+Desü�tiÚ
+);
+
+4001 
+	`msg
+ (
+msgËv
+, " Index = %d", ()
+a
+->
+Index
+);
+
+4002 
+	`msg
+ (
+msgËv
+, " GUID = %s", 
+a
+->
+Ad­‹rName
+);
+
+4003 
+	`msg
+ (
+msgËv
+, " IP = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+a
+->
+IpAdd»ssLi¡
+, 
+gc
+));
+
+4004 
+	`msg
+ (
+msgËv
+, " MAC = %s", 
+	`fÜm©_hex_ex
+ (
+a
+->
+Add»ss
+,‡->
+Add»ssL’gth
+, 0, 1, ":", 
+gc
+));
+
+4005 
+	`msg
+ (
+msgËv
+, " GATEWAY = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+a
+->
+G©ewayLi¡
+, 
+gc
+));
+
+4006 ià(
+a
+->
+DhýEÇbËd
+)
+
+4008 
+	`msg
+ (
+msgËv
+, " DHCP SERV = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+a
+->
+DhýS”v”
+, 
+gc
+));
+
+4009 
+	`msg
+ (
+msgËv
+, " DHCP LEASE OBTAINED = %s", 
+	`time_¡ršg
+ (
+a
+->
+L—£Ob�šed
+, 0, 
+çl£
+, 
+gc
+));
+
+4010 
+	`msg
+ (
+msgËv
+, " DHCP LEASE EXPIRES = %s", 
+	`time_¡ršg
+ (
+a
+->
+L—£Expœes
+, 0, 
+çl£
+, 
+gc
+));
+
+4012 ià(
+a
+->
+HaveWšs
+)
+
+4014 
+	`msg
+ (
+msgËv
+, " PRI WINS = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+a
+->
+Prim¬yWšsS”v”
+, 
+gc
+));
+
+4015 
+	`msg
+ (
+msgËv
+, " SEC WINS = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+a
+->
+SecÚd¬yWšsS”v”
+, 
+gc
+));
+
+4019 cÚ¡ 
+IP_PER_ADAPTER_INFO
+ *
+·i
+ = 
+	`g‘_³r_ad­‹r_šfo
+ (
+a
+->
+Index
+, 
+gc
+);
+
+4020 ià(
+·i
+)
+
+4022 
+	`msg
+ (
+msgËv
+, " DNS SERV = %s", 
+	`fÜm©_�_addr_¡ršg
+ (&
+·i
+->
+DnsS”v”Li¡
+, 
+gc
+));
+
+4025 
+	}
+}
+
+4031 
+	$show_ad­‹rs
+ (
+msgËv
+)
+
+4033 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4034 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+4036 
+	`msg
+ (
+msgËv
+, "SYSTEM ADAPTER LIST");
+
+4037 ià(
+ai
+)
+
+4039 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+a
+;
+
+4042 
+a
+ = 
+ai
+;‡ !ð
+NULL
+;‡ =‡->
+Next
+)
+
+4044 
+	`show_ad­‹r
+ (
+msgËv
+, 
+a
+, &
+gc
+);
+
+4047 
+	`gc_ä“
+ (&
+gc
+);
+
+4048 
+	}
+}
+
+4058 
+	$�p_®low_nÚadmš_acûss_hªdË
+ (cÚ¡ *
+deviû_·th
+, 
+HANDLE
+ 
+hªd
+)
+
+4060 
+£cur™y_©Œibu‹s
+ 
+§
+;
+
+4061 
+BOOL
+ 
+¡©us
+;
+
+4063 ià(!
+	`š™_£cur™y_©Œibu‹s_®low_®l
+ (&
+§
+))
+
+4064 
+	`msg
+ (
+M_ERR
+, "Error: init SA failed");
+
+4066 
+¡©us
+ = 
+	`S‘K”ÃlObjeùSecur™y
+ (
+hªd
+, 
+DACL_SECURITY_INFORMATION
+, &
+§
+.
+sd
+);
+
+4067 ià(!
+¡©us
+)
+
+4069 
+	`msg
+ (
+M_ERRNO
+, "E¼Ü: S‘K”ÃlObjeùSecur™y fažed oÀ%s", 
+deviû_·th
+);
+
+4073 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "TAP-Wšdow deviû: % [NÚ-admš‡cûs ®lowed]", 
+deviû_·th
+);
+
+4075 
+	}
+}
+
+4078 
+	$�p_®low_nÚadmš_acûss
+ (cÚ¡ *
+dev_node
+)
+
+4080 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4081 cÚ¡ 
+�p_»g
+ *�p_»g = 
+	`g‘_�p_»g
+ (&
+gc
+);
+
+4082 cÚ¡ 
+·Ãl_»g
+ *·Ãl_»g = 
+	`g‘_·Ãl_»g
+ (&
+gc
+);
+
+4083 cÚ¡ *
+deviû_guid
+ = 
+NULL
+;
+
+4084 
+HANDLE
+ 
+hªd
+;
+
+4085 
+aùu®_bufãr
+[256];
+
+4086 
+deviû_·th
+[256];
+
+4088 
+	`©_Ëa¡_Úe_�p_wš
+ (
+�p_»g
+);
+
+4090 ià(
+dev_node
+)
+
+4093 
+deviû_guid
+ = 
+	`g‘_deviû_guid
+ (
+dev_node
+, 
+aùu®_bufãr
+,  (aùu®_bufãr), 
+�p_»g
+, 
+·Ãl_»g
+, &
+gc
+);
+
+4095 ià(!
+deviû_guid
+)
+
+4096 
+	`msg
+ (
+M_FATAL
+, "TAP-Wšdow ad­‹¸'%s'‚Ù found", 
+dev_node
+);
+
+4099 
+	`Ý’v²_¢´štf
+ (
+deviû_·th
+, (device_path), "%s%s%s",
+
+4100 
+USERMODEDEVICEDIR
+,
+
+4101 
+deviû_guid
+,
+
+4102 
+TAP_WIN_SUFFIX
+);
+
+4104 
+hªd
+ = 
+	`C»©eFže
+ (
+
+4105 
+deviû_·th
+,
+
+4106 
+MAXIMUM_ALLOWED
+,
+
+4109 
+OPEN_EXISTING
+,
+
+4110 
+FILE_ATTRIBUTE_SYSTEM
+ | 
+FILE_FLAG_OVERLAPPED
+,
+
+4114 ià(
+hªd
+ =ð
+INVALID_HANDLE_VALUE
+)
+
+4115 
+	`msg
+ (
+M_ERR
+, "C»©eFž�çžed oÀTAP deviû: %s", 
+deviû_·th
+);
+
+4117 
+	`�p_®low_nÚadmš_acûss_hªdË
+ (
+deviû_·th
+, 
+hªd
+);
+
+4118 
+	`Clo£HªdË
+ (
+hªd
+);
+
+4122 
+deviû_numb”
+ = 0;
+
+4125 
+Œue
+)
+
+4127 
+deviû_guid
+ = 
+	`g‘_un¥ecif›d_deviû_guid
+ (
+deviû_numb”
+,
+
+4128 
+aùu®_bufãr
+,
+
+4129  (
+aùu®_bufãr
+),
+
+4130 
+�p_»g
+,
+
+4131 
+·Ãl_»g
+,
+
+4132 &
+gc
+);
+
+4134 ià(!
+deviû_guid
+)
+
+4138 
+	`Ý’v²_¢´štf
+ (
+deviû_·th
+, (device_path), "%s%s%s",
+
+4139 
+USERMODEDEVICEDIR
+,
+
+4140 
+deviû_guid
+,
+
+4141 
+TAP_WIN_SUFFIX
+);
+
+4143 
+hªd
+ = 
+	`C»©eFže
+ (
+
+4144 
+deviû_·th
+,
+
+4145 
+MAXIMUM_ALLOWED
+,
+
+4148 
+OPEN_EXISTING
+,
+
+4149 
+FILE_ATTRIBUTE_SYSTEM
+ | 
+FILE_FLAG_OVERLAPPED
+,
+
+4153 ià(
+hªd
+ =ð
+INVALID_HANDLE_VALUE
+)
+
+4154 
+	`msg
+ (
+M_WARN
+, "C»©eFž�çžed oÀTAP deviû: %s", 
+deviû_·th
+);
+
+4157 
+	`�p_®low_nÚadmš_acûss_hªdË
+ (
+deviû_·th
+, 
+hªd
+);
+
+4158 
+	`Clo£HªdË
+ (
+hªd
+);
+
+4161 
+deviû_numb”
+++;
+
+4164 
+	`gc_ä“
+ (&
+gc
+);
+
+4165 
+	}
+}
+
+4170 
+boÞ
+
+
+4171 
+	$dhý_»Ëa£_by_ad­‹r_šdex
+(cÚ¡ 
+DWORD
+ 
+ad­‹r_šdex
+)
+
+4173 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4174 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+4175 cÚ¡ 
+IP_ADAPTER_INDEX_MAP
+ *
+š‹r
+ = 
+	`g‘_š‹rçû_šfo
+ (
+ad­‹r_šdex
+, &
+gc
+);
+
+4177 ià(
+š‹r
+)
+
+4179 
+DWORD
+ 
+¡©us
+ = 
+	`IpR–—£Add»ss
+ ((
+IP_ADAPTER_INDEX_MAP
+ *)
+š‹r
+);
+
+4180 ià(
+¡©us
+ =ð
+NO_ERROR
+)
+
+4182 
+	`msg
+ (
+D_TUNTAP_INFO
+, "TAP: DHCP‡ddress„eleased");
+
+4183 
+»t
+ = 
+Œue
+;
+
+4186 
+	`msg
+ (
+M_WARN
+, "NOTE: Release of DHCP-assigned IP‡ddress†ease on TAP-Windows‡dapter failed: %s (code=%u)",
+
+4187 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+),
+
+4188 ()
+¡©us
+);
+
+4191 
+	`gc_ä“
+ (&
+gc
+);
+
+4192  
+»t
+;
+
+4193 
+	}
+}
+
+4195 
+boÞ
+
+
+4196 
+	$dhý_»Ëa£
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+4198 ià(
+‰
+ &&�t->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_DHCP_MASQ
+ &&�t->
+ad­‹r_šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+4199  
+	`dhý_»Ëa£_by_ad­‹r_šdex
+ (
+‰
+->
+ad­‹r_šdex
+);
+
+4201  
+çl£
+;
+
+4202 
+	}
+}
+
+4204 
+boÞ
+
+
+4205 
+	$dhý_»Ãw_by_ad­‹r_šdex
+ (cÚ¡ 
+DWORD
+ 
+ad­‹r_šdex
+)
+
+4207 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4208 
+boÞ
+ 
+»t
+ = 
+çl£
+;
+
+4209 cÚ¡ 
+IP_ADAPTER_INDEX_MAP
+ *
+š‹r
+ = 
+	`g‘_š‹rçû_šfo
+ (
+ad­‹r_šdex
+, &
+gc
+);
+
+4211 ià(
+š‹r
+)
+
+4213 
+DWORD
+ 
+¡©us
+ = 
+	`IpR’ewAdd»ss
+ ((
+IP_ADAPTER_INDEX_MAP
+ *)
+š‹r
+);
+
+4214 ià(
+¡©us
+ =ð
+NO_ERROR
+)
+
+4216 
+	`msg
+ (
+D_TUNTAP_INFO
+, "TAP: DHCP‡ddress„enewal succeeded");
+
+4217 
+»t
+ = 
+Œue
+;
+
+4220 
+	`msg
+ (
+M_WARN
+, "WARNING: Failed�o„enew DHCP IP‡ddress†ease on TAP-Windows‡dapter: %s (code=%u)",
+
+4221 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+),
+
+4222 ()
+¡©us
+);
+
+4224 
+	`gc_ä“
+ (&
+gc
+);
+
+4225  
+»t
+;
+
+4226 
+	}
+}
+
+4228 
+boÞ
+
+
+4229 
+	$dhý_»Ãw
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+4231 ià(
+‰
+ &&�t->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_DHCP_MASQ
+ &&�t->
+ad­‹r_šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+4232  
+	`dhý_»Ãw_by_ad­‹r_šdex
+ (
+‰
+->
+ad­‹r_šdex
+);
+
+4234  
+çl£
+;
+
+4235 
+	}
+}
+
+4242 
+	$Ãtsh_commªd
+ (cÚ¡ 
+¬gv
+ *
+a
+, 
+n
+)
+
+4244 
+i
+;
+
+4245 
+i
+ = 0; i < 
+n
+; ++i)
+
+4247 
+boÞ
+ 
+¡©us
+;
+
+4248 
+	`Ý’v²_¦“p
+ (1);
+
+4249 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+4250 
+	`¬gv_msg_´efix
+ (
+M_INFO
+, 
+a
+, "NETSH");
+
+4251 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (
+a
+, 
+NULL
+, 0, "ERROR:‚etsh command failed");
+
+4252 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+4253 ià(
+¡©us
+)
+
+4255 
+	`Ý’v²_¦“p
+ (4);
+
+4257 
+	`msg
+ (
+M_FATAL
+, "NETSH: command failed");
+
+4258 
+	}
+}
+
+4261 
+	$�cÚfig_»gi¡”_dns
+ (cÚ¡ 
+’v_£t
+ *
+es
+)
+
+4263 
+¬gv
+‡rgv;
+
+4264 
+boÞ
+ 
+¡©us
+;
+
+4265 cÚ¡ 
+”r
+[] = "ERROR: Windows ipconfig command failed";
+
+4267 
+	`msg
+ (
+D_TUNTAP_INFO
+, "Start‚et commands...");
+
+4268 
+	`Ãtcmd_£m­hÜe_lock
+ ();
+
+4270 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+4272 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc stop dnscache",
+
+4273 
+	`g‘_wš_sys_·th
+(),
+
+4274 
+WIN_NET_PATH_SUFFIX
+);
+
+4275 
+	`¬gv_msg
+ (
+D_TUNTAP_INFO
+, &
+¬gv
+);
+
+4276 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+”r
+);
+
+4277 
+	`¬gv_»£t
+(&
+¬gv
+);
+
+4279 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc start dnscache",
+
+4280 
+	`g‘_wš_sys_·th
+(),
+
+4281 
+WIN_NET_PATH_SUFFIX
+);
+
+4282 
+	`¬gv_msg
+ (
+D_TUNTAP_INFO
+, &
+¬gv
+);
+
+4283 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+”r
+);
+
+4284 
+	`¬gv_»£t
+(&
+¬gv
+);
+
+4286 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc /flushdns",
+
+4287 
+	`g‘_wš_sys_·th
+(),
+
+4288 
+WIN_IPCONFIG_PATH_SUFFIX
+);
+
+4289 
+	`¬gv_msg
+ (
+D_TUNTAP_INFO
+, &
+¬gv
+);
+
+4290 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+”r
+);
+
+4291 
+	`¬gv_»£t
+(&
+¬gv
+);
+
+4293 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc /registerdns",
+
+4294 
+	`g‘_wš_sys_·th
+(),
+
+4295 
+WIN_IPCONFIG_PATH_SUFFIX
+);
+
+4296 
+	`¬gv_msg
+ (
+D_TUNTAP_INFO
+, &
+¬gv
+);
+
+4297 
+¡©us
+ = 
+	`Ý’v²_execve_check
+ (&
+¬gv
+, 
+es
+, 0, 
+”r
+);
+
+4298 
+	`¬gv_»£t
+(&
+¬gv
+);
+
+4300 
+	`Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+4301 
+	`msg
+ (
+D_TUNTAP_INFO
+, "End‚et commands...");
+
+4302 
+	}
+}
+
+4305 
+	$�_addr_¡ršg_to_¬¿y
+ (
+š_addr_t
+ *
+de¡
+, *
+de¡_Ën
+, cÚ¡ 
+IP_ADDR_STRING
+ *
+¤c
+)
+
+4307 
+i
+ = 0;
+
+4308 
+¤c
+)
+
+4310 cÚ¡ 
+g‘addr_æags
+ = 
+GETADDR_HOST_ORDER
+;
+
+4311 cÚ¡ *
+�_¡r
+ = 
+¤c
+->
+IpAdd»ss
+.
+SŒšg
+;
+
+4312 
+š_addr_t
+ 
+�
+ = 0;
+
+4313 
+boÞ
+ 
+sucûed
+ = 
+çl£
+;
+
+4315 ià(
+i
+ >ð*
+de¡_Ën
+)
+
+4317 ià(!
+�_¡r
+ || !
+	`¡¾’
+ (ip_str))
+
+4320 
+�
+ = 
+	`g‘addr
+ (
+g‘addr_æags
+, 
+�_¡r
+, 0, &
+sucûed
+, 
+NULL
+);
+
+4321 ià(!
+sucûed
+)
+
+4323 
+de¡
+[
+i
+++] = 
+�
+;
+
+4325 
+¤c
+ = src->
+Next
+;
+
+4327 *
+de¡_Ën
+ = 
+i
+;
+
+4331 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4332 
+	`msg
+ (
+M_INFO
+, "�_addr_¡ršg_to_¬¿y [%d]", *
+de¡_Ën
+);
+
+4333 
+i
+ = 0; i < *
+de¡_Ën
+; ++i)
+
+4335 
+	`msg
+ (
+M_INFO
+, "%s", 
+	`´št_š_addr_t
+ (
+de¡
+[
+i
+], 0, &
+gc
+));
+
+4337 
+	`gc_ä“
+ (&
+gc
+);
+
+4340 
+	}
+}
+
+4342 
+boÞ
+
+
+4343 
+	$�_addr_Úe_to_Úe
+ (cÚ¡ 
+š_addr_t
+ *
+a1
+, cÚ¡ 
+a1Ën
+, cÚ¡ 
+IP_ADDR_STRING
+ *
+Ÿs
+)
+
+4345 
+š_addr_t
+ 
+a2
+[8];
+
+4346 
+a2Ën
+ = 
+	`SIZE
+(
+a2
+);
+
+4347 
+i
+;
+
+4349 
+	`�_addr_¡ršg_to_¬¿y
+ (
+a2
+, &
+a2Ën
+, 
+Ÿs
+);
+
+4351 ià(
+a1Ën
+ !ð
+a2Ën
+)
+
+4352  
+çl£
+;
+
+4354 
+i
+ = 0; i < 
+a1Ën
+; ++i)
+
+4356 ià(
+a1
+[
+i
+] !ð
+a2
+[i])
+
+4357  
+çl£
+;
+
+4359  
+Œue
+;
+
+4360 
+	}
+}
+
+4362 
+boÞ
+
+
+4363 
+	$�_addr_memb”_of
+ (cÚ¡ 
+š_addr_t
+ 
+addr
+, cÚ¡ 
+IP_ADDR_STRING
+ *
+Ÿs
+)
+
+4365 
+š_addr_t
+ 
+¯
+[8];
+
+4366 
+Ën
+ = 
+	`SIZE
+(
+¯
+);
+
+4367 
+i
+;
+
+4369 
+	`�_addr_¡ršg_to_¬¿y
+ (
+¯
+, &
+Ën
+, 
+Ÿs
+);
+
+4370 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+4372 ià(
+addr
+ =ð
+¯
+[
+i
+])
+
+4373  
+Œue
+;
+
+4375  
+çl£
+;
+
+4376 
+	}
+}
+
+4379 
+	$Ãtsh_ifcÚfig_ÝtiÚs
+ (cÚ¡ *
+ty³
+,
+
+4380 cÚ¡ 
+š_addr_t
+ *
+addr_li¡
+,
+
+4381 cÚ¡ 
+addr_Ën
+,
+
+4382 cÚ¡ 
+IP_ADDR_STRING
+ *
+cu¼’t
+,
+
+4383 cÚ¡ *
+æex_Çme
+,
+
+4384 cÚ¡ 
+boÞ
+ 
+‹¡_fœ¡
+)
+
+4386 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4387 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+4388 
+boÞ
+ 
+d–‘e_fœ¡
+ = 
+çl£
+;
+
+4391 ià(
+‹¡_fœ¡
+)
+
+4393 ià(!
+	`�_addr_Úe_to_Úe
+ (
+addr_li¡
+, 
+addr_Ën
+, 
+cu¼’t
+))
+
+4394 
+d–‘e_fœ¡
+ = 
+Œue
+;
+
+4397 
+d–‘e_fœ¡
+ = 
+Œue
+;
+
+4400 ià(
+d–‘e_fœ¡
+)
+
+4402 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc interface ip delete %s %s‡ll",
+
+4403 
+	`g‘_wš_sys_·th
+(),
+
+4404 
+NETSH_PATH_SUFFIX
+,
+
+4405 
+ty³
+,
+
+4406 
+æex_Çme
+);
+
+4407 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 2);
+
+4412 
+couÁ
+ = 0;
+
+4413 
+i
+;
+
+4414 
+i
+ = 0; i < 
+addr_Ën
+; ++i)
+
+4416 ià(
+d–‘e_fœ¡
+ || !
+‹¡_fœ¡
+ || !
+	`�_addr_memb”_of
+ (
+addr_li¡
+[
+i
+], 
+cu¼’t
+))
+
+4418 cÚ¡ *
+fmt
+ = 
+couÁ
+ ?
+
+4422 
+	`¬gv_´štf
+ (&
+¬gv
+, 
+fmt
+,
+
+4423 
+	`g‘_wš_sys_·th
+(),
+
+4424 
+NETSH_PATH_SUFFIX
+,
+
+4425 
+ty³
+,
+
+4426 
+æex_Çme
+,
+
+4427 
+	`´št_š_addr_t
+ (
+addr_li¡
+[
+i
+], 0, &
+gc
+));
+
+4428 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 2);
+
+4430 ++
+couÁ
+;
+
+4434 
+	`msg
+ (
+M_INFO
+, "NETSH: \"%s\" %s %s [already set]",
+
+4435 
+æex_Çme
+,
+
+4436 
+ty³
+,
+
+4437 
+	`´št_š_addr_t
+ (
+addr_li¡
+[
+i
+], 0, &
+gc
+));
+
+4442 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+4443 
+	`gc_ä“
+ (&
+gc
+);
+
+4444 
+	}
+}
+
+4447 
+	$š™_�_addr_¡ršg2
+ (
+IP_ADDR_STRING
+ *
+de¡
+, cÚ¡ IP_ADDR_STRING *
+¤c1
+, cÚ¡ IP_ADDR_STRING *
+¤c2
+)
+
+4449 
+	`CLEAR
+ (
+de¡
+[0]);
+
+4450 
+	`CLEAR
+ (
+de¡
+[1]);
+
+4451 ià(
+¤c1
+)
+
+4453 
+de¡
+[0] = *
+¤c1
+;
+
+4454 
+de¡
+[0].
+Next
+ = 
+NULL
+;
+
+4456 ià(
+¤c2
+)
+
+4458 
+de¡
+[1] = *
+¤c2
+;
+
+4459 
+de¡
+[0].
+Next
+ = &dest[1];
+
+4460 
+de¡
+[1].
+Next
+ = 
+NULL
+;
+
+4462 
+	}
+}
+
+4465 
+	$Ãtsh_ifcÚfig
+ (cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+to
+,
+
+4466 cÚ¡ *
+æex_Çme
+,
+
+4467 cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+4468 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+,
+
+4469 cÚ¡ 
+æags
+)
+
+4471 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4472 
+¬gv
+‡rgv = 
+	`¬gv_Ãw
+ ();
+
+4473 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+ = 
+NULL
+;
+
+4474 cÚ¡ 
+IP_PER_ADAPTER_INFO
+ *
+·i
+ = 
+NULL
+;
+
+4476 ià(
+æags
+ & 
+NI_TEST_FIRST
+)
+
+4478 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+ = 
+	`g‘_ad­‹r_šfo_li¡
+ (&
+gc
+);
+
+4479 cÚ¡ 
+šdex
+ = 
+	`g‘_ad­‹r_šdex_æexibË
+ (
+æex_Çme
+);
+
+4480 
+ai
+ = 
+	`g‘_ad­‹r
+ (
+li¡
+, 
+šdex
+);
+
+4481 
+·i
+ = 
+	`g‘_³r_ad­‹r_šfo
+ (
+šdex
+, &
+gc
+);
+
+4484 ià(
+æags
+ & 
+NI_IP_NETMASK
+)
+
+4486 ià(
+	`‹¡_ad­‹r_�_Ãtmask
+ (
+ai
+, 
+�
+, 
+Ãtmask
+))
+
+4488 
+	`msg
+ (
+M_INFO
+, "NETSH: \"%s\" %s/%s [already set]",
+
+4489 
+æex_Çme
+,
+
+4490 
+	`´št_š_addr_t
+ (
+�
+, 0, &
+gc
+),
+
+4491 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, &
+gc
+));
+
+4496 
+	`¬gv_´štf
+ (&
+¬gv
+, "%s%sc interface ip set‡ddress %s static %s %s",
+
+4497 
+	`g‘_wš_sys_·th
+(),
+
+4498 
+NETSH_PATH_SUFFIX
+,
+
+4499 
+æex_Çme
+,
+
+4500 
+	`´št_š_addr_t
+ (
+�
+, 0, &
+gc
+),
+
+4501 
+	`´št_š_addr_t
+ (
+Ãtmask
+, 0, &
+gc
+));
+
+4503 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 4);
+
+4508 ià(
+æags
+ & 
+NI_OPTIONS
+)
+
+4510 
+IP_ADDR_STRING
+ 
+wšs
+[2];
+
+4511 
+	`CLEAR
+ (
+wšs
+[0]);
+
+4512 
+	`CLEAR
+ (
+wšs
+[1]);
+
+4514 
+	`Ãtsh_ifcÚfig_ÝtiÚs
+ ("dns",
+
+4515 
+to
+->
+dns
+,
+
+4516 
+to
+->
+dns_Ën
+,
+
+4517 
+·i
+ ? &·i->
+DnsS”v”Li¡
+ : 
+NULL
+,
+
+4518 
+æex_Çme
+,
+
+4519 
+	`BOOL_CAST
+ (
+æags
+ & 
+NI_TEST_FIRST
+));
+
+4520 ià(
+ai
+ &&‡i->
+HaveWšs
+)
+
+4521 
+	`š™_�_addr_¡ršg2
+ (
+wšs
+, &
+ai
+->
+Prim¬yWšsS”v”
+, &ai->
+SecÚd¬yWšsS”v”
+);
+
+4523 
+	`Ãtsh_ifcÚfig_ÝtiÚs
+ ("wins",
+
+4524 
+to
+->
+wšs
+,
+
+4525 
+to
+->
+wšs_Ën
+,
+
+4526 
+ai
+ ? 
+wšs
+ : 
+NULL
+,
+
+4527 
+æex_Çme
+,
+
+4528 
+	`BOOL_CAST
+ (
+æags
+ & 
+NI_TEST_FIRST
+));
+
+4531 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+4532 
+	`gc_ä“
+ (&
+gc
+);
+
+4533 
+	}
+}
+
+4536 
+	$Ãtsh_’abË_dhý
+ (cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+to
+,
+
+4537 cÚ¡ *
+aùu®_Çme
+)
+
+4539 
+¬gv
+‡rgv;
+
+4540 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+4543 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+4545 
+	`g‘_wš_sys_·th
+(),
+
+4546 
+NETSH_PATH_SUFFIX
+,
+
+4547 
+aùu®_Çme
+);
+
+4549 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 4);
+
+4551 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+4552 
+	}
+}
+
+4558 
+	$Ãtsh_g‘_id
+ (cÚ¡ *
+dev_node
+, 
+gc_¬’a
+ *
+gc
+)
+
+4560 cÚ¡ 
+�p_»g
+ *�p_»g = 
+	`g‘_�p_»g
+ (
+gc
+);
+
+4561 cÚ¡ 
+·Ãl_»g
+ *·Ãl_»g = 
+	`g‘_·Ãl_»g
+ (
+gc
+);
+
+4562 
+bufãr
+ 
+aùu®
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+4563 cÚ¡ *
+guid
+;
+
+4565 
+	`©_Ëa¡_Úe_�p_wš
+ (
+�p_»g
+);
+
+4567 ià(
+dev_node
+)
+
+4569 
+guid
+ = 
+	`g‘_deviû_guid
+ (
+dev_node
+, 
+	`BPTR
+ (&
+aùu®
+), 
+	`BCAP
+ (&aùu®), 
+�p_»g
+, 
+·Ãl_»g
+, 
+gc
+);
+
+4573 
+guid
+ = 
+	`g‘_un¥ecif›d_deviû_guid
+ (0, 
+	`BPTR
+ (&
+aùu®
+), 
+	`BCAP
+ (&aùu®), 
+�p_»g
+, 
+·Ãl_»g
+, 
+gc
+);
+
+4575 ià(
+	`g‘_un¥ecif›d_deviû_guid
+ (1, 
+NULL
+, 0, 
+�p_»g
+, 
+·Ãl_»g
+, 
+gc
+))
+
+4576 
+guid
+ = 
+NULL
+;
+
+4579 ià(!
+guid
+)
+
+4581 ià(
+	`¡rcmp
+ (
+	`BPTR
+ (&
+aùu®
+), "NULL"))
+
+4582  
+	`BPTR
+ (&
+aùu®
+);
+
+4584  
+guid
+;
+
+4585 
+	}
+}
+
+4591 
+	$tun_¡ªdby_š™
+ (
+tuÁ­
+ *
+‰
+)
+
+4593 
+‰
+->
+¡ªdby_™”
+ = 0;
+
+4594 
+	}
+}
+
+4596 
+boÞ
+
+
+4597 
+	$tun_¡ªdby
+ (
+tuÁ­
+ *
+‰
+)
+
+4599 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+4600 ++
+‰
+->
+¡ªdby_™”
+;
+
+4601 ià(
+‰
+->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_ADAPTIVE
+)
+
+4603 ià(
+‰
+->
+¡ªdby_™”
+ =ð
+IPW32_SET_ADAPTIVE_TRY_NETSH
+)
+
+4605 
+	`msg
+ (
+M_INFO
+, "NOTE:‚ow�rying‚etsh (this may�ake some�ime)");
+
+4606 
+	`Ãtsh_ifcÚfig
+ (&
+‰
+->
+ÝtiÚs
+,
+
+4607 
+‰
+->
+aùu®_Çme
+,
+
+4608 
+‰
+->
+loÿl
+,
+
+4609 
+‰
+->
+ad­‹r_Ãtmask
+,
+
+4610 
+NI_TEST_FIRST
+|
+NI_IP_NETMASK
+|
+NI_OPTIONS
+);
+
+4612 ià(
+‰
+->
+¡ªdby_™”
+ >ð
+IPW32_SET_ADAPTIVE_TRY_NETSH
+*2)
+
+4614 
+»t
+ = 
+çl£
+;
+
+4617  
+»t
+;
+
+4618 
+	}
+}
+
+4626 
+	$wr™e_dhý_u8
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+ty³
+, cÚ¡ 
+d©a
+, 
+boÞ
+ *
+”rÜ
+)
+
+4628 ià(!
+	`buf_§ã
+ (
+buf
+, 3))
+
+4630 *
+”rÜ
+ = 
+Œue
+;
+
+4631 
+	`msg
+ (
+M_WARN
+, "write_dhcp_u8: buffer overflow building DHCP options");
+
+4634 
+	`buf_wr™e_u8
+ (
+buf
+, 
+ty³
+);
+
+4635 
+	`buf_wr™e_u8
+ (
+buf
+, 1);
+
+4636 
+	`buf_wr™e_u8
+ (
+buf
+, 
+d©a
+);
+
+4637 
+	}
+}
+
+4640 
+	$wr™e_dhý_u32_¬¿y
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+ty³
+, cÚ¡ 
+ušt32_t
+ *
+d©a
+, cÚ¡ 
+Ën
+, 
+boÞ
+ *
+”rÜ
+)
+
+4642 ià(
+Ën
+ > 0)
+
+4644 
+i
+;
+
+4645 cÚ¡ 
+size
+ = 
+Ën
+ *  (
+ušt32_t
+);
+
+4647 ià(!
+	`buf_§ã
+ (
+buf
+, 2 + 
+size
+))
+
+4649 *
+”rÜ
+ = 
+Œue
+;
+
+4650 
+	`msg
+ (
+M_WARN
+, "write_dhcp_u32_array: buffer overflow building DHCP options");
+
+4653 ià(
+size
+ < 1 || size > 255)
+
+4655 *
+”rÜ
+ = 
+Œue
+;
+
+4656 
+	`msg
+ (
+M_WARN
+, "wr™e_dhý_u32_¬¿y: siz�(%dèmu¡ b�> 0‡nd <ð255", 
+size
+);
+
+4659 
+	`buf_wr™e_u8
+ (
+buf
+, 
+ty³
+);
+
+4660 
+	`buf_wr™e_u8
+ (
+buf
+, 
+size
+);
+
+4661 
+i
+ = 0; i < 
+Ën
+; ++i)
+
+4662 
+	`buf_wr™e_u32
+ (
+buf
+, 
+d©a
+[
+i
+]);
+
+4664 
+	}
+}
+
+4667 
+	$wr™e_dhý_¡r
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+ty³
+, cÚ¡ *
+¡r
+, 
+boÞ
+ *
+”rÜ
+)
+
+4669 cÚ¡ 
+Ën
+ = 
+	`¡¾’
+ (
+¡r
+);
+
+4670 ià(!
+	`buf_§ã
+ (
+buf
+, 2 + 
+Ën
+))
+
+4672 *
+”rÜ
+ = 
+Œue
+;
+
+4673 
+	`msg
+ (
+M_WARN
+, "write_dhcp_str: buffer overflow building DHCP options");
+
+4676 ià(
+Ën
+ < 1 ||†en > 255)
+
+4678 *
+”rÜ
+ = 
+Œue
+;
+
+4679 
+	`msg
+ (
+M_WARN
+, "wr™e_dhý_¡r: sŒšg '%s' mu¡ b�> 0 by‹ ªd <ð255 by‹s", 
+¡r
+);
+
+4682 
+	`buf_wr™e_u8
+ (
+buf
+, 
+ty³
+);
+
+4683 
+	`buf_wr™e_u8
+ (
+buf
+, 
+Ën
+);
+
+4684 
+	`buf_wr™e
+ (
+buf
+, 
+¡r
+, 
+Ën
+);
+
+4685 
+	}
+}
+
+4687 
+boÞ
+
+
+4688 
+	$bužd_dhý_ÝtiÚs_¡ršg
+ (
+bufãr
+ *
+buf
+, cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+o
+)
+
+4690 
+boÞ
+ 
+”rÜ
+ = 
+çl£
+;
+
+4691 ià(
+o
+->
+domaš
+)
+
+4692 
+	`wr™e_dhý_¡r
+ (
+buf
+, 15, 
+o
+->
+domaš
+, &
+”rÜ
+);
+
+4694 ià(
+o
+->
+Ãtbios_scÝe
+)
+
+4695 
+	`wr™e_dhý_¡r
+ (
+buf
+, 47, 
+o
+->
+Ãtbios_scÝe
+, &
+”rÜ
+);
+
+4697 ià(
+o
+->
+Ãtbios_node_ty³
+)
+
+4698 
+	`wr™e_dhý_u8
+ (
+buf
+, 46, 
+o
+->
+Ãtbios_node_ty³
+, &
+”rÜ
+);
+
+4700 
+	`wr™e_dhý_u32_¬¿y
+ (
+buf
+, 6, (
+ušt32_t
+*)
+o
+->
+dns
+, o->
+dns_Ën
+, &
+”rÜ
+);
+
+4701 
+	`wr™e_dhý_u32_¬¿y
+ (
+buf
+, 44, (
+ušt32_t
+*)
+o
+->
+wšs
+, o->
+wšs_Ën
+, &
+”rÜ
+);
+
+4702 
+	`wr™e_dhý_u32_¬¿y
+ (
+buf
+, 42, (
+ušt32_t
+*)
+o
+->
+Áp
+, o->
+Áp_Ën
+, &
+”rÜ
+);
+
+4703 
+	`wr™e_dhý_u32_¬¿y
+ (
+buf
+, 45, (
+ušt32_t
+*)
+o
+->
+nbdd
+, o->
+nbdd_Ën
+, &
+”rÜ
+);
+
+4708 ià(
+o
+->
+di§bË_nbt
+)
+
+4710 ià(!
+	`buf_§ã
+ (
+buf
+, 8))
+
+4712 
+	`msg
+ (
+M_WARN
+, "build_dhcp_options_string: buffer overflow building DHCP options");
+
+4713  
+çl£
+;
+
+4715 
+	`buf_wr™e_u8
+ (
+buf
+, 43);
+
+4716 
+	`buf_wr™e_u8
+ (
+buf
+, 6);
+
+4717 
+	`buf_wr™e_u8
+ (
+buf
+, 0x001);
+
+4718 
+	`buf_wr™e_u8
+ (
+buf
+, 4);
+
+4719 
+	`buf_wr™e_u32
+ (
+buf
+, 0x002);
+
+4721  !
+”rÜ
+;
+
+4722 
+	}
+}
+
+4725 
+	$fÜk_dhý_aùiÚ
+ (
+tuÁ­
+ *
+‰
+)
+
+4727 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_´e_»Ëa£
+ ||�t->ÝtiÚs.
+dhý_»Ãw
+)
+
+4729 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4730 
+bufãr
+ 
+cmd
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+4731 cÚ¡ 
+v”b
+ = 3;
+
+4732 cÚ¡ 
+´e_¦“p
+ = 1;
+
+4734 
+	`buf_´štf
+ (&
+cmd
+, "Ý’v² --v”b %d --�p-¦“°%d", 
+v”b
+, 
+´e_¦“p
+);
+
+4735 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_´e_»Ëa£
+)
+
+4736 
+	`buf_´štf
+ (&
+cmd
+, " --dhcp-pre-release");
+
+4737 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_»Ãw
+)
+
+4738 
+	`buf_´štf
+ (&
+cmd
+, " --dhcp-renew");
+
+4739 
+	`buf_´štf
+ (&
+cmd
+, " --dhý-š‹º® %u", ()
+‰
+->
+ad­‹r_šdex
+);
+
+4741 
+	`fÜk_to_£lf
+ (
+	`BSTR
+ (&
+cmd
+));
+
+4742 
+	`gc_ä“
+ (&
+gc
+);
+
+4744 
+	}
+}
+
+4747 
+	$fÜk_»gi¡”_dns_aùiÚ
+ (
+tuÁ­
+ *
+‰
+)
+
+4749 ià(
+‰
+ &&�t->
+ÝtiÚs
+.
+»gi¡”_dns
+)
+
+4751 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4752 
+bufãr
+ 
+cmd
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+4753 cÚ¡ 
+v”b
+ = 3;
+
+4755 
+	`buf_´štf
+ (&
+cmd
+, "Ý’v² --v”b %d --»gi¡”-dn --rdns-š‹º®", 
+v”b
+);
+
+4756 
+	`fÜk_to_£lf
+ (
+	`BSTR
+ (&
+cmd
+));
+
+4757 
+	`gc_ä“
+ (&
+gc
+);
+
+4759 
+	}
+}
+
+4761 
+ušt32_t
+
+
+4762 
+	$dhý_masq_addr
+ (cÚ¡ 
+š_addr_t
+ 
+loÿl
+, cÚ¡ in_addr_ˆ
+Ãtmask
+, cÚ¡ 
+off£t
+)
+
+4764 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4765 
+š_addr_t
+ 
+d§
+;
+
+4767 ià(
+off£t
+ < 0)
+
+4768 
+d§
+ = (
+loÿl
+ | (~
+Ãtmask
+)è+ 
+off£t
+;
+
+4770 
+d§
+ = (
+loÿl
+ & 
+Ãtmask
+è+ 
+off£t
+;
+
+4772 ià(
+d§
+ =ð
+loÿl
+)
+
+4773 
+	`msg
+ (
+M_FATAL
+, "ERROR: Th”�i ¨þash b‘w“Àth�--ifcÚfig†oÿÈadd»s ªd�h�š‹º® DHCP s”v”‡dd»s -- bÙh‡» s‘�Ø% --…Ëa£ u£�h�--�-wš32 dyÇmiøÝtiÚ�Øchoo£‡ difã»Á f»�add»s äom�h�--ifcÚfig subÃˆfÜ�h�š‹º® DHCP s”v”", 
+	`´št_š_addr_t
+ (
+d§
+, 0, &
+gc
+));
+
+4775 ià((
+loÿl
+ & 
+Ãtmask
+è!ð(
+d§
+ &‚etmask))
+
+4776 
+	`msg
+ (
+M_FATAL
+, "ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet");
+
+4778 
+	`gc_ä“
+ (&
+gc
+);
+
+4779  
+	`htÚl
+(
+d§
+);
+
+4780 
+	}
+}
+
+4783 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+4785 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+4786 
+deviû_·th
+[256];
+
+4787 cÚ¡ *
+deviû_guid
+ = 
+NULL
+;
+
+4788 
+DWORD
+ 
+Ën
+;
+
+4789 
+boÞ
+ 
+dhý_masq
+ = 
+çl£
+;
+
+4790 
+boÞ
+ 
+dhý_masq_po¡
+ = 
+çl£
+;
+
+4794 
+	`msg
+Ð
+M_INFO
+, "Ý’_tun,�t->�v6=%d", 
+‰
+->
+�v6
+ );
+
+4796 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_NULL
+)
+
+4798 
+	`Ý’_nuÎ
+ (
+‰
+);
+
+4799 
+	`gc_ä“
+ (&
+gc
+);
+
+4802 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+ ||�t->ty³ =ð
+DEV_TYPE_TUN
+)
+
+4808 
+	`msg
+ (
+M_FATAL
+|
+M_NOPREFIX
+, "UnknowÀvœtu® deviû�y³: '%s'", 
+dev
+);
+
+4815 cÚ¡ 
+�p_»g
+ *�p_»g = 
+	`g‘_�p_»g
+ (&
+gc
+);
+
+4816 cÚ¡ 
+·Ãl_»g
+ *·Ãl_»g = 
+	`g‘_·Ãl_»g
+ (&
+gc
+);
+
+4817 
+aùu®_bufãr
+[256];
+
+4819 
+	`©_Ëa¡_Úe_�p_wš
+ (
+�p_»g
+);
+
+4821 ià(
+dev_node
+)
+
+4824 
+deviû_guid
+ = 
+	`g‘_deviû_guid
+ (
+dev_node
+, 
+aùu®_bufãr
+,  (aùu®_bufãr), 
+�p_»g
+, 
+·Ãl_»g
+, &
+gc
+);
+
+4826 ià(!
+deviû_guid
+)
+
+4827 
+	`msg
+ (
+M_FATAL
+, "TAP-Wšdow ad­‹¸'%s'‚Ù found", 
+dev_node
+);
+
+4830 
+	`Ý’v²_¢´štf
+ (
+deviû_·th
+, (device_path), "%s%s%s",
+
+4831 
+USERMODEDEVICEDIR
+,
+
+4832 
+deviû_guid
+,
+
+4833 
+TAP_WIN_SUFFIX
+);
+
+4835 
+‰
+->
+hªd
+ = 
+	`C»©eFže
+ (
+
+4836 
+deviû_·th
+,
+
+4837 
+GENERIC_READ
+ | 
+GENERIC_WRITE
+,
+
+4840 
+OPEN_EXISTING
+,
+
+4841 
+FILE_ATTRIBUTE_SYSTEM
+ | 
+FILE_FLAG_OVERLAPPED
+,
+
+4845 ià(
+‰
+->
+hªd
+ =ð
+INVALID_HANDLE_VALUE
+)
+
+4846 
+	`msg
+ (
+M_ERR
+, "C»©eFž�çžed oÀTAP deviû: %s", 
+deviû_·th
+);
+
+4850 
+deviû_numb”
+ = 0;
+
+4853 
+Œue
+)
+
+4855 
+deviû_guid
+ = 
+	`g‘_un¥ecif›d_deviû_guid
+ (
+deviû_numb”
+,
+
+4856 
+aùu®_bufãr
+,
+
+4857  (
+aùu®_bufãr
+),
+
+4858 
+�p_»g
+,
+
+4859 
+·Ãl_»g
+,
+
+4860 &
+gc
+);
+
+4862 ià(!
+deviû_guid
+)
+
+4863 
+	`msg
+ (
+M_FATAL
+, "All TAP-Windows‡dapters on�his system‡re currently in use.");
+
+4866 
+	`Ý’v²_¢´štf
+ (
+deviû_·th
+, (device_path), "%s%s%s",
+
+4867 
+USERMODEDEVICEDIR
+,
+
+4868 
+deviû_guid
+,
+
+4869 
+TAP_WIN_SUFFIX
+);
+
+4871 
+‰
+->
+hªd
+ = 
+	`C»©eFže
+ (
+
+4872 
+deviû_·th
+,
+
+4873 
+GENERIC_READ
+ | 
+GENERIC_WRITE
+,
+
+4876 
+OPEN_EXISTING
+,
+
+4877 
+FILE_ATTRIBUTE_SYSTEM
+ | 
+FILE_FLAG_OVERLAPPED
+,
+
+4881 ià(
+‰
+->
+hªd
+ =ð
+INVALID_HANDLE_VALUE
+)
+
+4882 
+	`msg
+ (
+D_TUNTAP_INFO
+, "C»©eFž�çžed oÀTAP deviû: %s", 
+deviû_·th
+);
+
+4886 
+deviû_numb”
+++;
+
+4892 
+‰
+->
+aùu®_Çme
+ = 
+	`¡ršg_®loc
+ (
+aùu®_bufãr
+, 
+NULL
+);
+
+4895 
+	`msg
+ (
+M_INFO
+, "TAP-WIN32 deviû [%s] o³Ãd: %s", 
+‰
+->
+aùu®_Çme
+, 
+deviû_·th
+);
+
+4896 
+‰
+->
+ad­‹r_šdex
+ = 
+	`g‘_ad­‹r_šdex
+ (
+deviû_guid
+);
+
+4900 
+ULONG
+ 
+šfo
+[3];
+
+4901 
+	`CLEAR
+ (
+šfo
+);
+
+4902 ià(
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_GET_VERSION
+,
+
+4903 &
+šfo
+,  (info),
+
+4904 &
+šfo
+,  (šfo), &
+Ën
+, 
+NULL
+))
+
+4906 
+	`msg
+ (
+D_TUNTAP_INFO
+, "TAP-Windows Driver Version %d.%d %s",
+
+4907 (è
+šfo
+[0],
+
+4908 (è
+šfo
+[1],
+
+4909 (
+šfo
+[2] ? "(DEBUG)" : ""));
+
+4912 ià(!(
+šfo
+[0] =ð
+TAP_WIN_MIN_MAJOR
+ && info[1] >ð
+TAP_WIN_MIN_MINOR
+))
+
+4913 
+	`msg
+ (
+M_FATAL
+, "ERROR: Thi v”siÚ oà" 
+PACKAGE_NAME
+ "„equires‡ TAP-Windows driver�hat is‡t†east version %d.%d -- If you„ecently upgraded your " PACKAGE_NAME " distribution,‡„eboot is…robably„equired‡t�his…oint�o get Windows�o see�he‚ew driver.",
+
+4914 
+TAP_WIN_MIN_MAJOR
+,
+
+4915 
+TAP_WIN_MIN_MINOR
+);
+
+4920 iàÐ
+‰
+->
+�v6
+ &&�t->
+ty³
+ =ð
+DEV_TYPE_TUN
+ &&
+
+4921 
+šfo
+[0] == 9 && info[1] < 8)
+
+4923 
+	`msg
+Ð
+M_INFO
+, "WARNING: T­-Wš32 driv” v”siÚ %d.%d dÛ nÙ suµÜˆIPv6 iÀTUN mode. IPv6 wžÈb�di§bËd. Upg¿d�tØT­-Wš32 9.8 (2.2-b‘a3„–—£ o¸Ï‹rèÜ u£ TAP mod�tØg‘ IPv6", (è
+šfo
+[0], () info[1] );
+
+4924 
+‰
+->
+�v6
+ = 
+çl£
+;
+
+4929 iàÐ
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+ &&
+
+4930 
+šfo
+[0] == 9 && info[1] == 8)
+
+4932 
+	`msg
+Ð
+M_FATAL
+, "ERROR: T­-Wš32 driv” v”siÚ %d.%d i buggy„eg¬dšg sm®ÈIPv4…ack‘ š TUN mode. Upg¿d�tØT­-Wš32 9.9 (2.2.2„–—£ o¸Ï‹rèÜ u£ TAP mode", (è
+šfo
+[0], () info[1] );
+
+4938 
+ULONG
+ 
+mtu
+;
+
+4939 ià(
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_GET_MTU
+,
+
+4940 &
+mtu
+,  (mtu),
+
+4941 &
+mtu
+,  (mtu), &
+Ën
+, 
+NULL
+))
+
+4943 
+‰
+->
+po¡_Ý’_mtu
+ = (è
+mtu
+;
+
+4944 
+	`msg
+ (
+D_MTU_INFO
+, "TAP-Wšdow MTU=%d", (è
+mtu
+);
+
+4952 ià(
+‰
+->
+did_ifcÚfig_£tup
+)
+
+4954 ià(
+‰
+->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_DHCP_MASQ
+)
+
+4959 ià(
+	`dhý_¡©us
+ (
+‰
+->
+ad­‹r_šdex
+è=ð
+DHCP_STATUS_DISABLED
+)
+
+4960 
+	`Ãtsh_’abË_dhý
+ (&
+‰
+->
+ÝtiÚs
+,�t->
+aùu®_Çme
+);
+
+4961 
+dhý_masq
+ = 
+Œue
+;
+
+4962 
+dhý_masq_po¡
+ = 
+Œue
+;
+
+4964 ià(
+‰
+->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_ADAPTIVE
+)
+
+4969 ià(
+	`dhý_¡©us
+ (
+‰
+->
+ad­‹r_šdex
+è!ð
+DHCP_STATUS_ENABLED
+)
+
+4971 
+	`Ãtsh_ifcÚfig
+ (&
+‰
+->
+ÝtiÚs
+,
+
+4972 
+‰
+->
+aùu®_Çme
+,
+
+4973 
+‰
+->
+loÿl
+,
+
+4974 
+‰
+->
+ad­‹r_Ãtmask
+,
+
+4975 
+NI_TEST_FIRST
+|
+NI_IP_NETMASK
+|
+NI_OPTIONS
+);
+
+4979 
+dhý_masq
+ = 
+Œue
+;
+
+4986 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+4988 ià(!
+‰
+->
+did_ifcÚfig_£tup
+)
+
+4990 
+	`msg
+ (
+M_FATAL
+, "ERROR: --dev�un‡lso„equires --ifconfig");
+
+4993 ià(
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+4995 
+š_addr_t
+ 
+•
+[3];
+
+4996 
+BOOL
+ 
+¡©us
+;
+
+4998 
+•
+[0] = 
+	`htÚl
+ (
+‰
+->
+loÿl
+);
+
+4999 
+•
+[1] = 
+	`htÚl
+ (
+‰
+->
+loÿl
+ &�t->
+»mÙe_Ãtmask
+);
+
+5000 
+•
+[2] = 
+	`htÚl
+ (
+‰
+->
+»mÙe_Ãtmask
+);
+
+5002 
+¡©us
+ = 
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_CONFIG_TUN
+,
+
+5003 
+•
+,  (ep),
+
+5004 
+•
+,  (•), &
+Ën
+, 
+NULL
+);
+
+5006 
+	`msg
+ (
+¡©us
+ ? 
+M_INFO
+ : 
+M_FATAL
+, "Set TAP-Windows TUN subnet mode‚etwork/local/netmask = %s/%s/%s [%s]",
+
+5007 
+	`´št_š_addr_t
+ (
+•
+[1], 
+IA_NET_ORDER
+, &
+gc
+),
+
+5008 
+	`´št_š_addr_t
+ (
+•
+[0], 
+IA_NET_ORDER
+, &
+gc
+),
+
+5009 
+	`´št_š_addr_t
+ (
+•
+[2], 
+IA_NET_ORDER
+, &
+gc
+),
+
+5010 
+¡©us
+ ? "SUCCEEDED" : "FAILED");
+
+5014 
+š_addr_t
+ 
+•
+[2];
+
+5015 
+•
+[0] = 
+	`htÚl
+ (
+‰
+->
+loÿl
+);
+
+5016 
+•
+[1] = 
+	`htÚl
+ (
+‰
+->
+»mÙe_Ãtmask
+);
+
+5018 ià(!
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT
+,
+
+5019 
+•
+,  (ep),
+
+5020 
+•
+,  (•), &
+Ën
+, 
+NULL
+))
+
+5021 
+	`msg
+ (
+M_FATAL
+, "ERROR: The TAP-Windows driver„ejected‡ DeviceIoControl call�o set Point-to-Point mode, which is„equired for --dev�un");
+
+5027 ià(
+dhý_masq
+)
+
+5029 
+ušt32_t
+ 
+•
+[4];
+
+5032 
+•
+[0] = 
+	`htÚl
+ (
+‰
+->
+loÿl
+);
+
+5033 
+•
+[1] = 
+	`htÚl
+ (
+‰
+->
+ad­‹r_Ãtmask
+);
+
+5036 ià(
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TUN
+)
+
+5038 ià(
+‰
+->
+tÝÞogy
+ =ð
+TOP_SUBNET
+)
+
+5040 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_masq_cu¡om_off£t
+)
+
+5041 
+•
+[2] = 
+	`dhý_masq_addr
+ (
+‰
+->
+loÿl
+,�t->
+»mÙe_Ãtmask
+,�t->
+ÝtiÚs
+.
+dhý_masq_off£t
+);
+
+5043 
+•
+[2] = 
+	`dhý_masq_addr
+ (
+‰
+->
+loÿl
+,�t->
+»mÙe_Ãtmask
+, -1);
+
+5046 
+•
+[2] = 
+	`htÚl
+ (
+‰
+->
+»mÙe_Ãtmask
+);
+
+5050 
+	`ASSERT
+ (
+‰
+->
+ty³
+ =ð
+DEV_TYPE_TAP
+);
+
+5051 
+•
+[2] = 
+	`dhý_masq_addr
+ (
+‰
+->
+loÿl
+,�t->
+ad­‹r_Ãtmask
+,�t->
+ÝtiÚs
+.
+dhý_masq_cu¡om_off£t
+ ?�t->ÝtiÚs.
+dhý_masq_off£t
+ : 0);
+
+5055 
+•
+[3] = (
+ušt32_t
+è
+‰
+->
+ÝtiÚs
+.
+dhý_Ëa£_time
+;
+
+5057 
+	`ASSERT
+ (
+•
+[3] > 0);
+
+5059 #iâdeà
+SIMULATE_DHCP_FAILED
+
+
+5060 ià(!
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_CONFIG_DHCP_MASQ
+,
+
+5061 
+•
+,  (ep),
+
+5062 
+•
+,  (•), &
+Ën
+, 
+NULL
+))
+
+5063 
+	`msg
+ (
+M_FATAL
+, "ERROR: The TAP-Windows driver„ejected‡ DeviceIoControl call�o set TAP_WIN_IOCTL_CONFIG_DHCP_MASQ mode");
+
+5065 
+	`msg
+ (
+M_INFO
+, "Notified TAP-Windows driver�o set‡ DHCP IP/netmask of %s/%s on interface %s [DHCP-serv: %s,†ease-time: %d]",
+
+5066 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+),
+
+5067 
+	`´št_š_addr_t
+ (
+‰
+->
+ad­‹r_Ãtmask
+, 0, &
+gc
+),
+
+5068 
+deviû_guid
+,
+
+5069 
+	`´št_š_addr_t
+ (
+•
+[2], 
+IA_NET_ORDER
+, &
+gc
+),
+
+5070 
+•
+[3]
+
+5074 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_ÝtiÚs
+)
+
+5076 
+bufãr
+ 
+buf
+ = 
+	`®loc_buf
+ (256);
+
+5077 ià(
+	`bužd_dhý_ÝtiÚs_¡ršg
+ (&
+buf
+, &
+‰
+->
+ÝtiÚs
+))
+
+5079 
+	`msg
+ (
+D_DHCP_OPT
+, "DHCP o±iÚ sŒšg: %s", 
+	`fÜm©_hex
+ (
+	`BPTR
+ (&
+buf
+), 
+	`BLEN
+ (&buf), 0, &
+gc
+));
+
+5080 ià(!
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_CONFIG_DHCP_SET_OPT
+,
+
+5081 
+	`BPTR
+ (&
+buf
+), 
+	`BLEN
+ (&buf),
+
+5082 
+	`BPTR
+ (&
+buf
+), 
+	`BLEN
+ (&buf), &
+Ën
+, 
+NULL
+))
+
+5083 
+	`msg
+ (
+M_FATAL
+, "ERROR: The TAP-Windows driver„ejected‡ TAP_WIN_IOCTL_CONFIG_DHCP_SET_OPT DeviceIoControl call");
+
+5086 
+	`msg
+ (
+M_WARN
+, "DHCP option string‚ot set due�oƒrror");
+
+5087 
+	`ä“_buf
+ (&
+buf
+);
+
+5094 
+ULONG
+ 
+¡©us
+ = 
+TRUE
+;
+
+5095 ià(!
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_SET_MEDIA_STATUS
+,
+
+5096 &
+¡©us
+,  (status),
+
+5097 &
+¡©us
+,  (¡©us), &
+Ën
+, 
+NULL
+))
+
+5098 
+	`msg
+ (
+M_WARN
+, "WARNING: The TAP-Windows driver„ejected‡ TAP_WIN_IOCTL_SET_MEDIA_STATUS DeviceIoControl call.");
+
+5103 
+s
+ = 
+‰
+->
+ÝtiÚs
+.
+�p_¦“p
+;
+
+5104 ià(
+s
+ > 0)
+
+5106 
+	`msg
+ (
+M_INFO
+, "SË•šg fÜ %d secÚds...", 
+s
+);
+
+5107 
+	`Ý’v²_¦“p
+ (
+s
+);
+
+5113 cÚ¡ 
+DWORD
+ 
+šdex
+ = 
+‰
+->
+ad­‹r_šdex
+;
+
+5116 ià(
+šdex
+ !ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+5118 
+DWORD
+ 
+¡©us
+;
+
+5120 ià((
+¡©us
+ = 
+	`FlushIpN‘TabË
+ (
+šdex
+)è=ð
+NO_ERROR
+)
+
+5121 
+	`msg
+ (
+M_INFO
+, "Successful ARP Flush on interface [%u] %s",
+
+5122 ()
+šdex
+,
+
+5123 
+deviû_guid
+);
+
+5125 
+	`msg
+ (
+D_TUNTAP_INFO
+, "NOTE: FlushIpNetTable failed on interface [%u] %s (status=%u) : %s",
+
+5126 ()
+šdex
+,
+
+5127 
+deviû_guid
+,
+
+5128 ()
+¡©us
+,
+
+5129 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+5137 ià(
+dhý_masq_po¡
+)
+
+5140 ià(
+	`dhý_¡©us
+ (
+šdex
+è=ð
+DHCP_STATUS_DISABLED
+)
+
+5141 
+	`msg
+ (
+M_WARN
+, "WARNING: You have selected '--ip-win32 dynamic', which will‚ot work unless�he TAP-Windows TCP/IP…roperties‡re set�o 'Obtain‡n IP‡ddress‡utomatically'");
+
+5144 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_´e_»Ëa£
+)
+
+5145 
+	`dhý_»Ëa£
+ (
+‰
+);
+
+5146 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_»Ãw
+)
+
+5147 
+	`dhý_»Ãw
+ (
+‰
+);
+
+5150 
+	`fÜk_dhý_aùiÚ
+ (
+‰
+);
+
+5152 ià(
+‰
+->
+did_ifcÚfig_£tup
+ &&�t->
+ÝtiÚs
+.
+�_wš32_ty³
+ =ð
+IPW32_SET_IPAPI
+)
+
+5154 
+DWORD
+ 
+¡©us
+;
+
+5155 cÚ¡ *
+”rÜ_suffix
+ = "I‡m having�rouble using�he Windows 'IP helper API'�o‡utomatically set�he IP‡ddress -- consider using other --ip-win32 methods (not 'ipapi')";
+
+5158 ià(
+šdex
+ =ð
+TUN_ADAPTER_INDEX_INVALID
+)
+
+5160 
+	`msg
+ (
+M_FATAL
+, "ERROR: unable�o get‡dapter index for interface %s -- %s",
+
+5161 
+deviû_guid
+,
+
+5162 
+”rÜ_suffix
+);
+
+5166 ià(
+	`dhý_¡©us
+ (
+šdex
+è=ð
+DHCP_STATUS_DISABLED
+)
+
+5167 
+	`msg
+ (
+M_WARN
+, "NOTE: You have selected (explicitly or by default) '--ip-win32 ipapi', which has‡ better chance of working correctly if�he TAP-Windows TCP/IP…roperties‡re set�o 'Obtain‡n IP‡ddress‡utomatically'");
+
+5171 
+	`d–‘e_‹mp_add»s£s
+ (
+šdex
+);
+
+5174 ià((
+¡©us
+ = 
+	`AddIPAdd»ss
+ (
+	`htÚl
+(
+‰
+->
+loÿl
+),
+
+5175 
+	`htÚl
+(
+‰
+->
+ad­‹r_Ãtmask
+),
+
+5176 
+šdex
+,
+
+5177 &
+‰
+->
+�­i_cÚ‹xt
+,
+
+5178 &
+‰
+->
+�­i_š¡ªû
+)è=ð
+NO_ERROR
+)
+
+5179 
+	`msg
+ (
+M_INFO
+, "Succeeded in‡dding‡�emporary IP/netmask of %s/%s�o interface %s using�he Win32 IP Helper API",
+
+5180 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+),
+
+5181 
+	`´št_š_addr_t
+ (
+‰
+->
+ad­‹r_Ãtmask
+, 0, &
+gc
+),
+
+5182 
+deviû_guid
+
+
+5185 
+	`msg
+ (
+M_FATAL
+, "ERROR: AddIPAddress %s/%s failed on interface %s, index=%d, status=%u (windowsƒrror: '%s') -- %s",
+
+5186 
+	`´št_š_addr_t
+ (
+‰
+->
+loÿl
+, 0, &
+gc
+),
+
+5187 
+	`´št_š_addr_t
+ (
+‰
+->
+ad­‹r_Ãtmask
+, 0, &
+gc
+),
+
+5188 
+deviû_guid
+,
+
+5189 ()
+šdex
+,
+
+5190 ()
+¡©us
+,
+
+5191 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+),
+
+5192 
+”rÜ_suffix
+);
+
+5193 
+‰
+->
+�­i_cÚ‹xt_defšed
+ = 
+Œue
+;
+
+5197 
+	`gc_ä“
+ (&
+gc
+);
+
+5198 
+	}
+}
+
+5201 
+	$�p_wš_g‘šfo
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+gc_¬’a
+ *
+gc
+)
+
+5203 ià(
+‰
+ &&�t->
+hªd
+ !ð
+NULL
+)
+
+5205 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+5206 
+DWORD
+ 
+Ën
+;
+
+5207 ià(
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_GET_INFO
+,
+
+5208 
+	`BSTR
+ (&
+out
+), 
+	`BCAP
+ (&out),
+
+5209 
+	`BSTR
+ (&
+out
+), 
+	`BCAP
+ (&out),
+
+5210 &
+Ën
+, 
+NULL
+))
+
+5212  
+	`BSTR
+ (&
+out
+);
+
+5215  
+NULL
+;
+
+5216 
+	}
+}
+
+5219 
+	$tun_show_debug
+ (
+tuÁ­
+ *
+‰
+)
+
+5221 ià(
+‰
+ &&�t->
+hªd
+ !ð
+NULL
+)
+
+5223 
+bufãr
+ 
+out
+ = 
+	`®loc_buf
+ (1024);
+
+5224 
+DWORD
+ 
+Ën
+;
+
+5225 
+	`DeviûIoCÚŒÞ
+ (
+‰
+->
+hªd
+, 
+TAP_WIN_IOCTL_GET_LOG_LINE
+,
+
+5226 
+	`BSTR
+ (&
+out
+), 
+	`BCAP
+ (&out),
+
+5227 
+	`BSTR
+ (&
+out
+), 
+	`BCAP
+ (&out),
+
+5228 &
+Ën
+, 
+NULL
+))
+
+5230 
+	`msg
+ (
+D_TAP_WIN_DEBUG
+, "TAP-Wšdows: %s", 
+	`BSTR
+ (&
+out
+));
+
+5232 
+	`ä“_buf
+ (&
+out
+);
+
+5234 
+	}
+}
+
+5237 
+	$þo£_tun
+ (
+tuÁ­
+ *
+‰
+)
+
+5239 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+5241 ià(
+‰
+)
+
+5243 iàÐ
+‰
+->
+�v6
+ &&�t->
+did_ifcÚfig_�v6_£tup
+ )
+
+5245 cÚ¡ *
+ifcÚfig_�v6_loÿl
+;
+
+5246 
+¬gv
+‡rgv;
+
+5247 
+	`¬gv_š™
+ (&
+¬gv
+);
+
+5250 
+	`d–‘e_rou‹_cÚÃùed_v6_Ãt
+(
+‰
+, 
+NULL
+);
+
+5257 
+ifcÚfig_�v6_loÿl
+ = 
+	`´št_š6_addr
+ (
+‰
+->
+loÿl_�v6
+, 0, &
+gc
+);
+
+5258 
+	`¬gv_´štf
+ (&
+¬gv
+,
+
+5260 
+	`g‘_wš_sys_·th
+(),
+
+5261 
+NETSH_PATH_SUFFIX
+,
+
+5262 
+‰
+->
+aùu®_Çme
+,
+
+5263 
+ifcÚfig_�v6_loÿl
+ );
+
+5265 
+	`Ãtsh_commªd
+ (&
+¬gv
+, 1);
+
+5266 
+	`¬gv_»£t
+ (&
+¬gv
+);
+
+5269 ià(
+‰
+->
+�­i_cÚ‹xt_defšed
+)
+
+5271 
+DWORD
+ 
+¡©us
+;
+
+5272 ià((
+¡©us
+ = 
+	`D–‘eIPAdd»ss
+ (
+‰
+->
+�­i_cÚ‹xt
+)è!ð
+NO_ERROR
+)
+
+5274 
+	`msg
+ (
+M_WARN
+, "Warning: DeleteIPAddress[%u] failed on TAP-Windows‡dapter, status=%u : %s",
+
+5275 ()
+‰
+->
+�­i_cÚ‹xt
+,
+
+5276 ()
+¡©us
+,
+
+5277 
+	`¡»¼Ü_wš32
+ (
+¡©us
+, &
+gc
+));
+
+5282 ià(
+‰
+->
+ÝtiÚs
+.
+dhý_»Ëa£
+)
+
+5283 
+	`dhý_»Ëa£
+ (
+‰
+);
+
+5285 ià(
+‰
+->
+hªd
+ !ð
+NULL
+)
+
+5287 
+	`dmsg
+ (
+D_WIN32_IO_LOW
+, "Attempting CancelIO on TAP-Windows‡dapter");
+
+5288 ià(!
+	`CªûlIo
+ (
+‰
+->
+hªd
+))
+
+5289 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: CancelIO failed on TAP-Windows‡dapter");
+
+5292 
+	`dmsg
+ (
+D_WIN32_IO_LOW
+, "Attempting close of overlapped„eadƒvent on TAP-Windows‡dapter");
+
+5293 
+	`ov”Ïµed_io_þo£
+ (&
+‰
+->
+»ads
+);
+
+5295 
+	`dmsg
+ (
+D_WIN32_IO_LOW
+, "Attempting close of overlapped writeƒvent on TAP-Windows‡dapter");
+
+5296 
+	`ov”Ïµed_io_þo£
+ (&
+‰
+->
+wr™es
+);
+
+5298 ià(
+‰
+->
+hªd
+ !ð
+NULL
+)
+
+5300 
+	`dmsg
+ (
+D_WIN32_IO_LOW
+, "Attempting CloseHandle on TAP-Windows‡dapter");
+
+5301 ià(!
+	`Clo£HªdË
+ (
+‰
+->
+hªd
+))
+
+5302 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: CloseHandle failed on TAP-Windows‡dapter");
+
+5305 ià(
+‰
+->
+aùu®_Çme
+)
+
+5306 
+	`ä“
+ (
+‰
+->
+aùu®_Çme
+);
+
+5308 
+	`þ—r_tuÁ­
+ (
+‰
+);
+
+5309 
+	`ä“
+ (
+‰
+);
+
+5311 
+	`gc_ä“
+ (&
+gc
+);
+
+5312 
+	}
+}
+
+5318 
+	s�£t_Çmes
+ {
+
+5319 cÚ¡ *
+	mshÜt_fÜm
+;
+
+5323 cÚ¡ 
+�£t_Çmes
+ 
+	g�£t_Çmes
+[] = {
+
+5332 
+	$ascii2�£t
+ (cÚ¡ * 
+Çme
+)
+
+5334 
+i
+;
+
+5335 
+	`ASSERT
+ (
+IPW32_SET_N
+ =ð
+	`SIZE
+ (
+�£t_Çmes
+));
+
+5336 
+i
+ = 0; i < 
+IPW32_SET_N
+; ++i)
+
+5337 ià(!
+	`¡rcmp
+ (
+Çme
+, 
+�£t_Çmes
+[
+i
+].
+shÜt_fÜm
+))
+
+5338  
+i
+;
+
+5340 
+	}
+}
+
+5343 
+	$�£t2ascii
+ (
+šdex
+)
+
+5345 
+	`ASSERT
+ (
+IPW32_SET_N
+ =ð
+	`SIZE
+ (
+�£t_Çmes
+));
+
+5346 ià(
+šdex
+ < 0 || index >ð
+IPW32_SET_N
+)
+
+5349  
+�£t_Çmes
+[
+šdex
+].
+shÜt_fÜm
+;
+
+5350 
+	}
+}
+
+5353 
+	$�£t2ascii_®l
+ (
+gc_¬’a
+ *
+gc
+)
+
+5355 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, 
+gc
+);
+
+5356 
+i
+;
+
+5358 
+	`ASSERT
+ (
+IPW32_SET_N
+ =ð
+	`SIZE
+ (
+�£t_Çmes
+));
+
+5359 
+i
+ = 0; i < 
+IPW32_SET_N
+; ++i)
+
+5361 ià(
+i
+)
+
+5362 
+	`buf_´štf
+(&
+out
+, " ");
+
+5363 
+	`buf_´štf
+(&
+out
+, "[%s]", 
+	`�£t2ascii
+(
+i
+));
+
+5365  
+	`BSTR
+ (&
+out
+);
+
+5366 
+	}
+}
+
+5371 
+	$Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+, 
+tuÁ­
+ *
+‰
+)
+
+5373 
+	`Ý’_tun_g’”ic
+ (
+dev
+, 
+dev_ty³
+, 
+dev_node
+, 
+çl£
+, 
+Œue
+, 
+‰
+);
+
+5374 
+	}
+}
+
+5377 
+	$þo£_tun
+ (
+tuÁ­
+* 
+‰
+)
+
+5379 ià(
+‰
+)
+
+5381 
+	`þo£_tun_g’”ic
+ (
+‰
+);
+
+5382 
+	`ä“
+ (
+‰
+);
+
+5384 
+	}
+}
+
+5387 
+	$wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+5389  
+	`wr™e
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+5390 
+	}
+}
+
+5393 
+	$»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+)
+
+5395  
+	`»ad
+ (
+‰
+->
+fd
+, 
+buf
+, 
+Ën
+);
+
+5396 
+	}
+}
+
+	@tun.h
+
+25 #iâdeà
+TUN_H
+
+
+26 
+	#TUN_H
+
+
+	)
+
+28 #ifdeà
+WIN32
+
+
+29 
+	~<wšioùl.h
+>
+
+30 
+	~<�p-wšdows.h
+>
+
+33 
+	~"bufãr.h
+"
+
+34 
+	~"”rÜ.h
+"
+
+35 
+	~"mtu.h
+"
+
+36 
+	~"wš32.h
+"
+
+37 
+	~"ev’t.h
+"
+
+38 
+	~"´Ùo.h
+"
+
+39 
+	~"misc.h
+"
+
+41 #ifdeà
+WIN32
+
+
+43 
+	#TUN_ADAPTER_INDEX_INVALID
+ ((
+DWORD
+)-1)
+
+	)
+
+46 
+	#IPW32_SET_ADAPTIVE_DELAY_WINDOW
+ 300
+
+	)
+
+47 
+	#IPW32_SET_ADAPTIVE_TRY_NETSH
+ 20
+
+	)
+
+49 
+	stuÁ­_ÝtiÚs
+ {
+
+51 
+boÞ
+ 
+	m�_wš32_defšed
+;
+
+53 
+	#IPW32_SET_MANUAL
+ 0
+
+	)
+
+54 
+	#IPW32_SET_NETSH
+ 1
+
+	)
+
+55 
+	#IPW32_SET_IPAPI
+ 2
+
+	)
+
+56 
+	#IPW32_SET_DHCP_MASQ
+ 3
+
+	)
+
+57 
+	#IPW32_SET_ADAPTIVE
+ 4
+
+	)
+
+58 
+	#IPW32_SET_N
+ 5
+
+	)
+
+59 
+	m�_wš32_ty³
+;
+
+62 
+boÞ
+ 
+	mdhý_masq_cu¡om_off£t
+;
+
+63 
+	mdhý_masq_off£t
+;
+
+64 
+	mdhý_Ëa£_time
+;
+
+67 
+	m�p_¦“p
+;
+
+71 
+boÞ
+ 
+	mdhý_ÝtiÚs
+;
+
+73 cÚ¡ *
+	mdomaš
+;
+
+75 cÚ¡ *
+	mÃtbios_scÝe
+;
+
+77 
+	mÃtbios_node_ty³
+;
+
+79 
+	#N_DHCP_ADDR
+ 4
+
+	)
+
+83 
+š_addr_t
+ 
+	mdns
+[
+N_DHCP_ADDR
+];
+
+84 
+	mdns_Ën
+;
+
+87 
+š_addr_t
+ 
+	mwšs
+[
+N_DHCP_ADDR
+];
+
+88 
+	mwšs_Ën
+;
+
+91 
+š_addr_t
+ 
+	mÁp
+[
+N_DHCP_ADDR
+];
+
+92 
+	mÁp_Ën
+;
+
+95 
+š_addr_t
+ 
+	mnbdd
+[
+N_DHCP_ADDR
+];
+
+96 
+	mnbdd_Ën
+;
+
+99 
+boÞ
+ 
+	mdi§bË_nbt
+;
+
+101 
+boÞ
+ 
+	mdhý_»Ãw
+;
+
+102 
+boÞ
+ 
+	mdhý_´e_»Ëa£
+;
+
+103 
+boÞ
+ 
+	mdhý_»Ëa£
+;
+
+105 
+boÞ
+ 
+	m»gi¡”_dns
+;
+
+108 #–ià
+TARGET_LINUX
+
+
+110 
+	stuÁ­_ÝtiÚs
+ {
+
+111 
+	mtxqueu–’
+;
+
+116 
+	stuÁ­_ÝtiÚs
+ {
+
+117 
+	mdummy
+;
+
+126 
+	stuÁ­
+
+
+128 
+	#TUNNEL_TYPE
+(
+‰
+è(Ñtè? (Ñt)->
+ty³
+è: 
+DEV_TYPE_UNDEF
+)
+
+	)
+
+129 
+	mty³
+;
+
+131 
+	#TUNNEL_TOPOLOGY
+(
+‰
+è(Ñtè? (Ñt)->
+tÝÞogy
+è: 
+TOP_UNDEF
+)
+
+	)
+
+132 
+	mtÝÞogy
+;
+
+134 
+boÞ
+ 
+	mdid_ifcÚfig_£tup
+;
+
+135 
+boÞ
+ 
+	mdid_ifcÚfig_�v6_£tup
+;
+
+136 
+boÞ
+ 
+	mdid_ifcÚfig
+;
+
+138 
+boÞ
+ 
+	m�v6
+;
+
+140 
+boÞ
+ 
+	m³rsi¡’t_if
+;
+
+142 
+tuÁ­_ÝtiÚs
+ 
+	mÝtiÚs
+;
+
+144 *
+	maùu®_Çme
+;
+
+147 
+	mtxqueu–’
+;
+
+150 
+š_addr_t
+ 
+	mloÿl
+;
+
+151 
+š_addr_t
+ 
+	m»mÙe_Ãtmask
+;
+
+152 
+š_addr_t
+ 
+	mbrßdÿ¡
+;
+
+154 
+š6_addr
+ 
+	mloÿl_�v6
+;
+
+155 
+š6_addr
+ 
+	m»mÙe_�v6
+;
+
+156 
+	mÃtb™s_�v6
+;
+
+158 #ifdeà
+WIN32
+
+
+159 
+HANDLE
+ 
+	mhªd
+;
+
+160 
+ov”Ïµed_io
+ 
+	m»ads
+;
+
+161 
+ov”Ïµed_io
+ 
+	mwr™es
+;
+
+162 
+rw_hªdË
+ 
+	mrw_hªdË
+;
+
+166 
+boÞ
+ 
+	m�­i_cÚ‹xt_defšed
+;
+
+167 
+ULONG
+ 
+	m�­i_cÚ‹xt
+;
+
+168 
+ULONG
+ 
+	m�­i_š¡ªû
+;
+
+169 
+š_addr_t
+ 
+	mad­‹r_Ãtmask
+;
+
+173 
+DWORD
+ 
+	mad­‹r_šdex
+;
+
+175 
+	m¡ªdby_™”
+;
+
+177 
+	mfd
+;
+
+180 #ifdeà
+TARGET_SOLARIS
+
+
+181 
+	m�_fd
+;
+
+184 #ifdeà
+HAVE_NET_IF_UTUN_H
+
+
+185 
+boÞ
+ 
+	mis_utun
+;
+
+188 
+	mrwæags_debug
+;
+
+192 
+	mpo¡_Ý’_mtu
+;
+
+195 
+šlše
+ 
+boÞ
+
+
+196 
+	$tuÁ­_defšed
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+198 #ifdeà
+WIN32
+
+
+199  
+‰
+ &&�t->
+hªd
+ !ð
+NULL
+;
+
+201  
+‰
+ &&�t->
+fd
+ >= 0;
+
+203 
+	}
+}
+
+209 
+Ý’_tun
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+,
+
+210 
+tuÁ­
+ *
+‰
+);
+
+212 
+þo£_tun
+ (
+tuÁ­
+ *
+‰
+);
+
+214 
+wr™e_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+);
+
+216 
+»ad_tun
+ (
+tuÁ­
+* 
+‰
+, 
+ušt8_t
+ *
+buf
+, 
+Ën
+);
+
+218 
+tuncfg
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+dev_node
+,
+
+219 
+³rsi¡_mode
+, cÚ¡ *
+u£ºame
+,
+
+220 cÚ¡ *
+grou²ame
+, cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+ÝtiÚs
+);
+
+222 cÚ¡ *
+guess_tuÁ­_dev
+ (cÚ¡ *
+dev
+,
+
+223 cÚ¡ *
+dev_ty³
+,
+
+224 cÚ¡ *
+dev_node
+,
+
+225 
+gc_¬’a
+ *
+gc
+);
+
+227 
+tuÁ­
+ *
+š™_tun
+ (cÚ¡ *
+dev
+,
+
+228 cÚ¡ *
+dev_ty³
+,
+
+229 
+tÝÞogy
+,
+
+230 cÚ¡ *
+ifcÚfig_loÿl_·rm
+,
+
+231 cÚ¡ *
+ifcÚfig_»mÙe_Ãtmask_·rm
+,
+
+232 cÚ¡ *
+ifcÚfig_�v6_loÿl_·rm
+,
+
+233 
+ifcÚfig_�v6_Ãtb™s_·rm
+,
+
+234 cÚ¡ *
+ifcÚfig_�v6_»mÙe_·rm
+,
+
+235 
+š_addr_t
+ 
+loÿl_public
+,
+
+236 
+š_addr_t
+ 
+»mÙe_public
+,
+
+237 cÚ¡ 
+boÞ
+ 
+¡riù_w¬n
+,
+
+238 
+’v_£t
+ *
+es
+);
+
+240 
+š™_tun_po¡
+ (
+tuÁ­
+ *
+‰
+,
+
+241 cÚ¡ 
+äame
+ *frame,
+
+242 cÚ¡ 
+tuÁ­_ÝtiÚs
+ *
+ÝtiÚs
+);
+
+244 
+do_ifcÚfig_£‹nv
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+,
+
+245 
+’v_£t
+ *
+es
+);
+
+247 
+do_ifcÚfig
+ (
+tuÁ­
+ *
+‰
+,
+
+248 cÚ¡ *
+aùu®
+,
+
+249 
+tun_mtu
+,
+
+250 cÚ¡ 
+’v_£t
+ *
+es
+);
+
+252 
+boÞ
+ 
+is_dev_ty³
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+, cÚ¡ *
+m©ch_ty³
+);
+
+253 
+dev_ty³_’um
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+);
+
+254 cÚ¡ *
+dev_ty³_¡ršg
+ (cÚ¡ *
+dev
+, cÚ¡ *
+dev_ty³
+);
+
+256 cÚ¡ *
+ifcÚfig_ÝtiÚs_¡ršg
+ (cÚ¡ 
+tuÁ­
+* 
+‰
+, 
+boÞ
+ 
+»mÙe
+, boÞ 
+di§bË
+, 
+gc_¬’a
+ *
+gc
+);
+
+258 
+boÞ
+ 
+is_tun_p2p
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+);
+
+260 
+check_subÃt_cÚæiù
+ (cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+261 cÚ¡ 
+š_addr_t
+ 
+Ãtmask
+,
+
+262 cÚ¡ *
+´efix
+);
+
+264 
+w¬n_Ú_u£_of_commÚ_subÃts
+ ();
+
+270 
+šlše
+ 
+
+271 
+	$tun_adju¡_äame_·¿m‘”s
+ (
+äame
+* f¿me, 
+size
+)
+
+273 
+	`äame_add_to_exŒa_tun
+ (
+äame
+, 
+size
+);
+
+274 
+	}
+}
+
+281 
+	#IFCONFIG_BEFORE_TUN_OPEN
+ 0
+
+	)
+
+282 
+	#IFCONFIG_AFTER_TUN_OPEN
+ 1
+
+	)
+
+284 
+	#IFCONFIG_DEFAULT
+ 
+IFCONFIG_AFTER_TUN_OPEN
+
+
+	)
+
+286 
+šlše
+ 
+
+287 
+	$ifcÚfig_Üd”
+()
+
+289 #ià
+	`defšed
+(
+TARGET_LINUX
+)
+
+290  
+IFCONFIG_AFTER_TUN_OPEN
+;
+
+291 #–ià
+	`defšed
+(
+TARGET_SOLARIS
+)
+
+292  
+IFCONFIG_AFTER_TUN_OPEN
+;
+
+293 #–ià
+	`defšed
+(
+TARGET_OPENBSD
+)
+
+294  
+IFCONFIG_AFTER_TUN_OPEN
+;
+
+295 #–ià
+	`defšed
+(
+TARGET_DARWIN
+)
+
+296  
+IFCONFIG_AFTER_TUN_OPEN
+;
+
+297 #–ià
+	`defšed
+(
+TARGET_NETBSD
+)
+
+298  
+IFCONFIG_AFTER_TUN_OPEN
+;
+
+299 #–ià
+	`defšed
+(
+WIN32
+)
+
+300  
+IFCONFIG_BEFORE_TUN_OPEN
+;
+
+302  
+IFCONFIG_DEFAULT
+;
+
+304 
+	}
+}
+
+306 #ifdeà
+WIN32
+
+
+308 
+	#TUN_PASS_BUFFER
+
+
+	)
+
+310 
+	s�p_»g
+
+
+312 cÚ¡ *
+	mguid
+;
+
+313 
+�p_»g
+ *
+	mÃxt
+;
+
+316 
+	s·Ãl_»g
+
+
+318 cÚ¡ *
+	mÇme
+;
+
+319 cÚ¡ *
+	mguid
+;
+
+320 
+·Ãl_»g
+ *
+	mÃxt
+;
+
+323 
+ascii2�£t
+ (cÚ¡ * 
+Çme
+);
+
+324 cÚ¡ *
+�£t2ascii
+ (
+šdex
+);
+
+325 cÚ¡ *
+�£t2ascii_®l
+ (
+gc_¬’a
+ *
+gc
+);
+
+327 
+v”ify_255_255_255_252
+ (
+š_addr_t
+ 
+loÿl
+, in_addr_ˆ
+»mÙe
+);
+
+329 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+g‘_ad­‹r_šfo_li¡
+ (
+gc_¬’a
+ *
+gc
+);
+
+330 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+g‘_tun_ad­‹r
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, cÚ¡ IP_ADAPTER_INFO *
+li¡
+);
+
+332 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+g‘_ad­‹r_šfo
+ (
+DWORD
+ 
+šdex
+, 
+gc_¬’a
+ *
+gc
+);
+
+333 cÚ¡ 
+IP_PER_ADAPTER_INFO
+ *
+g‘_³r_ad­‹r_šfo
+ (cÚ¡ 
+DWORD
+ 
+šdex
+, 
+gc_¬’a
+ *
+gc
+);
+
+334 cÚ¡ 
+IP_ADAPTER_INFO
+ *
+g‘_ad­‹r
+ (cÚ¡ IP_ADAPTER_INFO *
+ai
+, 
+DWORD
+ 
+šdex
+);
+
+336 
+boÞ
+ 
+is_ad­‹r_up
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+);
+
+337 
+boÞ
+ 
+is_�_š_ad­‹r_subÃt
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+ai
+, cÚ¡ 
+š_addr_t
+ 
+�
+, in_addr_ˆ*
+highe¡_Ãtmask
+);
+
+339 
+DWORD
+ 
+ad­‹r_šdex_of_�
+ (cÚ¡ 
+IP_ADAPTER_INFO
+ *
+li¡
+,
+
+340 cÚ¡ 
+š_addr_t
+ 
+�
+,
+
+341 *
+couÁ
+,
+
+342 
+š_addr_t
+ *
+Ãtmask
+);
+
+344 
+show_�p_wš_ad­‹rs
+ (
+msgËv
+, 
+w¬Æev
+);
+
+345 
+show_ad­‹rs
+ (
+msgËv
+);
+
+347 
+�p_®low_nÚadmš_acûss
+ (cÚ¡ *
+dev_node
+);
+
+349 
+show_v®id_wš32_tun_subÃts
+ ();
+
+350 cÚ¡ *
+�p_wš_g‘šfo
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+gc_¬’a
+ *
+gc
+);
+
+351 
+tun_show_debug
+ (
+tuÁ­
+ *
+‰
+);
+
+353 
+boÞ
+ 
+dhý_»Ëa£_by_ad­‹r_šdex
+(cÚ¡ 
+DWORD
+ 
+ad­‹r_šdex
+);
+
+354 
+boÞ
+ 
+dhý_»Ãw_by_ad­‹r_šdex
+ (cÚ¡ 
+DWORD
+ 
+ad­‹r_šdex
+);
+
+356 
+fÜk_»gi¡”_dns_aùiÚ
+ (
+tuÁ­
+ *
+‰
+);
+
+357 
+�cÚfig_»gi¡”_dns
+ (cÚ¡ 
+’v_£t
+ *
+es
+);
+
+359 
+tun_¡ªdby_š™
+ (
+tuÁ­
+ *
+‰
+);
+
+360 
+boÞ
+ 
+tun_¡ªdby
+ (
+tuÁ­
+ *
+‰
+);
+
+362 
+tun_»ad_queue
+ (
+tuÁ­
+ *
+‰
+, 
+maxsize
+);
+
+363 
+tun_wr™e_queue
+ (
+tuÁ­
+ *
+‰
+, 
+bufãr
+ *
+buf
+);
+
+364 
+tun_fš®ize
+ (
+HANDLE
+ 
+h
+, 
+ov”Ïµed_io
+ *
+io
+, 
+bufãr
+ *
+buf
+);
+
+366 
+šlše
+ 
+boÞ
+
+
+367 
+	$tuÁ­_¡Ý
+ (
+¡©us
+)
+
+373 ià(
+¡©us
+ < 0)
+
+375  
+	`Ý’v²_”ºo
+ (è=ð
+ERROR_FILE_NOT_FOUND
+;
+
+377  
+çl£
+;
+
+378 
+	}
+}
+
+380 
+šlše
+ 
+boÞ
+
+
+381 
+	$tuÁ­_abÜt
+(
+¡©us
+)
+
+386 ià(
+¡©us
+ < 0)
+
+388  
+	`Ý’v²_”ºo
+(è=ð
+ERROR_OPERATION_ABORTED
+;
+
+390  
+çl£
+;
+
+391 
+	}
+}
+
+393 
+šlše
+ 
+
+394 
+	$tun_wr™e_wš32
+ (
+tuÁ­
+ *
+‰
+, 
+bufãr
+ *
+buf
+)
+
+396 
+”r
+ = 0;
+
+397 
+¡©us
+ = 0;
+
+398 ià(
+	`ov”Ïµed_io_aùive
+ (&
+‰
+->
+wr™es
+))
+
+400 
+¡©us
+ = 
+	`tun_fš®ize
+ (
+‰
+->
+hªd
+, &‰->
+wr™es
+, 
+NULL
+);
+
+401 ià(
+¡©us
+ < 0)
+
+402 
+”r
+ = 
+	`G‘La¡E¼Ü
+ ();
+
+404 
+	`tun_wr™e_queue
+ (
+‰
+, 
+buf
+);
+
+405 ià(
+¡©us
+ < 0)
+
+407 
+	`S‘La¡E¼Ü
+ (
+”r
+);
+
+408  
+¡©us
+;
+
+411  
+	`BLEN
+ (
+buf
+);
+
+412 
+	}
+}
+
+414 
+šlše
+ 
+
+415 
+	$»ad_tun_bufã»d
+ (
+tuÁ­
+ *
+‰
+, 
+bufãr
+ *
+buf
+, 
+maxsize
+)
+
+417  
+	`tun_fš®ize
+ (
+‰
+->
+hªd
+, &‰->
+»ads
+, 
+buf
+);
+
+418 
+	}
+}
+
+420 
+šlše
+ 
+
+421 
+	$wr™e_tun_bufã»d
+ (
+tuÁ­
+ *
+‰
+, 
+bufãr
+ *
+buf
+)
+
+423  
+	`tun_wr™e_wš32
+ (
+‰
+, 
+buf
+);
+
+424 
+	}
+}
+
+428 
+šlše
+ 
+boÞ
+
+
+429 
+	$tuÁ­_¡Ý
+ (
+¡©us
+)
+
+431  
+çl£
+;
+
+432 
+	}
+}
+
+434 
+šlše
+ 
+boÞ
+
+
+435 
+	$tuÁ­_abÜt
+(
+¡©us
+)
+
+437  
+çl£
+;
+
+438 
+	}
+}
+
+440 
+šlše
+ 
+
+441 
+	$tun_¡ªdby_š™
+ (
+tuÁ­
+ *
+‰
+)
+
+443 
+	}
+}
+
+445 
+šlše
+ 
+boÞ
+
+
+446 
+	$tun_¡ªdby
+ (
+tuÁ­
+ *
+‰
+)
+
+448  
+Œue
+;
+
+449 
+	}
+}
+
+457 
+šlše
+ 
+ev’t_t
+
+
+458 
+	$tun_ev’t_hªdË
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+)
+
+460 #ifdeà
+WIN32
+
+
+461  &
+‰
+->
+rw_hªdË
+;
+
+463  
+‰
+->
+fd
+;
+
+465 
+	}
+}
+
+467 
+šlše
+ 
+
+468 
+	$tun_£t
+ (
+tuÁ­
+ *
+‰
+,
+
+469 
+ev’t_£t
+ *
+es
+,
+
+470 
+rwæags
+,
+
+471 *
+¬g
+,
+
+472 *
+³rsi¡’t
+)
+
+474 ià(
+	`tuÁ­_defšed
+ (
+‰
+))
+
+477 ià(!
+³rsi¡’t
+ || *³rsi¡’ˆ!ð
+rwæags
+)
+
+479 
+	`ev’t_ùl
+ (
+es
+, 
+	`tun_ev’t_hªdË
+ (
+‰
+), 
+rwæags
+, 
+¬g
+);
+
+480 ià(
+³rsi¡’t
+)
+
+481 *
+³rsi¡’t
+ = 
+rwæags
+;
+
+483 #ifdeà
+WIN32
+
+
+484 ià(
+rwæags
+ & 
+EVENT_READ
+)
+
+485 
+	`tun_»ad_queue
+ (
+‰
+, 0);
+
+487 
+‰
+->
+rwæags_debug
+ = 
+rwæags
+;
+
+489  
+rwæags
+;
+
+490 
+	}
+}
+
+492 cÚ¡ *
+tun_¡©
+ (cÚ¡ 
+tuÁ­
+ *
+‰
+, 
+rwæags
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@win32.c
+
+30 #ifdeà
+HAVE_CONFIG_H
+
+
+31 
+	~"cÚfig.h
+"
+
+32 #–ià
+defšed
+(
+_MSC_VER
+)
+
+33 
+	~"cÚfig-msvc.h
+"
+
+36 
+	~"sysh—d.h
+"
+
+38 #ifdeà
+WIN32
+
+
+40 
+	~"bufãr.h
+"
+
+41 
+	~"”rÜ.h
+"
+
+42 
+	~"mtu.h
+"
+
+43 
+	~"sig.h
+"
+
+44 
+	~"wš32.h
+"
+
+45 
+	~"misc.h
+"
+
+47 
+	~"memdbg.h
+"
+
+52 
+WSAD©a
+ 
+	gw§_¡©e
+;
+
+57 
+boÞ
+ 
+	g·u£_ex™_’abËd
+ = 
+çl£
+;
+
+65 
+wš32_sigÇl
+ 
+	gwš32_sigÇl
+;
+
+71 
+wšdow_t™Ë
+ 
+	gwšdow_t™Ë
+;
+
+78 
+£m­hÜe
+ 
+	gÃtcmd_£m­hÜe
+;
+
+83 *
+	gwš_sys_·th
+ = 
+NULL
+;
+
+86 
+	$š™_wš32
+ ()
+
+88 ià(
+	`WSAS�¹up
+(0x0101, &
+w§_¡©e
+))
+
+90 
+	`msg
+ (
+M_ERR
+, "WSAStartup failed");
+
+92 
+	`wšdow_t™Ë_þ—r
+ (&
+wšdow_t™Ë
+);
+
+93 
+	`wš32_sigÇl_þ—r
+ (&
+wš32_sigÇl
+);
+
+94 
+	`Ãtcmd_£m­hÜe_š™
+ ();
+
+95 
+	}
+}
+
+98 
+	$unš™_wš32
+ ()
+
+100 
+	`Ãtcmd_£m­hÜe_þo£
+ ();
+
+101 ià(
+·u£_ex™_’abËd
+)
+
+103 ià(
+wš32_sigÇl
+.
+mode
+ =ð
+WSO_MODE_UNDEF
+)
+
+105 
+wš32_sigÇl
+ 
+w
+;
+
+106 
+	`wš32_sigÇl_Ý’
+ (&
+w
+, 
+WSO_FORCE_CONSOLE
+, 
+NULL
+, 
+çl£
+);
+
+107 
+	`wš32_·u£
+ (&
+w
+);
+
+108 
+	`wš32_sigÇl_þo£
+ (&
+w
+);
+
+111 
+	`wš32_·u£
+ (&
+wš32_sigÇl
+);
+
+113 
+	`wšdow_t™Ë_»¡Üe
+ (&
+wšdow_t™Ë
+);
+
+114 
+	`wš32_sigÇl_þo£
+ (&
+wš32_sigÇl
+);
+
+115 
+	`WSACËªup
+ ();
+
+116 
+	`ä“
+ (
+wš_sys_·th
+);
+
+117 
+	}
+}
+
+120 
+	$£t_·u£_ex™_wš32
+ ()
+
+122 
+·u£_ex™_’abËd
+ = 
+Œue
+;
+
+123 
+	}
+}
+
+125 
+boÞ
+
+
+126 
+	$š™_£cur™y_©Œibu‹s_®low_®l
+ (
+£cur™y_©Œibu‹s
+ *
+obj
+)
+
+128 
+	`CLEAR
+ (*
+obj
+);
+
+130 
+obj
+->
+§
+.
+nL’gth
+ =  (
+SECURITY_ATTRIBUTES
+);
+
+131 
+obj
+->
+§
+.
+ÍSecur™yDesü�tÜ
+ = &obj->
+sd
+;
+
+132 
+obj
+->
+§
+.
+bInh”™HªdË
+ = 
+FALSE
+;
+
+133 ià(!
+	`In™ŸlizeSecur™yDesü�tÜ
+ (&
+obj
+->
+sd
+, 
+SECURITY_DESCRIPTOR_REVISION
+))
+
+134  
+çl£
+;
+
+135 ià(!
+	`S‘Secur™yDesü�tÜDaþ
+ (&
+obj
+->
+sd
+, 
+TRUE
+, 
+NULL
+, 
+FALSE
+))
+
+136  
+çl£
+;
+
+137  
+Œue
+;
+
+138 
+	}
+}
+
+141 
+	$ov”Ïµed_io_š™
+ (
+ov”Ïµed_io
+ *
+o
+,
+
+142 cÚ¡ 
+äame
+ *frame,
+
+143 
+BOOL
+ 
+ev’t_¡©e
+,
+
+144 
+boÞ
+ 
+tuÁ­_bufãr
+)
+
+146 
+	`CLEAR
+ (*
+o
+);
+
+149 
+o
+->
+ov”Ïµed
+.
+hEv’t
+ = 
+	`C»©eEv’t
+ (
+NULL
+, 
+TRUE
+, 
+ev’t_¡©e
+, NULL);
+
+150 ià(
+o
+->
+ov”Ïµed
+.
+hEv’t
+ =ð
+NULL
+)
+
+151 
+	`msg
+ (
+M_ERR
+, "Error: overlapped_io_init: CreateEvent failed");
+
+154 
+	`®loc_buf_sock_tun
+ (&
+o
+->
+buf_š™
+, 
+äame
+, 
+tuÁ­_bufãr
+, 0);
+
+155 
+	}
+}
+
+158 
+	$ov”Ïµed_io_þo£
+ (
+ov”Ïµed_io
+ *
+o
+)
+
+160 ià(
+o
+->
+ov”Ïµed
+.
+hEv’t
+)
+
+162 ià(!
+	`Clo£HªdË
+ (
+o
+->
+ov”Ïµed
+.
+hEv’t
+))
+
+163 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: CloseHandle failed on overlapped I/Oƒvent object");
+
+165 
+	`ä“_buf
+ (&
+o
+->
+buf_š™
+);
+
+166 
+	}
+}
+
+169 
+	$ov”Ïµed_io_¡©e_ascii
+ (cÚ¡ 
+ov”Ïµed_io
+ *
+o
+)
+
+171 
+o
+->
+io¡©e
+)
+
+173 
+IOSTATE_INITIAL
+:
+
+175 
+IOSTATE_QUEUED
+:
+
+177 
+IOSTATE_IMMEDIATE_RETURN
+:
+
+181 
+	}
+}
+
+188 
+	$š™_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+ÃtwÜk_ev’ts
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+, 
+æags
+)
+
+193 ià(!(
+æags
+ & 
+NE32_PERSIST_EVENT
+è|| !
+ev’t
+->
+wr™e
+)
+
+195 ià(
+æags
+ & 
+NE32_WRITE_EVENT
+)
+
+197 
+ev’t
+->
+wr™e
+ = 
+	`C»©eEv’t
+ (
+NULL
+, 
+TRUE
+, 
+FALSE
+, NULL);
+
+198 ià(
+ev’t
+->
+wr™e
+ =ð
+NULL
+)
+
+199 
+	`msg
+ (
+M_ERR
+, "Error: init_net_event_win32: CreateEvent (write) failed");
+
+202 
+ev’t
+->
+wr™e
+ = 
+NULL
+;
+
+206 ià(!(
+æags
+ & 
+NE32_PERSIST_EVENT
+è|| !
+ev’t
+->
+»ad
+)
+
+208 
+ev’t
+->
+»ad
+ = 
+	`C»©eEv’t
+ (
+NULL
+, 
+TRUE
+, 
+FALSE
+, NULL);
+
+209 ià(
+ev’t
+->
+»ad
+ =ð
+NULL
+)
+
+210 
+	`msg
+ (
+M_ERR
+, "Error: init_net_event_win32: CreateEvent (read) failed");
+
+214 ià(
+	`WSAEv’tS–eù
+ (
+sd
+, 
+ev’t
+->
+»ad
+, 
+ÃtwÜk_ev’ts
+) != 0)
+
+215 
+	`msg
+ (
+M_FATAL
+ | 
+M_ERRNO
+, "Error: init_net_event_win32: WSAEventSelect call failed");
+
+216 
+	}
+}
+
+219 
+	$»£t_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+221 
+WSANETWORKEVENTS
+ 
+wÃ
+;
+
+222 ià(
+	`WSAEnumN‘wÜkEv’ts
+ (
+sd
+, 
+ev’t
+->
+»ad
+, &
+wÃ
+) != 0)
+
+224 
+	`msg
+ (
+M_FATAL
+ | 
+M_ERRNO
+, "Error:„eset_net_event_win32: WSAEnumNetworkEvents call failed");
+
+228  
+wÃ
+.
+lN‘wÜkEv’ts
+;
+
+229 
+	}
+}
+
+232 
+	$þo£_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+, 
+æags
+)
+
+234 ià(
+ev’t
+->
+»ad
+)
+
+236 ià(
+	`sock‘_defšed
+ (
+sd
+))
+
+238 ià(
+	`WSAEv’tS–eù
+ (
+sd
+, 
+ev’t
+->
+»ad
+, 0) != 0)
+
+239 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: close_net_event_win32: WSAEventSelect call failed");
+
+241 ià(!
+	`Re£tEv’t
+ (
+ev’t
+->
+»ad
+))
+
+242 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: ResetEvent (read) failed in close_net_event_win32");
+
+243 ià(!(
+æags
+ & 
+NE32_PERSIST_EVENT
+))
+
+245 ià(!
+	`Clo£HªdË
+ (
+ev’t
+->
+»ad
+))
+
+246 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: CloseHandle (read) failed in close_net_event_win32");
+
+247 
+ev’t
+->
+»ad
+ = 
+NULL
+;
+
+251 ià(
+ev’t
+->
+wr™e
+)
+
+253 ià(!
+	`Re£tEv’t
+ (
+ev’t
+->
+wr™e
+))
+
+254 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: ResetEvent (write) failed in close_net_event_win32");
+
+255 ià(!(
+æags
+ & 
+NE32_PERSIST_EVENT
+))
+
+257 ià(!
+	`Clo£HªdË
+ (
+ev’t
+->
+wr™e
+))
+
+258 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: CloseHandle (write) failed in close_net_event_win32");
+
+259 
+ev’t
+->
+wr™e
+ = 
+NULL
+;
+
+262 
+	}
+}
+
+269 
+	$Ãt_ev’t_wš32_š™
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+271 
+	`CLEAR
+ (*
+Ã
+);
+
+272 
+Ã
+->
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+273 
+	}
+}
+
+276 
+	$Ãt_ev’t_wš32_¡¬t
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+, 
+ÃtwÜk_ev’ts
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+)
+
+278 
+	`ASSERT
+ (!
+	`sock‘_defšed
+ (
+Ã
+->
+sd
+));
+
+279 
+Ã
+->
+sd
+ = sd;
+
+280 
+Ã
+->
+ev’t_mask
+ = 0;
+
+281 
+	`š™_Ãt_ev’t_wš32
+ (&
+Ã
+->
+hªdË
+, 
+ÃtwÜk_ev’ts
+, 
+sd
+, 
+NE32_PERSIST_EVENT
+|
+NE32_WRITE_EVENT
+);
+
+282 
+	}
+}
+
+285 
+	$Ãt_ev’t_wš32_»£t_wr™e
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+287 
+BOOL
+ 
+¡©us
+;
+
+288 ià(
+Ã
+->
+ev’t_mask
+ & 
+FD_WRITE
+)
+
+289 
+¡©us
+ = 
+	`S‘Ev’t
+ (
+Ã
+->
+hªdË
+.
+wr™e
+);
+
+291 
+¡©us
+ = 
+	`Re£tEv’t
+ (
+Ã
+->
+hªdË
+.
+wr™e
+);
+
+292 ià(!
+¡©us
+)
+
+293 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "Warning: SetEvent/ResetEvent failed in‚et_event_win32_reset_write");
+
+294 
+	}
+}
+
+297 
+	$Ãt_ev’t_wš32_»£t
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+299 
+Ã
+->
+ev’t_mask
+ |ð
+	`»£t_Ãt_ev’t_wš32
+ (&Ã->
+hªdË
+,‚e->
+sd
+);
+
+300 
+	}
+}
+
+303 
+	$Ãt_ev’t_wš32_¡Ý
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+305 ià(
+	`Ãt_ev’t_wš32_defšed
+ (
+Ã
+))
+
+306 
+	`þo£_Ãt_ev’t_wš32
+ (&
+Ã
+->
+hªdË
+,‚e->
+sd
+, 
+NE32_PERSIST_EVENT
+);
+
+307 
+Ã
+->
+sd
+ = 
+SOCKET_UNDEFINED
+;
+
+308 
+Ã
+->
+ev’t_mask
+ = 0;
+
+309 
+	}
+}
+
+312 
+	$Ãt_ev’t_wš32_þo£
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+314 ià(
+	`Ãt_ev’t_wš32_defšed
+ (
+Ã
+))
+
+315 
+	`þo£_Ãt_ev’t_wš32
+ (&
+Ã
+->
+hªdË
+,‚e->
+sd
+, 0);
+
+316 
+	`Ãt_ev’t_wš32_š™
+ (
+Ã
+);
+
+317 
+	}
+}
+
+328 
+	$wš32_sigÇl_þ—r
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+330 
+	`CLEAR
+ (*
+ws
+);
+
+331 
+	}
+}
+
+334 
+	$wš32_sigÇl_Ý’
+ (
+wš32_sigÇl
+ *
+ws
+,
+
+335 
+fÜû
+,
+
+336 cÚ¡ *
+ex™_ev’t_Çme
+,
+
+337 
+boÞ
+ 
+ex™_ev’t_š™Ÿl_¡©e
+)
+
+339 
+	`CLEAR
+ (*
+ws
+);
+
+341 
+ws
+->
+mode
+ = 
+WSO_MODE_UNDEF
+;
+
+342 
+ws
+->
+š
+.
+»ad
+ = 
+INVALID_HANDLE_VALUE
+;
+
+343 
+ws
+->
+š
+.
+wr™e
+ = 
+INVALID_HANDLE_VALUE
+;
+
+344 
+ws
+->
+cÚsÞe_mode_§ve
+ = 0;
+
+345 
+ws
+->
+cÚsÞe_mode_§ve_defšed
+ = 
+çl£
+;
+
+347 ià(
+fÜû
+ =ð
+WSO_NOFORCE
+ || fÜû =ð
+WSO_FORCE_CONSOLE
+)
+
+352 
+ws
+->
+š
+.
+»ad
+ = 
+	`G‘StdHªdË
+ (
+STD_INPUT_HANDLE
+);
+
+353 ià(
+ws
+->
+š
+.
+»ad
+ !ð
+INVALID_HANDLE_VALUE
+)
+
+355 ià(
+	`G‘CÚsÞeMode
+ (
+ws
+->
+š
+.
+»ad
+, &ws->
+cÚsÞe_mode_§ve
+))
+
+358 cÚ¡ 
+DWORD
+ 
+Ãw_cÚsÞe_mode
+ = 
+ws
+->
+cÚsÞe_mode_§ve
+
+
+359 & ~(
+ENABLE_WINDOW_INPUT
+
+
+360 | 
+ENABLE_PROCESSED_INPUT
+
+
+361 | 
+ENABLE_LINE_INPUT
+
+
+362 | 
+ENABLE_ECHO_INPUT
+
+
+363 | 
+ENABLE_MOUSE_INPUT
+);
+
+365 ià(
+Ãw_cÚsÞe_mode
+ !ð
+ws
+->
+cÚsÞe_mode_§ve
+)
+
+367 ià(!
+	`S‘CÚsÞeMode
+ (
+ws
+->
+š
+.
+»ad
+, 
+Ãw_cÚsÞe_mode
+))
+
+368 
+	`msg
+ (
+M_ERR
+, "Error: win32_signal_open: SetConsoleMode failed");
+
+369 
+ws
+->
+cÚsÞe_mode_§ve_defšed
+ = 
+Œue
+;
+
+371 
+ws
+->
+mode
+ = 
+WSO_MODE_CONSOLE
+;
+
+374 
+ws
+->
+š
+.
+»ad
+ = 
+INVALID_HANDLE_VALUE
+;
+
+382 ià((
+fÜû
+ =ð
+WSO_NOFORCE
+ || fÜû =ð
+WSO_FORCE_SERVICE
+)
+
+383 && !
+	`HANDLE_DEFINED
+ (
+ws
+->
+š
+.
+»ad
+è&& 
+ex™_ev’t_Çme
+)
+
+385 
+£cur™y_©Œibu‹s
+ 
+§
+;
+
+387 ià(!
+	`š™_£cur™y_©Œibu‹s_®low_®l
+ (&
+§
+))
+
+388 
+	`msg
+ (
+M_ERR
+, "Error: win32_signal_open: init SA failed");
+
+390 
+ws
+->
+š
+.
+»ad
+ = 
+	`C»©eEv’t
+ (&
+§
+.sa,
+
+391 
+TRUE
+,
+
+392 
+ex™_ev’t_š™Ÿl_¡©e
+ ? 
+TRUE
+ : 
+FALSE
+,
+
+393 
+ex™_ev’t_Çme
+);
+
+394 ià(
+ws
+->
+š
+.
+»ad
+ =ð
+NULL
+)
+
+396 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "NOTE: C»©eEv’ˆ'%s' fažed", 
+ex™_ev’t_Çme
+);
+
+400 ià(
+	`Wa™FÜSšgËObjeù
+ (
+ws
+->
+š
+.
+»ad
+, 0è!ð
+WAIT_TIMEOUT
+)
+
+401 
+	`msg
+ (
+M_FATAL
+, "ERROR: Ex™ Ev’ˆ('%s'èi sigÇËd", 
+ex™_ev’t_Çme
+);
+
+403 
+ws
+->
+mode
+ = 
+WSO_MODE_SERVICE
+;
+
+406 
+	}
+}
+
+408 
+boÞ
+
+
+409 
+	$keybßrd_šput_avažabË
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+411 
+	`ASSERT
+ (
+ws
+->
+mode
+ =ð
+WSO_MODE_CONSOLE
+);
+
+412 ià(
+	`HANDLE_DEFINED
+ (
+ws
+->
+š
+.
+»ad
+))
+
+414 
+DWORD
+ 
+n
+;
+
+415 ià(
+	`G‘Numb”OfCÚsÞeIÅutEv’ts
+ (
+ws
+->
+š
+.
+»ad
+, &
+n
+))
+
+416  
+n
+ > 0;
+
+418  
+çl£
+;
+
+419 
+	}
+}
+
+422 
+	$keybßrd_œ_to_key
+ (
+INPUT_RECORD
+ *
+œ
+)
+
+424 ià(
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+uCh¬
+.
+AsciiCh¬
+ == 0)
+
+425  
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+wVœtu®SÿnCode
+;
+
+427 ià((
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+dwCÚŒÞKeyS�‹
+
+
+428 & (
+LEFT_ALT_PRESSED
+ | 
+RIGHT_ALT_PRESSED
+))
+
+429 && (
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+wVœtu®KeyCode
+ != 18))
+
+430  
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+wVœtu®SÿnCode
+ * 256;
+
+432  
+œ
+->
+Ev’t
+.
+KeyEv’t
+.
+uCh¬
+.
+AsciiCh¬
+;
+
+433 
+	}
+}
+
+436 
+	$wš32_keybßrd_g‘
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+438 
+	`ASSERT
+ (
+ws
+->
+mode
+ =ð
+WSO_MODE_CONSOLE
+);
+
+439 ià(
+	`HANDLE_DEFINED
+ (
+ws
+->
+š
+.
+»ad
+))
+
+441 
+INPUT_RECORD
+ 
+œ
+;
+
+443 
+DWORD
+ 
+n
+;
+
+444 ià(!
+	`keybßrd_šput_avažabË
+ (
+ws
+))
+
+446 ià(!
+	`R—dCÚsÞeIÅut
+ (
+ws
+->
+š
+.
+»ad
+, &
+œ
+, 1, &
+n
+))
+
+448 } 
+œ
+.
+Ev’tTy³
+ !ð
+KEY_EVENT
+ || ir.
+Ev’t
+.
+KeyEv’t
+.
+bKeyDown
+ !ð
+TRUE
+);
+
+450  
+	`keybßrd_œ_to_key
+ (&
+œ
+);
+
+454 
+	}
+}
+
+457 
+	$wš32_sigÇl_þo£
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+459 ià(
+ws
+->
+mode
+ =ð
+WSO_MODE_SERVICE
+ && 
+	`HANDLE_DEFINED
+ (ws->
+š
+.
+»ad
+))
+
+460 
+	`Clo£HªdË
+ (
+ws
+->
+š
+.
+»ad
+);
+
+461 ià(
+ws
+->
+cÚsÞe_mode_§ve_defšed
+)
+
+463 ià(!
+	`S‘CÚsÞeMode
+ (
+ws
+->
+š
+.
+»ad
+, ws->
+cÚsÞe_mode_§ve
+))
+
+464 
+	`msg
+ (
+M_ERR
+, "Error: win32_signal_close: SetConsoleMode failed");
+
+466 
+	`CLEAR
+ (*
+ws
+);
+
+467 
+	}
+}
+
+472 
+boÞ
+
+
+473 
+	$wš32_£rviû_š‹¼u±
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+475 ià(
+ws
+->
+mode
+ =ð
+WSO_MODE_SERVICE
+)
+
+477 ià(
+	`HANDLE_DEFINED
+ (
+ws
+->
+š
+.
+»ad
+)
+
+478 && 
+	`Wa™FÜSšgËObjeù
+ (
+ws
+->
+š
+.
+»ad
+, 0è=ð
+WAIT_OBJECT_0
+)
+
+479  
+Œue
+;
+
+481  
+çl£
+;
+
+482 
+	}
+}
+
+485 
+	$wš32_sigÇl_g‘
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+487 
+»t
+ = 0;
+
+488 ià(
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+)
+
+490 
+»t
+ = 
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+;
+
+494 ià(
+ws
+->
+mode
+ =ð
+WSO_MODE_SERVICE
+)
+
+496 ià(
+	`wš32_£rviû_š‹¼u±
+ (
+ws
+))
+
+497 
+»t
+ = 
+SIGTERM
+;
+
+499 ià(
+ws
+->
+mode
+ =ð
+WSO_MODE_CONSOLE
+)
+
+501 
+	`wš32_keybßrd_g‘
+ (
+ws
+))
+
+504 
+»t
+ = 
+SIGUSR1
+;
+
+507 
+»t
+ = 
+SIGUSR2
+;
+
+510 
+»t
+ = 
+SIGHUP
+;
+
+513 
+»t
+ = 
+SIGTERM
+;
+
+517 ià(
+»t
+)
+
+519 
+sigšfo_¡©ic
+.
+sigÇl_»ûived
+ = 
+»t
+;
+
+520 
+sigšfo_¡©ic
+.
+h¬d
+ = 
+Œue
+;
+
+523  
+»t
+;
+
+524 
+	}
+}
+
+527 
+	$wš32_·u£
+ (
+wš32_sigÇl
+ *
+ws
+)
+
+529 ià(
+ws
+->
+mode
+ =ð
+WSO_MODE_CONSOLE
+ && 
+	`HANDLE_DEFINED
+ (ws->
+š
+.
+»ad
+))
+
+531 
+¡©us
+;
+
+532 
+	`msg
+ (
+M_INFO
+|
+M_NOPREFIX
+, "Press‡ny key�o continue...");
+
+534 
+¡©us
+ = 
+	`Wa™FÜSšgËObjeù
+ (
+ws
+->
+š
+.
+»ad
+, 
+INFINITE
+);
+
+535 } !
+	`wš32_keybßrd_g‘
+ (
+ws
+));
+
+537 
+	}
+}
+
+542 
+	$wšdow_t™Ë_þ—r
+ (
+wšdow_t™Ë
+ *
+wt
+)
+
+544 
+	`CLEAR
+ (*
+wt
+);
+
+545 
+	}
+}
+
+548 
+	$wšdow_t™Ë_§ve
+ (
+wšdow_t™Ë
+ *
+wt
+)
+
+550 ià(!
+wt
+->
+§ved
+)
+
+552 ià(!
+	`G‘CÚsÞeT™Ë
+ (
+wt
+->
+Þd_wšdow_t™Ë
+,  (wt->old_window_title)))
+
+554 
+wt
+->
+Þd_wšdow_t™Ë
+[0] = 0;
+
+555 
+wt
+->
+§ved
+ = 
+çl£
+;
+
+558 
+wt
+->
+§ved
+ = 
+Œue
+;
+
+560 
+	}
+}
+
+563 
+	$wšdow_t™Ë_»¡Üe
+ (cÚ¡ 
+wšdow_t™Ë
+ *
+wt
+)
+
+565 ià(
+wt
+->
+§ved
+)
+
+566 
+	`S‘CÚsÞeT™Ë
+ (
+wt
+->
+Þd_wšdow_t™Ë
+);
+
+567 
+	}
+}
+
+570 
+	$wšdow_t™Ë_g’”©e
+ (cÚ¡ *
+t™Ë
+)
+
+572 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+573 
+bufãr
+ 
+out
+ = 
+	`®loc_buf_gc
+ (256, &
+gc
+);
+
+574 ià(!
+t™Ë
+)
+
+575 
+t™Ë
+ = "";
+
+576 
+	`buf_´štf
+ (&
+out
+, "[%s] " 
+PACKAGE_NAME
+ " " 
+PACKAGE_VERSION
+ " F4:EXIT F1:USR1 F2:USR2 F3:HUP", 
+t™Ë
+);
+
+577 
+	`S‘CÚsÞeT™Ë
+ (
+	`BSTR
+ (&
+out
+));
+
+578 
+	`gc_ä“
+ (&
+gc
+);
+
+579 
+	}
+}
+
+584 
+	$£m­hÜe_þ—r
+ (
+£m­hÜe
+ *
+s
+)
+
+586 
+	`CLEAR
+ (*
+s
+);
+
+587 
+	}
+}
+
+590 
+	$£m­hÜe_Ý’
+ (
+£m­hÜe
+ *
+s
+, cÚ¡ *
+Çme
+)
+
+592 
+£cur™y_©Œibu‹s
+ 
+§
+;
+
+594 
+s
+->
+locked
+ = 
+çl£
+;
+
+595 
+s
+->
+Çme
+ =‚ame;
+
+596 
+s
+->
+hªd
+ = 
+NULL
+;
+
+598 ià(
+	`š™_£cur™y_©Œibu‹s_®low_®l
+ (&
+§
+))
+
+599 
+s
+->
+hªd
+ = 
+	`C»©eSem­hÜe
+(&
+§
+.§, 1, 1, 
+Çme
+);
+
+601 ià(
+s
+->
+hªd
+ =ð
+NULL
+)
+
+602 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "WARNING: CªnÙ c»©�Wš32 sem­hÜ�'%s'", 
+Çme
+);
+
+604 
+	`dmsg
+ (
+D_SEMAPHORE
+, "C»©ed Wš32 sem­hÜ�'%s'", 
+s
+->
+Çme
+);
+
+605 
+	}
+}
+
+607 
+boÞ
+
+
+608 
+	$£m­hÜe_lock
+ (
+£m­hÜe
+ *
+s
+, 
+timeout_mžli£cÚds
+)
+
+610 
+boÞ
+ 
+»t
+ = 
+Œue
+;
+
+612 ià(
+s
+->
+hªd
+)
+
+614 
+DWORD
+ 
+¡©us
+;
+
+615 
+	`ASSERT
+ (!
+s
+->
+locked
+);
+
+617 
+	`dmsg
+ (
+D_SEMAPHORE_LOW
+, "Attempting�o†ock Win32 semaphore '%s'…rior�o‚et shell command (timeout = %d sec)",
+
+618 
+s
+->
+Çme
+,
+
+619 
+timeout_mžli£cÚds
+ / 1000);
+
+620 
+¡©us
+ = 
+	`Wa™FÜSšgËObjeù
+ (
+s
+->
+hªd
+, 
+timeout_mžli£cÚds
+);
+
+621 ià(
+¡©us
+ =ð
+WAIT_FAILED
+)
+
+622 
+	`msg
+ (
+M_ERR
+, "Wa™ fažed oÀWš32 sem­hÜ�'%s'", 
+s
+->
+Çme
+);
+
+623 
+»t
+ = (
+¡©us
+ =ð
+WAIT_TIMEOUT
+è? 
+çl£
+ : 
+Œue
+;
+
+624 ià(
+»t
+)
+
+626 
+	`dmsg
+ (
+D_SEMAPHORE
+, "Locked Wš32 sem­hÜ�'%s'", 
+s
+->
+Çme
+);
+
+627 
+s
+->
+locked
+ = 
+Œue
+;
+
+631 
+	`dmsg
+ (
+D_SEMAPHORE
+, "Wait on Win32 semaphore '%s'�imed out‡fter %d milliseconds",
+
+632 
+s
+->
+Çme
+,
+
+633 
+timeout_mžli£cÚds
+);
+
+636  
+»t
+;
+
+637 
+	}
+}
+
+640 
+	$£m­hÜe_»Ëa£
+ (
+£m­hÜe
+ *
+s
+)
+
+642 ià(
+s
+->
+hªd
+)
+
+644 
+	`ASSERT
+ (
+s
+->
+locked
+);
+
+645 
+	`dmsg
+ (
+D_SEMAPHORE
+, "R–—sšg Wš32 sem­hÜ�'%s'", 
+s
+->
+Çme
+);
+
+646 ià(!
+	`R–—£Sem­hÜe
+(
+s
+->
+hªd
+, 1, 
+NULL
+))
+
+647 
+	`msg
+ (
+M_WARN
+ | 
+M_ERRNO
+, "ReleaseSemaphore failed on Win32 semaphore '%s'",
+
+648 
+s
+->
+Çme
+);
+
+649 
+s
+->
+locked
+ = 
+çl£
+;
+
+651 
+	}
+}
+
+654 
+	$£m­hÜe_þo£
+ (
+£m­hÜe
+ *
+s
+)
+
+656 ià(
+s
+->
+hªd
+)
+
+658 ià(
+s
+->
+locked
+)
+
+659 
+	`£m­hÜe_»Ëa£
+ (
+s
+);
+
+660 
+	`dmsg
+ (
+D_SEMAPHORE
+, "Closšg Wš32 sem­hÜ�'%s'", 
+s
+->
+Çme
+);
+
+661 
+	`Clo£HªdË
+ (
+s
+->
+hªd
+);
+
+662 
+s
+->
+hªd
+ = 
+NULL
+;
+
+664 
+	}
+}
+
+672 
+	$Ãtcmd_£m­hÜe_š™
+ ()
+
+674 
+	`£m­hÜe_Ý’
+ (&
+Ãtcmd_£m­hÜe
+, 
+PACKAGE
+ "_netcmd");
+
+675 
+	}
+}
+
+678 
+	$Ãtcmd_£m­hÜe_þo£
+ ()
+
+680 
+	`£m­hÜe_þo£
+ (&
+Ãtcmd_£m­hÜe
+);
+
+681 
+	}
+}
+
+684 
+	$Ãtcmd_£m­hÜe_lock
+ ()
+
+686 cÚ¡ 
+timeout_£cÚds
+ = 600;
+
+687 ià(!
+	`£m­hÜe_lock
+ (&
+Ãtcmd_£m­hÜe
+, 
+timeout_£cÚds
+ * 1000))
+
+688 
+	`msg
+ (
+M_FATAL
+, "Cannot†ock‚et command semaphore");
+
+689 
+	}
+}
+
+692 
+	$Ãtcmd_£m­hÜe_»Ëa£
+ ()
+
+694 
+	`£m­hÜe_»Ëa£
+ (&
+Ãtcmd_£m­hÜe
+);
+
+695 
+	}
+}
+
+708 
+boÞ
+
+
+709 
+	$cmp_´efix
+ (cÚ¡ *
+¡r
+, cÚ¡ 
+boÞ
+ 
+n
+, cÚ¡ *
+´e
+)
+
+711 
+size_t
+ 
+i
+ = 0;
+
+713 ià(!
+¡r
+)
+
+714  
+çl£
+;
+
+716 
+Œue
+)
+
+718 cÚ¡ 
+c1
+ = 
+´e
+[
+i
+];
+
+719 
+c2
+ = 
+¡r
+[
+i
+];
+
+720 ++
+i
+;
+
+721 ià(
+c1
+ == '\0')
+
+723 ià(
+n
+)
+
+725 ià(
+	`isdig™
+ (
+c2
+))
+
+726 
+c2
+ = 
+¡r
+[
+i
+];
+
+728  
+çl£
+;
+
+730  
+c2
+ == '\0' || c2 == '.';
+
+732 ià(
+c2
+ == '\0')
+
+733  
+çl£
+;
+
+734 ià(
+c1
+ !ð
+	`tÞow”
+(
+c2
+))
+
+735  
+çl£
+;
+
+737 
+	}
+}
+
+739 
+boÞ
+
+
+740 
+	$wš_§ã_fž’ame
+ (cÚ¡ *
+â
+)
+
+742 ià(
+	`cmp_´efix
+ (
+â
+, 
+çl£
+, "con"))
+
+743  
+çl£
+;
+
+744 ià(
+	`cmp_´efix
+ (
+â
+, 
+çl£
+, "prn"))
+
+745  
+çl£
+;
+
+746 ià(
+	`cmp_´efix
+ (
+â
+, 
+çl£
+, "aux"))
+
+747  
+çl£
+;
+
+748 ià(
+	`cmp_´efix
+ (
+â
+, 
+çl£
+, "nul"))
+
+749  
+çl£
+;
+
+750 ià(
+	`cmp_´efix
+ (
+â
+, 
+Œue
+, "com"))
+
+751  
+çl£
+;
+
+752 ià(
+	`cmp_´efix
+ (
+â
+, 
+Œue
+, "lpt"))
+
+753  
+çl£
+;
+
+754 ià(
+	`cmp_´efix
+ (
+â
+, 
+çl£
+, "clock$"))
+
+755  
+çl£
+;
+
+756  
+Œue
+;
+
+757 
+	}
+}
+
+764 
+	$’v_block
+ (cÚ¡ 
+’v_£t
+ *
+es
+)
+
+766 * 
+fÜû_·th
+ = "PATH=C:\\Windows\\System32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem";
+
+768 ià(
+es
+)
+
+770 
+’v_™em
+ *
+e
+;
+
+771 *
+»t
+;
+
+772 *
+p
+;
+
+773 
+size_t
+ 
+nch¬s
+ = 1;
+
+774 
+boÞ
+ 
+·th_£’
+ = 
+çl£
+;
+
+776 
+e
+ = 
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+777 
+nch¬s
+ +ð
+	`¡¾’
+ (
+e
+->
+¡ršg
+) + 1;
+
+779 
+nch¬s
+ +ð
+	`¡¾’
+(
+fÜû_·th
+)+1;
+
+781 
+»t
+ = (*è
+	`m®loc
+ (
+nch¬s
+);
+
+782 
+	`check_m®loc_»tuº
+ (
+»t
+);
+
+784 
+p
+ = 
+»t
+;
+
+785 
+e
+ = 
+es
+->
+li¡
+;ƒ !ð
+NULL
+;ƒ =ƒ->
+Ãxt
+)
+
+787 ià(
+	`’v_®lowed
+ (
+e
+->
+¡ršg
+))
+
+789 
+	`¡rýy
+ (
+p
+, 
+e
+->
+¡ršg
+);
+
+790 
+p
+ +ð
+	`¡¾’
+ (
+e
+->
+¡ršg
+) + 1;
+
+792 iàÐ
+	`¡ºcmp
+(
+e
+->
+¡ršg
+, "PATH=", 5 ) == 0 )
+
+793 
+·th_£’
+ = 
+Œue
+;
+
+797 iàÐ!
+·th_£’
+ )
+
+799 
+	`msg
+Ð
+M_INFO
+, "’v_block:‡dd %s", 
+fÜû_·th
+ );
+
+800 
+	`¡rýy
+Ð
+p
+, 
+fÜû_·th
+ );
+
+801 
+p
+ +ð
+	`¡¾’
+(
+fÜû_·th
+) + 1;
+
+804 *
+p
+ = '\0';
+
+805  
+»t
+;
+
+808  
+NULL
+;
+
+809 
+	}
+}
+
+811 
+WCHAR
+ *
+
+812 
+	$wide_cmd_lše
+ (cÚ¡ 
+¬gv
+ *
+a
+, 
+gc_¬’a
+ *
+gc
+)
+
+814 
+size_t
+ 
+nch¬s
+ = 1;
+
+815 
+size_t
+ 
+maxËn
+ = 0;
+
+816 
+size_t
+ 
+i
+;
+
+817 
+bufãr
+ 
+buf
+;
+
+818 *
+wÜk
+ = 
+NULL
+;
+
+820 ià(!
+a
+)
+
+821  
+NULL
+;
+
+823 
+i
+ = 0; i < 
+a
+->
+¬gc
+; ++i)
+
+825 cÚ¡ *
+¬g
+ = 
+a
+->
+¬gv
+[
+i
+];
+
+826 cÚ¡ 
+size_t
+ 
+Ën
+ = 
+	`¡¾’
+ (
+¬g
+);
+
+827 
+nch¬s
+ +ð
+Ën
+ + 3;
+
+828 ià(
+Ën
+ > 
+maxËn
+)
+
+829 
+maxËn
+ = 
+Ën
+;
+
+832 
+wÜk
+ = 
+	`gc_m®loc
+ (
+maxËn
+ + 1, 
+çl£
+, 
+gc
+);
+
+833 
+	`check_m®loc_»tuº
+ (
+wÜk
+);
+
+834 
+buf
+ = 
+	`®loc_buf_gc
+ (
+nch¬s
+, 
+gc
+);
+
+836 
+i
+ = 0; i < 
+a
+->
+¬gc
+; ++i)
+
+838 cÚ¡ *
+¬g
+ = 
+a
+->
+¬gv
+[
+i
+];
+
+839 
+	`¡rýy
+ (
+wÜk
+, 
+¬g
+);
+
+840 
+	`¡ršg_mod
+ (
+wÜk
+, 
+CC_PRINT
+, 
+CC_DOUBLE_QUOTE
+|
+CC_CRLF
+, '_');
+
+841 ià(
+i
+)
+
+842 
+	`buf_´štf
+ (&
+buf
+, " ");
+
+843 ià(
+	`¡ršg_þass
+ (
+wÜk
+, 
+CC_ANY
+, 
+CC_SPACE
+))
+
+844 
+	`buf_´štf
+ (&
+buf
+, "%s", 
+wÜk
+);
+
+846 
+	`buf_´štf
+ (&
+buf
+, "\"%s\"", 
+wÜk
+);
+
+849  
+	`wide_¡ršg
+ (
+	`BSTR
+ (&
+buf
+), 
+gc
+);
+
+850 
+	}
+}
+
+856 
+	$Ý’v²_execve
+ (cÚ¡ 
+¬gv
+ *
+a
+, cÚ¡ 
+’v_£t
+ *
+es
+, cÚ¡ 
+æags
+)
+
+858 
+»t
+ = -1;
+
+859 
+boÞ
+ 
+exec_w¬n
+ = 
+çl£
+;
+
+861 ià(
+a
+ &&‡->
+¬gv
+[0])
+
+863 ià(
+	`Ý’v²_execve_®lowed
+ (
+æags
+))
+
+865 
+gc_¬’a
+ 
+gc
+ = 
+	`gc_Ãw
+ ();
+
+866 
+STARTUPINFOW
+ 
+¡¬t_šfo
+;
+
+867 
+PROCESS_INFORMATION
+ 
+´oc_šfo
+;
+
+869 *
+’v
+ = 
+	`’v_block
+ (
+es
+);
+
+870 
+WCHAR
+ *
+þ
+ = 
+	`wide_cmd_lše
+ (
+a
+, &
+gc
+);
+
+871 
+WCHAR
+ *
+cmd
+ = 
+	`wide_¡ršg
+ (
+a
+->
+¬gv
+[0], &
+gc
+);
+
+874 
+DWORD
+ 
+´oc_æags
+ = 
+CREATE_NO_WINDOW
+;
+
+876 
+	`CLEAR
+ (
+¡¬t_šfo
+);
+
+877 
+	`CLEAR
+ (
+´oc_šfo
+);
+
+880 
+	`G‘S�¹upInfoW
+(&
+¡¬t_šfo
+);
+
+881 
+¡¬t_šfo
+.
+cb
+ = (start_info);
+
+882 
+¡¬t_šfo
+.
+dwFÏgs
+ = 
+STARTF_USESHOWWINDOW
+;
+
+883 
+¡¬t_šfo
+.
+wShowWšdow
+ = 
+SW_HIDE
+;
+
+885 ià(
+	`C»©eProûssW
+ (
+cmd
+, 
+þ
+, 
+NULL
+, NULL, 
+FALSE
+, 
+´oc_æags
+, 
+’v
+, NULL, &
+¡¬t_šfo
+, &
+´oc_šfo
+))
+
+887 
+DWORD
+ 
+ex™_¡©us
+ = 0;
+
+888 
+	`Clo£HªdË
+ (
+´oc_šfo
+.
+hTh»ad
+);
+
+889 
+	`Wa™FÜSšgËObjeù
+ (
+´oc_šfo
+.
+hProûss
+, 
+INFINITE
+);
+
+890 ià(
+	`G‘Ex™CodeProûss
+ (
+´oc_šfo
+.
+hProûss
+, &
+ex™_¡©us
+))
+
+891 
+»t
+ = ()
+ex™_¡©us
+;
+
+893 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "Ý’v²_execve: G‘Ex™CodeProûs %S fažed", 
+cmd
+);
+
+894 
+	`Clo£HªdË
+ (
+´oc_šfo
+.
+hProûss
+);
+
+898 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "Ý’v²_execve: C»©eProûs %S fažed", 
+cmd
+);
+
+900 
+	`ä“
+ (
+’v
+);
+
+901 
+	`gc_ä“
+ (&
+gc
+);
+
+903 ià(!
+exec_w¬n
+ && (
+sü�t_£cur™y
+ < 
+SSEC_SCRIPTS
+))
+
+905 
+	`msg
+ (
+M_WARN
+, 
+SCRIPT_SECURITY_WARNING
+);
+
+906 
+exec_w¬n
+ = 
+Œue
+;
+
+911 
+	`msg
+ (
+M_WARN
+, "openvpn_execve: called withƒmpty‡rgv");
+
+913  
+»t
+;
+
+914 
+	}
+}
+
+916 
+WCHAR
+ *
+
+917 
+	$wide_¡ršg
+ (cÚ¡ * 
+utf8
+, 
+gc_¬’a
+ *
+gc
+)
+
+919 
+n
+ = 
+	`MuÉiBy‹ToWideCh¬
+ (
+CP_UTF8
+, 0, 
+utf8
+, -1, 
+NULL
+, 0);
+
+920 
+WCHAR
+ *
+ucs16
+ = 
+	`gc_m®loc
+ (
+n
+ *  (WCHAR), 
+çl£
+, 
+gc
+);
+
+921 
+	`MuÉiBy‹ToWideCh¬
+ (
+CP_UTF8
+, 0, 
+utf8
+, -1, 
+ucs16
+, 
+n
+);
+
+922  
+ucs16
+;
+
+923 
+	}
+}
+
+929 
+	$fÜk_to_£lf
+ (cÚ¡ *
+cmdlše
+)
+
+931 
+STARTUPINFO
+ 
+¡¬t_šfo
+;
+
+932 
+PROCESS_INFORMATION
+ 
+´oc_šfo
+;
+
+933 
+£lf_exe
+[256];
+
+934 *
+þ
+ = 
+	`¡ršg_®loc
+ (
+cmdlše
+, 
+NULL
+);
+
+935 
+DWORD
+ 
+¡©us
+;
+
+937 
+	`CLEAR
+ (
+¡¬t_šfo
+);
+
+938 
+	`CLEAR
+ (
+´oc_šfo
+);
+
+939 
+	`CLEAR
+ (
+£lf_exe
+);
+
+941 
+¡©us
+ = 
+	`G‘ModuËFžeName
+ (
+NULL
+, 
+£lf_exe
+, (self_exe));
+
+942 ià(
+¡©us
+ =ð0 || s�tu =ð(
+£lf_exe
+))
+
+944 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "fork_to_self: CreateProcess failed: cannot get module‚ame via GetModuleFileName");
+
+945 
+dÚe
+;
+
+949 
+	`G‘S�¹upInfo
+(&
+¡¬t_šfo
+);
+
+950 
+¡¬t_šfo
+.
+cb
+ = (start_info);
+
+951 
+¡¬t_šfo
+.
+dwFÏgs
+ = 
+STARTF_USESHOWWINDOW
+;
+
+952 
+¡¬t_šfo
+.
+wShowWšdow
+ = 
+SW_HIDE
+;
+
+954 ià(
+	`C»©eProûss
+ (
+£lf_exe
+, 
+þ
+, 
+NULL
+, NULL, 
+FALSE
+, 0, NULL, NULL, &
+¡¬t_šfo
+, &
+´oc_šfo
+))
+
+956 
+	`Clo£HªdË
+ (
+´oc_šfo
+.
+hTh»ad
+);
+
+957 
+	`Clo£HªdË
+ (
+´oc_šfo
+.
+hProûss
+);
+
+961 
+	`msg
+ (
+M_WARN
+|
+M_ERRNO
+, "fÜk_to_£lf: C»©eProûs çžed: %s", 
+cmdlše
+);
+
+964 
+dÚe
+:
+
+965 
+	`ä“
+ (
+þ
+);
+
+966 
+	}
+}
+
+969 
+	$g‘_wš_sys_·th
+ ()
+
+971 
+	`ASSERT
+ (
+wš_sys_·th
+);
+
+972  
+wš_sys_·th
+;
+
+973 
+	}
+}
+
+976 
+	$£t_wš_sys_·th
+ (cÚ¡ *
+Ãw·th
+, 
+’v_£t
+ *
+es
+)
+
+978 
+	`ä“
+ (
+wš_sys_·th
+);
+
+979 
+wš_sys_·th
+ = 
+	`¡ršg_®loc
+ (
+Ãw·th
+, 
+NULL
+);
+
+980 
+	`£‹nv_¡r
+ (
+es
+, 
+SYS_PATH_ENV_VAR_NAME
+, 
+wš_sys_·th
+);
+
+981 
+	}
+}
+
+984 
+	$£t_wš_sys_·th_vŸ_’v
+ (
+’v_£t
+ *
+es
+)
+
+986 
+buf
+[256];
+
+987 
+DWORD
+ 
+¡©us
+ = 
+	`G‘EnvœÚm’tV¬ŸbË
+ (
+SYS_PATH_ENV_VAR_NAME
+, 
+buf
+, (buf));
+
+988 ià(!
+¡©us
+)
+
+989 
+	`msg
+ (
+M_ERR
+, "CªnÙ fšdƒnvœÚm’�Èv¬ŸbË %s", 
+SYS_PATH_ENV_VAR_NAME
+);
+
+990 ià(
+¡©us
+ >  (
+buf
+) - 1)
+
+991 
+	`msg
+ (
+M_FATAL
+, "SŒšg ov”æow‡‰em±šg�Ø»adƒnvœÚm’�Èv¬ŸbË %s", 
+SYS_PATH_ENV_VAR_NAME
+);
+
+992 
+	`£t_wš_sys_·th
+ (
+buf
+, 
+es
+);
+
+993 
+	}
+}
+
+997 
+	$wš_g‘_‹mpdœ
+()
+
+999 
+tmpdœ
+[
+MAX_PATH
+];
+
+1000 
+WCHAR
+ 
+wtmpdœ
+[
+MAX_PATH
+];
+
+1002 ià(!
+	`G‘TempP©hW
+(
+	`_couÁof
+(
+wtmpdœ
+), wtmpdir))
+
+1007 
+	`msg
+ (
+M_WARN
+, "Could‚ot find‡ suitable�emporary directory."
+
+1009  
+NULL
+;
+
+1012 ià(
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+wtmpdœ
+, -1, 
+NULL
+, 0, NULL, NULLè>  (
+tmpdœ
+))
+
+1014 
+	`msg
+ (
+M_WARN
+, "Could‚ot get�emporary directory. Path is�oo†ong."
+
+1016  
+NULL
+;
+
+1019 
+	`WideCh¬ToMuÉiBy‹
+ (
+CP_UTF8
+, 0, 
+wtmpdœ
+, -1, 
+tmpdœ
+,  (tmpdœ), 
+NULL
+, NULL);
+
+1020  
+tmpdœ
+;
+
+1021 
+	}
+}
+
+	@win32.h
+
+25 #ifdeà
+WIN32
+
+
+26 #iâdeà
+OPENVPN_WIN32_H
+
+
+27 
+	#OPENVPN_WIN32_H
+
+
+	)
+
+29 
+	~"mtu.h
+"
+
+32 
+	#SYS_PATH_ENV_VAR_NAME
+ "Sy¡emRoÙ"
+
+	)
+
+33 
+	#NETSH_PATH_SUFFIX
+ "\\sy¡em32\\Ãtsh.exe"
+
+	)
+
+34 
+	#WIN_ROUTE_PATH_SUFFIX
+ "\\sy¡em32\\rou‹.exe"
+
+	)
+
+35 
+	#WIN_IPCONFIG_PATH_SUFFIX
+ "\\sy¡em32\\�cÚfig.exe"
+
+	)
+
+36 
+	#WIN_NET_PATH_SUFFIX
+ "\\sy¡em32\\Ãt.exe"
+
+	)
+
+44 #iâdeà
+IN6_ARE_ADDR_EQUAL
+
+
+45 
+	#IN6_ARE_ADDR_EQUAL
+(
+a
+,
+b
+) \
+
+46 (
+	`memcmp
+ ((cÚ¡ *)(
+a
+), (cÚ¡ *)(
+b
+),  (
+š6_addr
+)è=ð0)
+
+	)
+
+49 
+š™_wš32
+ ();
+
+50 
+unš™_wš32
+ ();
+
+52 
+£t_·u£_ex™_wš32
+ ();
+
+54 
+	s£cur™y_©Œibu‹s
+
+
+56 
+SECURITY_ATTRIBUTES
+ 
+	m§
+;
+
+57 
+SECURITY_DESCRIPTOR
+ 
+	msd
+;
+
+60 
+	#HANDLE_DEFINED
+(
+h
+è((hè!ð
+NULL
+ && (hè!ð
+INVALID_HANDLE_VALUE
+)
+
+	)
+
+65 
+	swšdow_t™Ë
+
+
+67 
+boÞ
+ 
+	m§ved
+;
+
+68 
+	mÞd_wšdow_t™Ë
+ [256];
+
+71 
+	srw_hªdË
+ {
+
+72 
+HANDLE
+ 
+	m»ad
+;
+
+73 
+HANDLE
+ 
+	mwr™e
+;
+
+80 
+	#NE32_PERSIST_EVENT
+ (1<<0)
+
+	)
+
+81 
+	#NE32_WRITE_EVENT
+ (1<<1)
+
+	)
+
+83 
+šlše
+ 
+boÞ
+
+
+84 
+	$defšed_Ãt_ev’t_wš32
+ (cÚ¡ 
+rw_hªdË
+ *
+ev’t
+)
+
+86  
+ev’t
+->
+»ad
+ !ð
+NULL
+;
+
+87 
+	}
+}
+
+89 
+š™_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+ÃtwÜk_ev’ts
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+, 
+æags
+);
+
+90 
+»£t_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+);
+
+91 
+þo£_Ãt_ev’t_wš32
+ (
+rw_hªdË
+ *
+ev’t
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+, 
+æags
+);
+
+97 
+	sÃt_ev’t_wš32
+
+
+99 
+rw_hªdË
+ 
+	mhªdË
+;
+
+100 
+sock‘_desü�tÜ_t
+ 
+	msd
+;
+
+101 
+	mev’t_mask
+;
+
+104 
+Ãt_ev’t_wš32_š™
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+);
+
+105 
+Ãt_ev’t_wš32_¡¬t
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+, 
+ÃtwÜk_ev’ts
+, 
+sock‘_desü�tÜ_t
+ 
+sd
+);
+
+106 
+Ãt_ev’t_wš32_»£t
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+);
+
+107 
+Ãt_ev’t_wš32_»£t_wr™e
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+);
+
+108 
+Ãt_ev’t_wš32_¡Ý
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+);
+
+109 
+Ãt_ev’t_wš32_þo£
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+);
+
+111 
+šlše
+ 
+boÞ
+
+
+112 
+	$Ãt_ev’t_wš32_defšed
+ (cÚ¡ 
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+114  
+	`defšed_Ãt_ev’t_wš32
+ (&
+Ã
+->
+hªdË
+);
+
+115 
+	}
+}
+
+117 
+šlše
+ 
+rw_hªdË
+ *
+
+118 
+	$Ãt_ev’t_wš32_g‘_ev’t
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+120  &
+Ã
+->
+hªdË
+;
+
+121 
+	}
+}
+
+123 
+šlše
+ 
+
+124 
+	$Ãt_ev’t_wš32_g‘_ev’t_mask
+ (cÚ¡ 
+Ãt_ev’t_wš32
+ *
+Ã
+)
+
+126  
+Ã
+->
+ev’t_mask
+;
+
+127 
+	}
+}
+
+129 
+šlše
+ 
+
+130 
+	$Ãt_ev’t_wš32_þ—r_£Ëùed_ev’ts
+ (
+Ãt_ev’t_wš32
+ *
+Ã
+, 
+£Ëùed_ev’ts
+)
+
+132 
+Ã
+->
+ev’t_mask
+ &ð~
+£Ëùed_ev’ts
+;
+
+133 
+	}
+}
+
+138 
+	swš32_sigÇl
+ {
+
+139 
+	#WSO_MODE_UNDEF
+ 0
+
+	)
+
+140 
+	#WSO_MODE_SERVICE
+ 1
+
+	)
+
+141 
+	#WSO_MODE_CONSOLE
+ 2
+
+	)
+
+142 
+	mmode
+;
+
+143 
+rw_hªdË
+ 
+	mš
+;
+
+144 
+DWORD
+ 
+	mcÚsÞe_mode_§ve
+;
+
+145 
+boÞ
+ 
+	mcÚsÞe_mode_§ve_defšed
+;
+
+148 

+wš32_sigÇl
+ win32_signal;
+
+149 

+wšdow_t™Ë
+ window_title;
+
+151 
+wš32_sigÇl_þ—r
+ (
+wš32_sigÇl
+ *
+ws
+);
+
+154 
+	#WSO_NOFORCE
+ 0
+
+	)
+
+155 
+	#WSO_FORCE_SERVICE
+ 1
+
+	)
+
+156 
+	#WSO_FORCE_CONSOLE
+ 2
+
+	)
+
+158 
+wš32_sigÇl_Ý’
+ (
+wš32_sigÇl
+ *
+ws
+,
+
+159 
+fÜû
+,
+
+160 cÚ¡ *
+ex™_ev’t_Çme
+,
+
+161 
+boÞ
+ 
+ex™_ev’t_š™Ÿl_¡©e
+);
+
+163 
+wš32_sigÇl_þo£
+ (
+wš32_sigÇl
+ *
+ws
+);
+
+165 
+wš32_sigÇl_g‘
+ (
+wš32_sigÇl
+ *
+ws
+);
+
+167 
+wš32_·u£
+ (
+wš32_sigÇl
+ *
+ws
+);
+
+169 
+boÞ
+ 
+wš32_£rviû_š‹¼u±
+ (
+wš32_sigÇl
+ *
+ws
+);
+
+175 
+wšdow_t™Ë_þ—r
+ (
+wšdow_t™Ë
+ *
+wt
+);
+
+176 
+wšdow_t™Ë_§ve
+ (
+wšdow_t™Ë
+ *
+wt
+);
+
+177 
+wšdow_t™Ë_»¡Üe
+ (cÚ¡ 
+wšdow_t™Ë
+ *
+wt
+);
+
+178 
+wšdow_t™Ë_g’”©e
+ (cÚ¡ *
+t™Ë
+);
+
+184 
+	sov”Ïµed_io
+ {
+
+185 
+	#IOSTATE_INITIAL
+ 0
+
+	)
+
+186 
+	#IOSTATE_QUEUED
+ 1
+
+	)
+
+187 
+	#IOSTATE_IMMEDIATE_RETURN
+ 2
+
+	)
+
+188 
+	mio¡©e
+;
+
+189 
+OVERLAPPED
+ 
+	mov”Ïµed
+;
+
+190 
+DWORD
+ 
+	msize
+;
+
+191 
+DWORD
+ 
+	mæags
+;
+
+192 
+	m¡©us
+;
+
+193 
+boÞ
+ 
+	maddr_defšed
+;
+
+195 
+sockaddr_š
+ 
+	maddr
+;
+
+196 
+sockaddr_š6
+ 
+	maddr6
+;
+
+198 
+	madd¾’
+;
+
+199 
+bufãr
+ 
+	mbuf_š™
+;
+
+200 
+bufãr
+ 
+	mbuf
+;
+
+203 
+ov”Ïµed_io_š™
+ (
+ov”Ïµed_io
+ *
+o
+,
+
+204 cÚ¡ 
+äame
+ *frame,
+
+205 
+BOOL
+ 
+ev’t_¡©e
+,
+
+206 
+boÞ
+ 
+tuÁ­_bufãr
+);
+
+208 
+ov”Ïµed_io_þo£
+ (
+ov”Ïµed_io
+ *
+o
+);
+
+210 
+šlše
+ 
+boÞ
+
+
+211 
+	$ov”Ïµed_io_aùive
+ (
+ov”Ïµed_io
+ *
+o
+)
+
+213  
+o
+->
+io¡©e
+ =ð
+IOSTATE_QUEUED
+ || o->io¡©�=ð
+IOSTATE_IMMEDIATE_RETURN
+;
+
+214 
+	}
+}
+
+216 *
+ov”Ïµed_io_¡©e_ascii
+ (cÚ¡ 
+ov”Ïµed_io
+ *
+o
+);
+
+224 
+	s£m­hÜe
+
+
+226 cÚ¡ *
+	mÇme
+;
+
+227 
+boÞ
+ 
+	mlocked
+;
+
+228 
+HANDLE
+ 
+	mhªd
+;
+
+231 
+£m­hÜe_þ—r
+ (
+£m­hÜe
+ *
+s
+);
+
+232 
+£m­hÜe_Ý’
+ (
+£m­hÜe
+ *
+s
+, cÚ¡ *
+Çme
+);
+
+233 
+boÞ
+ 
+£m­hÜe_lock
+ (
+£m­hÜe
+ *
+s
+, 
+timeout_mžli£cÚds
+);
+
+234 
+£m­hÜe_»Ëa£
+ (
+£m­hÜe
+ *
+s
+);
+
+235 
+£m­hÜe_þo£
+ (
+£m­hÜe
+ *
+s
+);
+
+245 

+£m­hÜe
+ 
+Ãtcmd_£m­hÜe
+;
+
+246 
+Ãtcmd_£m­hÜe_š™
+ ();
+
+247 
+Ãtcmd_£m­hÜe_þo£
+ ();
+
+248 
+Ãtcmd_£m­hÜe_lock
+ ();
+
+249 
+Ãtcmd_£m­hÜe_»Ëa£
+ ();
+
+252 
+boÞ
+ 
+š™_£cur™y_©Œibu‹s_®low_®l
+ (
+£cur™y_©Œibu‹s
+ *
+obj
+);
+
+255 
+boÞ
+ 
+wš_§ã_fž’ame
+ (cÚ¡ *
+â
+);
+
+258 
+	g’v_£t
+;
+
+261 
+£t_wš_sys_·th
+ (cÚ¡ *
+Ãw·th
+, 
+’v_£t
+ *
+es
+);
+
+262 
+£t_wš_sys_·th_vŸ_’v
+ (
+’v_£t
+ *
+es
+);
+
+263 *
+g‘_wš_sys_·th
+ ();
+
+266 
+fÜk_to_£lf
+ (cÚ¡ *
+cmdlše
+);
+
+269 cÚ¡ *
+wš_g‘_‹mpdœ
+();
+
+272 
+WCHAR
+ *
+wide_¡ršg
+ (cÚ¡ * 
+utf8
+, 
+gc_¬’a
+ *
+gc
+);
+
+	@/usr/include/arpa/inet.h
+
+18 #iâdeà
+_ARPA_INET_H
+
+
+19 
+	#_ARPA_INET_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+22 
+	~<Ãtš‘/š.h
+>
+
+25 #iâdeà
+__sockËn_t_defšed
+
+
+26 
+__sockËn_t
+ 
+	tsockËn_t
+;
+
+27 
+	#__sockËn_t_defšed
+
+
+	)
+
+30 
+__BEGIN_DECLS
+
+
+34 
+š_addr_t
+ 
+	$š‘_addr
+ (cÚ¡ *
+__ý
+è
+__THROW
+;
+
+37 
+š_addr_t
+ 
+	$š‘_Êaof
+ (
+š_addr
+ 
+__š
+è
+__THROW
+;
+
+41 

+š_addr
+ 
+	$š‘_mak—ddr
+ (
+š_addr_t
+ 
+__Ãt
+, in_addr_ˆ
+__ho¡
+)
+
+42 
+__THROW
+;
+
+45 
+š_addr_t
+ 
+	$š‘_Ãtof
+ (
+š_addr
+ 
+__š
+è
+__THROW
+;
+
+49 
+š_addr_t
+ 
+	$š‘_ÃtwÜk
+ (cÚ¡ *
+__ý
+è
+__THROW
+;
+
+53 
*
+	$š‘_Áß
+ (
+š_addr
+ 
+__š
+è
+__THROW
+;
+
+58 

+	$š‘_±Ú
+ (
+__af
+, cÚ¡ *
+__»¡riù
+ 
+__ý
+,
+
+59 *
+__»¡riù
+ 
+__buf
+è
+__THROW
+;
+
+64 
cÚ¡ *
+	$š‘_ÁÝ
+ (
+__af
+, cÚ¡ *
+__»¡riù
+ 
+__ý
+,
+
+65 *
+__»¡riù
+ 
+__buf
+, 
+sockËn_t
+ 
+__Ën
+)
+
+66 
+__THROW
+;
+
+70 #ifdeà
+__USE_MISC
+
+
+73 

+	$š‘_©Ú
+ (cÚ¡ *
+__ý
+, 
+š_addr
+ *
+__šp
+è
+__THROW
+;
+
+77 
*
+	$š‘_Ã�
+ (
+š_addr_t
+ 
+__Ãt
+, *
+__buf
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+
+
+78 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use inet_ntop instead");
+
+83 
*
+	$š‘_Ãt_ÁÝ
+ (
+__af
+, cÚ¡ *
+__ý
+, 
+__b™s
+,
+
+84 *
+__buf
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+;
+
+89 

+	$š‘_Ãt_±Ú
+ (
+__af
+, cÚ¡ *
+__ý
+,
+
+90 *
+__buf
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+;
+
+95 

+	$š‘_n§p_addr
+ (cÚ¡ *
+__ý
+,
+
+96 *
+__buf
+, 
+__Ën
+è
+__THROW
+;
+
+100 
*
+	$š‘_n§p_Áß
+ (
+__Ën
+, cÚ¡ *
+__ý
+,
+
+101 *
+__buf
+è
+__THROW
+;
+
+104 
+__END_DECLS
+
+
+	@/usr/include/assert.h
+
+22 #ifdef 
+_ASSERT_H
+
+
+24 #undeà
+_ASSERT_H
+
+
+25 #undeà
+as£¹
+
+
+26 #undeà
+__ASSERT_VOID_CAST
+
+
+28 #ifdef 
+__USE_GNU
+
+
+29 #undeà
+as£¹_³¼Ü
+
+
+34 
+	#_ASSERT_H
+ 1
+
+	)
+
+35 
+	~<ã©u»s.h
+>
+
+37 #ià
+defšed
+ 
+__ýlu¥lus
+ && 
+__GNUC_PREREQ
+ (2,95)
+
+38 
+	#__ASSERT_VOID_CAST
+ 
+¡©ic_ÿ¡
+<>
+
+	)
+
+40 
+	#__ASSERT_VOID_CAST
+ ()
+
+	)
+
+48 #ifdef 
+NDEBUG
+
+
+50 
+	#as£¹
+(
+ex´
+è(
+	`__ASSERT_VOID_CAST
+ (0))
+
+	)
+
+58 #ifdef 
+__USE_GNU
+
+
+59 
+	#as£¹_³¼Ü
+(
+”ºum
+è(
+	`__ASSERT_VOID_CAST
+ (0))
+
+	)
+
+64 
+__BEGIN_DECLS
+
+
+67 

+	$__as£¹_çž
+ (cÚ¡ *
+__as£¹iÚ
+, cÚ¡ *
+__fže
+,
+
+68 
+__lše
+, cÚ¡ *
+__funùiÚ
+)
+
+69 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+72 

+	$__as£¹_³¼Ü_çž
+ (
+__”ºum
+, cÚ¡ *
+__fže
+,
+
+73 
+__lše
+, cÚ¡ *
+__funùiÚ
+)
+
+74 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+79 

+	$__as£¹
+ (cÚ¡ *
+__as£¹iÚ
+, cÚ¡ *
+__fže
+, 
+__lše
+)
+
+80 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+83 
+__END_DECLS
+
+
+88 #ià
+defšed
+ 
+__ýlu¥lus
+
+
+89 #ià
+defšed
+ 
+__has_bužtš
+
+
+90 #ià
+	`__has_bužtš
+ (
+__bužtš_FILE
+)
+
+91 
+	#__ASSERT_FILE
+ 
+	`__bužtš_FILE
+ ()
+
+	)
+
+92 
+	#__ASSERT_LINE
+ 
+	`__bužtš_LINE
+ ()
+
+	)
+
+95 #ià!
+defšed
+ 
+__ASSERT_FILE
+
+
+96 
+	#__ASSERT_FILE
+ 
+__FILE__
+
+
+	)
+
+97 
+	#__ASSERT_LINE
+ 
+__LINE__
+
+
+	)
+
+99 
+	#as£¹
+(
+ex´
+) \
+
+100 (
+¡©ic_ÿ¡
+ <
+boÞ
+> (
+ex´
+) \
+
+102 : 
+	`__as£¹_çž
+ (#ex´, 
+__ASSERT_FILE
+, 
+__ASSERT_LINE
+, \
+
+103 
+__ASSERT_FUNCTION
+))
+
+	)
+
+104 #–ià!
+defšed
+ 
+__GNUC__
+ || defšed 
+__STRICT_ANSI__
+
+
+105 
+	#as£¹
+(
+ex´
+) \
+
+106 ((
+ex´
+) \
+
+107 ? 
+	`__ASSERT_VOID_CAST
+ (0) \
+
+108 : 
+	`__as£¹_çž
+ (#ex´, 
+__FILE__
+, 
+__LINE__
+, 
+__ASSERT_FUNCTION
+))
+
+	)
+
+115 
+	#as£¹
+(
+ex´
+) \
+
+116 ((è ((
+ex´
+è? 1 : 0), 
+	`__ex‹nsiÚ__
+ ({ \
+
+117 ià(
+ex´
+) \
+
+120 
+	`__as£¹_çž
+ (#ex´, 
+__FILE__
+, 
+__LINE__
+, 
+__ASSERT_FUNCTION
+); \
+
+121 
+	}
+}))
+
+	)
+
+124 #ifdef 
+__USE_GNU
+
+
+125 
+	#as£¹_³¼Ü
+(
+”ºum
+) \
+
+126 (!(
+”ºum
+) \
+
+127 ? 
+	`__ASSERT_VOID_CAST
+ (0) \
+
+128 : 
+	`__as£¹_³¼Ü_çž
+ ((
+”ºum
+), 
+__FILE__
+, 
+__LINE__
+, 
+__ASSERT_FUNCTION
+))
+
+	)
+
+136 #ià
+defšed
+ 
+__ýlu¥lus
+ ? 
+__GNUC_PREREQ
+ (2, 6) : __GNUC_PREREQ (2, 4)
+
+137 
+	#__ASSERT_FUNCTION
+ 
+__ex‹nsiÚ__
+ 
+__PRETTY_FUNCTION__
+
+
+	)
+
+139 #ià
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L
+
+140 
+	#__ASSERT_FUNCTION
+ 
+__func__
+
+
+	)
+
+142 
+	#__ASSERT_FUNCTION
+ ((cÚ¡ *è0)
+
+	)
+
+149 #ià(
+defšed
+ 
+__USE_ISOC11
+ \
+
+150 && (!
+defšed
+ 
+	g__STDC_VERSION__
+ \
+
+151 || 
+	g__STDC_VERSION__
+ <= 201710L \
+
+152 || !
+__GNUC_PREREQ
+ (13, 0)) \
+
+153 && !
+defšed
+ 
+	g__ýlu¥lus
+)
+
+154 #undeà
+¡©ic_as£¹
+
+
+155 
+	#¡©ic_as£¹
+ 
+_S�tic_as£¹
+
+
+	)
+
+	@/usr/include/ctype.h
+
+22 #iâdef 
+_CTYPE_H
+
+
+23 
+	#_CTYPE_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+26 
+	~<b™s/ty³s.h
+>
+
+28 
+	g__BEGIN_DECLS
+
+
+30 #iâdeà
+_ISb™
+
+
+39 
+	~<b™s/’dŸn.h
+>
+
+40 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+41 
+	#_ISb™
+(
+b™
+è(1 << (b™))
+
+	)
+
+43 
+	#_ISb™
+(
+b™
+è((b™è< 8 ? ((1 << (b™)è<< 8è: ((1 << (b™)è>> 8))
+
+	)
+
+48 
+	m_ISuµ”
+ = 
+_ISb™
+ (0),
+
+49 
+	m_ISlow”
+ = 
+_ISb™
+ (1),
+
+50 
+	m_IS®pha
+ = 
+_ISb™
+ (2),
+
+51 
+	m_ISdig™
+ = 
+_ISb™
+ (3),
+
+52 
+	m_ISxdig™
+ = 
+_ISb™
+ (4),
+
+53 
+	m_IS¥aû
+ = 
+_ISb™
+ (5),
+
+54 
+	m_IS´št
+ = 
+_ISb™
+ (6),
+
+55 
+	m_ISg¿ph
+ = 
+_ISb™
+ (7),
+
+56 
+	m_ISbÏnk
+ = 
+_ISb™
+ (8),
+
+57 
+	m_ISúŒl
+ = 
+_ISb™
+ (9),
+
+58 
+	m_ISpunù
+ = 
+_ISb™
+ (10),
+
+59 
+	m_IS®num
+ = 
+_ISb™
+ (11)
+
+79 
cÚ¡ **
+	$__ùy³_b_loc
+ ()
+
+80 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+81 
cÚ¡ 
+__št32_t
+ **
+	$__ùy³_tÞow”_loc
+ ()
+
+82 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+83 
cÚ¡ 
+__št32_t
+ **
+	$__ùy³_touµ”_loc
+ ()
+
+84 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+87 #iâdeà
+__ýlu¥lus
+
+
+88 
+	#__isùy³
+(
+c
+, 
+ty³
+) \
+
+89 ((*
+	`__ùy³_b_loc
+ ())[(è(
+c
+)] & (è
+ty³
+)
+
+	)
+
+90 #–ià
+defšed
+ 
+__USE_EXTERN_INLINES
+
+
+91 
+	#__isùy³_f
+(
+ty³
+) \
+
+92 
+__ex‹º_šlše
+ \
+
+93 
+is
+##
+	`ty³
+ (
+__c
+è
+__THROW
+ \
+
+95  (*
+	`__ùy³_b_loc
+ ())[(è(
+__c
+)] & (è
+_IS
+##
+ty³
+; \
+
+96 
+	}
+
+	)
+}
+
+99 
+	#__i§scii
+(
+c
+è(((cè& ~0x7fè=ð0è
+
+	)
+
+100 
+	#__tßscii
+(
+c
+è((cè& 0x7fè
+
+	)
+
+102 
+	#__exùy³
+(
+Çme
+è

+	`Çme
+ (è
+__THROW
+
+
+	)
+
+108 
+__exùy³
+ (
+i§Êum
+);
+
+109 
+__exùy³
+ (
+i§Íha
+);
+
+110 
+__exùy³
+ (
+isúŒl
+);
+
+111 
+__exùy³
+ (
+isdig™
+);
+
+112 
+__exùy³
+ (
+i¦ow”
+);
+
+113 
+__exùy³
+ (
+isg¿ph
+);
+
+114 
+__exùy³
+ (
+i¥ršt
+);
+
+115 
+__exùy³
+ (
+i¥unù
+);
+
+116 
+__exùy³
+ (
+is¥aû
+);
+
+117 
+__exùy³
+ (
+isuµ”
+);
+
+118 
+__exùy³
+ (
+isxdig™
+);
+
+122 

+	$tÞow”
+ (
+__c
+è
+__THROW
+;
+
+125 

+	$touµ”
+ (
+__c
+è
+__THROW
+;
+
+129 #ifdef 
+__USE_ISOC99
+
+
+130 
+	`__exùy³
+ (
+isbÏnk
+);
+
+133 #ifdeà
+__USE_GNU
+
+
+135 

+	$isùy³
+ (
+__c
+, 
+__mask
+è
+__THROW
+;
+
+138 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+142 

+	$i§scii
+ (
+__c
+è
+__THROW
+;
+
+146 

+	$tßscii
+ (
+__c
+è
+__THROW
+;
+
+150 
+	`__exùy³
+ (
+_touµ”
+);
+
+151 
+	`__exùy³
+ (
+_tÞow”
+);
+
+155 
+	#__tobody
+(
+c
+, 
+f
+, 
+a
+, 
+¬gs
+) \
+
+156 (
+__ex‹nsiÚ__
+ \
+
+157 ({ 
+__»s
+; \
+
+158 ià( (
+c
+) > 1) \
+
+160 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+c
+)) \
+
+162 
+__c
+ = (
+c
+); \
+
+163 
+__»s
+ = 
+__c
+ < -128 || __ø> 255 ? __ø: (
+a
+)[__c]; \
+
+166 
+__»s
+ = 
+f
+ 
+¬gs
+; \
+
+169 
+__»s
+ = (
+a
+)[(è(
+c
+)]; \
+
+170 
+__»s
+; 
+	}
+}))
+
+	)
+
+172 #ià!
+defšed
+ 
+__NO_CTYPE
+
+
+173 #ifdeà
+__isùy³_f
+
+
+174 
+	$__isùy³_f
+ (
+®num
+)
+
+175 
+	$__isùy³_f
+ (
+®pha
+)
+
+176 
+	$__isùy³_f
+ (
+úŒl
+)
+
+177 
+	$__isùy³_f
+ (
+dig™
+)
+
+178 
+	$__isùy³_f
+ (
+low”
+)
+
+179 
+	$__isùy³_f
+ (
+g¿ph
+)
+
+180 
+	$__isùy³_f
+ (
+´št
+)
+
+181 
+	$__isùy³_f
+ (
+punù
+)
+
+182 
+	$__isùy³_f
+ (
+¥aû
+)
+
+183 
+	$__isùy³_f
+ (
+uµ”
+)
+
+184 
+	$__isùy³_f
+ (
+xdig™
+)
+
+185 #ifdeà
+__USE_ISOC99
+
+
+186 
+	$__isùy³_f
+ (
+bÏnk
+)
+
+188 #–ià
+defšed
+ 
+__isùy³
+
+
+189 
+	#i§Êum
+(
+c
+è
+	`__isùy³
+((c), 
+_IS®num
+)
+
+	)
+
+190 
+	#i§Íha
+(
+c
+è
+	`__isùy³
+((c), 
+_IS®pha
+)
+
+	)
+
+191 
+	#isúŒl
+(
+c
+è
+	`__isùy³
+((c), 
+_ISúŒl
+)
+
+	)
+
+192 
+	#isdig™
+(
+c
+è
+	`__isùy³
+((c), 
+_ISdig™
+)
+
+	)
+
+193 
+	#i¦ow”
+(
+c
+è
+	`__isùy³
+((c), 
+_ISlow”
+)
+
+	)
+
+194 
+	#isg¿ph
+(
+c
+è
+	`__isùy³
+((c), 
+_ISg¿ph
+)
+
+	)
+
+195 
+	#i¥ršt
+(
+c
+è
+	`__isùy³
+((c), 
+_IS´št
+)
+
+	)
+
+196 
+	#i¥unù
+(
+c
+è
+	`__isùy³
+((c), 
+_ISpunù
+)
+
+	)
+
+197 
+	#is¥aû
+(
+c
+è
+	`__isùy³
+((c), 
+_IS¥aû
+)
+
+	)
+
+198 
+	#isuµ”
+(
+c
+è
+	`__isùy³
+((c), 
+_ISuµ”
+)
+
+	)
+
+199 
+	#isxdig™
+(
+c
+è
+	`__isùy³
+((c), 
+_ISxdig™
+)
+
+	)
+
+200 #ifdeà
+__USE_ISOC99
+
+
+201 
+	#isbÏnk
+(
+c
+è
+	`__isùy³
+((c), 
+_ISbÏnk
+)
+
+	)
+
+205 #ifdeà
+__USE_EXTERN_INLINES
+
+
+206 
+__ex‹º_šlše
+ 
+
+207 
+	`__NTH
+ (
+	$tÞow”
+ (
+__c
+))
+
+209  
+__c
+ >ð-128 && __ø< 256 ? (*
+	`__ùy³_tÞow”_loc
+ ())[__c] : __c;
+
+210 
+	}
+}
+
+212 
+__ex‹º_šlše
+ 
+
+213 
+__NTH
+ (
+	$touµ”
+ (
+__c
+))
+
+215  
+__c
+ >ð-128 && __ø< 256 ? (*
+	`__ùy³_touµ”_loc
+ ())[__c] : __c;
+
+216 
+	}
+}
+
+219 #ià
+__GNUC__
+ >ð2 && 
+defšed
+ 
+__OPTIMIZE__
+ && !defšed 
+__ýlu¥lus
+
+
+220 
+	#tÞow”
+(
+c
+è
+	`__tobody
+ (c, 
+tÞow”
+, *
+	`__ùy³_tÞow”_loc
+ (), (c))
+
+	)
+
+221 
+	#touµ”
+(
+c
+è
+	`__tobody
+ (c, 
+touµ”
+, *
+	`__ùy³_touµ”_loc
+ (), (c))
+
+	)
+
+224 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+225 
+	#i§scii
+(
+c
+è
+	`__i§scii
+ (c)
+
+	)
+
+226 
+	#tßscii
+(
+c
+è
+	`__tßscii
+ (c)
+
+	)
+
+228 
+	#_tÞow”
+(
+c
+è((è(*
+	`__ùy³_tÞow”_loc
+ ())[(è(c)])
+
+	)
+
+229 
+	#_touµ”
+(
+c
+è((è(*
+	`__ùy³_touµ”_loc
+ ())[(è(c)])
+
+	)
+
+235 #ifdeà
+__USE_XOPEN2K8
+
+
+237 
+	~<b™s/ty³s/loÿË_t.h
+>
+
+241 
+	#__isùy³_l
+(
+c
+, 
+ty³
+, 
+loÿË
+) \
+
+242 ((
+loÿË
+)->
+__ùy³_b
+[(è(
+c
+)] & (è
+ty³
+)
+
+	)
+
+244 
+	#__exùy³_l
+(
+Çme
+) \
+
+245 

+	`Çme
+ (, 
+loÿË_t
+è
+__THROW
+
+
+	)
+
+251 
+__exùy³_l
+ (
+i§Êum_l
+);
+
+252 
+__exùy³_l
+ (
+i§Íha_l
+);
+
+253 
+__exùy³_l
+ (
+isúŒl_l
+);
+
+254 
+__exùy³_l
+ (
+isdig™_l
+);
+
+255 
+__exùy³_l
+ (
+i¦ow”_l
+);
+
+256 
+__exùy³_l
+ (
+isg¿ph_l
+);
+
+257 
+__exùy³_l
+ (
+i¥ršt_l
+);
+
+258 
+__exùy³_l
+ (
+i¥unù_l
+);
+
+259 
+__exùy³_l
+ (
+is¥aû_l
+);
+
+260 
+__exùy³_l
+ (
+isuµ”_l
+);
+
+261 
+__exùy³_l
+ (
+isxdig™_l
+);
+
+263 
+__exùy³_l
+ (
+isbÏnk_l
+);
+
+267 

+	$__tÞow”_l
+ (
+__c
+, 
+loÿË_t
+ 
+__l
+è
+__THROW
+;
+
+268 

+	$tÞow”_l
+ (
+__c
+, 
+loÿË_t
+ 
+__l
+è
+__THROW
+;
+
+271 

+	$__touµ”_l
+ (
+__c
+, 
+loÿË_t
+ 
+__l
+è
+__THROW
+;
+
+272 

+	$touµ”_l
+ (
+__c
+, 
+loÿË_t
+ 
+__l
+è
+__THROW
+;
+
+274 #ià
+__GNUC__
+ >ð2 && 
+defšed
+ 
+__OPTIMIZE__
+ && !defšed 
+__ýlu¥lus
+
+
+275 
+	#__tÞow”_l
+(
+c
+, 
+loÿË
+) \
+
+276 
+	`__tobody
+ (
+c
+, 
+__tÞow”_l
+, (
+loÿË
+)->
+__ùy³_tÞow”
+, (c,†oÿË))
+
+	)
+
+277 
+	#__touµ”_l
+(
+c
+, 
+loÿË
+) \
+
+278 
+	`__tobody
+ (
+c
+, 
+__touµ”_l
+, (
+loÿË
+)->
+__ùy³_touµ”
+, (c,†oÿË))
+
+	)
+
+279 
+	#tÞow”_l
+(
+c
+, 
+loÿË
+è
+	`__tÞow”_l
+ ((c), (loÿË))
+
+	)
+
+280 
+	#touµ”_l
+(
+c
+, 
+loÿË
+è
+	`__touµ”_l
+ ((c), (loÿË))
+
+	)
+
+284 #iâdeà
+__NO_CTYPE
+
+
+285 
+	#__i§Êum_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_IS®num
+, (l))
+
+	)
+
+286 
+	#__i§Íha_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_IS®pha
+, (l))
+
+	)
+
+287 
+	#__isúŒl_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISúŒl
+, (l))
+
+	)
+
+288 
+	#__isdig™_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISdig™
+, (l))
+
+	)
+
+289 
+	#__i¦ow”_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISlow”
+, (l))
+
+	)
+
+290 
+	#__isg¿ph_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISg¿ph
+, (l))
+
+	)
+
+291 
+	#__i¥ršt_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_IS´št
+, (l))
+
+	)
+
+292 
+	#__i¥unù_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISpunù
+, (l))
+
+	)
+
+293 
+	#__is¥aû_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_IS¥aû
+, (l))
+
+	)
+
+294 
+	#__isuµ”_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISuµ”
+, (l))
+
+	)
+
+295 
+	#__isxdig™_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISxdig™
+, (l))
+
+	)
+
+297 
+	#__isbÏnk_l
+(
+c
+,
+l
+è
+	`__isùy³_l
+((c), 
+_ISbÏnk
+, (l))
+
+	)
+
+299 #ifdeà
+__USE_MISC
+
+
+300 
+	#__i§scii_l
+(
+c
+,
+l
+è(Ö), 
+	`__i§scii
+ (c))
+
+	)
+
+301 
+	#__tßscii_l
+(
+c
+,
+l
+è(Ö), 
+	`__tßscii
+ (c))
+
+	)
+
+304 
+	#i§Êum_l
+(
+c
+,
+l
+è
+	`__i§Êum_l
+ ((c), (l))
+
+	)
+
+305 
+	#i§Íha_l
+(
+c
+,
+l
+è
+	`__i§Íha_l
+ ((c), (l))
+
+	)
+
+306 
+	#isúŒl_l
+(
+c
+,
+l
+è
+	`__isúŒl_l
+ ((c), (l))
+
+	)
+
+307 
+	#isdig™_l
+(
+c
+,
+l
+è
+	`__isdig™_l
+ ((c), (l))
+
+	)
+
+308 
+	#i¦ow”_l
+(
+c
+,
+l
+è
+	`__i¦ow”_l
+ ((c), (l))
+
+	)
+
+309 
+	#isg¿ph_l
+(
+c
+,
+l
+è
+	`__isg¿ph_l
+ ((c), (l))
+
+	)
+
+310 
+	#i¥ršt_l
+(
+c
+,
+l
+è
+	`__i¥ršt_l
+ ((c), (l))
+
+	)
+
+311 
+	#i¥unù_l
+(
+c
+,
+l
+è
+	`__i¥unù_l
+ ((c), (l))
+
+	)
+
+312 
+	#is¥aû_l
+(
+c
+,
+l
+è
+	`__is¥aû_l
+ ((c), (l))
+
+	)
+
+313 
+	#isuµ”_l
+(
+c
+,
+l
+è
+	`__isuµ”_l
+ ((c), (l))
+
+	)
+
+314 
+	#isxdig™_l
+(
+c
+,
+l
+è
+	`__isxdig™_l
+ ((c), (l))
+
+	)
+
+316 
+	#isbÏnk_l
+(
+c
+,
+l
+è
+	`__isbÏnk_l
+ ((c), (l))
+
+	)
+
+318 #ifdeà
+__USE_MISC
+
+
+319 
+	#i§scii_l
+(
+c
+,
+l
+è
+	`__i§scii_l
+ ((c), (l))
+
+	)
+
+320 
+	#tßscii_l
+(
+c
+,
+l
+è
+	`__tßscii_l
+ ((c), (l))
+
+	)
+
+327 
+__END_DECLS
+
+
+	@/usr/include/dlfcn.h
+
+19 #iâdef 
+_DLFCN_H
+
+
+20 
+	#_DLFCN_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+23 
+	#__Ãed_size_t
+
+
+	)
+
+24 
+	~<¡ddef.h
+>
+
+27 
+	~<b™s/dlfú.h
+>
+
+30 #ifdeà
+__USE_GNU
+
+
+31 
+	~<b™s/dl_fšd_objeù.h
+>
+
+34 
+	tLmid_t
+;
+
+37 
+	#LM_ID_BASE
+ 0
+
+	)
+
+38 
+	#LM_ID_NEWLM
+ -1
+
+	)
+
+45 
+	#RTLD_NEXT
+ ((*è-1l)
+
+	)
+
+50 
+	#RTLD_DEFAULT
+ ((*è0)
+
+	)
+
+52 
+__BEGIN_DECLS
+
+
+56 
*
+	$dlÝ’
+ (cÚ¡ *
+__fže
+, 
+__mode
+è
+__THROWNL
+;
+
+60 

+	$dlþo£
+ (*
+__hªdË
+è
+__THROWNL
+ 
+	`__nÚnuÎ
+ ((1));
+
+64 
*
+	$dlsym
+ (*
+__»¡riù
+ 
+__hªdË
+,
+
+65 cÚ¡ *
+__»¡riù
+ 
+__Çme
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+67 #ifdeà
+__USE_GNU
+
+
+69 
*
+	$dlmÝ’
+ (
+Lmid_t
+ 
+__nsid
+, cÚ¡ *
+__fže
+, 
+__mode
+è
+__THROWNL
+;
+
+73 
*
+	$dlvsym
+ (*
+__»¡riù
+ 
+__hªdË
+,
+
+74 cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+75 cÚ¡ *
+__»¡riù
+ 
+__v”siÚ
+)
+
+76 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+82 
*
+	$dË¼Ü
+ (è
+__THROW
+;
+
+85 #ifdeà
+__USE_GNU
+
+
+90 cÚ¡ *
+dli_âame
+;
+
+91 *
+dli_fba£
+;
+
+92 cÚ¡ *
+dli_¢ame
+;
+
+93 *
+dli_§ddr
+;
+
+94 } 
+	tDl_šfo
+;
+
+98 

+	$dÏddr
+ (cÚ¡ *
+__add»ss
+, 
+Dl_šfo
+ *
+__šfo
+)
+
+99 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+102 

+	$dÏddr1
+ (cÚ¡ *
+__add»ss
+, 
+Dl_šfo
+ *
+__šfo
+,
+
+103 **
+__exŒa_šfo
+, 
+__æags
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+111 
+RTLD_DL_SYMENT
+ = 1,
+
+114 
+RTLD_DL_LINKMAP
+ = 2
+
+123 

+	$dlšfo
+ (*
+__»¡riù
+ 
+__hªdË
+,
+
+124 
+__»que¡
+, *
+__»¡riù
+ 
+__¬g
+)
+
+125 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+131 
+RTLD_DI_LMID
+ = 1,
+
+135 
+RTLD_DI_LINKMAP
+ = 2,
+
+137 
+RTLD_DI_CONFIGADDR
+ = 3,
+
+144 
+RTLD_DI_SERINFO
+ = 4,
+
+145 
+RTLD_DI_SERINFOSIZE
+ = 5,
+
+149 
+RTLD_DI_ORIGIN
+ = 6,
+
+151 
+RTLD_DI_PROFILENAME
+ = 7,
+
+152 
+RTLD_DI_PROFILEOUT
+ = 8,
+
+157 
+RTLD_DI_TLS_MODID
+ = 9,
+
+163 
+RTLD_DI_TLS_DATA
+ = 10,
+
+168 
+RTLD_DI_PHDR
+ = 11,
+
+170 
+RTLD_DI_MAX
+ = 11
+
+178 *
+dls_Çme
+;
+
+179 
+dls_æags
+;
+
+180 } 
+	tDl_£½©h
+;
+
+186 
+size_t
+ 
+dls_size
+;
+
+187 
+dls_út
+;
+
+188 #ià
+	`__GNUC_PREREQ
+ (3, 0)
+
+193 
+__ex‹nsiÚ__
+ union
+
+195 
+Dl_£½©h
+ 
+dls_£½©h
+[0];
+
+196 
+Dl_£½©h
+ 
+__dls_£½©h_·d
+[1];
+
+199 
+Dl_£½©h
+ 
+dls_£½©h
+[1];
+
+201 } 
+	tDl_£ršfo
+;
+
+203 
+	sdl_fšd_objeù
+
+
+205 
+__ex‹nsiÚ__
+ 
+dlfo_æags
+;
+
+206 *
+dlfo_m­_¡¬t
+;
+
+207 *
+dlfo_m­_’d
+;
+
+208 
+lšk_m­
+ *
+dlfo_lšk_m­
+;
+
+209 *
+dlfo_eh_äame
+;
+
+210 #ià
+DLFO_STRUCT_HAS_EH_DBASE
+
+
+211 *
+dlfo_eh_dba£
+;
+
+212 #ià
+__WORDSIZE
+ == 32
+
+213 
+__dlfo_eh_dba£_·d
+;
+
+216 #ià
+DLFO_STRUCT_HAS_EH_COUNT
+
+
+217 
+dlfo_eh_couÁ
+;
+
+218 
+__dlfo_eh_couÁ_·d
+;
+
+220 
+__ex‹nsiÚ__
+ 
+__dæo_»£rved
+[7];
+
+225 
+	$_dl_fšd_objeù
+ (*
+__add»ss
+, 
+dl_fšd_objeù
+ *
+__»suÉ
+è
+__THROW
+;
+
+230 
+__END_DECLS
+
+
+	@/usr/include/err.h
+
+19 #iâdef 
+_ERR_H
+
+
+20 
+	#_ERR_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+24 
+	#__Ãed___va_li¡
+
+
+	)
+
+25 
+	~<¡d¬g.h
+>
+
+26 #iâdef 
+__GNUC_VA_LIST
+
+
+27 
+	#__gnuc_va_li¡
+ *
+
+	)
+
+30 
+__BEGIN_DECLS
+
+
+34 

+	$w¬n
+ (cÚ¡ *
+__fÜm©
+, ...)
+
+35 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 1, 2))è
+__COLD
+;
+
+36 

+	$vw¬n
+ (cÚ¡ *
+__fÜm©
+, 
+__gnuc_va_li¡
+)
+
+37 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 1, 0))è
+__COLD
+;
+
+40 

+	$w¬nx
+ (cÚ¡ *
+__fÜm©
+, ...)
+
+41 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 1, 2)));
+
+42 

+	$vw¬nx
+ (cÚ¡ *
+__fÜm©
+, 
+__gnuc_va_li¡
+)
+
+43 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 1, 0)));
+
+46 

+	$”r
+ (
+__¡©us
+, cÚ¡ *
+__fÜm©
+, ...)
+
+47 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+, 
+	$__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__COLD
+;
+
+48 

+	$v”r
+ (
+__¡©us
+, cÚ¡ *
+__fÜm©
+, 
+__gnuc_va_li¡
+)
+
+49 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+, 
+	$__fÜm©__
+ (
+__´štf__
+, 2, 0))è
+__COLD
+;
+
+50 

+	$”rx
+ (
+__¡©us
+, cÚ¡ *
+__fÜm©
+, ...)
+
+51 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+, 
+	$__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__COLD
+;
+
+52 

+	$v”rx
+ (
+__¡©us
+, cÚ¡ *, 
+__gnuc_va_li¡
+)
+
+53 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+, 
+	$__fÜm©__
+ (
+__´štf__
+, 2, 0))è
+__COLD
+;
+
+55 
+	~<b™s/æßŠ.h
+>
+
+56 #ià
+defšed
+ 
+__LDBL_COMPAT
+ || 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+57 
+	~<b™s/”r-ldbl.h
+>
+
+60 
+__END_DECLS
+
+
+	@/usr/include/errno.h
+
+22 #iâdef 
+_ERRNO_H
+
+
+23 
+	#_ERRNO_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+28 
+	~<b™s/”ºo.h
+>
+
+32 #iâdeà
+__ASSEMBLER__
+
+
+34 
+__BEGIN_DECLS
+
+
+37 
*
+	$__”ºo_loÿtiÚ
+ (è
+__THROW
+ 
+__©Œibu‹_cÚ¡__
+;
+
+38 
+	#”ºo
+ (*
+	`__”ºo_loÿtiÚ
+ ())
+
+	)
+
+40 #ifdeà
+__USE_GNU
+
+
+45 
*
+´og¿m_švoÿtiÚ_Çme
+;
+
+46 
*
+´og¿m_švoÿtiÚ_shÜt_Çme
+;
+
+48 
+	~<b™s/ty³s/”rÜ_t.h
+>
+
+52 
+__END_DECLS
+
+
+	@/usr/include/fcntl.h
+
+22 #iâdef 
+_FCNTL_H
+
+
+23 
+	#_FCNTL_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+28 
+	g__BEGIN_DECLS
+
+
+31 
+	~<b™s/ty³s.h
+>
+
+35 
+	~<b™s/fúŽ.h
+>
+
+39 #ifdeà
+__O_TMPFILE
+
+
+40 
+	#__OPEN_NEEDS_MODE
+(
+oæag
+) \
+
+41 (((
+oæag
+è& 
+O_CREAT
+è!ð0 || ((oæagè& 
+__O_TMPFILE
+è=ð__O_TMPFILE)
+
+	)
+
+43 
+	#__OPEN_NEEDS_MODE
+(
+oæag
+è(((oæagè& 
+O_CREAT
+è!ð0)
+
+	)
+
+49 #iâdeà
+__mode_t_defšed
+
+
+50 
+__mode_t
+ 
+	tmode_t
+;
+
+51 
+	#__mode_t_defšed
+
+
+	)
+
+54 #iâdeà
+__off_t_defšed
+
+
+55 #iâdeà
+__USE_FILE_OFFSET64
+
+
+56 
+__off_t
+ 
+	toff_t
+;
+
+58 
+__off64_t
+ 
+	toff_t
+;
+
+60 
+	#__off_t_defšed
+
+
+	)
+
+63 #ià
+defšed
+ 
+__USE_LARGEFILE64
+ && !defšed 
+__off64_t_defšed
+
+
+64 
+__off64_t
+ 
+	toff64_t
+;
+
+65 
+	#__off64_t_defšed
+
+
+	)
+
+68 #iâdeà
+__pid_t_defšed
+
+
+69 
+__pid_t
+ 
+	tpid_t
+;
+
+70 
+	#__pid_t_defšed
+
+
+	)
+
+74 #ifdeà
+__USE_XOPEN2K8
+
+
+75 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+77 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+78 
+	~<b™s/¡©.h
+>
+
+80 
+	#S_IFMT
+ 
+__S_IFMT
+
+
+	)
+
+81 
+	#S_IFDIR
+ 
+__S_IFDIR
+
+
+	)
+
+82 
+	#S_IFCHR
+ 
+__S_IFCHR
+
+
+	)
+
+83 
+	#S_IFBLK
+ 
+__S_IFBLK
+
+
+	)
+
+84 
+	#S_IFREG
+ 
+__S_IFREG
+
+
+	)
+
+85 #ifdeà
+__S_IFIFO
+
+
+86 
+	#S_IFIFO
+ 
+__S_IFIFO
+
+
+	)
+
+88 #ifdeà
+__S_IFLNK
+
+
+89 
+	#S_IFLNK
+ 
+__S_IFLNK
+
+
+	)
+
+91 #ià(
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+è&& defšed 
+__S_IFSOCK
+
+
+92 
+	#S_IFSOCK
+ 
+__S_IFSOCK
+
+
+	)
+
+97 
+	#S_ISUID
+ 
+__S_ISUID
+
+
+	)
+
+98 
+	#S_ISGID
+ 
+__S_ISGID
+
+
+	)
+
+100 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+102 
+	#S_ISVTX
+ 
+__S_ISVTX
+
+
+	)
+
+105 
+	#S_IRUSR
+ 
+__S_IREAD
+
+
+	)
+
+106 
+	#S_IWUSR
+ 
+__S_IWRITE
+
+
+	)
+
+107 
+	#S_IXUSR
+ 
+__S_IEXEC
+
+
+	)
+
+109 
+	#S_IRWXU
+ (
+__S_IREAD
+|
+__S_IWRITE
+|
+__S_IEXEC
+)
+
+	)
+
+111 
+	#S_IRGRP
+ (
+S_IRUSR
+ >> 3è
+
+	)
+
+112 
+	#S_IWGRP
+ (
+S_IWUSR
+ >> 3è
+
+	)
+
+113 
+	#S_IXGRP
+ (
+S_IXUSR
+ >> 3è
+
+	)
+
+115 
+	#S_IRWXG
+ (
+S_IRWXU
+ >> 3)
+
+	)
+
+117 
+	#S_IROTH
+ (
+S_IRGRP
+ >> 3è
+
+	)
+
+118 
+	#S_IWOTH
+ (
+S_IWGRP
+ >> 3è
+
+	)
+
+119 
+	#S_IXOTH
+ (
+S_IXGRP
+ >> 3è
+
+	)
+
+121 
+	#S_IRWXO
+ (
+S_IRWXG
+ >> 3)
+
+	)
+
+124 #ifdef 
+__USE_MISC
+
+
+125 #iâdeà
+R_OK
+
+
+128 
+	#R_OK
+ 4
+
+	)
+
+129 
+	#W_OK
+ 2
+
+	)
+
+130 
+	#X_OK
+ 1
+
+	)
+
+131 
+	#F_OK
+ 0
+
+	)
+
+136 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+137 
+	#SEEK_SET
+ 0
+
+	)
+
+138 
+	#SEEK_CUR
+ 1
+
+	)
+
+139 
+	#SEEK_END
+ 2
+
+	)
+
+148 #ifdeà
+__USE_ATFILE
+
+
+149 
+	#AT_FDCWD
+ -100
+
+	)
+
+152 
+	#AT_SYMLINK_NOFOLLOW
+ 0x100
+
+	)
+
+153 
+	#AT_REMOVEDIR
+ 0x200
+
+	)
+
+155 
+	#AT_SYMLINK_FOLLOW
+ 0x400
+
+	)
+
+156 #ifdeà
+__USE_GNU
+
+
+157 
+	#AT_NO_AUTOMOUNT
+ 0x800
+
+	)
+
+159 
+	#AT_EMPTY_PATH
+ 0x1000
+
+	)
+
+160 
+	#AT_STATX_SYNC_TYPE
+ 0x6000
+
+	)
+
+161 
+	#AT_STATX_SYNC_AS_STAT
+ 0x0000
+
+	)
+
+162 
+	#AT_STATX_FORCE_SYNC
+ 0x2000
+
+	)
+
+163 
+	#AT_STATX_DONT_SYNC
+ 0x4000
+
+	)
+
+164 
+	#AT_RECURSIVE
+ 0x8000
+
+	)
+
+166 
+	#AT_EACCESS
+ 0x200
+
+	)
+
+175 #iâdeà
+__USE_TIME_BITS64
+
+
+176 #iâdeà
+__USE_FILE_OFFSET64
+
+
+177 

+fúŽ
+ (
+__fd
+, 
+__cmd
+, ...);
+
+179 #ifdeà
+__REDIRECT
+
+
+180 

+__REDIRECT
+ (
+fúŽ
+, (
+__fd
+, 
+__cmd
+, ...), 
+fúŽ64
+);
+
+182 
+	#fúŽ
+ 
+fúŽ64
+
+
+	)
+
+185 #ifdeà
+__USE_LARGEFILE64
+
+
+186 

+fúŽ64
+ (
+__fd
+, 
+__cmd
+, ...);
+
+189 #ifdeà
+__REDIRECT
+
+
+190 

+__REDIRECT_NTH
+ (
+fúŽ
+, (
+__fd
+, 
+__»que¡
+, ...),
+
+191 
+__fúŽ_time64
+);
+
+192 

+__REDIRECT_NTH
+ (
+fúŽ64
+, (
+__fd
+, 
+__»que¡
+, ...),
+
+193 
+__fúŽ_time64
+);
+
+195 

+	$__fúŽ_time64
+ (
+__fd
+, 
+__»que¡
+, ...è
+__THROW
+;
+
+196 
+	#fúŽ64
+ 
+__fúŽ_time64
+
+
+	)
+
+197 
+	#fúŽ
+ 
+__fúŽ_time64
+
+
+	)
+
+208 #iâdeà
+__USE_FILE_OFFSET64
+
+
+209 

+	$Ý’
+ (cÚ¡ *
+__fže
+, 
+__oæag
+, ...è
+	`__nÚnuÎ
+ ((1));
+
+211 #ifdeà
+__REDIRECT
+
+
+212 

+	`__REDIRECT
+ (
+Ý’
+, (cÚ¡ *
+__fže
+, 
+__oæag
+, ...), 
+Ý’64
+)
+
+213 
+	`__nÚnuÎ
+ ((1));
+
+215 
+	#Ý’
+ 
+Ý’64
+
+
+	)
+
+218 #ifdeà
+__USE_LARGEFILE64
+
+
+219 

+	$Ý’64
+ (cÚ¡ *
+__fže
+, 
+__oæag
+, ...è
+	`__nÚnuÎ
+ ((1));
+
+222 #ifdeà
+__USE_ATFILE
+
+
+232 #iâdeà
+__USE_FILE_OFFSET64
+
+
+233 

+	$Ý’©
+ (
+__fd
+, cÚ¡ *
+__fže
+, 
+__oæag
+, ...)
+
+234 
+	`__nÚnuÎ
+ ((2));
+
+236 #ifdeà
+__REDIRECT
+
+
+237 

+	`__REDIRECT
+ (
+Ý’©
+, (
+__fd
+, cÚ¡ *
+__fže
+, 
+__oæag
+,
+
+238 ...), 
+Ý’©64
+è
+	`__nÚnuÎ
+ ((2));
+
+240 
+	#Ý’©
+ 
+Ý’©64
+
+
+	)
+
+243 #ifdeà
+__USE_LARGEFILE64
+
+
+244 

+	$Ý’©64
+ (
+__fd
+, cÚ¡ *
+__fže
+, 
+__oæag
+, ...)
+
+245 
+	`__nÚnuÎ
+ ((2));
+
+254 #iâdeà
+__USE_FILE_OFFSET64
+
+
+255 

+	$ü—t
+ (cÚ¡ *
+__fže
+, 
+mode_t
+ 
+__mode
+è
+	`__nÚnuÎ
+ ((1));
+
+257 #ifdeà
+__REDIRECT
+
+
+258 

+	`__REDIRECT
+ (
+ü—t
+, (cÚ¡ *
+__fže
+, 
+mode_t
+ 
+__mode
+),
+
+259 
+ü—t64
+è
+	`__nÚnuÎ
+ ((1));
+
+261 
+	#ü—t
+ 
+ü—t64
+
+
+	)
+
+264 #ifdeà
+__USE_LARGEFILE64
+
+
+265 

+	$ü—t64
+ (cÚ¡ *
+__fže
+, 
+mode_t
+ 
+__mode
+è
+	`__nÚnuÎ
+ ((1));
+
+268 #ià!
+defšed
+ 
+F_LOCK
+ && (defšed 
+__USE_MISC
+ || (defšed 
+__USE_XOPEN_EXTENDED
+ \
+
+269 && !
+defšed
+ 
+__USE_POSIX
+))
+
+278 
+	#F_ULOCK
+ 0
+
+	)
+
+279 
+	#F_LOCK
+ 1
+
+	)
+
+280 
+	#F_TLOCK
+ 2
+
+	)
+
+281 
+	#F_TEST
+ 3
+
+	)
+
+283 #iâdeà
+__USE_FILE_OFFSET64
+
+
+284 

+	`lockf
+ (
+__fd
+, 
+__cmd
+, 
+off_t
+ 
+__Ën
+);
+
+286 #ifdeà
+__REDIRECT
+
+
+287 

+	`__REDIRECT
+ (
+lockf
+, (
+__fd
+, 
+__cmd
+, 
+__off64_t
+ 
+__Ën
+), 
+lockf64
+);
+
+289 
+	#lockf
+ 
+lockf64
+
+
+	)
+
+292 #ifdeà
+__USE_LARGEFILE64
+
+
+293 

+	`lockf64
+ (
+__fd
+, 
+__cmd
+, 
+off64_t
+ 
+__Ën
+);
+
+297 #ifdeà
+__USE_XOPEN2K
+
+
+300 #iâdeà
+__USE_FILE_OFFSET64
+
+
+301 

+	$posix_çdvi£
+ (
+__fd
+, 
+off_t
+ 
+__off£t
+, off_ˆ
+__Ën
+,
+
+302 
+__advi£
+è
+__THROW
+;
+
+304 #ifdeà
+__REDIRECT_NTH
+
+
+305 

+	`__REDIRECT_NTH
+ (
+posix_çdvi£
+, (
+__fd
+, 
+__off64_t
+ 
+__off£t
+,
+
+306 
+__off64_t
+ 
+__Ën
+, 
+__advi£
+),
+
+307 
+posix_çdvi£64
+);
+
+309 
+	#posix_çdvi£
+ 
+posix_çdvi£64
+
+
+	)
+
+312 #ifdeà
+__USE_LARGEFILE64
+
+
+313 

+	$posix_çdvi£64
+ (
+__fd
+, 
+off64_t
+ 
+__off£t
+, off64_ˆ
+__Ën
+,
+
+314 
+__advi£
+è
+__THROW
+;
+
+322 #iâdeà
+__USE_FILE_OFFSET64
+
+
+323 

+	`posix_çÎoÿ‹
+ (
+__fd
+, 
+off_t
+ 
+__off£t
+, off_ˆ
+__Ën
+);
+
+325 #ifdeà
+__REDIRECT
+
+
+326 

+	`__REDIRECT
+ (
+posix_çÎoÿ‹
+, (
+__fd
+, 
+__off64_t
+ 
+__off£t
+,
+
+327 
+__off64_t
+ 
+__Ën
+),
+
+328 
+posix_çÎoÿ‹64
+);
+
+330 
+	#posix_çÎoÿ‹
+ 
+posix_çÎoÿ‹64
+
+
+	)
+
+333 #ifdeà
+__USE_LARGEFILE64
+
+
+334 

+	`posix_çÎoÿ‹64
+ (
+__fd
+, 
+off64_t
+ 
+__off£t
+, off64_ˆ
+__Ën
+);
+
+340 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+ \
+
+341 && 
+defšed
+ 
+__va_¬g_·ck_Ën
+
+
+342 
+	~<b™s/fúŽ2.h
+>
+
+345 
+__END_DECLS
+
+
+	@/usr/include/grp.h
+
+22 #iâdef 
+_GRP_H
+
+
+23 
+	#_GRP_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+29 
+	~<b™s/ty³s.h
+>
+
+31 
+	#__Ãed_size_t
+
+
+	)
+
+32 
+	~<¡ddef.h
+>
+
+36 #ià(
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K
+è&& !defšed 
+__gid_t_defšed
+
+
+37 
+__gid_t
+ 
+	tgid_t
+;
+
+38 
+	#__gid_t_defšed
+
+
+	)
+
+42 
+	sgroup
+
+
+44 *
+	mgr_Çme
+;
+
+45 *
+	mgr_·sswd
+;
+
+46 
+__gid_t
+ 
+	mgr_gid
+;
+
+47 **
+	mgr_mem
+;
+
+51 #ifdeà
+__USE_MISC
+
+
+52 
+	~<b™s/ty³s/FILE.h
+>
+
+56 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+61 

+£tg»Á
+ ();
+
+67 

+’dg»Á
+ ();
+
+73 

+group
+ *
+g‘g»Á
+ ();
+
+76 #ifdef 
+__USE_MISC
+
+
+83 

+group
+ *
+fg‘g»Á
+ (
+FILE
+ *
+__¡»am
+);
+
+86 #ifdeà
+__USE_GNU
+
+
+93 

+putg»Á
+ (cÚ¡ 
+group
+ *
+__»¡riù
+ 
+__p
+,
+
+94 
+FILE
+ *
+__»¡riù
+ 
+__f
+);
+
+101 

+group
+ *
+g‘grgid
+ (
+__gid_t
+ 
+__gid
+);
+
+107 

+group
+ *
+g‘gºam
+ (cÚ¡ *
+__Çme
+);
+
+109 #ifdeà
+__USE_POSIX
+
+
+111 #ifdeà
+__USE_MISC
+
+
+114 
+	#NSS_BUFLEN_GROUP
+ 1024
+
+	)
+
+130 #ifdeà
+__USE_GNU
+
+
+131 

+	$g‘g»Á_r
+ (
+group
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+132 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+133 
+group
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+134 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+141 

+	$g‘grgid_r
+ (
+__gid_t
+ 
+__gid
+, 
+group
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+142 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+143 
+group
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+144 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+150 

+	$g‘gºam_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+151 
+group
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+152 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+153 
+group
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+154 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+156 #ifdef 
+__USE_MISC
+
+
+164 

+	$fg‘g»Á_r
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+165 
+group
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+166 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+167 
+group
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+168 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+174 #ifdef 
+__USE_MISC
+
+
+176 
+	#__Ãed_size_t
+
+
+	)
+
+177 
+	~<¡ddef.h
+>
+
+180 

+	$£tgroups
+ (
+size_t
+ 
+__n
+, cÚ¡ 
+__gid_t
+ *
+__groups
+è
+__THROW
+;
+
+190 

+	`g‘grou¶i¡
+ (cÚ¡ *
+__u£r
+, 
+__gid_t
+ 
+__group
+,
+
+191 
+__gid_t
+ *
+__groups
+, *
+__ngroups
+);
+
+201 

+	`š™groups
+ (cÚ¡ *
+__u£r
+, 
+__gid_t
+ 
+__group
+);
+
+205 
+__END_DECLS
+
+
+	@/usr/include/inttypes.h
+
+22 #iâdeà
+_INTTYPES_H
+
+
+23 
+	#_INTTYPES_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	~<¡dšt.h
+>
+
+30 #iâdeà
+____gwch¬_t_defšed
+
+
+31 #ifdeà
+__ýlu¥lus
+
+
+32 
+	#__gwch¬_t
+ 
+wch¬_t
+
+
+	)
+
+33 #–ià
+defšed
+ 
+__WCHAR_TYPE__
+
+
+34 
+__WCHAR_TYPE__
+ 
+	t__gwch¬_t
+;
+
+36 
+	#__Ãed_wch¬_t
+
+
+	)
+
+37 
+	~<¡ddef.h
+>
+
+38 
+wch¬_t
+ 
+	t__gwch¬_t
+;
+
+40 
+	#____gwch¬_t_defšed
+ 1
+
+	)
+
+43 #ià
+__WORDSIZE
+ == 64
+
+44 
+	#__PRI64_PREFIX
+ "l"
+
+	)
+
+45 
+	#__PRIPTR_PREFIX
+ "l"
+
+	)
+
+47 
+	#__PRI64_PREFIX
+ "Î"
+
+	)
+
+48 
+	#__PRIPTR_PREFIX
+
+
+	)
+
+54 
+	#PRId8
+ "d"
+
+	)
+
+55 
+	#PRId16
+ "d"
+
+	)
+
+56 
+	#PRId32
+ "d"
+
+	)
+
+57 
+	#PRId64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+59 
+	#PRIdLEAST8
+ "d"
+
+	)
+
+60 
+	#PRIdLEAST16
+ "d"
+
+	)
+
+61 
+	#PRIdLEAST32
+ "d"
+
+	)
+
+62 
+	#PRIdLEAST64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+64 
+	#PRIdFAST8
+ "d"
+
+	)
+
+65 
+	#PRIdFAST16
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+66 
+	#PRIdFAST32
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+67 
+	#PRIdFAST64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+70 
+	#PRIi8
+ "i"
+
+	)
+
+71 
+	#PRIi16
+ "i"
+
+	)
+
+72 
+	#PRIi32
+ "i"
+
+	)
+
+73 
+	#PRIi64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+75 
+	#PRIiLEAST8
+ "i"
+
+	)
+
+76 
+	#PRIiLEAST16
+ "i"
+
+	)
+
+77 
+	#PRIiLEAST32
+ "i"
+
+	)
+
+78 
+	#PRIiLEAST64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+80 
+	#PRIiFAST8
+ "i"
+
+	)
+
+81 
+	#PRIiFAST16
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+82 
+	#PRIiFAST32
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+83 
+	#PRIiFAST64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+86 
+	#PRIo8
+ "o"
+
+	)
+
+87 
+	#PRIo16
+ "o"
+
+	)
+
+88 
+	#PRIo32
+ "o"
+
+	)
+
+89 
+	#PRIo64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+91 
+	#PRIoLEAST8
+ "o"
+
+	)
+
+92 
+	#PRIoLEAST16
+ "o"
+
+	)
+
+93 
+	#PRIoLEAST32
+ "o"
+
+	)
+
+94 
+	#PRIoLEAST64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+96 
+	#PRIoFAST8
+ "o"
+
+	)
+
+97 
+	#PRIoFAST16
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+98 
+	#PRIoFAST32
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+99 
+	#PRIoFAST64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+102 
+	#PRIu8
+ "u"
+
+	)
+
+103 
+	#PRIu16
+ "u"
+
+	)
+
+104 
+	#PRIu32
+ "u"
+
+	)
+
+105 
+	#PRIu64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+107 
+	#PRIuLEAST8
+ "u"
+
+	)
+
+108 
+	#PRIuLEAST16
+ "u"
+
+	)
+
+109 
+	#PRIuLEAST32
+ "u"
+
+	)
+
+110 
+	#PRIuLEAST64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+112 
+	#PRIuFAST8
+ "u"
+
+	)
+
+113 
+	#PRIuFAST16
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+114 
+	#PRIuFAST32
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+115 
+	#PRIuFAST64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+118 
+	#PRIx8
+ "x"
+
+	)
+
+119 
+	#PRIx16
+ "x"
+
+	)
+
+120 
+	#PRIx32
+ "x"
+
+	)
+
+121 
+	#PRIx64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+123 
+	#PRIxLEAST8
+ "x"
+
+	)
+
+124 
+	#PRIxLEAST16
+ "x"
+
+	)
+
+125 
+	#PRIxLEAST32
+ "x"
+
+	)
+
+126 
+	#PRIxLEAST64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+128 
+	#PRIxFAST8
+ "x"
+
+	)
+
+129 
+	#PRIxFAST16
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+130 
+	#PRIxFAST32
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+131 
+	#PRIxFAST64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+134 
+	#PRIX8
+ "X"
+
+	)
+
+135 
+	#PRIX16
+ "X"
+
+	)
+
+136 
+	#PRIX32
+ "X"
+
+	)
+
+137 
+	#PRIX64
+ 
+__PRI64_PREFIX
+ "X"
+
+	)
+
+139 
+	#PRIXLEAST8
+ "X"
+
+	)
+
+140 
+	#PRIXLEAST16
+ "X"
+
+	)
+
+141 
+	#PRIXLEAST32
+ "X"
+
+	)
+
+142 
+	#PRIXLEAST64
+ 
+__PRI64_PREFIX
+ "X"
+
+	)
+
+144 
+	#PRIXFAST8
+ "X"
+
+	)
+
+145 
+	#PRIXFAST16
+ 
+__PRIPTR_PREFIX
+ "X"
+
+	)
+
+146 
+	#PRIXFAST32
+ 
+__PRIPTR_PREFIX
+ "X"
+
+	)
+
+147 
+	#PRIXFAST64
+ 
+__PRI64_PREFIX
+ "X"
+
+	)
+
+151 
+	#PRIdMAX
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+152 
+	#PRIiMAX
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+153 
+	#PRIoMAX
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+154 
+	#PRIuMAX
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+155 
+	#PRIxMAX
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+156 
+	#PRIXMAX
+ 
+__PRI64_PREFIX
+ "X"
+
+	)
+
+160 
+	#PRIdPTR
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+161 
+	#PRIiPTR
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+162 
+	#PRIoPTR
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+163 
+	#PRIuPTR
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+164 
+	#PRIxPTR
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+165 
+	#PRIXPTR
+ 
+__PRIPTR_PREFIX
+ "X"
+
+	)
+
+168 #ià
+__GLIBC_USE
+ (
+ISOC2X
+)
+
+169 
+	#PRIb8
+ "b"
+
+	)
+
+170 
+	#PRIb16
+ "b"
+
+	)
+
+171 
+	#PRIb32
+ "b"
+
+	)
+
+172 
+	#PRIb64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+174 
+	#PRIbLEAST8
+ "b"
+
+	)
+
+175 
+	#PRIbLEAST16
+ "b"
+
+	)
+
+176 
+	#PRIbLEAST32
+ "b"
+
+	)
+
+177 
+	#PRIbLEAST64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+179 
+	#PRIbFAST8
+ "b"
+
+	)
+
+180 
+	#PRIbFAST16
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+181 
+	#PRIbFAST32
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+182 
+	#PRIbFAST64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+184 
+	#PRIbMAX
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+185 
+	#PRIbPTR
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+187 
+	#PRIB8
+ "B"
+
+	)
+
+188 
+	#PRIB16
+ "B"
+
+	)
+
+189 
+	#PRIB32
+ "B"
+
+	)
+
+190 
+	#PRIB64
+ 
+__PRI64_PREFIX
+ "B"
+
+	)
+
+192 
+	#PRIBLEAST8
+ "B"
+
+	)
+
+193 
+	#PRIBLEAST16
+ "B"
+
+	)
+
+194 
+	#PRIBLEAST32
+ "B"
+
+	)
+
+195 
+	#PRIBLEAST64
+ 
+__PRI64_PREFIX
+ "B"
+
+	)
+
+197 
+	#PRIBFAST8
+ "B"
+
+	)
+
+198 
+	#PRIBFAST16
+ 
+__PRIPTR_PREFIX
+ "B"
+
+	)
+
+199 
+	#PRIBFAST32
+ 
+__PRIPTR_PREFIX
+ "B"
+
+	)
+
+200 
+	#PRIBFAST64
+ 
+__PRI64_PREFIX
+ "B"
+
+	)
+
+202 
+	#PRIBMAX
+ 
+__PRI64_PREFIX
+ "B"
+
+	)
+
+203 
+	#PRIBPTR
+ 
+__PRIPTR_PREFIX
+ "B"
+
+	)
+
+210 
+	#SCNd8
+ "hhd"
+
+	)
+
+211 
+	#SCNd16
+ "hd"
+
+	)
+
+212 
+	#SCNd32
+ "d"
+
+	)
+
+213 
+	#SCNd64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+215 
+	#SCNdLEAST8
+ "hhd"
+
+	)
+
+216 
+	#SCNdLEAST16
+ "hd"
+
+	)
+
+217 
+	#SCNdLEAST32
+ "d"
+
+	)
+
+218 
+	#SCNdLEAST64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+220 
+	#SCNdFAST8
+ "hhd"
+
+	)
+
+221 
+	#SCNdFAST16
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+222 
+	#SCNdFAST32
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+223 
+	#SCNdFAST64
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+226 
+	#SCNi8
+ "hhi"
+
+	)
+
+227 
+	#SCNi16
+ "hi"
+
+	)
+
+228 
+	#SCNi32
+ "i"
+
+	)
+
+229 
+	#SCNi64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+231 
+	#SCNiLEAST8
+ "hhi"
+
+	)
+
+232 
+	#SCNiLEAST16
+ "hi"
+
+	)
+
+233 
+	#SCNiLEAST32
+ "i"
+
+	)
+
+234 
+	#SCNiLEAST64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+236 
+	#SCNiFAST8
+ "hhi"
+
+	)
+
+237 
+	#SCNiFAST16
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+238 
+	#SCNiFAST32
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+239 
+	#SCNiFAST64
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+242 
+	#SCNu8
+ "hhu"
+
+	)
+
+243 
+	#SCNu16
+ "hu"
+
+	)
+
+244 
+	#SCNu32
+ "u"
+
+	)
+
+245 
+	#SCNu64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+247 
+	#SCNuLEAST8
+ "hhu"
+
+	)
+
+248 
+	#SCNuLEAST16
+ "hu"
+
+	)
+
+249 
+	#SCNuLEAST32
+ "u"
+
+	)
+
+250 
+	#SCNuLEAST64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+252 
+	#SCNuFAST8
+ "hhu"
+
+	)
+
+253 
+	#SCNuFAST16
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+254 
+	#SCNuFAST32
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+255 
+	#SCNuFAST64
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+258 
+	#SCNo8
+ "hho"
+
+	)
+
+259 
+	#SCNo16
+ "ho"
+
+	)
+
+260 
+	#SCNo32
+ "o"
+
+	)
+
+261 
+	#SCNo64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+263 
+	#SCNoLEAST8
+ "hho"
+
+	)
+
+264 
+	#SCNoLEAST16
+ "ho"
+
+	)
+
+265 
+	#SCNoLEAST32
+ "o"
+
+	)
+
+266 
+	#SCNoLEAST64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+268 
+	#SCNoFAST8
+ "hho"
+
+	)
+
+269 
+	#SCNoFAST16
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+270 
+	#SCNoFAST32
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+271 
+	#SCNoFAST64
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+274 
+	#SCNx8
+ "hhx"
+
+	)
+
+275 
+	#SCNx16
+ "hx"
+
+	)
+
+276 
+	#SCNx32
+ "x"
+
+	)
+
+277 
+	#SCNx64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+279 
+	#SCNxLEAST8
+ "hhx"
+
+	)
+
+280 
+	#SCNxLEAST16
+ "hx"
+
+	)
+
+281 
+	#SCNxLEAST32
+ "x"
+
+	)
+
+282 
+	#SCNxLEAST64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+284 
+	#SCNxFAST8
+ "hhx"
+
+	)
+
+285 
+	#SCNxFAST16
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+286 
+	#SCNxFAST32
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+287 
+	#SCNxFAST64
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+291 
+	#SCNdMAX
+ 
+__PRI64_PREFIX
+ "d"
+
+	)
+
+292 
+	#SCNiMAX
+ 
+__PRI64_PREFIX
+ "i"
+
+	)
+
+293 
+	#SCNoMAX
+ 
+__PRI64_PREFIX
+ "o"
+
+	)
+
+294 
+	#SCNuMAX
+ 
+__PRI64_PREFIX
+ "u"
+
+	)
+
+295 
+	#SCNxMAX
+ 
+__PRI64_PREFIX
+ "x"
+
+	)
+
+298 
+	#SCNdPTR
+ 
+__PRIPTR_PREFIX
+ "d"
+
+	)
+
+299 
+	#SCNiPTR
+ 
+__PRIPTR_PREFIX
+ "i"
+
+	)
+
+300 
+	#SCNoPTR
+ 
+__PRIPTR_PREFIX
+ "o"
+
+	)
+
+301 
+	#SCNuPTR
+ 
+__PRIPTR_PREFIX
+ "u"
+
+	)
+
+302 
+	#SCNxPTR
+ 
+__PRIPTR_PREFIX
+ "x"
+
+	)
+
+306 #ià
+__GLIBC_USE
+ (
+ISOC2X
+)
+
+307 
+	#SCNb8
+ "hhb"
+
+	)
+
+308 
+	#SCNb16
+ "hb"
+
+	)
+
+309 
+	#SCNb32
+ "b"
+
+	)
+
+310 
+	#SCNb64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+312 
+	#SCNbLEAST8
+ "hhb"
+
+	)
+
+313 
+	#SCNbLEAST16
+ "hb"
+
+	)
+
+314 
+	#SCNbLEAST32
+ "b"
+
+	)
+
+315 
+	#SCNbLEAST64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+317 
+	#SCNbFAST8
+ "hhb"
+
+	)
+
+318 
+	#SCNbFAST16
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+319 
+	#SCNbFAST32
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+320 
+	#SCNbFAST64
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+322 
+	#SCNbMAX
+ 
+__PRI64_PREFIX
+ "b"
+
+	)
+
+323 
+	#SCNbPTR
+ 
+__PRIPTR_PREFIX
+ "b"
+
+	)
+
+327 
+	g__BEGIN_DECLS
+
+
+329 #ià
+__WORDSIZE
+ == 64
+
+334 
+	mquÙ
+;
+
+335 
+	m»m
+;
+
+336 } 
+	timaxdiv_t
+;
+
+343 
+__ex‹nsiÚ__
+ 
+	mquÙ
+;
+
+344 
+__ex‹nsiÚ__
+ 
+	m»m
+;
+
+345 } 
+	timaxdiv_t
+;
+
+351 
+štmax_t
+ 
+	$imaxabs
+ (
+štmax_t
+ 
+__n
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+354 
+imaxdiv_t
+ 
+	$imaxdiv
+ (
+štmax_t
+ 
+__num”
+, iÁmax_ˆ
+__d’om
+)
+
+355 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+358 
+štmax_t
+ 
+	$¡¹oimax
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+359 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+è
+__THROW
+;
+
+362 
+uštmax_t
+ 
+	$¡¹oumax
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+363 ** 
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+è
+__THROW
+;
+
+366 
+štmax_t
+ 
+	$wc¡oimax
+ (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+367 
+__gwch¬_t
+ **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+368 
+__THROW
+;
+
+371 
+uštmax_t
+ 
+	$wc¡oumax
+ (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+372 
+__gwch¬_t
+ ** 
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+373 
+__THROW
+;
+
+377 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+378 #ifdeà
+__REDIRECT
+
+
+379 
+štmax_t
+ 
+	`__REDIRECT_NTH
+ (
+¡¹oimax
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+380 **
+__»¡riù
+ 
+__’d±r
+,
+
+381 
+__ba£
+), 
+__isoc23_¡¹oimax
+);
+
+382 
+uštmax_t
+ 
+	`__REDIRECT_NTH
+ (
+¡¹oumax
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+383 **
+__»¡riù
+ 
+__’d±r
+,
+
+384 
+__ba£
+), 
+__isoc23_¡¹oumax
+);
+
+385 
+štmax_t
+ 
+	`__REDIRECT_NTH
+ (
+wc¡oimax
+,
+
+386 (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+387 
+__gwch¬_t
+ **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+),
+
+388 
+__isoc23_wc¡oimax
+);
+
+389 
+uštmax_t
+ 
+	`__REDIRECT_NTH
+ (
+wc¡oumax
+,
+
+390 (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+391 
+__gwch¬_t
+ **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+),
+
+392 
+__isoc23_wc¡oumax
+);
+
+394 
+štmax_t
+ 
+	$__isoc23_¡¹oimax
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+395 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+396 
+__THROW
+;
+
+397 
+uštmax_t
+ 
+	$__isoc23_¡¹oumax
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+398 ** 
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+399 
+__THROW
+;
+
+400 
+štmax_t
+ 
+	$__isoc23_wc¡oimax
+ (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+401 
+__gwch¬_t
+ **
+__»¡riù
+ 
+__’d±r
+,
+
+402 
+__ba£
+)
+
+403 
+__THROW
+;
+
+404 
+uštmax_t
+ 
+	$__isoc23_wc¡oumax
+ (cÚ¡ 
+__gwch¬_t
+ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+405 
+__gwch¬_t
+ ** 
+__»¡riù
+ 
+__’d±r
+,
+
+406 
+__ba£
+)
+
+407 
+__THROW
+;
+
+408 
+	#¡¹oimax
+ 
+__isoc23_¡¹oimax
+
+
+	)
+
+409 
+	#¡¹oumax
+ 
+__isoc23_¡¹oumax
+
+
+	)
+
+410 
+	#wc¡oimax
+ 
+__isoc23_wc¡oimax
+
+
+	)
+
+411 
+	#wc¡oumax
+ 
+__isoc23_wc¡oumax
+
+
+	)
+
+415 
+__END_DECLS
+
+
+	@/usr/include/libgen.h
+
+18 #iâdeà
+_LIBGEN_H
+
+
+19 
+	#_LIBGEN_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 
+__BEGIN_DECLS
+
+
+26 
*
+	$dœÇme
+ (*
+__·th
+è
+__THROW
+;
+
+34 
*
+	$__xpg_ba£Çme
+ (*
+__·th
+è
+__THROW
+;
+
+35 
+	#ba£Çme
+ 
+__xpg_ba£Çme
+
+
+	)
+
+37 
+__END_DECLS
+
+
+	@/usr/include/limits.h
+
+22 #iâdeà
+_LIBC_LIMITS_H_
+
+
+23 
+	#_LIBC_LIMITS_H_
+ 1
+
+	)
+
+25 
+	#__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+	)
+
+26 
+	~<b™s/libc-h—d”-¡¬t.h
+>
+
+32 
+	#MB_LEN_MAX
+ 16
+
+	)
+
+37 #ià!
+defšed
+ 
+__GNUC__
+ || __GNUC__ < 2
+
+42 #iâdeà
+_LIMITS_H
+
+
+43 
+	#_LIMITS_H
+ 1
+
+	)
+
+45 
+	~<b™s/wÜdsize.h
+>
+
+54 
+	#CHAR_BIT
+ 8
+
+	)
+
+57 
+	#SCHAR_MIN
+ (-128)
+
+	)
+
+58 
+	#SCHAR_MAX
+ 127
+
+	)
+
+61 
+	#UCHAR_MAX
+ 255
+
+	)
+
+64 #ifdeà
+__CHAR_UNSIGNED__
+
+
+65 
+	#CHAR_MIN
+ 0
+
+	)
+
+66 
+	#CHAR_MAX
+ 
+UCHAR_MAX
+
+
+	)
+
+68 
+	#CHAR_MIN
+ 
+SCHAR_MIN
+
+
+	)
+
+69 
+	#CHAR_MAX
+ 
+SCHAR_MAX
+
+
+	)
+
+73 
+	#SHRT_MIN
+ (-32768)
+
+	)
+
+74 
+	#SHRT_MAX
+ 32767
+
+	)
+
+77 
+	#USHRT_MAX
+ 65535
+
+	)
+
+80 
+	#INT_MIN
+ (-
+INT_MAX
+ - 1)
+
+	)
+
+81 
+	#INT_MAX
+ 2147483647
+
+	)
+
+84 
+	#UINT_MAX
+ 4294967295U
+
+	)
+
+87 #ià
+__WORDSIZE
+ == 64
+
+88 
+	#LONG_MAX
+ 9223372036854775807L
+
+	)
+
+90 
+	#LONG_MAX
+ 2147483647L
+
+	)
+
+92 
+	#LONG_MIN
+ (-
+LONG_MAX
+ - 1L)
+
+	)
+
+95 #ià
+__WORDSIZE
+ == 64
+
+96 
+	#ULONG_MAX
+ 18446744073709551615UL
+
+	)
+
+98 
+	#ULONG_MAX
+ 4294967295UL
+
+	)
+
+101 #ifdeà
+__USE_ISOC99
+
+
+104 
+	#LLONG_MAX
+ 9223372036854775807LL
+
+	)
+
+105 
+	#LLONG_MIN
+ (-
+LLONG_MAX
+ - 1LL)
+
+	)
+
+108 
+	#ULLONG_MAX
+ 18446744073709551615ULL
+
+	)
+
+122 #ià
+defšed
+ 
+__GNUC__
+ && !defšed 
+_GCC_LIMITS_H_
+
+
+124 #šþude_Ãxˆ<
+lim™s
+.
+h
+>
+
+130 #ià
+defšed
+ 
+__USE_ISOC99
+ && defšed 
+__GNUC__
+
+
+131 #iâdeà
+LLONG_MIN
+
+
+132 
+	#LLONG_MIN
+ (-
+LLONG_MAX
+-1)
+
+	)
+
+134 #iâdeà
+LLONG_MAX
+
+
+135 
+	#LLONG_MAX
+ 
+__LONG_LONG_MAX__
+
+
+	)
+
+137 #iâdeà
+ULLONG_MAX
+
+
+138 
+	#ULLONG_MAX
+ (
+LLONG_MAX
+ * 2ULL + 1)
+
+	)
+
+145 #ià
+__GLIBC_USE
+ (
+IEC_60559_BFP_EXT_C2X
+)
+
+146 #iâdeà
+CHAR_WIDTH
+
+
+147 
+	#CHAR_WIDTH
+ 8
+
+	)
+
+149 #iâdeà
+SCHAR_WIDTH
+
+
+150 
+	#SCHAR_WIDTH
+ 8
+
+	)
+
+152 #iâdeà
+UCHAR_WIDTH
+
+
+153 
+	#UCHAR_WIDTH
+ 8
+
+	)
+
+155 #iâdeà
+SHRT_WIDTH
+
+
+156 
+	#SHRT_WIDTH
+ 16
+
+	)
+
+158 #iâdeà
+USHRT_WIDTH
+
+
+159 
+	#USHRT_WIDTH
+ 16
+
+	)
+
+161 #iâdeà
+INT_WIDTH
+
+
+162 
+	#INT_WIDTH
+ 32
+
+	)
+
+164 #iâdeà
+UINT_WIDTH
+
+
+165 
+	#UINT_WIDTH
+ 32
+
+	)
+
+167 #iâdeà
+LONG_WIDTH
+
+
+168 
+	#LONG_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+170 #iâdeà
+ULONG_WIDTH
+
+
+171 
+	#ULONG_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+173 #iâdeà
+LLONG_WIDTH
+
+
+174 
+	#LLONG_WIDTH
+ 64
+
+	)
+
+176 #iâdeà
+ULLONG_WIDTH
+
+
+177 
+	#ULLONG_WIDTH
+ 64
+
+	)
+
+184 #ià
+__GLIBC_USE
+ (
+ISOC2X
+)
+
+185 #iâdeà
+BOOL_MAX
+
+
+186 
+	#BOOL_MAX
+ 1
+
+	)
+
+188 #iâdeà
+BOOL_WIDTH
+
+
+189 
+	#BOOL_WIDTH
+ 1
+
+	)
+
+193 #ifdef 
+__USE_POSIX
+
+
+195 
+	~<b™s/posix1_lim.h
+>
+
+198 #ifdef 
+__USE_POSIX2
+
+
+199 
+	~<b™s/posix2_lim.h
+>
+
+202 #ifdef 
+__USE_XOPEN
+
+
+203 
+	~<b™s/xÝ’_lim.h
+>
+
+	@/usr/include/linux/errqueue.h
+
+2 #iâdeà
+_LINUX_ERRQUEUE_H
+
+
+3 
+	#_LINUX_ERRQUEUE_H
+
+
+	)
+
+5 
+	~<lšux/ty³s.h
+>
+
+6 
+	~<lšux/time_ty³s.h
+>
+
+9 
+	ssock_“_d©a_rfc4884
+ {
+
+10 
+__u16
+ 
+	mËn
+;
+
+11 
+__u8
+ 
+	mæags
+;
+
+12 
+__u8
+ 
+	m»£rved
+;
+
+15 
+	ssock_ex‹nded_”r
+ {
+
+16 
+__u32
+ 
+	m“_”ºo
+;
+
+17 
+__u8
+ 
+	m“_Üigš
+;
+
+18 
+__u8
+ 
+	m“_ty³
+;
+
+19 
+__u8
+ 
+	m“_code
+;
+
+20 
+__u8
+ 
+	m“_·d
+;
+
+21 
+__u32
+ 
+	m“_šfo
+;
+
+23 
+__u32
+ 
+	m“_d©a
+;
+
+24 
+sock_“_d©a_rfc4884
+ 
+	m“_rfc4884
+;
+
+28 
+	#SO_EE_ORIGIN_NONE
+ 0
+
+	)
+
+29 
+	#SO_EE_ORIGIN_LOCAL
+ 1
+
+	)
+
+30 
+	#SO_EE_ORIGIN_ICMP
+ 2
+
+	)
+
+31 
+	#SO_EE_ORIGIN_ICMP6
+ 3
+
+	)
+
+32 
+	#SO_EE_ORIGIN_TXSTATUS
+ 4
+
+	)
+
+33 
+	#SO_EE_ORIGIN_ZEROCOPY
+ 5
+
+	)
+
+34 
+	#SO_EE_ORIGIN_TXTIME
+ 6
+
+	)
+
+35 
+	#SO_EE_ORIGIN_TIMESTAMPING
+ 
+SO_EE_ORIGIN_TXSTATUS
+
+
+	)
+
+37 
+	#SO_EE_OFFENDER
+(
+“
+è((
+sockaddr
+*)(Óe)+1))
+
+	)
+
+39 
+	#SO_EE_CODE_ZEROCOPY_COPIED
+ 1
+
+	)
+
+41 
+	#SO_EE_CODE_TXTIME_INVALID_PARAM
+ 1
+
+	)
+
+42 
+	#SO_EE_CODE_TXTIME_MISSED
+ 2
+
+	)
+
+44 
+	#SO_EE_RFC4884_FLAG_INVALID
+ 1
+
+	)
+
+56 
+	sscm_time¡ampšg
+ {
+
+57 
+time¥ec
+ 
+	mts
+[3];
+
+60 
+	sscm_time¡ampšg64
+ {
+
+61 
+__k”Ãl_time¥ec
+ 
+	mts
+[3];
+
+69 
+	mSCM_TSTAMP_SND
+,
+
+70 
+	mSCM_TSTAMP_SCHED
+,
+
+71 
+	mSCM_TSTAMP_ACK
+,
+
+	@/usr/include/linux/if_tun.h
+
+17 #iâdeà
+__IF_TUN_H
+
+
+18 
+	#__IF_TUN_H
+
+
+	)
+
+20 
+	~<lšux/ty³s.h
+>
+
+21 
+	~<lšux/if_‘h”.h
+>
+
+22 
+	~<lšux/fž‹r.h
+>
+
+25 
+	#TUN_READQ_SIZE
+ 500
+
+	)
+
+27 
+	#TUN_TUN_DEV
+ 
+IFF_TUN
+
+
+	)
+
+28 
+	#TUN_TAP_DEV
+ 
+IFF_TAP
+
+
+	)
+
+29 
+	#TUN_TYPE_MASK
+ 0x000f
+
+	)
+
+32 
+	#TUNSETNOCSUM
+ 
+	`_IOW
+('T', 200, )
+
+	)
+
+33 
+	#TUNSETDEBUG
+ 
+	`_IOW
+('T', 201, )
+
+	)
+
+34 
+	#TUNSETIFF
+ 
+	`_IOW
+('T', 202, )
+
+	)
+
+35 
+	#TUNSETPERSIST
+ 
+	`_IOW
+('T', 203, )
+
+	)
+
+36 
+	#TUNSETOWNER
+ 
+	`_IOW
+('T', 204, )
+
+	)
+
+37 
+	#TUNSETLINK
+ 
+	`_IOW
+('T', 205, )
+
+	)
+
+38 
+	#TUNSETGROUP
+ 
+	`_IOW
+('T', 206, )
+
+	)
+
+39 
+	#TUNGETFEATURES
+ 
+	`_IOR
+('T', 207, )
+
+	)
+
+40 
+	#TUNSETOFFLOAD
+ 
+	`_IOW
+('T', 208, )
+
+	)
+
+41 
+	#TUNSETTXFILTER
+ 
+	`_IOW
+('T', 209, )
+
+	)
+
+42 
+	#TUNGETIFF
+ 
+	`_IOR
+('T', 210, )
+
+	)
+
+43 
+	#TUNGETSNDBUF
+ 
+	`_IOR
+('T', 211, )
+
+	)
+
+44 
+	#TUNSETSNDBUF
+ 
+	`_IOW
+('T', 212, )
+
+	)
+
+45 
+	#TUNATTACHFILTER
+ 
+	`_IOW
+('T', 213, 
+sock_årog
+)
+
+	)
+
+46 
+	#TUNDETACHFILTER
+ 
+	`_IOW
+('T', 214, 
+sock_årog
+)
+
+	)
+
+47 
+	#TUNGETVNETHDRSZ
+ 
+	`_IOR
+('T', 215, )
+
+	)
+
+48 
+	#TUNSETVNETHDRSZ
+ 
+	`_IOW
+('T', 216, )
+
+	)
+
+49 
+	#TUNSETQUEUE
+ 
+	`_IOW
+('T', 217, )
+
+	)
+
+50 
+	#TUNSETIFINDEX
+ 
+	`_IOW
+('T', 218, )
+
+	)
+
+51 
+	#TUNGETFILTER
+ 
+	`_IOR
+('T', 219, 
+sock_årog
+)
+
+	)
+
+52 
+	#TUNSETVNETLE
+ 
+	`_IOW
+('T', 220, )
+
+	)
+
+53 
+	#TUNGETVNETLE
+ 
+	`_IOR
+('T', 221, )
+
+	)
+
+58 
+	#TUNSETVNETBE
+ 
+	`_IOW
+('T', 222, )
+
+	)
+
+59 
+	#TUNGETVNETBE
+ 
+	`_IOR
+('T', 223, )
+
+	)
+
+60 
+	#TUNSETSTEERINGEBPF
+ 
+	`_IOR
+('T', 224, )
+
+	)
+
+61 
+	#TUNSETFILTEREBPF
+ 
+	`_IOR
+('T', 225, )
+
+	)
+
+62 
+	#TUNSETCARRIER
+ 
+	`_IOW
+('T', 226, )
+
+	)
+
+63 
+	#TUNGETDEVNETNS
+ 
+	`_IO
+('T', 227)
+
+	)
+
+66 
+	#IFF_TUN
+ 0x0001
+
+	)
+
+67 
+	#IFF_TAP
+ 0x0002
+
+	)
+
+68 
+	#IFF_NAPI
+ 0x0010
+
+	)
+
+69 
+	#IFF_NAPI_FRAGS
+ 0x0020
+
+	)
+
+71 
+	#IFF_NO_CARRIER
+ 0x0040
+
+	)
+
+72 
+	#IFF_NO_PI
+ 0x1000
+
+	)
+
+74 
+	#IFF_ONE_QUEUE
+ 0x2000
+
+	)
+
+75 
+	#IFF_VNET_HDR
+ 0x4000
+
+	)
+
+76 
+	#IFF_TUN_EXCL
+ 0x8000
+
+	)
+
+77 
+	#IFF_MULTI_QUEUE
+ 0x0100
+
+	)
+
+78 
+	#IFF_ATTACH_QUEUE
+ 0x0200
+
+	)
+
+79 
+	#IFF_DETACH_QUEUE
+ 0x0400
+
+	)
+
+81 
+	#IFF_PERSIST
+ 0x0800
+
+	)
+
+82 
+	#IFF_NOFILTER
+ 0x1000
+
+	)
+
+85 
+	#TUN_TX_TIMESTAMP
+ 1
+
+	)
+
+88 
+	#TUN_F_CSUM
+ 0x01
+
+	)
+
+89 
+	#TUN_F_TSO4
+ 0x02
+
+	)
+
+90 
+	#TUN_F_TSO6
+ 0x04
+
+	)
+
+91 
+	#TUN_F_TSO_ECN
+ 0x08
+
+	)
+
+92 
+	#TUN_F_UFO
+ 0x10
+
+	)
+
+93 
+	#TUN_F_USO4
+ 0x20
+
+	)
+
+94 
+	#TUN_F_USO6
+ 0x40
+
+	)
+
+97 
+	#TUN_PKT_STRIP
+ 0x0001
+
+	)
+
+98 
+	stun_pi
+ {
+
+99 
+__u16
+ 
+	mæags
+;
+
+100 
+__be16
+ 
+	m´Ùo
+;
+
+111 
+	#TUN_FLT_ALLMULTI
+ 0x0001
+
+	)
+
+112 
+	stun_fž‹r
+ {
+
+113 
+__u16
+ 
+	mæags
+;
+
+114 
+__u16
+ 
+	mcouÁ
+;
+
+115 
+__u8
+ 
+	maddr
+[][
+ETH_ALEN
+];
+
+	@/usr/include/linux/sockios.h
+
+19 #iâdeà
+_LINUX_SOCKIOS_H
+
+
+20 
+	#_LINUX_SOCKIOS_H
+
+
+	)
+
+22 
+	~<asm/b™¥”lÚg.h
+>
+
+23 
+	~<asm/sockios.h
+>
+
+26 
+	#SIOCINQ
+ 
+FIONREAD
+
+
+	)
+
+27 
+	#SIOCOUTQ
+ 
+TIOCOUTQ
+
+
+	)
+
+29 
+	#SOCK_IOC_TYPE
+ 0x89
+
+	)
+
+36 
+	#SIOCGSTAMP_NEW
+ 
+	`_IOR
+(
+SOCK_IOC_TYPE
+, 0x06, [2])
+
+	)
+
+38 
+	#SIOCGSTAMPNS_NEW
+ 
+	`_IOR
+(
+SOCK_IOC_TYPE
+, 0x07, [2])
+
+	)
+
+40 #ià
+__BITS_PER_LONG
+ =ð64 || (
+defšed
+(
+__x86_64__
+è&& defšed(
+__ILP32__
+))
+
+42 
+	#SIOCGSTAMP
+ 
+SIOCGSTAMP_OLD
+
+
+	)
+
+43 
+	#SIOCGSTAMPNS
+ 
+SIOCGSTAMPNS_OLD
+
+
+	)
+
+45 
+	#SIOCGSTAMP
+ (((
+timev®
+)) == 8 ? \
+
+46 
+SIOCGSTAMP_OLD
+ : 
+SIOCGSTAMP_NEW
+)
+
+	)
+
+47 
+	#SIOCGSTAMPNS
+ (((
+time¥ec
+)) == 8 ? \
+
+48 
+SIOCGSTAMPNS_OLD
+ : 
+SIOCGSTAMPNS_NEW
+)
+
+	)
+
+52 
+	#SIOCADDRT
+ 0x890B
+
+	)
+
+53 
+	#SIOCDELRT
+ 0x890C
+
+	)
+
+54 
+	#SIOCRTMSG
+ 0x890D
+
+	)
+
+57 
+	#SIOCGIFNAME
+ 0x8910
+
+	)
+
+58 
+	#SIOCSIFLINK
+ 0x8911
+
+	)
+
+59 
+	#SIOCGIFCONF
+ 0x8912
+
+	)
+
+60 
+	#SIOCGIFFLAGS
+ 0x8913
+
+	)
+
+61 
+	#SIOCSIFFLAGS
+ 0x8914
+
+	)
+
+62 
+	#SIOCGIFADDR
+ 0x8915
+
+	)
+
+63 
+	#SIOCSIFADDR
+ 0x8916
+
+	)
+
+64 
+	#SIOCGIFDSTADDR
+ 0x8917
+
+	)
+
+65 
+	#SIOCSIFDSTADDR
+ 0x8918
+
+	)
+
+66 
+	#SIOCGIFBRDADDR
+ 0x8919
+
+	)
+
+67 
+	#SIOCSIFBRDADDR
+ 0x891¨
+
+	)
+
+68 
+	#SIOCGIFNETMASK
+ 0x891b
+
+	)
+
+69 
+	#SIOCSIFNETMASK
+ 0x891ø
+
+	)
+
+70 
+	#SIOCGIFMETRIC
+ 0x891d
+
+	)
+
+71 
+	#SIOCSIFMETRIC
+ 0x891�
+
+	)
+
+72 
+	#SIOCGIFMEM
+ 0x891à
+
+	)
+
+73 
+	#SIOCSIFMEM
+ 0x8920
+
+	)
+
+74 
+	#SIOCGIFMTU
+ 0x8921
+
+	)
+
+75 
+	#SIOCSIFMTU
+ 0x8922
+
+	)
+
+76 
+	#SIOCSIFNAME
+ 0x8923
+
+	)
+
+77 
+	#SIOCSIFHWADDR
+ 0x8924
+
+	)
+
+78 
+	#SIOCGIFENCAP
+ 0x8925
+
+	)
+
+79 
+	#SIOCSIFENCAP
+ 0x8926
+
+	)
+
+80 
+	#SIOCGIFHWADDR
+ 0x8927
+
+	)
+
+81 
+	#SIOCGIFSLAVE
+ 0x8929
+
+	)
+
+82 
+	#SIOCSIFSLAVE
+ 0x8930
+
+	)
+
+83 
+	#SIOCADDMULTI
+ 0x8931
+
+	)
+
+84 
+	#SIOCDELMULTI
+ 0x8932
+
+	)
+
+85 
+	#SIOCGIFINDEX
+ 0x8933
+
+	)
+
+86 
+	#SIOGIFINDEX
+ 
+SIOCGIFINDEX
+
+
+	)
+
+87 
+	#SIOCSIFPFLAGS
+ 0x8934
+
+	)
+
+88 
+	#SIOCGIFPFLAGS
+ 0x8935
+
+	)
+
+89 
+	#SIOCDIFADDR
+ 0x8936
+
+	)
+
+90 
+	#SIOCSIFHWBROADCAST
+ 0x8937
+
+	)
+
+91 
+	#SIOCGIFCOUNT
+ 0x8938
+
+	)
+
+93 
+	#SIOCGIFBR
+ 0x8940
+
+	)
+
+94 
+	#SIOCSIFBR
+ 0x8941
+
+	)
+
+96 
+	#SIOCGIFTXQLEN
+ 0x8942
+
+	)
+
+97 
+	#SIOCSIFTXQLEN
+ 0x8943
+
+	)
+
+102 
+	#SIOCETHTOOL
+ 0x8946
+
+	)
+
+104 
+	#SIOCGMIIPHY
+ 0x8947
+
+	)
+
+105 
+	#SIOCGMIIREG
+ 0x8948
+
+	)
+
+106 
+	#SIOCSMIIREG
+ 0x8949
+
+	)
+
+108 
+	#SIOCWANDEV
+ 0x894A
+
+	)
+
+110 
+	#SIOCOUTQNSD
+ 0x894B
+
+	)
+
+111 
+	#SIOCGSKNS
+ 0x894C
+
+	)
+
+115 
+	#SIOCDARP
+ 0x8953
+
+	)
+
+116 
+	#SIOCGARP
+ 0x8954
+
+	)
+
+117 
+	#SIOCSARP
+ 0x8955
+
+	)
+
+120 
+	#SIOCDRARP
+ 0x8960
+
+	)
+
+121 
+	#SIOCGRARP
+ 0x8961
+
+	)
+
+122 
+	#SIOCSRARP
+ 0x8962
+
+	)
+
+126 
+	#SIOCGIFMAP
+ 0x8970
+
+	)
+
+127 
+	#SIOCSIFMAP
+ 0x8971
+
+	)
+
+131 
+	#SIOCADDDLCI
+ 0x8980
+
+	)
+
+132 
+	#SIOCDELDLCI
+ 0x8981
+
+	)
+
+134 
+	#SIOCGIFVLAN
+ 0x8982
+
+	)
+
+135 
+	#SIOCSIFVLAN
+ 0x8983
+
+	)
+
+139 
+	#SIOCBONDENSLAVE
+ 0x8990
+
+	)
+
+140 
+	#SIOCBONDRELEASE
+ 0x8991
+
+	)
+
+141 
+	#SIOCBONDSETHWADDR
+ 0x8992
+
+	)
+
+142 
+	#SIOCBONDSLAVEINFOQUERY
+ 0x8993
+
+	)
+
+143 
+	#SIOCBONDINFOQUERY
+ 0x8994
+
+	)
+
+144 
+	#SIOCBONDCHANGEACTIVE
+ 0x8995
+
+	)
+
+147 
+	#SIOCBRADDBR
+ 0x89a0
+
+	)
+
+148 
+	#SIOCBRDELBR
+ 0x89a1
+
+	)
+
+149 
+	#SIOCBRADDIF
+ 0x89a2
+
+	)
+
+150 
+	#SIOCBRDELIF
+ 0x89a3
+
+	)
+
+153 
+	#SIOCSHWTSTAMP
+ 0x89b0
+
+	)
+
+154 
+	#SIOCGHWTSTAMP
+ 0x89b1
+
+	)
+
+167 
+	#SIOCDEVPRIVATE
+ 0x89F0
+
+	)
+
+173 
+	#SIOCPROTOPRIVATE
+ 0x89E0
+
+	)
+
+	@/usr/include/linux/types.h
+
+2 #iâdeà
+_LINUX_TYPES_H
+
+
+3 
+	#_LINUX_TYPES_H
+
+
+	)
+
+5 
+	~<asm/ty³s.h
+>
+
+7 #iâdeà
+__ASSEMBLY__
+
+
+9 
+	~<lšux/posix_ty³s.h
+>
+
+11 #ifdeà
+__SIZEOF_INT128__
+
+
+12 
+__sigÃd__
+ 
+	t__št128
+ 
+	t__s128
+ 
+	t__©Œibu‹__
+((
+	t®igÃd
+(16)));
+
+13 
+	t__št128
+ 
+	t__u128
+ 
+	t__©Œibu‹__
+((
+	t®igÃd
+(16)));
+
+22 #ifdeà
+__CHECKER__
+
+
+23 
+	#__b™wi£
+ 
+	`__©Œibu‹__
+((
+b™wi£
+))
+
+	)
+
+25 
+	#__b™wi£
+
+
+	)
+
+29 
+	#__b™wi£__
+ 
+__b™wi£
+
+
+	)
+
+31 
+__u16
+ 
+	t__b™wi£
+ 
+	t__Ë16
+;
+
+32 
+__u16
+ 
+	t__b™wi£
+ 
+	t__be16
+;
+
+33 
+__u32
+ 
+	t__b™wi£
+ 
+	t__Ë32
+;
+
+34 
+__u32
+ 
+	t__b™wi£
+ 
+	t__be32
+;
+
+35 
+__u64
+ 
+	t__b™wi£
+ 
+	t__Ë64
+;
+
+36 
+__u64
+ 
+	t__b™wi£
+ 
+	t__be64
+;
+
+38 
+__u16
+ 
+	t__b™wi£
+ 
+	t__sum16
+;
+
+39 
+__u32
+ 
+	t__b™wi£
+ 
+	t__wsum
+;
+
+50 
+	#__®igÃd_u64
+ 
+__u64
+ 
+	`__©Œibu‹__
+((
+	`®igÃd
+(8)))
+
+	)
+
+51 
+	#__®igÃd_be64
+ 
+__be64
+ 
+	`__©Œibu‹__
+((
+	`®igÃd
+(8)))
+
+	)
+
+52 
+	#__®igÃd_Ë64
+ 
+__Ë64
+ 
+	`__©Œibu‹__
+((
+	`®igÃd
+(8)))
+
+	)
+
+54 
+	t__b™wi£
+ 
+	t__pÞl_t
+;
+
+	@/usr/include/net/if.h
+
+19 #iâdeà
+_NET_IF_H
+
+
+20 
+	#_NET_IF_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+24 #ifdeà
+__USE_MISC
+
+
+25 
+	~<sys/ty³s.h
+>
+
+26 
+	~<sys/sock‘.h
+>
+
+31 
+	#IF_NAMESIZE
+ 16
+
+	)
+
+33 
+	sif_Çmešdex
+
+
+35 
+	mif_šdex
+;
+
+36 *
+	mif_Çme
+;
+
+40 #ifdeà
+__USE_MISC
+
+
+44 
+	mIFF_UP
+ = 0x1,
+
+45 
+	#IFF_UP
+ 
+IFF_UP
+
+
+	)
+
+46 
+	mIFF_BROADCAST
+ = 0x2,
+
+47 
+	#IFF_BROADCAST
+ 
+IFF_BROADCAST
+
+
+	)
+
+48 
+	mIFF_DEBUG
+ = 0x4,
+
+49 
+	#IFF_DEBUG
+ 
+IFF_DEBUG
+
+
+	)
+
+50 
+	mIFF_LOOPBACK
+ = 0x8,
+
+51 
+	#IFF_LOOPBACK
+ 
+IFF_LOOPBACK
+
+
+	)
+
+52 
+	mIFF_POINTOPOINT
+ = 0x10,
+
+53 
+	#IFF_POINTOPOINT
+ 
+IFF_POINTOPOINT
+
+
+	)
+
+54 
+	mIFF_NOTRAILERS
+ = 0x20,
+
+55 
+	#IFF_NOTRAILERS
+ 
+IFF_NOTRAILERS
+
+
+	)
+
+56 
+	mIFF_RUNNING
+ = 0x40,
+
+57 
+	#IFF_RUNNING
+ 
+IFF_RUNNING
+
+
+	)
+
+58 
+	mIFF_NOARP
+ = 0x80,
+
+59 
+	#IFF_NOARP
+ 
+IFF_NOARP
+
+
+	)
+
+60 
+	mIFF_PROMISC
+ = 0x100,
+
+61 
+	#IFF_PROMISC
+ 
+IFF_PROMISC
+
+
+	)
+
+64 
+	mIFF_ALLMULTI
+ = 0x200,
+
+65 
+	#IFF_ALLMULTI
+ 
+IFF_ALLMULTI
+
+
+	)
+
+67 
+	mIFF_MASTER
+ = 0x400,
+
+68 
+	#IFF_MASTER
+ 
+IFF_MASTER
+
+
+	)
+
+69 
+	mIFF_SLAVE
+ = 0x800,
+
+70 
+	#IFF_SLAVE
+ 
+IFF_SLAVE
+
+
+	)
+
+72 
+	mIFF_MULTICAST
+ = 0x1000,
+
+73 
+	#IFF_MULTICAST
+ 
+IFF_MULTICAST
+
+
+	)
+
+75 
+	mIFF_PORTSEL
+ = 0x2000,
+
+76 
+	#IFF_PORTSEL
+ 
+IFF_PORTSEL
+
+
+	)
+
+77 
+	mIFF_AUTOMEDIA
+ = 0x4000,
+
+78 
+	#IFF_AUTOMEDIA
+ 
+IFF_AUTOMEDIA
+
+
+	)
+
+79 
+	mIFF_DYNAMIC
+ = 0x8000
+
+80 
+	#IFF_DYNAMIC
+ 
+IFF_DYNAMIC
+
+
+	)
+
+88 
+	siçddr
+
+
+90 
+sockaddr
+ 
+	miç_addr
+;
+
+93 
+sockaddr
+ 
+	mifu_brßdaddr
+;
+
+94 
+sockaddr
+ 
+	mifu_d¡addr
+;
+
+95 } 
+	miç_ifu
+;
+
+96 
+içû
+ *
+	miç_iå
+;
+
+97 
+içddr
+ *
+	miç_Ãxt
+;
+
+100 
+	#iç_brßdaddr
+ 
+iç_ifu
+.
+ifu_brßdaddr
+
+
+	)
+
+101 
+	#iç_d¡addr
+ 
+iç_ifu
+.
+ifu_d¡addr
+
+
+	)
+
+111 
+	sifm­
+
+
+113 
+	mmem_¡¬t
+;
+
+114 
+	mmem_’d
+;
+
+115 
+	mba£_addr
+;
+
+116 
+	mœq
+;
+
+117 
+	mdma
+;
+
+118 
+	mpÜt
+;
+
+126 
+	siäeq
+
+
+128 
+	#IFHWADDRLEN
+ 6
+
+	)
+
+129 
+	#IFNAMSIZ
+ 
+IF_NAMESIZE
+
+
+	)
+
+132 
+	miän_Çme
+[
+IFNAMSIZ
+];
+
+133 } 
+	miä_iän
+;
+
+137 
+sockaddr
+ 
+	miäu_addr
+;
+
+138 
+sockaddr
+ 
+	miäu_d¡addr
+;
+
+139 
+sockaddr
+ 
+	miäu_brßdaddr
+;
+
+140 
+sockaddr
+ 
+	miäu_Ãtmask
+;
+
+141 
+sockaddr
+ 
+	miäu_hwaddr
+;
+
+142 
+	miäu_æags
+;
+
+143 
+	miäu_iv®ue
+;
+
+144 
+	miäu_mtu
+;
+
+145 
+ifm­
+ 
+	miäu_m­
+;
+
+146 
+	miäu_¦ave
+[
+IFNAMSIZ
+];
+
+147 
+	miäu_ÃwÇme
+[
+IFNAMSIZ
+];
+
+148 
+__ÿddr_t
+ 
+	miäu_d©a
+;
+
+149 } 
+	miä_iäu
+;
+
+151 
+	#iä_Çme
+ 
+iä_iän
+.
+iän_Çme
+
+
+	)
+
+152 
+	#iä_hwaddr
+ 
+iä_iäu
+.
+iäu_hwaddr
+
+
+	)
+
+153 
+	#iä_addr
+ 
+iä_iäu
+.
+iäu_addr
+
+
+	)
+
+154 
+	#iä_d¡addr
+ 
+iä_iäu
+.
+iäu_d¡addr
+
+
+	)
+
+155 
+	#iä_brßdaddr
+ 
+iä_iäu
+.
+iäu_brßdaddr
+
+
+	)
+
+156 
+	#iä_Ãtmask
+ 
+iä_iäu
+.
+iäu_Ãtmask
+
+
+	)
+
+157 
+	#iä_æags
+ 
+iä_iäu
+.
+iäu_æags
+
+
+	)
+
+158 
+	#iä_m‘ric
+ 
+iä_iäu
+.
+iäu_iv®ue
+
+
+	)
+
+159 
+	#iä_mtu
+ 
+iä_iäu
+.
+iäu_mtu
+
+
+	)
+
+160 
+	#iä_m­
+ 
+iä_iäu
+.
+iäu_m­
+
+
+	)
+
+161 
+	#iä_¦ave
+ 
+iä_iäu
+.
+iäu_¦ave
+
+
+	)
+
+162 
+	#iä_d©a
+ 
+iä_iäu
+.
+iäu_d©a
+
+
+	)
+
+163 
+	#iä_ifšdex
+ 
+iä_iäu
+.
+iäu_iv®ue
+
+
+	)
+
+164 
+	#iä_bªdwidth
+ 
+iä_iäu
+.
+iäu_iv®ue
+
+
+	)
+
+165 
+	#iä_qËn
+ 
+iä_iäu
+.
+iäu_iv®ue
+
+
+	)
+
+166 
+	#iä_ÃwÇme
+ 
+iä_iäu
+.
+iäu_ÃwÇme
+
+
+	)
+
+167 
+	#_IOT_iäeq
+ 
+	`_IOT
+(
+	`_IOTS
+(),
+IFNAMSIZ
+,_IOTS(),16,0,0)
+
+	)
+
+168 
+	#_IOT_iäeq_shÜt
+ 
+	`_IOT
+(
+	`_IOTS
+(),
+IFNAMSIZ
+,_IOTS(),1,0,0)
+
+	)
+
+169 
+	#_IOT_iäeq_št
+ 
+	`_IOT
+(
+	`_IOTS
+(),
+IFNAMSIZ
+,_IOTS(),1,0,0)
+
+	)
+
+176 
+	sifcÚf
+
+
+178 
+	mifc_Ën
+;
+
+181 
+__ÿddr_t
+ 
+	mifcu_buf
+;
+
+182 
+iäeq
+ *
+	mifcu_»q
+;
+
+183 } 
+	mifc_ifcu
+;
+
+185 
+	#ifc_buf
+ 
+ifc_ifcu
+.
+ifcu_buf
+
+
+	)
+
+186 
+	#ifc_»q
+ 
+ifc_ifcu
+.
+ifcu_»q
+
+
+	)
+
+187 
+	#_IOT_ifcÚf
+ 
+	`_IOT
+(
+	`_IOTS
+(
+ifcÚf
+),1,0,0,0,0è
+
+	)
+
+190 
+__BEGIN_DECLS
+
+
+193 

+	$if_Çm‘ošdex
+ (cÚ¡ *
+__iâame
+è
+__THROW
+;
+
+194 
*
+	$if_šdextÚame
+ (
+__ifšdex
+,
+
+195 
+__iâame
+[
+IF_NAMESIZE
+]è
+__THROW
+
+
+196 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2));
+
+199 

+if_Çmešdex
+ *
+	$if_Çmešdex
+ (è
+__THROW
+;
+
+202 

+	$if_ä“Çmešdex
+ (
+if_Çmešdex
+ *
+__±r
+è
+__THROW
+;
+
+204 
+__END_DECLS
+
+
+	@/usr/include/net/route.h
+
+20 #iâdeà
+_NET_ROUTE_H
+
+
+21 
+	#_NET_ROUTE_H
+ 1
+
+	)
+
+23 
+	~<ã©u»s.h
+>
+
+24 
+	~<sys/sock‘.h
+>
+
+25 
+	~<sys/ty³s.h
+>
+
+26 
+	~<Ãtš‘/š.h
+>
+
+27 
+	~<b™s/wÜdsize.h
+>
+
+31 
+	s¹’Œy
+
+
+33 
+	m¹_·d1
+;
+
+34 
+sockaddr
+ 
+	m¹_d¡
+;
+
+35 
+sockaddr
+ 
+	m¹_g©eway
+;
+
+36 
+sockaddr
+ 
+	m¹_g’mask
+;
+
+37 
+	m¹_æags
+;
+
+38 
+	m¹_·d2
+;
+
+39 
+	m¹_·d3
+;
+
+40 
+	m¹_tos
+;
+
+41 
+	m¹_þass
+;
+
+42 #ià
+__WORDSIZE
+ == 64
+
+43 
+	m¹_·d4
+[3];
+
+45 
+	m¹_·d4
+;
+
+47 
+	m¹_m‘ric
+;
+
+48 *
+	m¹_dev
+;
+
+49 
+	m¹_mtu
+;
+
+50 
+	m¹_wšdow
+;
+
+51 
+	m¹_œ‰
+;
+
+54 
+	#¹_mss
+ 
+¹_mtu
+
+
+	)
+
+57 
+	sš6_¹msg
+
+
+59 
+š6_addr
+ 
+	m¹msg_d¡
+;
+
+60 
+š6_addr
+ 
+	m¹msg_¤c
+;
+
+61 
+š6_addr
+ 
+	m¹msg_g©eway
+;
+
+62 
+ušt32_t
+ 
+	m¹msg_ty³
+;
+
+63 
+ušt16_t
+ 
+	m¹msg_d¡_Ën
+;
+
+64 
+ušt16_t
+ 
+	m¹msg_¤c_Ën
+;
+
+65 
+ušt32_t
+ 
+	m¹msg_m‘ric
+;
+
+66 
+	m¹msg_šfo
+;
+
+67 
+ušt32_t
+ 
+	m¹msg_æags
+;
+
+68 
+	m¹msg_ifšdex
+;
+
+72 
+	#RTF_UP
+ 0x0001
+
+	)
+
+73 
+	#RTF_GATEWAY
+ 0x0002
+
+	)
+
+75 
+	#RTF_HOST
+ 0x0004
+
+	)
+
+76 
+	#RTF_REINSTATE
+ 0x0008
+
+	)
+
+77 
+	#RTF_DYNAMIC
+ 0x0010
+
+	)
+
+78 
+	#RTF_MODIFIED
+ 0x0020
+
+	)
+
+79 
+	#RTF_MTU
+ 0x0040
+
+	)
+
+80 
+	#RTF_MSS
+ 
+RTF_MTU
+
+
+	)
+
+81 
+	#RTF_WINDOW
+ 0x0080
+
+	)
+
+82 
+	#RTF_IRTT
+ 0x0100
+
+	)
+
+83 
+	#RTF_REJECT
+ 0x0200
+
+	)
+
+84 
+	#RTF_STATIC
+ 0x0400
+
+	)
+
+85 
+	#RTF_XRESOLVE
+ 0x0800
+
+	)
+
+86 
+	#RTF_NOFORWARD
+ 0x1000
+
+	)
+
+87 
+	#RTF_THROW
+ 0x2000
+
+	)
+
+88 
+	#RTF_NOPMTUDISC
+ 0x4000
+
+	)
+
+91 
+	#RTF_DEFAULT
+ 0x00010000
+
+	)
+
+92 
+	#RTF_ALLONLINK
+ 0x00020000
+
+	)
+
+93 
+	#RTF_ADDRCONF
+ 0x00040000
+
+	)
+
+95 
+	#RTF_LINKRT
+ 0x00100000
+
+	)
+
+96 
+	#RTF_NONEXTHOP
+ 0x00200000
+
+	)
+
+98 
+	#RTF_CACHE
+ 0x01000000
+
+	)
+
+99 
+	#RTF_FLOW
+ 0x02000000
+
+	)
+
+100 
+	#RTF_POLICY
+ 0x04000000
+
+	)
+
+102 
+	#RTCF_VALVE
+ 0x00200000
+
+	)
+
+103 
+	#RTCF_MASQ
+ 0x00400000
+
+	)
+
+104 
+	#RTCF_NAT
+ 0x00800000
+
+	)
+
+105 
+	#RTCF_DOREDIRECT
+ 0x01000000
+
+	)
+
+106 
+	#RTCF_LOG
+ 0x02000000
+
+	)
+
+107 
+	#RTCF_DIRECTSRC
+ 0x04000000
+
+	)
+
+109 
+	#RTF_LOCAL
+ 0x80000000
+
+	)
+
+110 
+	#RTF_INTERFACE
+ 0x40000000
+
+	)
+
+111 
+	#RTF_MULTICAST
+ 0x20000000
+
+	)
+
+112 
+	#RTF_BROADCAST
+ 0x10000000
+
+	)
+
+113 
+	#RTF_NAT
+ 0x08000000
+
+	)
+
+115 
+	#RTF_ADDRCLASSMASK
+ 0xF8000000
+
+	)
+
+116 
+	#RT_ADDRCLASS
+(
+æags
+è((
+ušt32_t
+èæag >> 23)
+
+	)
+
+118 
+	#RT_TOS
+(
+tos
+è(Ñosè& 
+IPTOS_TOS_MASK
+)
+
+	)
+
+120 
+	#RT_LOCALADDR
+(
+æags
+è((æag & 
+RTF_ADDRCLASSMASK
+) \
+
+121 =ð(
+RTF_LOCAL
+|
+RTF_INTERFACE
+))
+
+	)
+
+123 
+	#RT_CLASS_UNSPEC
+ 0
+
+	)
+
+124 
+	#RT_CLASS_DEFAULT
+ 253
+
+	)
+
+126 
+	#RT_CLASS_MAIN
+ 254
+
+	)
+
+127 
+	#RT_CLASS_LOCAL
+ 255
+
+	)
+
+128 
+	#RT_CLASS_MAX
+ 255
+
+	)
+
+131 
+	#RTMSG_ACK
+ 
+NLMSG_ACK
+
+
+	)
+
+132 
+	#RTMSG_OVERRUN
+ 
+NLMSG_OVERRUN
+
+
+	)
+
+134 
+	#RTMSG_NEWDEVICE
+ 0x11
+
+	)
+
+135 
+	#RTMSG_DELDEVICE
+ 0x12
+
+	)
+
+136 
+	#RTMSG_NEWROUTE
+ 0x21
+
+	)
+
+137 
+	#RTMSG_DELROUTE
+ 0x22
+
+	)
+
+138 
+	#RTMSG_NEWRULE
+ 0x31
+
+	)
+
+139 
+	#RTMSG_DELRULE
+ 0x32
+
+	)
+
+140 
+	#RTMSG_CONTROL
+ 0x40
+
+	)
+
+142 
+	#RTMSG_AR_FAILED
+ 0x51
+
+	)
+
+	@/usr/include/netdb.h
+
+22 #iâdef 
+_NETDB_H
+
+
+23 
+	#_NETDB_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	~<Ãtš‘/š.h
+>
+
+28 
+	~<b™s/¡dšt-ušŠ.h
+>
+
+29 #ifdeà
+__USE_MISC
+
+
+32 
+	~<½c/Ãtdb.h
+>
+
+35 #ifdeà
+__USE_GNU
+
+
+36 
+	~<b™s/ty³s/sigev’t_t.h
+>
+
+37 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+40 
+	~<b™s/Ãtdb.h
+>
+
+43 
+	#_PATH_HEQUIV
+ "/‘c/ho¡s.equiv"
+
+	)
+
+44 
+	#_PATH_HOSTS
+ "/‘c/ho¡s"
+
+	)
+
+45 
+	#_PATH_NETWORKS
+ "/‘c/ÃtwÜks"
+
+	)
+
+46 
+	#_PATH_NSSWITCH_CONF
+ "/‘c/nssw™ch.cÚf"
+
+	)
+
+47 
+	#_PATH_PROTOCOLS
+ "/‘c/´ÙocÞs"
+
+	)
+
+48 
+	#_PATH_SERVICES
+ "/‘c/£rviûs"
+
+	)
+
+51 
+	g__BEGIN_DECLS
+
+
+53 #ià
+defšed
+ 
+__USE_MISC
+ || !defšed 
+__USE_XOPEN2K8
+
+
+56 
+	#h_”ºo
+ (*
+	`__h_”ºo_loÿtiÚ
+ ())
+
+	)
+
+59 
*
+	$__h_”ºo_loÿtiÚ
+ (è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+63 
+	#HOST_NOT_FOUND
+ 1
+
+	)
+
+64 
+	#TRY_AGAIN
+ 2
+
+	)
+
+66 
+	#NO_RECOVERY
+ 3
+
+	)
+
+68 
+	#NO_DATA
+ 4
+
+	)
+
+71 #ifdeà
+__USE_MISC
+
+
+72 
+	#NETDB_INTERNAL
+ -1
+
+	)
+
+73 
+	#NETDB_SUCCESS
+ 0
+
+	)
+
+74 
+	#NO_ADDRESS
+ 
+NO_DATA
+
+
+	)
+
+77 #ià
+defšed
+ 
+__USE_XOPEN2K
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+79 
+	#IPPORT_RESERVED
+ 1024
+
+	)
+
+82 #ifdeà
+__USE_GNU
+
+
+84 
+	#SCOPE_DELIMITER
+ '%'
+
+	)
+
+87 #ifdeà
+__USE_MISC
+
+
+90 

+	$h”rÜ
+ (cÚ¡ *
+__¡r
+è
+__THROW
+;
+
+93 
cÚ¡ *
+	$h¡»¼Ü
+ (
+__”r_num
+è
+__THROW
+;
+
+98 
+	sho¡’t
+
+
+100 *
+h_Çme
+;
+
+101 **
+h_®Ÿ£s
+;
+
+102 
+h_add¹y³
+;
+
+103 
+h_Ëngth
+;
+
+104 **
+h_addr_li¡
+;
+
+105 #ifdeà
+__USE_MISC
+
+
+106 
+	#h_addr
+ 
+h_addr_li¡
+[0]
+
+	)
+
+115 

+	`£tho¡’t
+ (
+__¡ay_Ý’
+);
+
+121 

+	`’dho¡’t
+ ();
+
+128 

+ho¡’t
+ *
+	`g‘ho¡’t
+ ();
+
+135 

+ho¡’t
+ *
+	`g‘ho¡byaddr
+ (cÚ¡ *
+__addr
+, 
+__sockËn_t
+ 
+__Ën
+,
+
+136 
+__ty³
+);
+
+142 

+ho¡’t
+ *
+	`g‘ho¡byÇme
+ (cÚ¡ *
+__Çme
+);
+
+144 #ifdeà
+__USE_MISC
+
+
+153 

+ho¡’t
+ *
+	`g‘ho¡byÇme2
+ (cÚ¡ *
+__Çme
+, 
+__af
+);
+
+165 

+	`g‘ho¡’t_r
+ (
+ho¡’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+166 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+167 
+ho¡’t
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+168 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+170 

+	`g‘ho¡byaddr_r
+ (cÚ¡ *
+__»¡riù
+ 
+__addr
+, 
+__sockËn_t
+ 
+__Ën
+,
+
+171 
+__ty³
+,
+
+172 
+ho¡’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+173 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+174 
+ho¡’t
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+175 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+177 

+	`g‘ho¡byÇme_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+178 
+ho¡’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+179 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+180 
+ho¡’t
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+181 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+183 

+	`g‘ho¡byÇme2_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+, 
+__af
+,
+
+184 
+ho¡’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+185 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+186 
+ho¡’t
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+187 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+196 

+	`£Š‘’t
+ (
+__¡ay_Ý’
+);
+
+202 

+	`’dÃ‹Á
+ ();
+
+209 

+Ã‹Á
+ *
+	`g‘Ã‹Á
+ ();
+
+216 

+Ã‹Á
+ *
+	`g‘Ãtbyaddr
+ (
+ušt32_t
+ 
+__Ãt
+, 
+__ty³
+);
+
+222 

+Ã‹Á
+ *
+	`g‘ÃtbyÇme
+ (cÚ¡ *
+__Çme
+);
+
+224 #ifdef 
+__USE_MISC
+
+
+235 

+	`g‘Ã‹Á_r
+ (
+Ã‹Á
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+236 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+237 
+Ã‹Á
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+238 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+240 

+	`g‘Ãtbyaddr_r
+ (
+ušt32_t
+ 
+__Ãt
+, 
+__ty³
+,
+
+241 
+Ã‹Á
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+242 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+243 
+Ã‹Á
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+244 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+246 

+	`g‘ÃtbyÇme_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+247 
+Ã‹Á
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+248 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+249 
+Ã‹Á
+ **
+__»¡riù
+ 
+__»suÉ
+,
+
+250 *
+__»¡riù
+ 
+__h_”ºÝ
+);
+
+255 
+	s£rv’t
+
+
+257 *
+s_Çme
+;
+
+258 **
+s_®Ÿ£s
+;
+
+259 
+s_pÜt
+;
+
+260 *
+s_´Ùo
+;
+
+268 

+	`£t£rv’t
+ (
+__¡ay_Ý’
+);
+
+274 

+	`’d£rv’t
+ ();
+
+281 

+£rv’t
+ *
+	`g‘£rv’t
+ ();
+
+288 

+£rv’t
+ *
+	`g‘£rvbyÇme
+ (cÚ¡ *
+__Çme
+, cÚ¡ *
+__´Ùo
+);
+
+295 

+£rv’t
+ *
+	`g‘£rvbypÜt
+ (
+__pÜt
+, cÚ¡ *
+__´Ùo
+);
+
+298 #ifdef 
+__USE_MISC
+
+
+306 

+	`g‘£rv’t_r
+ (
+£rv’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+307 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+308 
+£rv’t
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+310 

+	`g‘£rvbyÇme_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+311 cÚ¡ *
+__»¡riù
+ 
+__´Ùo
+,
+
+312 
+£rv’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+313 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+314 
+£rv’t
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+316 

+	`g‘£rvbypÜt_r
+ (
+__pÜt
+, cÚ¡ *
+__»¡riù
+ 
+__´Ùo
+,
+
+317 
+£rv’t
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+318 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+319 
+£rv’t
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+324 
+	s´ÙÛÁ
+
+
+326 *
+p_Çme
+;
+
+327 **
+p_®Ÿ£s
+;
+
+328 
+p_´Ùo
+;
+
+336 

+	`£�rÙÛÁ
+ (
+__¡ay_Ý’
+);
+
+342 

+	`’d´ÙÛÁ
+ ();
+
+349 

+´ÙÛÁ
+ *
+	`g‘´ÙÛÁ
+ ();
+
+355 

+´ÙÛÁ
+ *
+	`g‘´ÙobyÇme
+ (cÚ¡ *
+__Çme
+);
+
+361 

+´ÙÛÁ
+ *
+	`g‘´Ùobynumb”
+ (
+__´Ùo
+);
+
+364 #ifdef 
+__USE_MISC
+
+
+372 

+	`g‘´ÙÛÁ_r
+ (
+´ÙÛÁ
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+373 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+374 
+´ÙÛÁ
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+376 

+	`g‘´ÙobyÇme_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+377 
+´ÙÛÁ
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+378 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+379 
+´ÙÛÁ
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+381 

+	`g‘´Ùobynumb”_r
+ (
+__´Ùo
+,
+
+382 
+´ÙÛÁ
+ *
+__»¡riù
+ 
+__»suÉ_buf
+,
+
+383 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+384 
+´ÙÛÁ
+ **
+__»¡riù
+ 
+__»suÉ
+);
+
+393 

+	`£Š‘g»Á
+ (cÚ¡ *
+__Ãtgroup
+);
+
+401 

+	`’dÃtg»Á
+ ();
+
+410 

+	`g‘Ãtg»Á
+ (**
+__»¡riù
+ 
+__ho¡p
+,
+
+411 **
+__»¡riù
+ 
+__u£½
+,
+
+412 **
+__»¡riù
+ 
+__domašp
+);
+
+421 

+	`šÃtgr
+ (cÚ¡ *
+__Ãtgroup
+, cÚ¡ *
+__ho¡
+,
+
+422 cÚ¡ *
+__u£r
+, cÚ¡ *
+__domaš
+);
+
+430 

+	`g‘Ãtg»Á_r
+ (**
+__»¡riù
+ 
+__ho¡p
+,
+
+431 **
+__»¡riù
+ 
+__u£½
+,
+
+432 **
+__»¡riù
+ 
+__domašp
+,
+
+433 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+);
+
+437 #ifdeà
+__USE_MISC
+
+
+449 

+	`rcmd
+ (**
+__»¡riù
+ 
+__aho¡
+, 
+__½Üt
+,
+
+450 cÚ¡ *
+__»¡riù
+ 
+__locu£r
+,
+
+451 cÚ¡ *
+__»¡riù
+ 
+__»mu£r
+,
+
+452 cÚ¡ *
+__»¡riù
+ 
+__cmd
+, *__»¡riù 
+__fd2p
+);
+
+461 

+	`rcmd_af
+ (**
+__»¡riù
+ 
+__aho¡
+, 
+__½Üt
+,
+
+462 cÚ¡ *
+__»¡riù
+ 
+__locu£r
+,
+
+463 cÚ¡ *
+__»¡riù
+ 
+__»mu£r
+,
+
+464 cÚ¡ *
+__»¡riù
+ 
+__cmd
+, *__»¡riù 
+__fd2p
+,
+
+465 
+§_çmžy_t
+ 
+__af
+);
+
+477 

+	`»xec
+ (**
+__»¡riù
+ 
+__aho¡
+, 
+__½Üt
+,
+
+478 cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+479 cÚ¡ *
+__»¡riù
+ 
+__·ss
+,
+
+480 cÚ¡ *
+__»¡riù
+ 
+__cmd
+, *__»¡riù 
+__fd2p
+);
+
+489 

+	`»xec_af
+ (**
+__»¡riù
+ 
+__aho¡
+, 
+__½Üt
+,
+
+490 cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+491 cÚ¡ *
+__»¡riù
+ 
+__·ss
+,
+
+492 cÚ¡ *
+__»¡riù
+ 
+__cmd
+, *__»¡riù 
+__fd2p
+,
+
+493 
+§_çmžy_t
+ 
+__af
+);
+
+503 

+	`ru£rok
+ (cÚ¡ *
+__rho¡
+, 
+__su£r
+,
+
+504 cÚ¡ *
+__»mu£r
+, cÚ¡ *
+__locu£r
+);
+
+513 

+	`ru£rok_af
+ (cÚ¡ *
+__rho¡
+, 
+__su£r
+,
+
+514 cÚ¡ *
+__»mu£r
+, cÚ¡ *
+__locu£r
+,
+
+515 
+§_çmžy_t
+ 
+__af
+);
+
+526 

+	`œu£rok
+ (
+ušt32_t
+ 
+__¿ddr
+, 
+__su£r
+,
+
+527 cÚ¡ *
+__»mu£r
+, cÚ¡ *
+__locu£r
+);
+
+537 

+	`œu£rok_af
+ (cÚ¡ *
+__¿ddr
+, 
+__su£r
+,
+
+538 cÚ¡ *
+__»mu£r
+, cÚ¡ *
+__locu£r
+,
+
+539 
+§_çmžy_t
+ 
+__af
+);
+
+549 

+	`¼esvpÜt
+ (*
+__®pÜt
+);
+
+558 

+	`¼esvpÜt_af
+ (*
+__®pÜt
+, 
+§_çmžy_t
+ 
+__af
+);
+
+563 #ifdeà
+__USE_XOPEN2K
+
+
+565 
+	saddršfo
+
+
+567 
+ai_æags
+;
+
+568 
+ai_çmžy
+;
+
+569 
+ai_sockty³
+;
+
+570 
+ai_´ÙocÞ
+;
+
+571 
+sockËn_t
+ 
+ai_add¾’
+;
+
+572 
+sockaddr
+ *
+ai_addr
+;
+
+573 *
+ai_ÿnÚÇme
+;
+
+574 
+addršfo
+ *
+ai_Ãxt
+;
+
+577 #ifdeà
+__USE_GNU
+
+
+579 
+	sgaicb
+
+
+581 cÚ¡ *
+¬_Çme
+;
+
+582 cÚ¡ *
+¬_£rviû
+;
+
+583 cÚ¡ 
+addršfo
+ *
+¬_»que¡
+;
+
+584 
+addršfo
+ *
+¬_»suÉ
+;
+
+586 
+__»tuº
+;
+
+587 
+__glibc_»£rved
+[5];
+
+591 
+	#GAI_WAIT
+ 0
+
+	)
+
+592 
+	#GAI_NOWAIT
+ 1
+
+	)
+
+596 
+	#AI_PASSIVE
+ 0x0001
+
+	)
+
+597 
+	#AI_CANONNAME
+ 0x0002
+
+	)
+
+598 
+	#AI_NUMERICHOST
+ 0x0004
+
+	)
+
+599 
+	#AI_V4MAPPED
+ 0x0008
+
+	)
+
+600 
+	#AI_ALL
+ 0x0010
+
+	)
+
+601 
+	#AI_ADDRCONFIG
+ 0x0020
+
+	)
+
+603 #ifdeà
+__USE_GNU
+
+
+604 
+	#AI_IDN
+ 0x0040
+
+	)
+
+607 
+	#AI_CANONIDN
+ 0x0080
+
+	)
+
+608 
+	#AI_IDN_ALLOW_UNASSIGNED
+ \
+
+609 
+	`__glibc_maüo_w¬nšg
+ ("AI_IDN_ALLOW_UNASSIGNED i d•»ÿ‹d"è0x0100
+
+	)
+
+610 
+	#AI_IDN_USE_STD3_ASCII_RULES
+ \
+
+611 
+	`__glibc_maüo_w¬nšg
+ ("AI_IDN_USE_STD3_ASCII_RULES i d•»ÿ‹d"è0x0200
+
+	)
+
+613 
+	#AI_NUMERICSERV
+ 0x0400
+
+	)
+
+616 
+	#EAI_BADFLAGS
+ -1
+
+	)
+
+617 
+	#EAI_NONAME
+ -2
+
+	)
+
+618 
+	#EAI_AGAIN
+ -3
+
+	)
+
+619 
+	#EAI_FAIL
+ -4
+
+	)
+
+620 
+	#EAI_FAMILY
+ -6
+
+	)
+
+621 
+	#EAI_SOCKTYPE
+ -7
+
+	)
+
+622 
+	#EAI_SERVICE
+ -8
+
+	)
+
+623 
+	#EAI_MEMORY
+ -10
+
+	)
+
+624 
+	#EAI_SYSTEM
+ -11
+
+	)
+
+625 
+	#EAI_OVERFLOW
+ -12
+
+	)
+
+626 #ifdeà
+__USE_GNU
+
+
+627 
+	#EAI_NODATA
+ -5
+
+	)
+
+628 
+	#EAI_ADDRFAMILY
+ -9
+
+	)
+
+629 
+	#EAI_INPROGRESS
+ -100
+
+	)
+
+630 
+	#EAI_CANCELED
+ -101
+
+	)
+
+631 
+	#EAI_NOTCANCELED
+ -102
+
+	)
+
+632 
+	#EAI_ALLDONE
+ -103
+
+	)
+
+633 
+	#EAI_INTR
+ -104
+
+	)
+
+634 
+	#EAI_IDN_ENCODE
+ -105
+
+	)
+
+637 #ifdeà
+__USE_MISC
+
+
+638 
+	#NI_MAXHOST
+ 1025
+
+	)
+
+639 
+	#NI_MAXSERV
+ 32
+
+	)
+
+642 
+	#NI_NUMERICHOST
+ 1
+
+	)
+
+643 
+	#NI_NUMERICSERV
+ 2
+
+	)
+
+644 
+	#NI_NOFQDN
+ 4
+
+	)
+
+645 
+	#NI_NAMEREQD
+ 8
+
+	)
+
+646 
+	#NI_DGRAM
+ 16
+
+	)
+
+647 #ifdeà
+__USE_GNU
+
+
+648 
+	#NI_IDN
+ 32
+
+	)
+
+649 
+	#NI_IDN_ALLOW_UNASSIGNED
+ \
+
+650 
+	`__glibc_maüo_w¬nšg
+ ("NI_IDN_ALLOW_UNASSIGNED i d•»ÿ‹d"è64
+
+	)
+
+651 
+	#NI_IDN_USE_STD3_ASCII_RULES
+ \
+
+652 
+	`__glibc_maüo_w¬nšg
+ ("NI_IDN_USE_STD3_ASCII_RULES i d•»ÿ‹d"è128
+
+	)
+
+660 

+	`g‘addršfo
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+661 cÚ¡ *
+__»¡riù
+ 
+__£rviû
+,
+
+662 cÚ¡ 
+addršfo
+ *
+__»¡riù
+ 
+__»q
+,
+
+663 
+addršfo
+ **
+__»¡riù
+ 
+__·i
+);
+
+666 

+	$ä“addršfo
+ (
+addršfo
+ *
+__ai
+è
+__THROW
+;
+
+669 
cÚ¡ *
+	$gai_¡»¼Ü
+ (
+__ecode
+è
+__THROW
+;
+
+675 

+	`g‘Çmešfo
+ (cÚ¡ 
+sockaddr
+ *
+__»¡riù
+ 
+__§
+,
+
+676 
+sockËn_t
+ 
+__§Ën
+, *
+__»¡riù
+ 
+__ho¡
+,
+
+677 
+sockËn_t
+ 
+__ho¡Ën
+, *
+__»¡riù
+ 
+__£rv
+,
+
+678 
+sockËn_t
+ 
+__£rvËn
+, 
+__æags
+);
+
+681 #ifdeà
+__USE_GNU
+
+
+690 

+	`g‘addršfo_a
+ (
+__mode
+, 
+gaicb
+ *
+__li¡
+[
+__»¡riù_¬r
+],
+
+691 
+__’t
+, 
+sigev’t
+ *
+__»¡riù
+ 
+__sig
+);
+
+701 

+	`gai_su¥’d
+ (cÚ¡ 
+gaicb
+ *cÚ¡ 
+__li¡
+[], 
+__’t
+,
+
+702 cÚ¡ 
+time¥ec
+ *
+__timeout
+);
+
+704 #ifdeà
+__USE_TIME_BITS64
+
+
+705 #ià
+	`defšed
+(
+__REDIRECT
+)
+
+706 

+	`__REDIRECT
+ (
+gai_su¥’d
+, (cÚ¡ 
+gaicb
+ *cÚ¡ 
+__li¡
+[],
+
+707 
+__’t
+,
+
+708 cÚ¡ 
+time¥ec
+ *
+__timeout
+),
+
+709 
+__gai_su¥’d_time64
+);
+
+711 
+	#gai_su¥’d
+ 
+__gai_su¥’d_time64
+
+
+	)
+
+716 

+	$gai_”rÜ
+ (
+gaicb
+ *
+__»q
+è
+__THROW
+;
+
+719 

+	$gai_ÿnûl
+ (
+gaicb
+ *
+__gaicbp
+è
+__THROW
+;
+
+722 
+__END_DECLS
+
+
+	@/usr/include/netinet/in.h
+
+18 #iâdef 
+_NETINET_IN_H
+
+
+19 
+	#_NETINET_IN_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+22 
+	~<b™s/¡dšt-ušŠ.h
+>
+
+23 
+	~<sys/sock‘.h
+>
+
+24 
+	~<b™s/ty³s.h
+>
+
+27 
+__BEGIN_DECLS
+
+
+30 
+ušt32_t
+ 
+	tš_addr_t
+;
+
+31 
+	sš_addr
+
+
+33 
+š_addr_t
+ 
+	ms_addr
+;
+
+37 
+	~<b™s/š.h
+>
+
+42 
+	mIPPROTO_IP
+ = 0,
+
+43 
+	#IPPROTO_IP
+ 
+IPPROTO_IP
+
+
+	)
+
+44 
+	mIPPROTO_ICMP
+ = 1,
+
+45 
+	#IPPROTO_ICMP
+ 
+IPPROTO_ICMP
+
+
+	)
+
+46 
+	mIPPROTO_IGMP
+ = 2,
+
+47 
+	#IPPROTO_IGMP
+ 
+IPPROTO_IGMP
+
+
+	)
+
+48 
+	mIPPROTO_IPIP
+ = 4,
+
+49 
+	#IPPROTO_IPIP
+ 
+IPPROTO_IPIP
+
+
+	)
+
+50 
+	mIPPROTO_TCP
+ = 6,
+
+51 
+	#IPPROTO_TCP
+ 
+IPPROTO_TCP
+
+
+	)
+
+52 
+	mIPPROTO_EGP
+ = 8,
+
+53 
+	#IPPROTO_EGP
+ 
+IPPROTO_EGP
+
+
+	)
+
+54 
+	mIPPROTO_PUP
+ = 12,
+
+55 
+	#IPPROTO_PUP
+ 
+IPPROTO_PUP
+
+
+	)
+
+56 
+	mIPPROTO_UDP
+ = 17,
+
+57 
+	#IPPROTO_UDP
+ 
+IPPROTO_UDP
+
+
+	)
+
+58 
+	mIPPROTO_IDP
+ = 22,
+
+59 
+	#IPPROTO_IDP
+ 
+IPPROTO_IDP
+
+
+	)
+
+60 
+	mIPPROTO_TP
+ = 29,
+
+61 
+	#IPPROTO_TP
+ 
+IPPROTO_TP
+
+
+	)
+
+62 
+	mIPPROTO_DCCP
+ = 33,
+
+63 
+	#IPPROTO_DCCP
+ 
+IPPROTO_DCCP
+
+
+	)
+
+64 
+	mIPPROTO_IPV6
+ = 41,
+
+65 
+	#IPPROTO_IPV6
+ 
+IPPROTO_IPV6
+
+
+	)
+
+66 
+	mIPPROTO_RSVP
+ = 46,
+
+67 
+	#IPPROTO_RSVP
+ 
+IPPROTO_RSVP
+
+
+	)
+
+68 
+	mIPPROTO_GRE
+ = 47,
+
+69 
+	#IPPROTO_GRE
+ 
+IPPROTO_GRE
+
+
+	)
+
+70 
+	mIPPROTO_ESP
+ = 50,
+
+71 
+	#IPPROTO_ESP
+ 
+IPPROTO_ESP
+
+
+	)
+
+72 
+	mIPPROTO_AH
+ = 51,
+
+73 
+	#IPPROTO_AH
+ 
+IPPROTO_AH
+
+
+	)
+
+74 
+	mIPPROTO_MTP
+ = 92,
+
+75 
+	#IPPROTO_MTP
+ 
+IPPROTO_MTP
+
+
+	)
+
+76 
+	mIPPROTO_BEETPH
+ = 94,
+
+77 
+	#IPPROTO_BEETPH
+ 
+IPPROTO_BEETPH
+
+
+	)
+
+78 
+	mIPPROTO_ENCAP
+ = 98,
+
+79 
+	#IPPROTO_ENCAP
+ 
+IPPROTO_ENCAP
+
+
+	)
+
+80 
+	mIPPROTO_PIM
+ = 103,
+
+81 
+	#IPPROTO_PIM
+ 
+IPPROTO_PIM
+
+
+	)
+
+82 
+	mIPPROTO_COMP
+ = 108,
+
+83 
+	#IPPROTO_COMP
+ 
+IPPROTO_COMP
+
+
+	)
+
+84 
+	mIPPROTO_L2TP
+ = 115,
+
+85 
+	#IPPROTO_L2TP
+ 
+IPPROTO_L2TP
+
+
+	)
+
+86 
+	mIPPROTO_SCTP
+ = 132,
+
+87 
+	#IPPROTO_SCTP
+ 
+IPPROTO_SCTP
+
+
+	)
+
+88 
+	mIPPROTO_UDPLITE
+ = 136,
+
+89 
+	#IPPROTO_UDPLITE
+ 
+IPPROTO_UDPLITE
+
+
+	)
+
+90 
+	mIPPROTO_MPLS
+ = 137,
+
+91 
+	#IPPROTO_MPLS
+ 
+IPPROTO_MPLS
+
+
+	)
+
+92 
+	mIPPROTO_ETHERNET
+ = 143,
+
+93 
+	#IPPROTO_ETHERNET
+ 
+IPPROTO_ETHERNET
+
+
+	)
+
+94 
+	mIPPROTO_RAW
+ = 255,
+
+95 
+	#IPPROTO_RAW
+ 
+IPPROTO_RAW
+
+
+	)
+
+96 
+	mIPPROTO_MPTCP
+ = 262,
+
+97 
+	#IPPROTO_MPTCP
+ 
+IPPROTO_MPTCP
+
+
+	)
+
+98 
+	mIPPROTO_MAX
+
+
+104 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+107 
+	mIPPROTO_HOPOPTS
+ = 0,
+
+108 
+	#IPPROTO_HOPOPTS
+ 
+IPPROTO_HOPOPTS
+
+
+	)
+
+109 
+	mIPPROTO_ROUTING
+ = 43,
+
+110 
+	#IPPROTO_ROUTING
+ 
+IPPROTO_ROUTING
+
+
+	)
+
+111 
+	mIPPROTO_FRAGMENT
+ = 44,
+
+112 
+	#IPPROTO_FRAGMENT
+ 
+IPPROTO_FRAGMENT
+
+
+	)
+
+113 
+	mIPPROTO_ICMPV6
+ = 58,
+
+114 
+	#IPPROTO_ICMPV6
+ 
+IPPROTO_ICMPV6
+
+
+	)
+
+115 
+	mIPPROTO_NONE
+ = 59,
+
+116 
+	#IPPROTO_NONE
+ 
+IPPROTO_NONE
+
+
+	)
+
+117 
+	mIPPROTO_DSTOPTS
+ = 60,
+
+118 
+	#IPPROTO_DSTOPTS
+ 
+IPPROTO_DSTOPTS
+
+
+	)
+
+119 
+	mIPPROTO_MH
+ = 135
+
+120 
+	#IPPROTO_MH
+ 
+IPPROTO_MH
+
+
+	)
+
+125 
+ušt16_t
+ 
+	tš_pÜt_t
+;
+
+130 
+	mIPPORT_ECHO
+ = 7,
+
+131 
+	mIPPORT_DISCARD
+ = 9,
+
+132 
+	mIPPORT_SYSTAT
+ = 11,
+
+133 
+	mIPPORT_DAYTIME
+ = 13,
+
+134 
+	mIPPORT_NETSTAT
+ = 15,
+
+135 
+	mIPPORT_FTP
+ = 21,
+
+136 
+	mIPPORT_TELNET
+ = 23,
+
+137 
+	mIPPORT_SMTP
+ = 25,
+
+138 
+	mIPPORT_TIMESERVER
+ = 37,
+
+139 
+	mIPPORT_NAMESERVER
+ = 42,
+
+140 
+	mIPPORT_WHOIS
+ = 43,
+
+141 
+	mIPPORT_MTP
+ = 57,
+
+143 
+	mIPPORT_TFTP
+ = 69,
+
+144 
+	mIPPORT_RJE
+ = 77,
+
+145 
+	mIPPORT_FINGER
+ = 79,
+
+146 
+	mIPPORT_TTYLINK
+ = 87,
+
+147 
+	mIPPORT_SUPDUP
+ = 95,
+
+150 
+	mIPPORT_EXECSERVER
+ = 512,
+
+151 
+	mIPPORT_LOGINSERVER
+ = 513,
+
+152 
+	mIPPORT_CMDSERVER
+ = 514,
+
+153 
+	mIPPORT_EFSSERVER
+ = 520,
+
+156 
+	mIPPORT_BIFFUDP
+ = 512,
+
+157 
+	mIPPORT_WHOSERVER
+ = 513,
+
+158 
+	mIPPORT_ROUTESERVER
+ = 520,
+
+161 
+	mIPPORT_RESERVED
+ = 1024,
+
+164 
+	mIPPORT_USERRESERVED
+ = 5000
+
+172 
+	#IN_CLASSA
+(
+a
+è((((
+š_addr_t
+)×)è& 0x80000000è=ð0)
+
+	)
+
+173 
+	#IN_CLASSA_NET
+ 0xff000000
+
+	)
+
+174 
+	#IN_CLASSA_NSHIFT
+ 24
+
+	)
+
+175 
+	#IN_CLASSA_HOST
+ (0xfffffffà& ~
+IN_CLASSA_NET
+)
+
+	)
+
+176 
+	#IN_CLASSA_MAX
+ 128
+
+	)
+
+178 
+	#IN_CLASSB
+(
+a
+è((((
+š_addr_t
+)×)è& 0xc0000000è=ð0x80000000)
+
+	)
+
+179 
+	#IN_CLASSB_NET
+ 0xffff0000
+
+	)
+
+180 
+	#IN_CLASSB_NSHIFT
+ 16
+
+	)
+
+181 
+	#IN_CLASSB_HOST
+ (0xfffffffà& ~
+IN_CLASSB_NET
+)
+
+	)
+
+182 
+	#IN_CLASSB_MAX
+ 65536
+
+	)
+
+184 
+	#IN_CLASSC
+(
+a
+è((((
+š_addr_t
+)×)è& 0xe0000000è=ð0xc0000000)
+
+	)
+
+185 
+	#IN_CLASSC_NET
+ 0xffffff00
+
+	)
+
+186 
+	#IN_CLASSC_NSHIFT
+ 8
+
+	)
+
+187 
+	#IN_CLASSC_HOST
+ (0xfffffffà& ~
+IN_CLASSC_NET
+)
+
+	)
+
+189 
+	#IN_CLASSD
+(
+a
+è((((
+š_addr_t
+)×)è& 0xf0000000è=ð0xe0000000)
+
+	)
+
+190 
+	#IN_MULTICAST
+(
+a
+è
+	`IN_CLASSD
+×)
+
+	)
+
+192 
+	#IN_EXPERIMENTAL
+(
+a
+è((((
+š_addr_t
+)×)è& 0xe0000000è=ð0xe0000000)
+
+	)
+
+193 
+	#IN_BADCLASS
+(
+a
+è((((
+š_addr_t
+)×)è& 0xf0000000è=ð0xf0000000)
+
+	)
+
+196 
+	#INADDR_ANY
+ ((
+š_addr_t
+è0x00000000)
+
+	)
+
+198 
+	#INADDR_BROADCAST
+ ((
+š_addr_t
+è0xffffffff)
+
+	)
+
+200 
+	#INADDR_NONE
+ ((
+š_addr_t
+è0xffffffff)
+
+	)
+
+203 
+	#INADDR_DUMMY
+ ((
+š_addr_t
+è0xc0000008)
+
+	)
+
+206 
+	#IN_LOOPBACKNET
+ 127
+
+	)
+
+208 #iâdeà
+INADDR_LOOPBACK
+
+
+209 
+	#INADDR_LOOPBACK
+ ((
+š_addr_t
+è0x7f000001è
+
+	)
+
+213 
+	#INADDR_UNSPEC_GROUP
+ ((
+š_addr_t
+è0xe0000000è
+
+	)
+
+214 
+	#INADDR_ALLHOSTS_GROUP
+ ((
+š_addr_t
+è0xe0000001è
+
+	)
+
+215 
+	#INADDR_ALLRTRS_GROUP
+ ((
+š_addr_t
+è0xe0000002è
+
+	)
+
+216 
+	#INADDR_ALLSNOOPERS_GROUP
+ ((
+š_addr_t
+è0xe000006aè
+
+	)
+
+217 
+	#INADDR_MAX_LOCAL_GROUP
+ ((
+š_addr_t
+è0xe00000ffè
+
+	)
+
+219 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+221 
+	sš6_addr
+
+
+225 
+ušt8_t
+ 
+	m__u6_addr8
+[16];
+
+226 
+ušt16_t
+ 
+	m__u6_addr16
+[8];
+
+227 
+ušt32_t
+ 
+	m__u6_addr32
+[4];
+
+228 } 
+	m__š6_u
+;
+
+229 
+	#s6_addr
+ 
+__š6_u
+.
+__u6_addr8
+
+
+	)
+
+230 #ifdeà
+__USE_MISC
+
+
+231 
+	#s6_addr16
+ 
+__š6_u
+.
+__u6_addr16
+
+
+	)
+
+232 
+	#s6_addr32
+ 
+__š6_u
+.
+__u6_addr32
+
+
+	)
+
+237 
cÚ¡ 
+š6_addr
+ 
+š6addr_ªy
+;
+
+238 
cÚ¡ 
+š6_addr
+ 
+š6addr_loÝback
+;
+
+239 
+	#IN6ADDR_ANY_INIT
+ { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
+
+	)
+
+240 
+	#IN6ADDR_LOOPBACK_INIT
+ { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
+
+	)
+
+242 
+	#INET_ADDRSTRLEN
+ 16
+
+	)
+
+243 
+	#INET6_ADDRSTRLEN
+ 46
+
+	)
+
+247 
+	ssockaddr_š
+
+
+249 
+__SOCKADDR_COMMON
+ (
+sš_
+);
+
+250 
+š_pÜt_t
+ 
+	msš_pÜt
+;
+
+251 
+š_addr
+ 
+	msš_addr
+;
+
+254 
+	msš_z”o
+[ (
+sockaddr
+)
+
+255 - 
+__SOCKADDR_COMMON_SIZE
+
+
+256 -  (
+š_pÜt_t
+)
+
+257 -  (
+š_addr
+)];
+
+260 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+262 
+	ssockaddr_š6
+
+
+264 
+__SOCKADDR_COMMON
+ (
+sš6_
+);
+
+265 
+š_pÜt_t
+ 
+	msš6_pÜt
+;
+
+266 
+ušt32_t
+ 
+	msš6_æowšfo
+;
+
+267 
+š6_addr
+ 
+	msš6_addr
+;
+
+268 
+ušt32_t
+ 
+	msš6_scÝe_id
+;
+
+272 #ifdeà
+__USE_MISC
+
+
+274 
+	s�_m»q
+
+
+277 
+š_addr
+ 
+	mimr_muÉŸddr
+;
+
+280 
+š_addr
+ 
+	mimr_š‹rçû
+;
+
+284 
+	s�_m»qn
+
+
+287 
+š_addr
+ 
+	mimr_muÉŸddr
+;
+
+290 
+š_addr
+ 
+	mimr_add»ss
+;
+
+293 
+	mimr_ifšdex
+;
+
+296 
+	s�_m»q_sourû
+
+
+299 
+š_addr
+ 
+	mimr_muÉŸddr
+;
+
+302 
+š_addr
+ 
+	mimr_š‹rçû
+;
+
+305 
+š_addr
+ 
+	mimr_sourûaddr
+;
+
+309 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+311 
+	s�v6_m»q
+
+
+314 
+š6_addr
+ 
+	m�v6mr_muÉŸddr
+;
+
+317 
+	m�v6mr_š‹rçû
+;
+
+321 #ifdeà
+__USE_MISC
+
+
+323 
+	sgroup_»q
+
+
+326 
+ušt32_t
+ 
+	mgr_š‹rçû
+;
+
+329 
+sockaddr_¡Üage
+ 
+	mgr_group
+;
+
+332 
+	sgroup_sourû_»q
+
+
+335 
+ušt32_t
+ 
+	mg¤_š‹rçû
+;
+
+338 
+sockaddr_¡Üage
+ 
+	mg¤_group
+;
+
+341 
+sockaddr_¡Üage
+ 
+	mg¤_sourû
+;
+
+346 
+	s�_msfž‹r
+
+
+349 
+š_addr
+ 
+	mimsf_muÉŸddr
+;
+
+352 
+š_addr
+ 
+	mimsf_š‹rçû
+;
+
+355 
+ušt32_t
+ 
+	mimsf_fmode
+;
+
+358 
+ušt32_t
+ 
+	mimsf_num¤c
+;
+
+360 
+š_addr
+ 
+	mimsf_¦i¡
+[1];
+
+363 
+	#IP_MSFILTER_SIZE
+(
+num¤c
+è( (
+�_msfž‹r
+) \
+
+364 -  (
+š_addr
+) \
+
+365 + (
+num¤c
+è*  (
+š_addr
+))
+
+	)
+
+367 
+	sgroup_fž‹r
+
+
+370 
+ušt32_t
+ 
+	mgf_š‹rçû
+;
+
+373 
+sockaddr_¡Üage
+ 
+	mgf_group
+;
+
+376 
+ušt32_t
+ 
+	mgf_fmode
+;
+
+379 
+ušt32_t
+ 
+	mgf_num¤c
+;
+
+381 
+sockaddr_¡Üage
+ 
+	mgf_¦i¡
+[1];
+
+384 
+	#GROUP_FILTER_SIZE
+(
+num¤c
+è( (
+group_fž‹r
+) \
+
+385 -  (
+sockaddr_¡Üage
+) \
+
+386 + ((
+num¤c
+) \
+
+387 *  (
+sockaddr_¡Üage
+)))
+
+	)
+
+397 
+ušt32_t
+ 
+	$Áohl
+ (
+ušt32_t
+ 
+__ÃŽÚg
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+398 
+ušt16_t
+ 
+	$Áohs
+ (
+ušt16_t
+ 
+__ÃtshÜt
+)
+
+399 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+400 
+ušt32_t
+ 
+	$htÚl
+ (
+ušt32_t
+ 
+__ho¡lÚg
+)
+
+401 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+402 
+ušt16_t
+ 
+	$htÚs
+ (
+ušt16_t
+ 
+__ho¡shÜt
+)
+
+403 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+405 
+	~<’dŸn.h
+>
+
+408 
+	~<b™s/by‹sw­.h
+>
+
+409 
+	~<b™s/ušŠ-id’t™y.h
+>
+
+411 #ifdeà
+__OPTIMIZE__
+
+
+415 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+418 
+	#Áohl
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+419 
+	#Áohs
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+420 
+	#htÚl
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+421 
+	#htÚs
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+423 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+424 
+	#Áohl
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+425 
+	#Áohs
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+426 
+	#htÚl
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+427 
+	#htÚs
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+432 #ifdeà
+__GNUC__
+
+
+433 
+	#IN6_IS_ADDR_UNSPECIFIED
+(
+a
+) \
+
+434 (
+__ex‹nsiÚ__
+ \
+
+435 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+436 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] == 0 \
+
+437 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[1] == 0 \
+
+438 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[2] == 0 \
+
+439 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[3] =ð0; 
+	}
+}))
+
+	)
+
+441 
+	#IN6_IS_ADDR_LOOPBACK
+(
+a
+) \
+
+442 (
+__ex‹nsiÚ__
+ \
+
+443 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+444 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] == 0 \
+
+445 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[1] == 0 \
+
+446 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[2] == 0 \
+
+447 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[3] =ð
+	`htÚl
+ (1); }))
+
+	)
+
+449 
+	#IN6_IS_ADDR_LINKLOCAL
+(
+a
+) \
+
+450 (
+__ex‹nsiÚ__
+ \
+
+451 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+452 (
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] & 
+	`htÚl
+ (0xffc00000)è=ðhtÚÈ(0xã800000); }))
+
+	)
+
+454 
+	#IN6_IS_ADDR_SITELOCAL
+(
+a
+) \
+
+455 (
+__ex‹nsiÚ__
+ \
+
+456 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+457 (
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] & 
+	`htÚl
+ (0xffc00000)è=ðhtÚÈ(0xãc00000); }))
+
+	)
+
+459 
+	#IN6_IS_ADDR_V4MAPPED
+(
+a
+) \
+
+460 (
+__ex‹nsiÚ__
+ \
+
+461 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+462 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] == 0 \
+
+463 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[1] == 0 \
+
+464 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[2] =ð
+	`htÚl
+ (0xffff); }))
+
+	)
+
+466 
+	#IN6_IS_ADDR_V4COMPAT
+(
+a
+) \
+
+467 (
+__ex‹nsiÚ__
+ \
+
+468 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+469 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] == 0 \
+
+470 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[1] == 0 \
+
+471 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[2] == 0 \
+
+472 && 
+	`Áohl
+ (
+__a
+->
+__š6_u
+.
+__u6_addr32
+[3]è> 1; }))
+
+	)
+
+474 
+	#IN6_ARE_ADDR_EQUAL
+(
+a
+,
+b
+) \
+
+475 (
+__ex‹nsiÚ__
+ \
+
+476 ({ cÚ¡ 
+š6_addr
+ *
+__a
+ = (cÚ¡ š6_add¸*è(
+a
+); \
+
+477 cÚ¡ 
+š6_addr
+ *
+__b
+ = (cÚ¡ š6_add¸*è(
+b
+); \
+
+478 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[0] =ð
+__b
+->__in6_u.__u6_addr32[0] \
+
+479 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[1] =ð
+__b
+->__in6_u.__u6_addr32[1] \
+
+480 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[2] =ð
+__b
+->__in6_u.__u6_addr32[2] \
+
+481 && 
+__a
+->
+__š6_u
+.
+__u6_addr32
+[3] =ð
+__b
+->__š6_u.__u6_addr32[3]; }))
+
+	)
+
+483 
+	#IN6_IS_ADDR_UNSPECIFIED
+(
+a
+) \
+
+484 (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] == 0 \
+
+485 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[1] == 0 \
+
+486 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[2] == 0 \
+
+487 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[3] =ð0)
+
+	)
+
+489 
+	#IN6_IS_ADDR_LOOPBACK
+(
+a
+) \
+
+490 (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] == 0 \
+
+491 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[1] == 0 \
+
+492 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[2] == 0 \
+
+493 && ((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[3] =ð
+	`htÚl
+ (1))
+
+	)
+
+495 
+	#IN6_IS_ADDR_LINKLOCAL
+(
+a
+) \
+
+496 ((((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] & 
+	`htÚl
+ (0xffc00000)) \
+
+497 =ð
+	`htÚl
+ (0xã800000))
+
+	)
+
+499 
+	#IN6_IS_ADDR_SITELOCAL
+(
+a
+) \
+
+500 ((((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] & 
+	`htÚl
+ (0xffc00000)) \
+
+501 =ð
+	`htÚl
+ (0xãc00000))
+
+	)
+
+503 
+	#IN6_IS_ADDR_V4MAPPED
+(
+a
+) \
+
+504 ((((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] == 0) \
+
+505 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[1] == 0) \
+
+506 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[2] =ð
+	`htÚl
+ (0xffff)))
+
+	)
+
+508 
+	#IN6_IS_ADDR_V4COMPAT
+(
+a
+) \
+
+509 ((((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] == 0) \
+
+510 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[1] == 0) \
+
+511 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[2] == 0) \
+
+512 && (
+	`Áohl
+ (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[3]è> 1))
+
+	)
+
+514 
+	#IN6_ARE_ADDR_EQUAL
+(
+a
+,
+b
+) \
+
+515 ((((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[0] =ð((cÚ¡ ušt32_ˆ*è(
+b
+))[0]) \
+
+516 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[1] =ð((cÚ¡ ušt32_ˆ*è(
+b
+))[1]) \
+
+517 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[2] =ð((cÚ¡ ušt32_ˆ*è(
+b
+))[2]) \
+
+518 && (((cÚ¡ 
+ušt32_t
+ *è(
+a
+))[3] =ð((cÚ¡ ušt32_ˆ*è(
+b
+))[3]))
+
+	)
+
+521 
+	#IN6_IS_ADDR_MULTICAST
+(
+a
+è(((cÚ¡ 
+ušt8_t
+ *è×))[0] =ð0xff)
+
+	)
+
+523 #ifdeà
+__USE_MISC
+
+
+525 

+	$bšd»svpÜt
+ (
+__sockfd
+, 
+sockaddr_š
+ *
+__sock_š
+è
+__THROW
+;
+
+528 

+	$bšd»svpÜt6
+ (
+__sockfd
+, 
+sockaddr_š6
+ *
+__sock_š
+)
+
+529 
+__THROW
+;
+
+533 
+	#IN6_IS_ADDR_MC_NODELOCAL
+(
+a
+) \
+
+534 (
+	`IN6_IS_ADDR_MULTICAST
+(
+a
+) \
+
+535 && ((((cÚ¡ 
+ušt8_t
+ *è(
+a
+))[1] & 0xfè=ð0x1))
+
+	)
+
+537 
+	#IN6_IS_ADDR_MC_LINKLOCAL
+(
+a
+) \
+
+538 (
+	`IN6_IS_ADDR_MULTICAST
+(
+a
+) \
+
+539 && ((((cÚ¡ 
+ušt8_t
+ *è(
+a
+))[1] & 0xfè=ð0x2))
+
+	)
+
+541 
+	#IN6_IS_ADDR_MC_SITELOCAL
+(
+a
+) \
+
+542 (
+	`IN6_IS_ADDR_MULTICAST
+(
+a
+) \
+
+543 && ((((cÚ¡ 
+ušt8_t
+ *è(
+a
+))[1] & 0xfè=ð0x5))
+
+	)
+
+545 
+	#IN6_IS_ADDR_MC_ORGLOCAL
+(
+a
+) \
+
+546 (
+	`IN6_IS_ADDR_MULTICAST
+(
+a
+) \
+
+547 && ((((cÚ¡ 
+ušt8_t
+ *è(
+a
+))[1] & 0xfè=ð0x8))
+
+	)
+
+549 
+	#IN6_IS_ADDR_MC_GLOBAL
+(
+a
+) \
+
+550 (
+	`IN6_IS_ADDR_MULTICAST
+(
+a
+) \
+
+551 && ((((cÚ¡ 
+ušt8_t
+ *è(
+a
+))[1] & 0xfè=ð0xe))
+
+	)
+
+554 #ifdeà
+__USE_GNU
+
+
+555 
+cmsghdr
+;
+
+557 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+559 
+	sš6_pktšfo
+
+
+561 
+š6_addr
+ 
+�i6_addr
+;
+
+562 
+�i6_ifšdex
+;
+
+566 
+	s�6_mtušfo
+
+
+568 
+sockaddr_š6
+ 
+�6m_addr
+;
+
+569 
+ušt32_t
+ 
+�6m_mtu
+;
+
+574 

+	$š‘6_ÝtiÚ_¥aû
+ (
+__nby‹s
+)
+
+575 
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+576 

+	$š‘6_ÝtiÚ_š™
+ (*
+__bp
+, 
+cmsghdr
+ **
+__cmsgp
+,
+
+577 
+__ty³
+è
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+578 

+	$š‘6_ÝtiÚ_­³nd
+ (
+cmsghdr
+ *
+__cmsg
+,
+
+579 cÚ¡ 
+ušt8_t
+ *
+__ty³p
+, 
+__muÉx
+,
+
+580 
+__¶usy
+è
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+581 
+ušt8_t
+ *
+	$š‘6_ÝtiÚ_®loc
+ (
+cmsghdr
+ *
+__cmsg
+, 
+__d©®’
+,
+
+582 
+__muÉx
+, 
+__¶usy
+)
+
+583 
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+584 

+	$š‘6_ÝtiÚ_Ãxt
+ (cÚ¡ 
+cmsghdr
+ *
+__cmsg
+,
+
+585 
+ušt8_t
+ **
+__�Œp
+)
+
+586 
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+587 

+	$š‘6_ÝtiÚ_fšd
+ (cÚ¡ 
+cmsghdr
+ *
+__cmsg
+,
+
+588 
+ušt8_t
+ **
+__�Œp
+, 
+__ty³
+)
+
+589 
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+593 

+	$š‘6_Ýt_š™
+ (*
+__extbuf
+, 
+sockËn_t
+ 
+__exŽ’
+è
+__THROW
+;
+
+594 

+	$š‘6_Ýt_­³nd
+ (*
+__extbuf
+, 
+sockËn_t
+ 
+__exŽ’
+, 
+__off£t
+,
+
+595 
+ušt8_t
+ 
+__ty³
+, 
+sockËn_t
+ 
+__Ën
+, ušt8_ˆ
+__®ign
+,
+
+596 **
+__d©abuå
+è
+__THROW
+;
+
+597 

+	$š‘6_Ýt_fšish
+ (*
+__extbuf
+, 
+sockËn_t
+ 
+__exŽ’
+, 
+__off£t
+)
+
+598 
+__THROW
+;
+
+599 

+	$š‘6_Ýt_£t_v®
+ (*
+__d©abuf
+, 
+__off£t
+, *
+__v®
+,
+
+600 
+sockËn_t
+ 
+__v®Ën
+è
+__THROW
+;
+
+601 

+	$š‘6_Ýt_Ãxt
+ (*
+__extbuf
+, 
+sockËn_t
+ 
+__exŽ’
+, 
+__off£t
+,
+
+602 
+ušt8_t
+ *
+__ty³p
+, 
+sockËn_t
+ *
+__ËÅ
+,
+
+603 **
+__d©abuå
+è
+__THROW
+;
+
+604 

+	$š‘6_Ýt_fšd
+ (*
+__extbuf
+, 
+sockËn_t
+ 
+__exŽ’
+, 
+__off£t
+,
+
+605 
+ušt8_t
+ 
+__ty³
+, 
+sockËn_t
+ *
+__ËÅ
+,
+
+606 **
+__d©abuå
+è
+__THROW
+;
+
+607 

+	$š‘6_Ýt_g‘_v®
+ (*
+__d©abuf
+, 
+__off£t
+, *
+__v®
+,
+
+608 
+sockËn_t
+ 
+__v®Ën
+è
+__THROW
+;
+
+612 
+sockËn_t
+ 
+	$š‘6_¹h_¥aû
+ (
+__ty³
+, 
+__£gm’ts
+è
+__THROW
+;
+
+613 
*
+	$š‘6_¹h_š™
+ (*
+__bp
+, 
+sockËn_t
+ 
+__bp_Ën
+, 
+__ty³
+,
+
+614 
+__£gm’ts
+è
+__THROW
+;
+
+615 

+	$š‘6_¹h_add
+ (*
+__bp
+, cÚ¡ 
+š6_addr
+ *
+__addr
+è
+__THROW
+;
+
+616 

+	$š‘6_¹h_»v”£
+ (cÚ¡ *
+__š
+, *
+__out
+è
+__THROW
+;
+
+617 

+	$š‘6_¹h_£gm’ts
+ (cÚ¡ *
+__bp
+è
+__THROW
+;
+
+618 

+š6_addr
+ *
+	$š‘6_¹h_g‘addr
+ (cÚ¡ *
+__bp
+, 
+__šdex
+)
+
+619 
+__THROW
+;
+
+625 

+	$g‘�v4sourûfž‹r
+ (
+__s
+, 
+š_addr
+ 
+__š‹rçû_addr
+,
+
+626 
+š_addr
+ 
+__group
+, 
+ušt32_t
+ *
+__fmode
+,
+
+627 
+ušt32_t
+ *
+__num¤c
+, 
+š_addr
+ *
+__¦i¡
+)
+
+628 
+__THROW
+;
+
+631 

+	$£t�v4sourûfž‹r
+ (
+__s
+, 
+š_addr
+ 
+__š‹rçû_addr
+,
+
+632 
+š_addr
+ 
+__group
+, 
+ušt32_t
+ 
+__fmode
+,
+
+633 
+ušt32_t
+ 
+__num¤c
+,
+
+634 cÚ¡ 
+š_addr
+ *
+__¦i¡
+)
+
+635 
+__THROW
+;
+
+639 

+	$g‘sourûfž‹r
+ (
+__s
+, 
+ušt32_t
+ 
+__š‹rçû_addr
+,
+
+640 cÚ¡ 
+sockaddr
+ *
+__group
+,
+
+641 
+sockËn_t
+ 
+__grou¶’
+, 
+ušt32_t
+ *
+__fmode
+,
+
+642 
+ušt32_t
+ *
+__num¤c
+,
+
+643 
+sockaddr_¡Üage
+ *
+__¦i¡
+è
+__THROW
+;
+
+646 

+	$£tsourûfž‹r
+ (
+__s
+, 
+ušt32_t
+ 
+__š‹rçû_addr
+,
+
+647 cÚ¡ 
+sockaddr
+ *
+__group
+,
+
+648 
+sockËn_t
+ 
+__grou¶’
+, 
+ušt32_t
+ 
+__fmode
+,
+
+649 
+ušt32_t
+ 
+__num¤c
+,
+
+650 cÚ¡ 
+sockaddr_¡Üage
+ *
+__¦i¡
+è
+__THROW
+;
+
+653 
+__END_DECLS
+
+
+	@/usr/include/netinet/in_systm.h
+
+19 #iâdeà
+_NETINET_IN_SYSTM_H
+
+
+20 
+	#_NETINET_IN_SYSTM_H
+ 1
+
+	)
+
+22 
+	~<sys/ty³s.h
+>
+
+23 
+	~<¡dšt.h
+>
+
+25 
+__BEGIN_DECLS
+
+
+34 
+ušt16_t
+ 
+	tn_shÜt
+;
+
+35 
+ušt32_t
+ 
+	tn_lÚg
+;
+
+36 
+ušt32_t
+ 
+	tn_time
+;
+
+38 
+	g__END_DECLS
+
+
+	@/usr/include/netinet/ip.h
+
+18 #iâdeà
+__NETINET_IP_H
+
+
+19 
+	#__NETINET_IP_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+22 
+	~<sys/ty³s.h
+>
+
+24 
+	~<Ãtš‘/š.h
+>
+
+26 
+__BEGIN_DECLS
+
+
+28 
+	stime¡amp
+
+
+30 
+ušt8_t
+ 
+	mËn
+;
+
+31 
+ušt8_t
+ 
+	m±r
+;
+
+32 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+33 
+	mæags
+:4;
+
+34 
+	mov”æow
+:4;
+
+35 #–ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+36 
+	mov”æow
+:4;
+
+37 
+	mæags
+:4;
+
+41 
+ušt32_t
+ 
+	md©a
+[9];
+
+44 
+	s�hdr
+
+
+46 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+47 
+	mihl
+:4;
+
+48 
+	mv”siÚ
+:4;
+
+49 #–ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+50 
+	mv”siÚ
+:4;
+
+51 
+	mihl
+:4;
+
+55 
+ušt8_t
+ 
+	mtos
+;
+
+56 
+ušt16_t
+ 
+	mtÙ_Ën
+;
+
+57 
+ušt16_t
+ 
+	mid
+;
+
+58 
+ušt16_t
+ 
+	mäag_off
+;
+
+59 
+ušt8_t
+ 
+	m‰l
+;
+
+60 
+ušt8_t
+ 
+	m´ÙocÞ
+;
+
+61 
+ušt16_t
+ 
+	mcheck
+;
+
+62 
+ušt32_t
+ 
+	m§ddr
+;
+
+63 
+ušt32_t
+ 
+	mdaddr
+;
+
+67 #ifdeà
+__USE_MISC
+
+
+107 
+	s�
+
+
+109 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+110 
+	m�_hl
+:4;
+
+111 
+	m�_v
+:4;
+
+113 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+114 
+	m�_v
+:4;
+
+115 
+	m�_hl
+:4;
+
+117 
+ušt8_t
+ 
+	m�_tos
+;
+
+118 
+	m�_Ën
+;
+
+119 
+	m�_id
+;
+
+120 
+	m�_off
+;
+
+121 
+	#IP_RF
+ 0x8000
+
+	)
+
+122 
+	#IP_DF
+ 0x4000
+
+	)
+
+123 
+	#IP_MF
+ 0x2000
+
+	)
+
+124 
+	#IP_OFFMASK
+ 0x1ffà
+
+	)
+
+125 
+ušt8_t
+ 
+	m�_‰l
+;
+
+126 
+ušt8_t
+ 
+	m�_p
+;
+
+127 
+	m�_sum
+;
+
+128 
+š_addr
+ 
+	m�_¤c
+, 
+	m�_d¡
+;
+
+134 
+	s�_time¡amp
+
+
+136 
+ušt8_t
+ 
+	m�t_code
+;
+
+137 
+ušt8_t
+ 
+	m�t_Ën
+;
+
+138 
+ušt8_t
+ 
+	m�t_±r
+;
+
+139 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+140 
+	m�t_æg
+:4;
+
+141 
+	m�t_oæw
+:4;
+
+143 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+144 
+	m�t_oæw
+:4;
+
+145 
+	m�t_æg
+:4;
+
+147 
+ušt32_t
+ 
+	md©a
+[9];
+
+151 
+	#IPVERSION
+ 4
+
+	)
+
+152 
+	#IP_MAXPACKET
+ 65535
+
+	)
+
+160 
+	#IPTOS_ECN_MASK
+ 0x03
+
+	)
+
+161 
+	#IPTOS_ECN
+(
+x
+è((xè& 
+IPTOS_ECN_MASK
+)
+
+	)
+
+162 
+	#IPTOS_ECN_NOT_ECT
+ 0x00
+
+	)
+
+163 
+	#IPTOS_ECN_ECT1
+ 0x01
+
+	)
+
+164 
+	#IPTOS_ECN_ECT0
+ 0x02
+
+	)
+
+165 
+	#IPTOS_ECN_CE
+ 0x03
+
+	)
+
+173 
+	#IPTOS_DSCP_MASK
+ 0xfc
+
+	)
+
+174 
+	#IPTOS_DSCP
+(
+x
+è((xè& 
+IPTOS_DSCP_MASK
+)
+
+	)
+
+175 
+	#IPTOS_DSCP_AF11
+ 0x28
+
+	)
+
+176 
+	#IPTOS_DSCP_AF12
+ 0x30
+
+	)
+
+177 
+	#IPTOS_DSCP_AF13
+ 0x38
+
+	)
+
+178 
+	#IPTOS_DSCP_AF21
+ 0x48
+
+	)
+
+179 
+	#IPTOS_DSCP_AF22
+ 0x50
+
+	)
+
+180 
+	#IPTOS_DSCP_AF23
+ 0x58
+
+	)
+
+181 
+	#IPTOS_DSCP_AF31
+ 0x68
+
+	)
+
+182 
+	#IPTOS_DSCP_AF32
+ 0x70
+
+	)
+
+183 
+	#IPTOS_DSCP_AF33
+ 0x78
+
+	)
+
+184 
+	#IPTOS_DSCP_AF41
+ 0x88
+
+	)
+
+185 
+	#IPTOS_DSCP_AF42
+ 0x90
+
+	)
+
+186 
+	#IPTOS_DSCP_AF43
+ 0x98
+
+	)
+
+187 
+	#IPTOS_DSCP_EF
+ 0xb8
+
+	)
+
+192 
+	#IPTOS_DSCP_VA
+ 0xb0
+
+	)
+
+199 
+	#IPTOS_CLASS_MASK
+ 0xe0
+
+	)
+
+200 
+	#IPTOS_CLASS
+(
+þass
+è((þassè& 
+IPTOS_CLASS_MASK
+)
+
+	)
+
+201 
+	#IPTOS_CLASS_CS0
+ 0x00
+
+	)
+
+202 
+	#IPTOS_CLASS_CS1
+ 0x20
+
+	)
+
+203 
+	#IPTOS_CLASS_CS2
+ 0x40
+
+	)
+
+204 
+	#IPTOS_CLASS_CS3
+ 0x60
+
+	)
+
+205 
+	#IPTOS_CLASS_CS4
+ 0x80
+
+	)
+
+206 
+	#IPTOS_CLASS_CS5
+ 0xa0
+
+	)
+
+207 
+	#IPTOS_CLASS_CS6
+ 0xc0
+
+	)
+
+208 
+	#IPTOS_CLASS_CS7
+ 0xe0
+
+	)
+
+210 
+	#IPTOS_CLASS_DEFAULT
+ 
+IPTOS_CLASS_CS0
+
+
+	)
+
+216 
+	#IPTOS_TOS_MASK
+ 0x1E
+
+	)
+
+217 
+	#IPTOS_TOS
+(
+tos
+è(Ñosè& 
+IPTOS_TOS_MASK
+)
+
+	)
+
+218 
+	#IPTOS_LOWDELAY
+ 0x10
+
+	)
+
+219 
+	#IPTOS_THROUGHPUT
+ 0x08
+
+	)
+
+220 
+	#IPTOS_RELIABILITY
+ 0x04
+
+	)
+
+221 
+	#IPTOS_LOWCOST
+ 0x02
+
+	)
+
+222 
+	#IPTOS_MINCOST
+ 
+IPTOS_LOWCOST
+
+
+	)
+
+227 
+	#IPTOS_PREC_MASK
+ 
+IPTOS_CLASS_MASK
+
+
+	)
+
+228 
+	#IPTOS_PREC
+(
+tos
+è
+	`IPTOS_CLASS
+Ños)
+
+	)
+
+229 
+	#IPTOS_PREC_NETCONTROL
+ 
+IPTOS_CLASS_CS7
+
+
+	)
+
+230 
+	#IPTOS_PREC_INTERNETCONTROL
+ 
+IPTOS_CLASS_CS6
+
+
+	)
+
+231 
+	#IPTOS_PREC_CRITIC_ECP
+ 
+IPTOS_CLASS_CS5
+
+
+	)
+
+232 
+	#IPTOS_PREC_FLASHOVERRIDE
+ 
+IPTOS_CLASS_CS4
+
+
+	)
+
+233 
+	#IPTOS_PREC_FLASH
+ 
+IPTOS_CLASS_CS3
+
+
+	)
+
+234 
+	#IPTOS_PREC_IMMEDIATE
+ 
+IPTOS_CLASS_CS2
+
+
+	)
+
+235 
+	#IPTOS_PREC_PRIORITY
+ 
+IPTOS_CLASS_CS1
+
+
+	)
+
+236 
+	#IPTOS_PREC_ROUTINE
+ 
+IPTOS_CLASS_CS0
+
+
+	)
+
+241 
+	#IPOPT_COPY
+ 0x80
+
+	)
+
+242 
+	#IPOPT_CLASS_MASK
+ 0x60
+
+	)
+
+243 
+	#IPOPT_NUMBER_MASK
+ 0x1f
+
+	)
+
+245 
+	#IPOPT_COPIED
+(
+o
+è((oè& 
+IPOPT_COPY
+)
+
+	)
+
+246 
+	#IPOPT_CLASS
+(
+o
+è((oè& 
+IPOPT_CLASS_MASK
+)
+
+	)
+
+247 
+	#IPOPT_NUMBER
+(
+o
+è((oè& 
+IPOPT_NUMBER_MASK
+)
+
+	)
+
+249 
+	#IPOPT_CONTROL
+ 0x00
+
+	)
+
+250 
+	#IPOPT_RESERVED1
+ 0x20
+
+	)
+
+251 
+	#IPOPT_DEBMEAS
+ 0x40
+
+	)
+
+252 
+	#IPOPT_MEASUREMENT
+ 
+IPOPT_DEBMEAS
+
+
+	)
+
+253 
+	#IPOPT_RESERVED2
+ 0x60
+
+	)
+
+255 
+	#IPOPT_EOL
+ 0
+
+	)
+
+256 
+	#IPOPT_END
+ 
+IPOPT_EOL
+
+
+	)
+
+257 
+	#IPOPT_NOP
+ 1
+
+	)
+
+258 
+	#IPOPT_NOOP
+ 
+IPOPT_NOP
+
+
+	)
+
+260 
+	#IPOPT_RR
+ 7
+
+	)
+
+261 
+	#IPOPT_TS
+ 68
+
+	)
+
+262 
+	#IPOPT_TIMESTAMP
+ 
+IPOPT_TS
+
+
+	)
+
+263 
+	#IPOPT_SECURITY
+ 130
+
+	)
+
+264 
+	#IPOPT_SEC
+ 
+IPOPT_SECURITY
+
+
+	)
+
+265 
+	#IPOPT_LSRR
+ 131
+
+	)
+
+266 
+	#IPOPT_SATID
+ 136
+
+	)
+
+267 
+	#IPOPT_SID
+ 
+IPOPT_SATID
+
+
+	)
+
+268 
+	#IPOPT_SSRR
+ 137
+
+	)
+
+269 
+	#IPOPT_RA
+ 148
+
+	)
+
+274 
+	#IPOPT_OPTVAL
+ 0
+
+	)
+
+275 
+	#IPOPT_OLEN
+ 1
+
+	)
+
+276 
+	#IPOPT_OFFSET
+ 2
+
+	)
+
+277 
+	#IPOPT_MINOFF
+ 4
+
+	)
+
+279 
+	#MAX_IPOPTLEN
+ 40
+
+	)
+
+282 
+	#IPOPT_TS_TSONLY
+ 0
+
+	)
+
+283 
+	#IPOPT_TS_TSANDADDR
+ 1
+
+	)
+
+284 
+	#IPOPT_TS_PRESPEC
+ 3
+
+	)
+
+287 
+	#IPOPT_SECUR_UNCLASS
+ 0x0000
+
+	)
+
+288 
+	#IPOPT_SECUR_CONFID
+ 0xf135
+
+	)
+
+289 
+	#IPOPT_SECUR_EFTO
+ 0x789a
+
+	)
+
+290 
+	#IPOPT_SECUR_MMMM
+ 0xbc4d
+
+	)
+
+291 
+	#IPOPT_SECUR_RESTR
+ 0xaf13
+
+	)
+
+292 
+	#IPOPT_SECUR_SECRET
+ 0xd788
+
+	)
+
+293 
+	#IPOPT_SECUR_TOPSECRET
+ 0x6bc5
+
+	)
+
+298 
+	#MAXTTL
+ 255
+
+	)
+
+299 
+	#IPDEFTTL
+ 64
+
+	)
+
+300 
+	#IPFRAGTTL
+ 60
+
+	)
+
+301 
+	#IPTTLDEC
+ 1
+
+	)
+
+303 
+	#IP_MSS
+ 576
+
+	)
+
+305 
+	g__END_DECLS
+
+
+	@/usr/include/netinet/tcp.h
+
+32 #iâdeà
+_NETINET_TCP_H
+
+
+33 
+	#_NETINET_TCP_H
+ 1
+
+	)
+
+35 
+	~<ã©u»s.h
+>
+
+40 
+	#TCP_NODELAY
+ 1
+
+	)
+
+41 
+	#TCP_MAXSEG
+ 2
+
+	)
+
+42 
+	#TCP_CORK
+ 3
+
+	)
+
+43 
+	#TCP_KEEPIDLE
+ 4
+
+	)
+
+44 
+	#TCP_KEEPINTVL
+ 5
+
+	)
+
+45 
+	#TCP_KEEPCNT
+ 6
+
+	)
+
+46 
+	#TCP_SYNCNT
+ 7
+
+	)
+
+47 
+	#TCP_LINGER2
+ 8
+
+	)
+
+48 
+	#TCP_DEFER_ACCEPT
+ 9
+
+	)
+
+49 
+	#TCP_WINDOW_CLAMP
+ 10
+
+	)
+
+50 
+	#TCP_INFO
+ 11
+
+	)
+
+51 
+	#TCP_QUICKACK
+ 12
+
+	)
+
+52 
+	#TCP_CONGESTION
+ 13
+
+	)
+
+53 
+	#TCP_MD5SIG
+ 14
+
+	)
+
+54 
+	#TCP_COOKIE_TRANSACTIONS
+ 15
+
+	)
+
+55 
+	#TCP_THIN_LINEAR_TIMEOUTS
+ 16
+
+	)
+
+56 
+	#TCP_THIN_DUPACK
+ 17
+
+	)
+
+57 
+	#TCP_USER_TIMEOUT
+ 18
+
+	)
+
+58 
+	#TCP_REPAIR
+ 19
+
+	)
+
+59 
+	#TCP_REPAIR_QUEUE
+ 20
+
+	)
+
+60 
+	#TCP_QUEUE_SEQ
+ 21
+
+	)
+
+61 
+	#TCP_REPAIR_OPTIONS
+ 22
+
+	)
+
+62 
+	#TCP_FASTOPEN
+ 23
+
+	)
+
+63 
+	#TCP_TIMESTAMP
+ 24
+
+	)
+
+64 
+	#TCP_NOTSENT_LOWAT
+ 25
+
+	)
+
+66 
+	#TCP_CC_INFO
+ 26
+
+	)
+
+68 
+	#TCP_SAVE_SYN
+ 27
+
+	)
+
+70 
+	#TCP_SAVED_SYN
+ 28
+
+	)
+
+72 
+	#TCP_REPAIR_WINDOW
+ 29
+
+	)
+
+73 
+	#TCP_FASTOPEN_CONNECT
+ 30
+
+	)
+
+74 
+	#TCP_ULP
+ 31
+
+	)
+
+75 
+	#TCP_MD5SIG_EXT
+ 32
+
+	)
+
+76 
+	#TCP_FASTOPEN_KEY
+ 33
+
+	)
+
+77 
+	#TCP_FASTOPEN_NO_COOKIE
+ 34
+
+	)
+
+78 
+	#TCP_ZEROCOPY_RECEIVE
+ 35
+
+	)
+
+79 
+	#TCP_INQ
+ 36
+
+	)
+
+81 
+	#TCP_CM_INQ
+ 
+TCP_INQ
+
+
+	)
+
+82 
+	#TCP_TX_DELAY
+ 37
+
+	)
+
+84 
+	#TCP_REPAIR_ON
+ 1
+
+	)
+
+85 
+	#TCP_REPAIR_OFF
+ 0
+
+	)
+
+86 
+	#TCP_REPAIR_OFF_NO_WP
+ -1
+
+	)
+
+88 #ifdeà
+__USE_MISC
+
+
+89 
+	~<sys/ty³s.h
+>
+
+90 
+	~<sys/sock‘.h
+>
+
+91 
+	~<¡dšt.h
+>
+
+93 
+ušt32_t
+ 
+	ttý_£q
+;
+
+98 
+	stýhdr
+
+
+100 
+__ex‹nsiÚ__
+ union
+
+104 
+ušt16_t
+ 
+	mth_¥Üt
+;
+
+105 
+ušt16_t
+ 
+	mth_dpÜt
+;
+
+106 
+tý_£q
+ 
+	mth_£q
+;
+
+107 
+tý_£q
+ 
+	mth_ack
+;
+
+108 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+109 
+ušt8_t
+ 
+	mth_x2
+:4;
+
+110 
+ušt8_t
+ 
+	mth_off
+:4;
+
+112 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+113 
+ušt8_t
+ 
+	mth_off
+:4;
+
+114 
+ušt8_t
+ 
+	mth_x2
+:4;
+
+116 
+ušt8_t
+ 
+	mth_æags
+;
+
+117 
+	#TH_FIN
+ 0x01
+
+	)
+
+118 
+	#TH_SYN
+ 0x02
+
+	)
+
+119 
+	#TH_RST
+ 0x04
+
+	)
+
+120 
+	#TH_PUSH
+ 0x08
+
+	)
+
+121 
+	#TH_ACK
+ 0x10
+
+	)
+
+122 
+	#TH_URG
+ 0x20
+
+	)
+
+123 
+ušt16_t
+ 
+	mth_wš
+;
+
+124 
+ušt16_t
+ 
+	mth_sum
+;
+
+125 
+ušt16_t
+ 
+	mth_u½
+;
+
+129 
+ušt16_t
+ 
+	msourû
+;
+
+130 
+ušt16_t
+ 
+	mde¡
+;
+
+131 
+ušt32_t
+ 
+	m£q
+;
+
+132 
+ušt32_t
+ 
+	mack_£q
+;
+
+133 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+134 
+ušt16_t
+ 
+	m»s1
+:4;
+
+135 
+ušt16_t
+ 
+	mdoff
+:4;
+
+136 
+ušt16_t
+ 
+	mfš
+:1;
+
+137 
+ušt16_t
+ 
+	msyn
+:1;
+
+138 
+ušt16_t
+ 
+	mr¡
+:1;
+
+139 
+ušt16_t
+ 
+	mpsh
+:1;
+
+140 
+ušt16_t
+ 
+	mack
+:1;
+
+141 
+ušt16_t
+ 
+	murg
+:1;
+
+142 
+ušt16_t
+ 
+	m»s2
+:2;
+
+143 #–ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+144 
+ušt16_t
+ 
+	mdoff
+:4;
+
+145 
+ušt16_t
+ 
+	m»s1
+:4;
+
+146 
+ušt16_t
+ 
+	m»s2
+:2;
+
+147 
+ušt16_t
+ 
+	murg
+:1;
+
+148 
+ušt16_t
+ 
+	mack
+:1;
+
+149 
+ušt16_t
+ 
+	mpsh
+:1;
+
+150 
+ušt16_t
+ 
+	mr¡
+:1;
+
+151 
+ušt16_t
+ 
+	msyn
+:1;
+
+152 
+ušt16_t
+ 
+	mfš
+:1;
+
+156 
+ušt16_t
+ 
+	mwšdow
+;
+
+157 
+ušt16_t
+ 
+	mcheck
+;
+
+158 
+ušt16_t
+ 
+	murg_±r
+;
+
+165 
+	mTCP_ESTABLISHED
+ = 1,
+
+166 
+	mTCP_SYN_SENT
+,
+
+167 
+	mTCP_SYN_RECV
+,
+
+168 
+	mTCP_FIN_WAIT1
+,
+
+169 
+	mTCP_FIN_WAIT2
+,
+
+170 
+	mTCP_TIME_WAIT
+,
+
+171 
+	mTCP_CLOSE
+,
+
+172 
+	mTCP_CLOSE_WAIT
+,
+
+173 
+	mTCP_LAST_ACK
+,
+
+174 
+	mTCP_LISTEN
+,
+
+175 
+	mTCP_CLOSING
+
+
+178 
+	#TCPOPT_EOL
+ 0
+
+	)
+
+179 
+	#TCPOPT_NOP
+ 1
+
+	)
+
+180 
+	#TCPOPT_MAXSEG
+ 2
+
+	)
+
+181 
+	#TCPOLEN_MAXSEG
+ 4
+
+	)
+
+182 
+	#TCPOPT_WINDOW
+ 3
+
+	)
+
+183 
+	#TCPOLEN_WINDOW
+ 3
+
+	)
+
+184 
+	#TCPOPT_SACK_PERMITTED
+ 4
+
+	)
+
+185 
+	#TCPOLEN_SACK_PERMITTED
+ 2
+
+	)
+
+186 
+	#TCPOPT_SACK
+ 5
+
+	)
+
+187 
+	#TCPOPT_TIMESTAMP
+ 8
+
+	)
+
+188 
+	#TCPOLEN_TIMESTAMP
+ 10
+
+	)
+
+189 
+	#TCPOLEN_TSTAMP_APPA
+ (
+TCPOLEN_TIMESTAMP
++2è
+
+	)
+
+191 
+	#TCPOPT_TSTAMP_HDR
+ \
+
+192 (
+TCPOPT_NOP
+<<24|TCPOPT_NOP<<16|
+TCPOPT_TIMESTAMP
+<<8|
+TCPOLEN_TIMESTAMP
+)
+
+	)
+
+200 
+	#TCP_MSS
+ 512
+
+	)
+
+202 
+	#TCP_MAXWIN
+ 65535
+
+	)
+
+204 
+	#TCP_MAX_WINSHIFT
+ 14
+
+	)
+
+206 
+	#SOL_TCP
+ 6
+
+	)
+
+209 
+	#TCPI_OPT_TIMESTAMPS
+ 1
+
+	)
+
+210 
+	#TCPI_OPT_SACK
+ 2
+
+	)
+
+211 
+	#TCPI_OPT_WSCALE
+ 4
+
+	)
+
+212 
+	#TCPI_OPT_ECN
+ 8
+
+	)
+
+213 
+	#TCPI_OPT_ECN_SEEN
+ 16
+
+	)
+
+214 
+	#TCPI_OPT_SYN_DATA
+ 32
+
+	)
+
+217 
+	etý_ÿ_¡©e
+
+
+219 
+	mTCP_CA_O³n
+ = 0,
+
+220 
+	mTCP_CA_DisÜd”
+ = 1,
+
+221 
+	mTCP_CA_CWR
+ = 2,
+
+222 
+	mTCP_CA_Recov”y
+ = 3,
+
+223 
+	mTCP_CA_Loss
+ = 4
+
+226 
+	stý_šfo
+
+
+228 
+ušt8_t
+ 
+	mtýi_¡©e
+;
+
+229 
+ušt8_t
+ 
+	mtýi_ÿ_¡©e
+;
+
+230 
+ušt8_t
+ 
+	mtýi_»Œªsm™s
+;
+
+231 
+ušt8_t
+ 
+	mtýi_´obes
+;
+
+232 
+ušt8_t
+ 
+	mtýi_backoff
+;
+
+233 
+ušt8_t
+ 
+	mtýi_ÝtiÚs
+;
+
+234 
+ušt8_t
+ 
+	mtýi_¢d_wsÿË
+ : 4, 
+	mtýi_rcv_wsÿË
+ : 4;
+
+236 
+ušt32_t
+ 
+	mtýi_¹o
+;
+
+237 
+ušt32_t
+ 
+	mtýi_©o
+;
+
+238 
+ušt32_t
+ 
+	mtýi_¢d_mss
+;
+
+239 
+ušt32_t
+ 
+	mtýi_rcv_mss
+;
+
+241 
+ušt32_t
+ 
+	mtýi_uÇcked
+;
+
+242 
+ušt32_t
+ 
+	mtýi_§cked
+;
+
+243 
+ušt32_t
+ 
+	mtýi_lo¡
+;
+
+244 
+ušt32_t
+ 
+	mtýi_»Œªs
+;
+
+245 
+ušt32_t
+ 
+	mtýi_çck‘s
+;
+
+248 
+ušt32_t
+ 
+	mtýi_Ï¡_d©a_£Á
+;
+
+249 
+ušt32_t
+ 
+	mtýi_Ï¡_ack_£Á
+;
+
+250 
+ušt32_t
+ 
+	mtýi_Ï¡_d©a_»cv
+;
+
+251 
+ušt32_t
+ 
+	mtýi_Ï¡_ack_»cv
+;
+
+254 
+ušt32_t
+ 
+	mtýi_pmtu
+;
+
+255 
+ušt32_t
+ 
+	mtýi_rcv_s¡h»sh
+;
+
+256 
+ušt32_t
+ 
+	mtýi_¹t
+;
+
+257 
+ušt32_t
+ 
+	mtýi_¹tv¬
+;
+
+258 
+ušt32_t
+ 
+	mtýi_¢d_s¡h»sh
+;
+
+259 
+ušt32_t
+ 
+	mtýi_¢d_cwnd
+;
+
+260 
+ušt32_t
+ 
+	mtýi_advmss
+;
+
+261 
+ušt32_t
+ 
+	mtýi_»Üd”šg
+;
+
+263 
+ušt32_t
+ 
+	mtýi_rcv_¹t
+;
+
+264 
+ušt32_t
+ 
+	mtýi_rcv_¥aû
+;
+
+266 
+ušt32_t
+ 
+	mtýi_tÙ®_»Œªs
+;
+
+271 
+	#TCP_MD5SIG_MAXKEYLEN
+ 80
+
+	)
+
+274 
+	#TCP_MD5SIG_FLAG_PREFIX
+ 1
+
+	)
+
+276 
+	stý_md5sig
+
+
+278 
+sockaddr_¡Üage
+ 
+	mtým_addr
+;
+
+279 
+ušt8_t
+ 
+	mtým_æags
+;
+
+280 
+ušt8_t
+ 
+	mtým_´efixËn
+;
+
+281 
+ušt16_t
+ 
+	mtým_keyËn
+;
+
+282 
+ušt32_t
+ 
+	m__tým_·d
+;
+
+283 
+ušt8_t
+ 
+	mtým_key
+[
+TCP_MD5SIG_MAXKEYLEN
+];
+
+287 
+	stý_»·œ_Ýt
+
+
+289 
+ušt32_t
+ 
+	mÝt_code
+;
+
+290 
+ušt32_t
+ 
+	mÝt_v®
+;
+
+296 
+	mTCP_NO_QUEUE
+,
+
+297 
+	mTCP_RECV_QUEUE
+,
+
+298 
+	mTCP_SEND_QUEUE
+,
+
+299 
+	mTCP_QUEUES_NR
+,
+
+303 
+	#TCP_COOKIE_MIN
+ 8
+
+	)
+
+304 
+	#TCP_COOKIE_MAX
+ 16
+
+	)
+
+305 
+	#TCP_COOKIE_PAIR_SIZE
+ (2*
+TCP_COOKIE_MAX
+)
+
+	)
+
+308 
+	#TCP_COOKIE_IN_ALWAYS
+ (1 << 0è
+
+	)
+
+309 
+	#TCP_COOKIE_OUT_NEVER
+ (1 << 1è
+
+	)
+
+313 
+	#TCP_S_DATA_IN
+ (1 << 2è
+
+	)
+
+314 
+	#TCP_S_DATA_OUT
+ (1 << 3è
+
+	)
+
+316 
+	#TCP_MSS_DEFAULT
+ 536U
+
+	)
+
+317 
+	#TCP_MSS_DESIRED
+ 1220U
+
+	)
+
+319 
+	stý_cook›_Œª§ùiÚs
+
+
+321 
+ušt16_t
+ 
+	mtýù_æags
+;
+
+322 
+ušt8_t
+ 
+	m__týù_·d1
+;
+
+323 
+ušt8_t
+ 
+	mtýù_cook›_desœed
+;
+
+324 
+ušt16_t
+ 
+	mtýù_s_d©a_desœed
+;
+
+325 
+ušt16_t
+ 
+	mtýù_u£d
+;
+
+326 
+ušt8_t
+ 
+	mtýù_v®ue
+[
+TCP_MSS_DEFAULT
+];
+
+330 
+	stý_»·œ_wšdow
+
+
+332 
+ušt32_t
+ 
+	m¢d_wl1
+;
+
+333 
+ušt32_t
+ 
+	m¢d_wnd
+;
+
+334 
+ušt32_t
+ 
+	mmax_wšdow
+;
+
+335 
+ušt32_t
+ 
+	mrcv_wnd
+;
+
+336 
+ušt32_t
+ 
+	mrcv_wup
+;
+
+340 
+	stý_z”ocÝy_»ûive
+
+
+342 
+ušt64_t
+ 
+	madd»ss
+;
+
+343 
+ušt32_t
+ 
+	mËngth
+;
+
+344 
+ušt32_t
+ 
+	m»cv_sk�_hšt
+;
+
+	@/usr/include/pwd.h
+
+22 #iâdef 
+_PWD_H
+
+
+23 
+	#_PWD_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+29 
+	~<b™s/ty³s.h
+>
+
+31 
+	#__Ãed_size_t
+
+
+	)
+
+32 
+	~<¡ddef.h
+>
+
+34 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K
+
+
+37 #iâdeà
+__gid_t_defšed
+
+
+38 
+__gid_t
+ 
+	tgid_t
+;
+
+39 
+	#__gid_t_defšed
+
+
+	)
+
+42 #iâdeà
+__uid_t_defšed
+
+
+43 
+__uid_t
+ 
+	tuid_t
+;
+
+44 
+	#__uid_t_defšed
+
+
+	)
+
+49 
+	s·sswd
+
+
+51 *
+	mpw_Çme
+;
+
+52 *
+	mpw_·sswd
+;
+
+54 
+__uid_t
+ 
+	mpw_uid
+;
+
+55 
+__gid_t
+ 
+	mpw_gid
+;
+
+56 *
+	mpw_gecos
+;
+
+57 *
+	mpw_dœ
+;
+
+58 *
+	mpw_sh–l
+;
+
+62 #ifdeà
+__USE_MISC
+
+
+63 
+	~<b™s/ty³s/FILE.h
+>
+
+67 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+72 

+£�w’t
+ ();
+
+78 

+’dpw’t
+ ();
+
+84 

+·sswd
+ *
+g‘pw’t
+ ();
+
+87 #ifdef 
+__USE_MISC
+
+
+94 

+·sswd
+ *
+	$fg‘pw’t
+ (
+FILE
+ *
+__¡»am
+è
+	`__nÚnuÎ
+ ((1));
+
+102 

+	`pu�w’t
+ (cÚ¡ 
+·sswd
+ *
+__»¡riù
+ 
+__p
+,
+
+103 
+FILE
+ *
+__»¡riù
+ 
+__f
+);
+
+110 

+·sswd
+ *
+	`g‘pwuid
+ (
+__uid_t
+ 
+__uid
+);
+
+116 

+·sswd
+ *
+	$g‘pwÇm
+ (cÚ¡ *
+__Çme
+è
+	`__nÚnuÎ
+ ((1));
+
+118 #ifdeà
+__USE_POSIX
+
+
+120 #ifdeà
+__USE_MISC
+
+
+123 
+	#NSS_BUFLEN_PASSWD
+ 1024
+
+	)
+
+134 #ifdeà
+__USE_MISC
+
+
+139 

+	$g‘pw’t_r
+ (
+·sswd
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+140 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+141 
+·sswd
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+142 
+	`__nÚnuÎ
+ ((1, 2, 4))
+
+143 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+146 

+	$g‘pwuid_r
+ (
+__uid_t
+ 
+__uid
+,
+
+147 
+·sswd
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+148 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+149 
+·sswd
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+150 
+	`__nÚnuÎ
+ ((2, 3, 5))
+
+151 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+153 

+	$g‘pwÇm_r
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+154 
+·sswd
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+155 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+156 
+·sswd
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+157 
+	`__nÚnuÎ
+ ((1, 2, 3, 5))
+
+158 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+161 #ifdef 
+__USE_MISC
+
+
+169 

+	$fg‘pw’t_r
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+170 
+·sswd
+ *
+__»¡riù
+ 
+__»suÉbuf
+,
+
+171 *
+__»¡riù
+ 
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+172 
+·sswd
+ **
+__»¡riù
+ 
+__»suÉ
+)
+
+173 
+	`__nÚnuÎ
+ ((1, 2, 3, 5))
+
+174 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+179 #ifdeà
+__USE_GNU
+
+
+188 

+	`g‘pw
+ (
+__uid_t
+ 
+__uid
+, *
+__bufãr
+);
+
+191 
+__END_DECLS
+
+
+	@/usr/include/resolv.h
+
+52 #iâdeà
+_RESOLV_H_
+
+
+53 
+	#_RESOLV_H_
+
+
+	)
+
+55 
+	~<sys/cdefs.h
+>
+
+56 
+	~<sys/·¿m.h
+>
+
+57 
+	~<sys/ty³s.h
+>
+
+58 
+	~<¡dio.h
+>
+
+59 
+	~<Ãtš‘/š.h
+>
+
+60 
+	~<¬·/Çme£r.h
+>
+
+61 
+	~<b™s/ty³s/»s_¡©e.h
+>
+
+66 
+	#LOCALDOMAINPARTS
+ 2
+
+	)
+
+68 
+	#RES_TIMEOUT
+ 5
+
+	)
+
+69 
+	#RES_MAXNDOTS
+ 15
+
+	)
+
+70 
+	#RES_MAXRETRANS
+ 30
+
+	)
+
+71 
+	#RES_MAXRETRY
+ 5
+
+	)
+
+72 
+	#RES_DFLRETRY
+ 2
+
+	)
+
+73 
+	#RES_MAXTIME
+ 65535
+
+	)
+
+75 
+	#n§ddr
+ 
+n§ddr_li¡
+[0]
+
+	)
+
+85 
+	#__RES
+ 19991006
+
+	)
+
+93 #iâdeà
+_PATH_RESCONF
+
+
+94 
+	#_PATH_RESCONF
+ "/‘c/»sÞv.cÚf"
+
+	)
+
+97 
+	s»s_sym
+ {
+
+98 
+	mnumb”
+;
+
+99 * 
+	mÇme
+;
+
+100 * 
+	mhumªÇme
+;
+
+106 
+	#RES_INIT
+ 0x00000001
+
+	)
+
+107 
+	#RES_DEBUG
+ 0x00000002
+
+	)
+
+108 
+	#RES_AAONLY
+ \
+
+109 
+	`__glibc_maüo_w¬nšg
+ ("RES_AAONLY i d•»ÿ‹d"è0x00000004
+
+	)
+
+110 
+	#RES_USEVC
+ 0x00000008
+
+	)
+
+111 
+	#RES_PRIMARY
+ \
+
+112 
+	`__glibc_maüo_w¬nšg
+ ("RES_PRIMARY i d•»ÿ‹d"è0x00000010
+
+	)
+
+113 
+	#RES_IGNTC
+ 0x00000020
+
+	)
+
+114 
+	#RES_RECURSE
+ 0x00000040
+
+	)
+
+115 
+	#RES_DEFNAMES
+ 0x00000080
+
+	)
+
+116 
+	#RES_STAYOPEN
+ 0x00000100
+
+	)
+
+117 
+	#RES_DNSRCH
+ 0x00000200
+
+	)
+
+118 
+	#RES_NOALIASES
+ 0x00001000
+
+	)
+
+119 
+	#RES_ROTATE
+ 0x00004000
+
+	)
+
+120 
+	#RES_NOCHECKNAME
+ \
+
+121 
+	`__glibc_maüo_w¬nšg
+ ("RES_NOCHECKNAME i d•»ÿ‹d"è0x00008000
+
+	)
+
+122 
+	#RES_KEEPTSIG
+ \
+
+123 
+	`__glibc_maüo_w¬nšg
+ ("RES_KEEPTSIG i d•»ÿ‹d"è0x00010000
+
+	)
+
+124 
+	#RES_BLAST
+ \
+
+125 
+	`__glibc_maüo_w¬nšg
+ ("RES_BLAST i d•»ÿ‹d"è0x00020000
+
+	)
+
+126 
+	#RES_USE_EDNS0
+ 0x00100000
+
+	)
+
+127 
+	#RES_SNGLKUP
+ 0x00200000
+
+	)
+
+128 
+	#RES_SNGLKUPREOP
+ 0x00400000
+
+	)
+
+130 
+	#RES_USE_DNSSEC
+ 0x00800000
+
+	)
+
+131 
+	#RES_NOTLDQUERY
+ 0x01000000
+
+	)
+
+133 
+	#RES_NORELOAD
+ 0x02000000
+
+	)
+
+134 
+	#RES_TRUSTAD
+ 0x04000000
+
+	)
+
+135 
+	#RES_NOAAAA
+ 0x08000000
+
+	)
+
+137 
+	#RES_DEFAULT
+ (
+RES_RECURSE
+|
+RES_DEFNAMES
+|
+RES_DNSRCH
+)
+
+	)
+
+142 
+	#RES_PRF_STATS
+ 0x00000001
+
+	)
+
+143 
+	#RES_PRF_UPDATE
+ 0x00000002
+
+	)
+
+144 
+	#RES_PRF_CLASS
+ 0x00000004
+
+	)
+
+145 
+	#RES_PRF_CMD
+ 0x00000008
+
+	)
+
+146 
+	#RES_PRF_QUES
+ 0x00000010
+
+	)
+
+147 
+	#RES_PRF_ANS
+ 0x00000020
+
+	)
+
+148 
+	#RES_PRF_AUTH
+ 0x00000040
+
+	)
+
+149 
+	#RES_PRF_ADD
+ 0x00000080
+
+	)
+
+150 
+	#RES_PRF_HEAD1
+ 0x00000100
+
+	)
+
+151 
+	#RES_PRF_HEAD2
+ 0x00000200
+
+	)
+
+152 
+	#RES_PRF_TTLID
+ 0x00000400
+
+	)
+
+153 
+	#RES_PRF_HEADX
+ 0x00000800
+
+	)
+
+154 
+	#RES_PRF_QUERY
+ 0x00001000
+
+	)
+
+155 
+	#RES_PRF_REPLY
+ 0x00002000
+
+	)
+
+156 
+	#RES_PRF_INIT
+ 0x00004000
+
+	)
+
+160 
+__BEGIN_DECLS
+
+
+161 

+__»s_¡©e
+ *
+	$__»s_¡©e
+(è
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+162 
+__END_DECLS
+
+
+163 
+	#_»s
+ (*
+	`__»s_¡©e
+())
+
+	)
+
+165 
+	#å_nqu”y
+ 
+__å_nqu”y
+
+
+	)
+
+166 
+	#å_qu”y
+ 
+__å_qu”y
+
+
+	)
+
+167 
+	#ho¡®Ÿs
+ 
+__ho¡®Ÿs
+
+
+	)
+
+168 
+	#p_qu”y
+ 
+__p_qu”y
+
+
+	)
+
+169 
+	#»s_þo£
+ 
+__»s_þo£
+
+
+	)
+
+170 
+	#»s_š™
+ 
+__»s_š™
+
+
+	)
+
+171 
+	#»s_isour£rv”
+ 
+__»s_isour£rv”
+
+
+	)
+
+173 #ifdeà
+_LIBC
+
+
+174 
+	#__RESOLV_DEPRECATED
+
+
+	)
+
+175 
+	#__RESOLV_DEPRECATED_MSG
+(
+msg
+)
+
+	)
+
+177 
+	#__RESOLV_DEPRECATED
+ 
+__©Œibu‹_d•»ÿ‹d__
+
+
+	)
+
+178 
+	#__RESOLV_DEPRECATED_MSG
+(
+msg
+è
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ (msg)
+
+	)
+
+181 
+__BEGIN_DECLS
+
+
+182 
+	$å_nqu”y
+ (cÚ¡ *, , 
+FILE
+ *è
+__THROW
+
+
+183 
+__RESOLV_DEPRECATED
+;
+
+184 
+	$å_qu”y
+ (cÚ¡ *, 
+FILE
+ *è
+__THROW
+
+
+185 
+__RESOLV_DEPRECATED
+;
+
+186 cÚ¡ * 
+	$ho¡®Ÿs
+ (cÚ¡ *è
+__THROW
+
+
+187 
+	`__RESOLV_DEPRECATED_MSG
+ ("use getaddrinfo instead");
+
+188 
+	$p_qu”y
+ (cÚ¡ *è
+__THROW
+
+
+189 
+__RESOLV_DEPRECATED
+;
+
+190 
+	$»s_þo£
+ (è
+__THROW
+;
+
+191 
+	$»s_š™
+ (è
+__THROW
+;
+
+192 
+	$»s_isour£rv”
+ (cÚ¡ 
+sockaddr_š
+ *è
+__THROW
+
+
+193 
+__RESOLV_DEPRECATED
+;
+
+194 
+	$»s_mkqu”y
+ (, const *, , ,
+
+196 *, è
+__THROW
+;
+
+197 
+	$»s_qu”y
+ (const *, , , *, )
+
+198 
+__THROW
+;
+
+199 
+	$»s_qu”ydomaš
+ (const *, const *, , ,
+
+200 *, è
+__THROW
+;
+
+201 
+	$»s_£¬ch
+ (const *, , , *, )
+
+202 
+__THROW
+;
+
+203 
+	$»s_£nd
+ (const *, , *, )
+
+204 
+__THROW
+;
+
+205 
+__END_DECLS
+
+
+207 
+	#b64_ÁÝ
+ 
+__b64_ÁÝ
+
+
+	)
+
+208 
+	#b64_±Ú
+ 
+__b64_±Ú
+
+
+	)
+
+209 
+	#dn_couÁ_Ïb–s
+ 
+__dn_couÁ_Ïb–s
+
+
+	)
+
+210 
+	#å_»s¡©
+ 
+__å_»s¡©
+
+
+	)
+
+211 
+	#loc_©Ú
+ 
+__loc_©Ú
+
+
+	)
+
+212 
+	#loc_Áß
+ 
+__loc_Áß
+
+
+	)
+
+213 
+	#p_cdÇme
+ 
+__p_cdÇme
+
+
+	)
+
+214 
+	#p_cdÂame
+ 
+__p_cdÂame
+
+
+	)
+
+215 
+	#p_þass
+ 
+__p_þass
+
+
+	)
+
+216 
+	#p_fqÇme
+ 
+__p_fqÇme
+
+
+	)
+
+217 
+	#p_fqÂame
+ 
+__p_fqÂame
+
+
+	)
+
+218 
+	#p_ÝtiÚ
+ 
+__p_ÝtiÚ
+
+
+	)
+
+219 
+	#p_time
+ 
+__p_time
+
+
+	)
+
+220 
+	#p_ty³
+ 
+__p_ty³
+
+
+	)
+
+221 
+	#p_rcode
+ 
+__p_rcode
+
+
+	)
+
+222 
+	#puŽÚg
+ 
+__puŽÚg
+
+
+	)
+
+223 
+	#putshÜt
+ 
+__putshÜt
+
+
+	)
+
+224 
+	#»s_ho¡®Ÿs
+ 
+__»s_ho¡®Ÿs
+
+
+	)
+
+225 
+	#»s_Çmešqu”y
+ 
+__»s_Çmešqu”y
+
+
+	)
+
+226 
+	#»s_nþo£
+ 
+__»s_nþo£
+
+
+	)
+
+227 
+	#»s_nš™
+ 
+__»s_nš™
+
+
+	)
+
+228 
+	#»s_qu”›sm©ch
+ 
+__»s_qu”›sm©ch
+
+
+	)
+
+229 
+	#»s_¿ndomid
+ 
+__»s_¿ndomid
+
+
+	)
+
+230 
+	#sym_ÁÝ
+ 
+__sym_ÁÝ
+
+
+	)
+
+231 
+	#sym_Áos
+ 
+__sym_Áos
+
+
+	)
+
+232 
+	#sym_¡Ú
+ 
+__sym_¡Ú
+
+
+	)
+
+233 
+__BEGIN_DECLS
+
+
+234 
+	$»s_hnok
+ (cÚ¡ *è
+__THROW
+;
+
+235 
+	$»s_ownok
+ (cÚ¡ *è
+__THROW
+;
+
+236 
+	$»s_mažok
+ (cÚ¡ *è
+__THROW
+;
+
+237 
+	$»s_dnok
+ (cÚ¡ *è
+__THROW
+;
+
+238 
+	$sym_¡Ú
+ (cÚ¡ 
+»s_sym
+ *, cÚ¡ *, *è
+__THROW
+
+
+239 
+__RESOLV_DEPRECATED
+;
+
+240 cÚ¡ * 
+	$sym_Áos
+ (cÚ¡ 
+»s_sym
+ *, , *è
+__THROW
+
+
+241 
+__RESOLV_DEPRECATED
+;
+
+242 cÚ¡ * 
+	$sym_ÁÝ
+ (cÚ¡ 
+»s_sym
+ *, , *è
+__THROW
+
+
+243 
+__RESOLV_DEPRECATED
+;
+
+244 
+	$b64_ÁÝ
+ (cÚ¡ *, 
+size_t
+, *, size_t)
+
+245 
+__THROW
+;
+
+246 
+	$b64_±Ú
+ (cÚ¡ *, *, 
+size_t
+è
+__THROW
+;
+
+247 
+	$loc_©Ú
+ (cÚ¡ *
+__ascii
+, *
+__bš¬y
+è
+__THROW
+
+
+248 
+__RESOLV_DEPRECATED
+;
+
+249 cÚ¡ * 
+	$loc_Áß
+ (cÚ¡ *
+__bš¬y
+, *
+__ascii
+è
+__THROW
+
+
+250 
+__RESOLV_DEPRECATED
+;
+
+251 
+	$dn_sk�Çme
+ (const *, const *)
+
+252 
+__THROW
+;
+
+253 
+	$puŽÚg
+ (
+ušt32_t
+, *è
+__THROW
+
+
+254 
+	`__RESOLV_DEPRECATED_MSG
+ ("use NS_PUT16 instead");
+
+255 
+	$putshÜt
+ (
+ušt16_t
+, *è
+__THROW
+
+
+256 
+	`__RESOLV_DEPRECATED_MSG
+ ("use NS_PUT32 instead");
+
+257 cÚ¡ * 
+	$p_þass
+ (è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+258 cÚ¡ * 
+	$p_time
+ (
+ušt32_t
+è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+259 cÚ¡ * 
+	$p_ty³
+ (è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+260 cÚ¡ * 
+	$p_rcode
+ (è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+261 cÚ¡ * 
+	$p_cdÂame
+ (const *, const *,
+
+262 , 
+FILE
+ *è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+263 cÚ¡ * 
+	$p_cdÇme
+ (const *, const *,
+
+264 
+FILE
+ *è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+265 cÚ¡ * 
+	$p_fqÂame
+ (cÚ¡ *
+__ý
+,
+
+266 cÚ¡ *
+__msg
+,
+
+267 , *, è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+268 cÚ¡ * 
+	$p_fqÇme
+ (const *, const *,
+
+269 
+FILE
+ *è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+270 cÚ¡ * 
+	$p_ÝtiÚ
+ (
+__ÝtiÚ
+è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+271 
+	$dn_couÁ_Ïb–s
+ (cÚ¡ *è
+__THROW
+ 
+__RESOLV_DEPRECATED
+;
+
+272 
+	$dn_comp
+ (const *, *, , **,
+
+273 **è
+__THROW
+;
+
+274 
+	$dn_ex·nd
+ (const *, const *,
+
+275 cÚ¡ *, *, è
+__THROW
+;
+
+276 
+	$»s_¿ndomid
+ (è
+__THROW
+
+
+277 
+	`__RESOLV_DEPRECATED_MSG
+ ("use getentropy instead");
+
+278 
+	$»s_Çmešqu”y
+ (const *, , ,
+
+280 cÚ¡ *è
+__THROW
+
+
+281 
+__RESOLV_DEPRECATED
+;
+
+282 
+	$»s_qu”›sm©ch
+ (const *,
+
+285 cÚ¡ *è
+__THROW
+
+
+286 
+__RESOLV_DEPRECATED
+;
+
+288 
+	$»s_nš™
+ (
+»s_¡©e
+è
+__THROW
+;
+
+289 
+	$å_»s¡©
+ (cÚ¡ 
+»s_¡©e
+, 
+FILE
+ *è
+__THROW
+
+
+290 
+__RESOLV_DEPRECATED
+;
+
+291 cÚ¡ * 
+	$»s_ho¡®Ÿs
+ (cÚ¡ 
+»s_¡©e
+, cÚ¡ *, *, 
+size_t
+)
+
+292 
+__THROW
+ 
+	`__RESOLV_DEPRECATED_MSG
+ ("use getaddrinfo instead");
+
+293 
+	$»s_nqu”y
+ (
+»s_¡©e
+, const *, , ,
+
+294 *, è
+__THROW
+;
+
+295 
+	$»s_n£¬ch
+ (
+»s_¡©e
+, const *, , ,
+
+296 *, è
+__THROW
+;
+
+297 
+	$»s_nqu”ydomaš
+ (
+»s_¡©e
+, const *, const *, ,
+
+298 , *, è
+__THROW
+;
+
+299 
+	$»s_nmkqu”y
+ (
+»s_¡©e
+, , const *, , ,
+
+302 
+__THROW
+;
+
+303 
+	$»s_n£nd
+ (
+»s_¡©e
+, const *, ,
+
+304 *, è
+__THROW
+;
+
+305 
+	$»s_nþo£
+ (
+»s_¡©e
+è
+__THROW
+;
+
+307 
+__END_DECLS
+
+
+	@/usr/include/selinux/selinux.h
+
+1 #iâdeà
+_SELINUX_H_
+
+
+2 
+	#_SELINUX_H_
+
+
+	)
+
+4 
+	~<sys/ty³s.h
+>
+
+5 
+	~<¡d¬g.h
+>
+
+7 #ifdeà
+__ýlu¥lus
+
+
+12 

+is_£lšux_’abËd
+();
+
+14 

+is_£lšux_mls_’abËd
+();
+
+17 *
+	t£cur™y_cÚ‹xt_t
+
+
+18 #ifdeà
+	t__GNUC__
+
+
+19 
+	t__©Œibu‹__
+ ((
+	td•»ÿ‹d
+))
+
+24 

+ä“cÚ
+(* 
+cÚ
+);
+
+27 

+ä“cÚ¬y
+(** 
+cÚ
+);
+
+33 

+g‘cÚ
+(** 
+cÚ
+);
+
+34 

+g‘cÚ_¿w
+(** 
+cÚ
+);
+
+44 

+£tcÚ
+(cÚ¡ * 
+cÚ
+);
+
+45 

+£tcÚ_¿w
+(cÚ¡ * 
+cÚ
+);
+
+49 

+g‘pidcÚ
+(
+pid_t
+ 
+pid
+, ** 
+cÚ
+);
+
+50 

+g‘pidcÚ_¿w
+(
+pid_t
+ 
+pid
+, ** 
+cÚ
+);
+
+54 

+g‘´evcÚ
+(** 
+cÚ
+);
+
+55 

+g‘´evcÚ_¿w
+(** 
+cÚ
+);
+
+59 

+g‘pid´evcÚ
+(
+pid_t
+ 
+pid
+, ** 
+cÚ
+);
+
+60 

+g‘pid´evcÚ_¿w
+(
+pid_t
+ 
+pid
+, ** 
+cÚ
+);
+
+65 

+g‘execcÚ
+(** 
+cÚ
+);
+
+66 

+g‘execcÚ_¿w
+(** 
+cÚ
+);
+
+70 

+£‹xeccÚ
+(cÚ¡ * 
+cÚ
+);
+
+71 

+£‹xeccÚ_¿w
+(cÚ¡ * 
+cÚ
+);
+
+76 

+g‘fsü—‹cÚ
+(** 
+cÚ
+);
+
+77 

+g‘fsü—‹cÚ_¿w
+(** 
+cÚ
+);
+
+81 

+£tfsü—‹cÚ
+(cÚ¡ * 
+cÚ‹xt
+);
+
+82 

+£tfsü—‹cÚ_¿w
+(cÚ¡ * 
+cÚ‹xt
+);
+
+87 

+g‘keyü—‹cÚ
+(** 
+cÚ
+);
+
+88 

+g‘keyü—‹cÚ_¿w
+(** 
+cÚ
+);
+
+92 

+£tkeyü—‹cÚ
+(cÚ¡ * 
+cÚ‹xt
+);
+
+93 

+£tkeyü—‹cÚ_¿w
+(cÚ¡ * 
+cÚ‹xt
+);
+
+98 

+g‘sockü—‹cÚ
+(** 
+cÚ
+);
+
+99 

+g‘sockü—‹cÚ_¿w
+(** 
+cÚ
+);
+
+103 

+£tsockü—‹cÚ
+(cÚ¡ * 
+cÚ‹xt
+);
+
+104 

+£tsockü—‹cÚ_¿w
+(cÚ¡ * 
+cÚ‹xt
+);
+
+110 

+g‘fžecÚ
+(cÚ¡ *
+·th
+, ** 
+cÚ
+);
+
+111 

+g‘fžecÚ_¿w
+(cÚ¡ *
+·th
+, ** 
+cÚ
+);
+
+112 

+lg‘fžecÚ
+(cÚ¡ *
+·th
+, ** 
+cÚ
+);
+
+113 

+lg‘fžecÚ_¿w
+(cÚ¡ *
+·th
+, ** 
+cÚ
+);
+
+114 

+fg‘fžecÚ
+(
+fd
+, ** 
+cÚ
+);
+
+115 

+fg‘fžecÚ_¿w
+(
+fd
+, ** 
+cÚ
+);
+
+118 

+£tfžecÚ
+(cÚ¡ *
+·th
+, cÚ¡ * 
+cÚ
+);
+
+119 

+£tfžecÚ_¿w
+(cÚ¡ *
+·th
+, cÚ¡ * 
+cÚ
+);
+
+120 

+l£tfžecÚ
+(cÚ¡ *
+·th
+, cÚ¡ * 
+cÚ
+);
+
+121 

+l£tfžecÚ_¿w
+(cÚ¡ *
+·th
+, cÚ¡ * 
+cÚ
+);
+
+122 

+f£tfžecÚ
+(
+fd
+, cÚ¡ * 
+cÚ
+);
+
+123 

+f£tfžecÚ_¿w
+(
+fd
+, cÚ¡ * 
+cÚ
+);
+
+129 

+g‘³”cÚ
+(
+fd
+, ** 
+cÚ
+);
+
+130 

+g‘³”cÚ_¿w
+(
+fd
+, ** 
+cÚ
+);
+
+134 
+	tacûss_veùÜ_t
+;
+
+135 
+	t£cur™y_þass_t
+;
+
+137 
+	sav_decisiÚ
+ {
+
+138 
+acûss_veùÜ_t
+ 
+	g®lowed
+;
+
+139 
+acûss_veùÜ_t
+ 
+	gdecided
+;
+
+140 
+acûss_veùÜ_t
+ 
+	gaud™®low
+;
+
+141 
+acûss_veùÜ_t
+ 
+	gaud™d’y
+;
+
+142 
+	g£qno
+;
+
+143 
+	gæags
+;
+
+147 
+	#SELINUX_AVD_FLAGS_PERMISSIVE
+ 0x0001
+
+	)
+
+150 
+	s£lšux_Ýt
+ {
+
+151 
+	gty³
+;
+
+152 cÚ¡ *
+	gv®ue
+;
+
+156 
+	u£lšux_ÿÎback
+ {
+
+160 #ifdeà
+__GNUC__
+
+
+161 
+__©Œibu‹__
+ ((
+fÜm©
+(
+´štf
+, 2, 3)))
+
+163 (*
+	gfunc_log
+è(
+	gty³
+, cÚ¡ *
+	gfmt
+, ...);
+
+166 (*
+	gfunc_aud™
+è(*
+	gaud™d©a
+, 
+£cur™y_þass_t
+ 
+	gþs
+,
+
+167 *
+	gmsgbuf
+, 
+size_t
+ 
+	gmsgbufsize
+);
+
+169 (*
+	gfunc_v®id©e
+è(**
+	gùx
+);
+
+171 (*
+	gfunc_£‹nfÜû
+è(
+	g’fÜcšg
+);
+
+173 (*
+	gfunc_pÞicylßd
+è(
+	g£qno
+);
+
+176 
+	#SELINUX_CB_LOG
+ 0
+
+	)
+
+177 
+	#SELINUX_CB_AUDIT
+ 1
+
+	)
+
+178 
+	#SELINUX_CB_VALIDATE
+ 2
+
+	)
+
+179 
+	#SELINUX_CB_SETENFORCE
+ 3
+
+	)
+
+180 
+	#SELINUX_CB_POLICYLOAD
+ 4
+
+	)
+
+182 

+£lšux_ÿÎback
+ 
+£lšux_g‘_ÿÎback
+(
+ty³
+);
+
+183 

+£lšux_£t_ÿÎback
+(
+ty³
+, 
+£lšux_ÿÎback
+ 
+cb
+);
+
+186 
+	#SELINUX_ERROR
+ 0
+
+	)
+
+187 
+	#SELINUX_WARNING
+ 1
+
+	)
+
+188 
+	#SELINUX_INFO
+ 2
+
+	)
+
+189 
+	#SELINUX_AVC
+ 3
+
+	)
+
+190 
+	#SELINUX_POLICYLOAD
+ 4
+
+	)
+
+191 
+	#SELINUX_SETENFORCE
+ 5
+
+	)
+
+192 
+	#SELINUX_TRANS_DIR
+ "/v¬/run/£Œªs"
+
+	)
+
+195 

+£cur™y_compu‹_av
+(cÚ¡ * 
+scÚ
+,
+
+196 cÚ¡ * 
+tcÚ
+,
+
+197 
+£cur™y_þass_t
+ 
+tþass
+,
+
+198 
+acûss_veùÜ_t
+ 
+»que¡ed
+,
+
+199 
+av_decisiÚ
+ *
+avd
+);
+
+200 

+£cur™y_compu‹_av_¿w
+(cÚ¡ * 
+scÚ
+,
+
+201 cÚ¡ * 
+tcÚ
+,
+
+202 
+£cur™y_þass_t
+ 
+tþass
+,
+
+203 
+acûss_veùÜ_t
+ 
+»que¡ed
+,
+
+204 
+av_decisiÚ
+ *
+avd
+);
+
+206 

+£cur™y_compu‹_av_æags
+(cÚ¡ * 
+scÚ
+,
+
+207 cÚ¡ * 
+tcÚ
+,
+
+208 
+£cur™y_þass_t
+ 
+tþass
+,
+
+209 
+acûss_veùÜ_t
+ 
+»que¡ed
+,
+
+210 
+av_decisiÚ
+ *
+avd
+);
+
+211 

+£cur™y_compu‹_av_æags_¿w
+(cÚ¡ * 
+scÚ
+,
+
+212 cÚ¡ * 
+tcÚ
+,
+
+213 
+£cur™y_þass_t
+ 
+tþass
+,
+
+214 
+acûss_veùÜ_t
+ 
+»que¡ed
+,
+
+215 
+av_decisiÚ
+ *
+avd
+);
+
+219 

+£cur™y_compu‹_ü—‹
+(cÚ¡ * 
+scÚ
+,
+
+220 cÚ¡ * 
+tcÚ
+,
+
+221 
+£cur™y_þass_t
+ 
+tþass
+,
+
+222 ** 
+ÃwcÚ
+);
+
+223 

+£cur™y_compu‹_ü—‹_¿w
+(cÚ¡ * 
+scÚ
+,
+
+224 cÚ¡ * 
+tcÚ
+,
+
+225 
+£cur™y_þass_t
+ 
+tþass
+,
+
+226 ** 
+ÃwcÚ
+);
+
+227 

+£cur™y_compu‹_ü—‹_Çme
+(cÚ¡ * 
+scÚ
+,
+
+228 cÚ¡ * 
+tcÚ
+,
+
+229 
+£cur™y_þass_t
+ 
+tþass
+,
+
+230 cÚ¡ *
+objÇme
+,
+
+231 ** 
+ÃwcÚ
+);
+
+232 

+£cur™y_compu‹_ü—‹_Çme_¿w
+(cÚ¡ * 
+scÚ
+,
+
+233 cÚ¡ * 
+tcÚ
+,
+
+234 
+£cur™y_þass_t
+ 
+tþass
+,
+
+235 cÚ¡ *
+objÇme
+,
+
+236 ** 
+ÃwcÚ
+);
+
+240 

+£cur™y_compu‹_»Ïb–
+(cÚ¡ * 
+scÚ
+,
+
+241 cÚ¡ * 
+tcÚ
+,
+
+242 
+£cur™y_þass_t
+ 
+tþass
+,
+
+243 ** 
+ÃwcÚ
+);
+
+244 

+£cur™y_compu‹_»Ïb–_¿w
+(cÚ¡ * 
+scÚ
+,
+
+245 cÚ¡ * 
+tcÚ
+,
+
+246 
+£cur™y_þass_t
+ 
+tþass
+,
+
+247 ** 
+ÃwcÚ
+);
+
+251 

+£cur™y_compu‹_memb”
+(cÚ¡ * 
+scÚ
+,
+
+252 cÚ¡ * 
+tcÚ
+,
+
+253 
+£cur™y_þass_t
+ 
+tþass
+,
+
+254 ** 
+ÃwcÚ
+);
+
+255 

+£cur™y_compu‹_memb”_¿w
+(cÚ¡ * 
+scÚ
+,
+
+256 cÚ¡ * 
+tcÚ
+,
+
+257 
+£cur™y_þass_t
+ 
+tþass
+,
+
+258 ** 
+ÃwcÚ
+);
+
+266 

+£cur™y_compu‹_u£r
+(cÚ¡ * 
+scÚ
+,
+
+267 cÚ¡ *
+u£ºame
+,
+
+268 *** 
+cÚ
+);
+
+269 

+£cur™y_compu‹_u£r_¿w
+(cÚ¡ * 
+scÚ
+,
+
+270 cÚ¡ *
+u£ºame
+,
+
+271 *** 
+cÚ
+);
+
+277 

+£cur™y_v®id©‘¿ns
+(cÚ¡ *
+scÚ
+,
+
+278 cÚ¡ *
+tcÚ
+,
+
+279 
+£cur™y_þass_t
+ 
+tþass
+,
+
+280 cÚ¡ *
+ÃwcÚ
+);
+
+281 

+£cur™y_v®id©‘¿ns_¿w
+(cÚ¡ *
+scÚ
+,
+
+282 cÚ¡ *
+tcÚ
+,
+
+283 
+£cur™y_þass_t
+ 
+tþass
+,
+
+284 cÚ¡ *
+ÃwcÚ
+);
+
+287 

+£cur™y_lßd_pÞicy
+(cÚ¡ *
+d©a
+, 
+size_t
+ 
+Ën
+);
+
+291 

+£cur™y_g‘_š™Ÿl_cÚ‹xt
+(cÚ¡ *
+Çme
+,
+
+292 ** 
+cÚ
+);
+
+293 

+£cur™y_g‘_š™Ÿl_cÚ‹xt_¿w
+(cÚ¡ *
+Çme
+,
+
+294 ** 
+cÚ
+);
+
+306 

+£lšux_mklßd_pÞicy
+(
+´e£rveboÞs
+);
+
+323 

+£lšux_š™_lßd_pÞicy
+(*
+’fÜû
+);
+
+327 *
+	gÇme
+;
+
+328 
+	gv®ue
+;
+
+329 } 
+	tSELboÞ—n
+;
+
+333 

+£cur™y_£t_boÞ—n_li¡
+(
+size_t
+ 
+boÞút
+,
+
+334 
+SELboÞ—n
+ * 
+boÞli¡
+, 
+³rmª’t
+);
+
+339 

+£cur™y_lßd_boÞ—ns
+(*
+·th
+)
+
+340 #ifdeà
+__GNUC__
+
+
+341 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+))
+
+346 

+£cur™y_check_cÚ‹xt
+(cÚ¡ * 
+cÚ
+);
+
+347 

+£cur™y_check_cÚ‹xt_¿w
+(cÚ¡ * 
+cÚ
+);
+
+350 

+£cur™y_ÿnÚiÿlize_cÚ‹xt
+(cÚ¡ * 
+cÚ
+,
+
+351 ** 
+ÿnÚcÚ
+);
+
+352 

+£cur™y_ÿnÚiÿlize_cÚ‹xt_¿w
+(cÚ¡ * 
+cÚ
+,
+
+353 ** 
+ÿnÚcÚ
+);
+
+356 

+£cur™y_g‘’fÜû
+();
+
+359 

+£cur™y_£‹nfÜû
+(
+v®ue
+);
+
+362 

+£cur™y_»jeù_unknown
+();
+
+365 

+£cur™y_d’y_unknown
+();
+
+368 

+£cur™y_g‘_check»q´Ù
+();
+
+371 

+£cur™y_di§bË
+();
+
+374 

+£cur™y_pÞicyv”s
+();
+
+377 

+£cur™y_g‘_boÞ—n_Çmes
+(***
+Çmes
+, *
+Ën
+);
+
+380 

+£cur™y_g‘_boÞ—n_³ndšg
+(cÚ¡ *
+Çme
+);
+
+383 

+£cur™y_g‘_boÞ—n_aùive
+(cÚ¡ *
+Çme
+);
+
+386 

+£cur™y_£t_boÞ—n
+(cÚ¡ *
+Çme
+, 
+v®ue
+);
+
+389 

+£cur™y_comm™_boÞ—ns
+();
+
+392 
+	s£cur™y_þass_m­pšg
+ {
+
+393 cÚ¡ *
+	gÇme
+;
+
+394 cÚ¡ *
+	g³rms
+[(
+acûss_veùÜ_t
+) * 8 + 1];
+
+416 

+£lšux_£t_m­pšg
+(
+£cur™y_þass_m­pšg
+ *
+m­
+);
+
+421 
+£cur™y_þass_t
+ 
+mode_to_£cur™y_þass
+(
+mode_t
+ 
+mode
+);
+
+423 
+£cur™y_þass_t
+ 
+¡ršg_to_£cur™y_þass
+(cÚ¡ *
+Çme
+);
+
+424 
cÚ¡ *
+£cur™y_þass_to_¡ršg
+(
+£cur™y_þass_t
+ 
+þs
+);
+
+427 
cÚ¡ *
+£cur™y_av_³rm_to_¡ršg
+(
+£cur™y_þass_t
+ 
+tþass
+,
+
+428 
+acûss_veùÜ_t
+ 
+³rm
+);
+
+429 
+acûss_veùÜ_t
+ 
+¡ršg_to_av_³rm
+(
+£cur™y_þass_t
+ 
+tþass
+,
+
+430 cÚ¡ *
+Çme
+);
+
+434 

+£cur™y_av_¡ršg
+(
+£cur™y_þass_t
+ 
+tþass
+,
+
+435 
+acûss_veùÜ_t
+ 
+av
+, **
+»suÉ
+);
+
+438 

+´št_acûss_veùÜ
+(
+£cur™y_þass_t
+ 
+tþass
+, 
+acûss_veùÜ_t
+ 
+av
+);
+
+441 

+£lšux_æush_þass_ÿche
+();
+
+446 

+£t_m©ch·thcÚ_´štf
+((*
+f
+è(cÚ¡ *
+fmt
+, ...));
+
+453 

+£t_m©ch·thcÚ_šv®idcÚ
+((*
+f
+è(cÚ¡ *
+·th
+,
+
+454 
+lš’o
+,
+
+455 *
+cÚ‹xt
+));
+
+461 

+£t_m©ch·thcÚ_ÿnÚcÚ
+((*
+f
+è(cÚ¡ *
+·th
+,
+
+462 
+lš’o
+,
+
+463 **
+cÚ‹xt
+));
+
+466 
+	#MATCHPATHCON_BASEONLY
+ 1
+
+	)
+
+467 
+	#MATCHPATHCON_NOTRANS
+ 2
+
+	)
+
+468 
+	#MATCHPATHCON_VALIDATE
+ 4
+
+	)
+
+469 

+£t_m©ch·thcÚ_æags
+(
+æags
+);
+
+479 

+m©ch·thcÚ_š™
+(cÚ¡ *
+·th
+)
+
+480 #ifdeà
+__GNUC__
+
+
+481 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+("Use selabel_open with backend SELABEL_CTX_FILE")))
+
+487 

+m©ch·thcÚ_š™_´efix
+(cÚ¡ *
+·th
+, cÚ¡ *
+´efix
+);
+
+490 

+m©ch·thcÚ_fši
+()
+
+491 #ifdeà
+__GNUC__
+
+
+492 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+("Use selabel_close")))
+
+499 

+»®·th_nÙ_fš®
+(cÚ¡ *
+Çme
+, *
+»sÞved_·th
+);
+
+507 

+m©ch·thcÚ
+(cÚ¡ *
+·th
+,
+
+508 
+mode_t
+ 
+mode
+, ** 
+cÚ
+)
+
+509 #ifdeà
+__GNUC__
+
+
+510 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+("Use selabel_lookup instead")))
+
+516 

+m©ch·thcÚ_šdex
+(cÚ¡ *
+·th
+,
+
+517 
+mode_t
+ 
+mode
+, ** 
+cÚ
+);
+
+524 

+m©ch·thcÚ_fže¥ec_add
+(
+šo_t
+ 
+šo
+, 
+¥ecšd
+, cÚ¡ *
+fže
+);
+
+528 

+m©ch·thcÚ_fže¥ec_de¡roy
+();
+
+531 

+m©ch·thcÚ_fže¥ec_ev®
+();
+
+535 

+m©ch·thcÚ_checkm©ches
+(*
+¡r
+);
+
+540 

+m©chmedŸcÚ
+(cÚ¡ *
+medŸ
+, ** 
+cÚ
+);
+
+547 

+£lšux_g‘’fÜûmode
+(*
+’fÜû
+);
+
+555 
*
+£lšux_boÞ—n_sub
+(cÚ¡ *
+boÞ—n_Çme
+);
+
+562 

+£lšux_g‘pÞicyty³
+(**
+pÞicyty³
+);
+
+569 
cÚ¡ *
+£lšux_pÞicy_roÙ
+();
+
+575 

+£lšux_£t_pÞicy_roÙ
+(cÚ¡ *
+roÙ·th
+);
+
+579 
cÚ¡ *
+£lšux_cu¼’t_pÞicy_·th
+();
+
+580 
cÚ¡ *
+£lšux_bš¬y_pÞicy_·th
+();
+
+581 
cÚ¡ *
+£lšux_çž§ã_cÚ‹xt_·th
+();
+
+582 
cÚ¡ *
+£lšux_»movabË_cÚ‹xt_·th
+();
+
+583 
cÚ¡ *
+£lšux_deçuÉ_cÚ‹xt_·th
+();
+
+584 
cÚ¡ *
+£lšux_u£r_cÚ‹xts_·th
+();
+
+585 
cÚ¡ *
+£lšux_fže_cÚ‹xt_·th
+();
+
+586 
cÚ¡ *
+£lšux_fže_cÚ‹xt_homedœ_·th
+();
+
+587 
cÚ¡ *
+£lšux_fže_cÚ‹xt_loÿl_·th
+();
+
+588 
cÚ¡ *
+£lšux_fže_cÚ‹xt_subs_·th
+();
+
+589 
cÚ¡ *
+£lšux_fže_cÚ‹xt_subs_di¡_·th
+();
+
+590 
cÚ¡ *
+£lšux_homedœ_cÚ‹xt_·th
+();
+
+591 
cÚ¡ *
+£lšux_medŸ_cÚ‹xt_·th
+();
+
+592 
cÚ¡ *
+£lšux_vœtu®_domaš_cÚ‹xt_·th
+();
+
+593 
cÚ¡ *
+£lšux_vœtu®_image_cÚ‹xt_·th
+();
+
+594 
cÚ¡ *
+£lšux_lxc_cÚ‹xts_·th
+();
+
+595 
cÚ¡ *
+£lšux_x_cÚ‹xt_·th
+();
+
+596 
cÚ¡ *
+£lšux_£pgsql_cÚ‹xt_·th
+();
+
+597 
cÚ¡ *
+£lšux_Ý’rc_cÚ‹xts_·th
+();
+
+598 
cÚ¡ *
+£lšux_Ý’ssh_cÚ‹xts_·th
+();
+
+599 
cÚ¡ *
+£lšux_¢­³rd_cÚ‹xts_·th
+();
+
+600 
cÚ¡ *
+£lšux_sy¡emd_cÚ‹xts_·th
+();
+
+601 
cÚ¡ *
+£lšux_cÚ‹xts_·th
+();
+
+602 
cÚ¡ *
+£lšux_£cu»‰y_ty³s_·th
+();
+
+603 
cÚ¡ *
+£lšux_boÞ—ns_subs_·th
+();
+
+605 
cÚ¡ *
+£lšux_boÞ—ns_·th
+()
+
+606 #ifdeà
+__GNUC__
+
+
+607 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+))
+
+610 
cÚ¡ *
+£lšux_cu¡omizabË_ty³s_·th
+();
+
+612 
cÚ¡ *
+£lšux_u£rs_·th
+()
+
+613 #ifdeà
+__GNUC__
+
+
+614 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+))
+
+617 
cÚ¡ *
+£lšux_u£rscÚf_·th
+();
+
+618 
cÚ¡ *
+£lšux_Œª¦©iÚs_·th
+();
+
+619 
cÚ¡ *
+£lšux_cÞÜs_·th
+();
+
+620 
cÚ¡ *
+£lšux_Ãtfž‹r_cÚ‹xt_·th
+();
+
+621 
cÚ¡ *
+£lšux_·th
+();
+
+640 

+£lšux_check_acûss
+(cÚ¡ * 
+scÚ
+, cÚ¡ * 
+tcÚ
+, cÚ¡ *
+tþass
+, cÚ¡ *
+³rm
+, *
+aud™d©a
+);
+
+644 

+£lšux_check_·sswd_acûss
+(
+acûss_veùÜ_t
+ 
+»que¡ed
+)
+
+645 #ifdeà
+__GNUC__
+
+
+646 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+("Use selinux_check_access")))
+
+650 

+checkPasswdAcûss
+(
+acûss_veùÜ_t
+ 
+»que¡ed
+)
+
+651 #ifdeà
+__GNUC__
+
+
+652 
+__©Œibu‹__
+ ((
+d•»ÿ‹d
+("Use selinux_check_access")))
+
+658 

+£lšux_check_£cu»‰y_cÚ‹xt
+(cÚ¡ * 
+‰y_cÚ‹xt
+);
+
+664 

+£t_£lšuxmÁ
+(cÚ¡ *
+mÁ
+);
+
+667 

+£lšuxfs_exi¡s
+();
+
+670 

+fši_£lšuxmÁ
+();
+
+674 

+£‹xecfžecÚ
+(cÚ¡ *
+fž’ame
+, cÚ¡ *
+çÎback_ty³
+);
+
+676 #iâdeà
+DISABLE_RPM
+
+
+678 

+½m_execcÚ
+(
+v”if›d
+,
+
+679 cÚ¡ *
+fž’ame
+,
+
+680 *cÚ¡ 
+¬gv
+[], *cÚ¡ 
+’vp
+[])
+
+681 #ifdeà
+__GNUC__
+
+
+682 
+__©Œibu‹__
+((
+d•»ÿ‹d
+("Use setexecfilecon‡ndƒxecve")))
+
+689 

+is_cÚ‹xt_cu¡omizabË
+(cÚ¡ * 
+scÚ‹xt
+);
+
+696 

+£lšux_Œªs_to_¿w_cÚ‹xt
+(cÚ¡ * 
+Œªs
+,
+
+697 ** 
+¿wp
+);
+
+698 

+£lšux_¿w_to_Œªs_cÚ‹xt
+(cÚ¡ * 
+¿w
+,
+
+699 ** 
+Œª¥
+);
+
+706 

+£lšux_¿w_cÚ‹xt_to_cÞÜ
+(cÚ¡ * 
+¿w
+,
+
+707 **
+cÞÜ_¡r
+);
+
+714 

+g‘£u£rbyÇme
+(cÚ¡ *
+lšuxu£r
+, **
+£u£r
+, **
+Ëv–
+);
+
+721 

+g‘£u£r
+(cÚ¡ *
+u£ºame
+, cÚ¡ *
+£rviû
+,
+
+722 **
+r_£u£r
+, **
+r_Ëv–
+);
+
+725 

+£lšux_fže_cÚ‹xt_cmp
+(cÚ¡ * 
+a
+,
+
+726 cÚ¡ * 
+b
+);
+
+732 

+£lšux_fže_cÚ‹xt_v”ify
+(cÚ¡ *
+·th
+, 
+mode_t
+ 
+mode
+);
+
+735 

+£lšux_l£tfžecÚ_deçuÉ
+(cÚ¡ *
+·th
+);
+
+742 

+£lšux_»£t_cÚfig
+();
+
+744 #ifdeà
+__ýlu¥lus
+
+
+	@/usr/include/signal.h
+
+22 #iâdef 
+_SIGNAL_H
+
+
+23 
+	#_SIGNAL_H
+
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+29 
+	~<b™s/ty³s.h
+>
+
+30 
+	~<b™s/signum-g’”ic.h
+>
+
+32 
+	~<b™s/ty³s/sig_©omic_t.h
+>
+
+34 #ià
+defšed
+ 
+__USE_POSIX
+
+
+35 
+	~<b™s/ty³s/sig£t_t.h
+>
+
+38 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K
+
+
+39 #iâdeà
+__pid_t_defšed
+
+
+40 
+__pid_t
+ 
+	tpid_t
+;
+
+41 
+	#__pid_t_defšed
+
+
+	)
+
+43 #ifdeà
+__USE_XOPEN
+
+
+45 #iâdeà
+__uid_t_defšed
+
+
+46 
+__uid_t
+ 
+	tuid_t
+;
+
+47 
+	#__uid_t_defšed
+
+
+	)
+
+51 #ifdeà
+__USE_POSIX199309
+
+
+53 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+56 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+57 
+	~<b™s/ty³s/sigšfo_t.h
+>
+
+58 
+	~<b™s/sigšfo-cÚ¡s.h
+>
+
+61 #ifdeà
+__USE_MISC
+
+
+62 
+	~<b™s/ty³s/sigv®_t.h
+>
+
+65 #ifdeà
+__USE_POSIX199309
+
+
+66 
+	~<b™s/ty³s/sigev’t_t.h
+>
+
+67 
+	~<b™s/sigev’t-cÚ¡s.h
+>
+
+72 (*
+	t__sighªdËr_t
+) ();
+
+77 
+__sighªdËr_t
+ 
+	$__sysv_sigÇl
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+)
+
+78 
+__THROW
+;
+
+79 #ifdeà
+__USE_GNU
+
+
+80 
+__sighªdËr_t
+ 
+	$sysv_sigÇl
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+)
+
+81 
+__THROW
+;
+
+87 #ifdeà
+__USE_MISC
+
+
+88 
+__sighªdËr_t
+ 
+	$sigÇl
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+)
+
+89 
+__THROW
+;
+
+92 #ifdeà
+__REDIRECT_NTH
+
+
+93 
+__sighªdËr_t
+ 
+	`__REDIRECT_NTH
+ (
+sigÇl
+,
+
+94 (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+),
+
+95 
+__sysv_sigÇl
+);
+
+97 
+	#sigÇl
+ 
+__sysv_sigÇl
+
+
+	)
+
+101 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+
+
+104 
+__sighªdËr_t
+ 
+	$bsd_sigÇl
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+)
+
+105 
+__THROW
+;
+
+111 #ifdeà
+__USE_POSIX
+
+
+112 

+	$kžl
+ (
+__pid_t
+ 
+__pid
+, 
+__sig
+è
+__THROW
+;
+
+115 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+119 

+	$kžÍg
+ (
+__pid_t
+ 
+__pg½
+, 
+__sig
+è
+__THROW
+;
+
+123 

+	$¿i£
+ (
+__sig
+è
+__THROW
+;
+
+125 #ifdeà
+__USE_MISC
+
+
+127 
+__sighªdËr_t
+ 
+	$ssigÇl
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__hªdËr
+)
+
+128 
+__THROW
+;
+
+129 

+	$gsigÇl
+ (
+__sig
+è
+__THROW
+;
+
+132 #ifdeà
+__USE_XOPEN2K8
+
+
+134 

+	`psigÇl
+ (
+__sig
+, cÚ¡ *
+__s
+);
+
+137 

+	`psigšfo
+ (cÚ¡ 
+sigšfo_t
+ *
+__pšfo
+, cÚ¡ *
+__s
+);
+
+149 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+150 #ifdeà
+__GNUC__
+
+
+151 

+	$sig·u£
+ (
+__sig
+è
+	`__asm__
+ ("__xpg_sigpause")
+
+152 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use�he sigsuspend function instead");
+
+154 

+	`__sig·u£
+ (
+__sig_Ü_mask
+, 
+__is_sig
+);
+
+156 
+	#sig·u£
+(
+sig
+è
+	`__sig·u£
+ ((sig), 1)
+
+	)
+
+161 #ifdeà
+__USE_MISC
+
+
+168 
+	#sigmask
+(
+sig
+) \
+
+169 
+	`__glibc_maüo_w¬nšg
+ ("sigmask is deprecated") \
+
+170 (()(1u << ((
+sig
+è- 1)))
+
+	)
+
+173 

+	$sigblock
+ (
+__mask
+è
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+176 

+	$sig£tmask
+ (
+__mask
+è
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+179 

+	$sigg‘mask
+ (è
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+183 #ifdeà
+__USE_MISC
+
+
+184 
+	#NSIG
+ 
+_NSIG
+
+
+	)
+
+187 #ifdeà
+__USE_GNU
+
+
+188 
+__sighªdËr_t
+ 
+	tsighªdËr_t
+;
+
+192 #ifdeà
+__USE_MISC
+
+
+193 
+__sighªdËr_t
+ 
+	tsig_t
+;
+
+196 #ifdeà
+__USE_POSIX
+
+
+199 

+	$sigem±y£t
+ (
+sig£t_t
+ *
+__£t
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+202 

+	$sigfžl£t
+ (
+sig£t_t
+ *
+__£t
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+205 

+	$sigadd£t
+ (
+sig£t_t
+ *
+__£t
+, 
+__signo
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+208 

+	$sigd–£t
+ (
+sig£t_t
+ *
+__£t
+, 
+__signo
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+211 

+	$sigismemb”
+ (cÚ¡ 
+sig£t_t
+ *
+__£t
+, 
+__signo
+)
+
+212 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+214 #ifdeà
+__USE_GNU
+
+
+216 

+	$sigi£m±y£t
+ (cÚ¡ 
+sig£t_t
+ *
+__£t
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+219 

+	$sigªd£t
+ (
+sig£t_t
+ *
+__£t
+, cÚ¡ sig£t_ˆ*
+__Ëá
+,
+
+220 cÚ¡ 
+sig£t_t
+ *
+__right
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2, 3));
+
+223 

+	$sigÜ£t
+ (
+sig£t_t
+ *
+__£t
+, cÚ¡ sig£t_ˆ*
+__Ëá
+,
+
+224 cÚ¡ 
+sig£t_t
+ *
+__right
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2, 3));
+
+229 
+	~<b™s/sigaùiÚ.h
+>
+
+232 

+	$sig´ocmask
+ (
+__how
+, cÚ¡ 
+sig£t_t
+ *
+__»¡riù
+ 
+__£t
+,
+
+233 
+sig£t_t
+ *
+__»¡riù
+ 
+__o£t
+è
+__THROW
+;
+
+240 

+	$sigsu¥’d
+ (cÚ¡ 
+sig£t_t
+ *
+__£t
+è
+	`__nÚnuÎ
+ ((1));
+
+243 

+	$sigaùiÚ
+ (
+__sig
+, cÚ¡ 
+sigaùiÚ
+ *
+__»¡riù
+ 
+__aù
+,
+
+244 
+sigaùiÚ
+ *
+__»¡riù
+ 
+__ßù
+è
+__THROW
+;
+
+247 

+	$sig³ndšg
+ (
+sig£t_t
+ *
+__£t
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+250 #ifdeà
+__USE_POSIX199506
+
+
+255 

+	$sigwa™
+ (cÚ¡ 
+sig£t_t
+ *
+__»¡riù
+ 
+__£t
+, *__»¡riù 
+__sig
+)
+
+256 
+	`__nÚnuÎ
+ ((1, 2));
+
+259 #ifdeà
+__USE_POSIX199309
+
+
+264 

+	$sigwa™šfo
+ (cÚ¡ 
+sig£t_t
+ *
+__»¡riù
+ 
+__£t
+,
+
+265 
+sigšfo_t
+ *
+__»¡riù
+ 
+__šfo
+è
+	`__nÚnuÎ
+ ((1));
+
+272 #iâdeà
+__USE_TIME_BITS64
+
+
+273 

+	$sigtimedwa™
+ (cÚ¡ 
+sig£t_t
+ *
+__»¡riù
+ 
+__£t
+,
+
+274 
+sigšfo_t
+ *
+__»¡riù
+ 
+__šfo
+,
+
+275 cÚ¡ 
+time¥ec
+ *
+__»¡riù
+ 
+__timeout
+)
+
+276 
+	`__nÚnuÎ
+ ((1));
+
+278 #ifdeà
+__REDIRECT
+
+
+279 

+	`__REDIRECT
+ (
+sigtimedwa™
+,
+
+280 (cÚ¡ 
+sig£t_t
+ *
+__»¡riù
+ 
+__£t
+,
+
+281 
+sigšfo_t
+ *
+__»¡riù
+ 
+__šfo
+,
+
+282 cÚ¡ 
+time¥ec
+ *
+__»¡riù
+ 
+__timeout
+),
+
+283 
+__sigtimedwa™64
+)
+
+284 
+	`__nÚnuÎ
+ ((1));
+
+286 
+	#sigtimedwa™
+ 
+__sigtimedwa™64
+
+
+	)
+
+292 

+	$sigqueue
+ (
+__pid_t
+ 
+__pid
+, 
+__sig
+, cÚ¡ 
+sigv®
+ 
+__v®
+)
+
+293 
+__THROW
+;
+
+298 #ifdeà
+__USE_MISC
+
+
+301 
+	~<b™s/sigcÚ‹xt.h
+>
+
+304 

+	$sig»tuº
+ (
+sigcÚ‹xt
+ *
+__sý
+è
+__THROW
+;
+
+309 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+310 
+	#__Ãed_size_t
+
+
+	)
+
+311 
+	~<¡ddef.h
+>
+
+313 
+	~<b™s/ty³s/¡ack_t.h
+>
+
+314 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+316 
+	~<sys/ucÚ‹xt.h
+>
+
+320 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_MISC
+
+
+324 

+	$sigš‹¼u±
+ (
+__sig
+, 
+__š‹¼u±
+è
+__THROW
+
+
+325 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use sigaction with SA_RESTART instead");
+
+327 
+	~<b™s/sig¡ack.h
+>
+
+328 
+	~<b™s/sig¡ksz.h
+>
+
+329 
+	~<b™s/ss_æags.h
+>
+
+333 

+	$sig®t¡ack
+ (cÚ¡ 
+¡ack_t
+ *
+__»¡riù
+ 
+__ss
+,
+
+334 
+¡ack_t
+ *
+__»¡riù
+ 
+__oss
+è
+__THROW
+;
+
+337 #ià((
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+) \
+
+338 || 
+defšed
+ 
+__USE_MISC
+)
+
+339 
+	~<b™s/ty³s/¡ruù_sig¡ack.h
+>
+
+342 #ià((
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K
+) \
+
+343 || 
+defšed
+ 
+__USE_MISC
+)
+
+347 

+	$sig¡ack
+ (
+sig¡ack
+ *
+__ss
+, sig¡ack *
+__oss
+)
+
+348 
+__THROW
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+351 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+355 

+	$sighÞd
+ (
+__sig
+è
+__THROW
+
+
+356 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use�he sigprocmask function instead");
+
+359 

+	$sig»l£
+ (
+__sig
+è
+__THROW
+
+
+360 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use�he sigprocmask function instead");
+
+363 

+	$sigignÜe
+ (
+__sig
+è
+__THROW
+
+
+364 
+	`__©Œibu‹_d•»ÿ‹d_msg__
+ ("Use�he signal function instead");
+
+367 
+__sighªdËr_t
+ 
+	$sig£t
+ (
+__sig
+, 
+__sighªdËr_t
+ 
+__di¥
+è
+__THROW
+
+
+368 
+__©Œibu‹_d•»ÿ‹d_msg__
+
+
+372 #ià
+defšed
+ 
+__USE_POSIX199506
+ || defšed 
+__USE_UNIX98
+
+
+375 
+	~<b™s/±h»adty³s.h
+>
+
+376 
+	~<b™s/sigth»ad.h
+>
+
+383 

+	$__libc_cu¼’t_sig¹mš
+ (è
+__THROW
+;
+
+385 

+	$__libc_cu¼’t_sig¹max
+ (è
+__THROW
+;
+
+387 
+	#SIGRTMIN
+ (
+	`__libc_cu¼’t_sig¹mš
+ ())
+
+	)
+
+388 
+	#SIGRTMAX
+ (
+	`__libc_cu¼’t_sig¹max
+ ())
+
+	)
+
+391 
+	~<b™s/sigÇl_ext.h
+>
+
+393 
+__END_DECLS
+
+
+	@/usr/include/stdint.h
+
+22 #iâdeà
+_STDINT_H
+
+
+23 
+	#_STDINT_H
+ 1
+
+	)
+
+25 
+	#__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+	)
+
+26 
+	~<b™s/libc-h—d”-¡¬t.h
+>
+
+27 
+	~<b™s/ty³s.h
+>
+
+28 
+	~<b™s/wch¬.h
+>
+
+29 
+	~<b™s/wÜdsize.h
+>
+
+34 
+	~<b™s/¡dšt-šŠ.h
+>
+
+37 
+	~<b™s/¡dšt-ušŠ.h
+>
+
+43 
+__št_Ëa¡8_t
+ 
+	tšt_Ëa¡8_t
+;
+
+44 
+__št_Ëa¡16_t
+ 
+	tšt_Ëa¡16_t
+;
+
+45 
+__št_Ëa¡32_t
+ 
+	tšt_Ëa¡32_t
+;
+
+46 
+__št_Ëa¡64_t
+ 
+	tšt_Ëa¡64_t
+;
+
+49 
+__ušt_Ëa¡8_t
+ 
+	tušt_Ëa¡8_t
+;
+
+50 
+__ušt_Ëa¡16_t
+ 
+	tušt_Ëa¡16_t
+;
+
+51 
+__ušt_Ëa¡32_t
+ 
+	tušt_Ëa¡32_t
+;
+
+52 
+__ušt_Ëa¡64_t
+ 
+	tušt_Ëa¡64_t
+;
+
+58 sigÃd 
+	tšt_ç¡8_t
+;
+
+59 #ià
+__WORDSIZE
+ == 64
+
+60 
+	tšt_ç¡16_t
+;
+
+61 
+	tšt_ç¡32_t
+;
+
+62 
+	tšt_ç¡64_t
+;
+
+64 
+	tšt_ç¡16_t
+;
+
+65 
+	tšt_ç¡32_t
+;
+
+66 
+__ex‹nsiÚ__
+
+
+67 
+	tšt_ç¡64_t
+;
+
+71 
+	tušt_ç¡8_t
+;
+
+72 #ià
+__WORDSIZE
+ == 64
+
+73 
+	tušt_ç¡16_t
+;
+
+74 
+	tušt_ç¡32_t
+;
+
+75 
+	tušt_ç¡64_t
+;
+
+77 
+	tušt_ç¡16_t
+;
+
+78 
+	tušt_ç¡32_t
+;
+
+79 
+__ex‹nsiÚ__
+
+
+80 
+	tušt_ç¡64_t
+;
+
+85 #ià
+__WORDSIZE
+ == 64
+
+86 #iâdeà
+__š�Œ_t_defšed
+
+
+87 
+	tš�Œ_t
+;
+
+88 
+	#__š�Œ_t_defšed
+
+
+	)
+
+90 
+	tuš�Œ_t
+;
+
+92 #iâdeà
+__š�Œ_t_defšed
+
+
+93 
+	tš�Œ_t
+;
+
+94 
+	#__š�Œ_t_defšed
+
+
+	)
+
+96 
+	tuš�Œ_t
+;
+
+101 
+__štmax_t
+ 
+	tštmax_t
+;
+
+102 
+__uštmax_t
+ 
+	tuštmax_t
+;
+
+105 #ià
+__WORDSIZE
+ == 64
+
+106 
+	#__INT64_C
+(
+c
+èø## 
+L
+
+
+	)
+
+107 
+	#__UINT64_C
+(
+c
+èø## 
+UL
+
+
+	)
+
+109 
+	#__INT64_C
+(
+c
+èø## 
+LL
+
+
+	)
+
+110 
+	#__UINT64_C
+(
+c
+èø## 
+ULL
+
+
+	)
+
+116 
+	#INT8_MIN
+ (-128)
+
+	)
+
+117 
+	#INT16_MIN
+ (-32767-1)
+
+	)
+
+118 
+	#INT32_MIN
+ (-2147483647-1)
+
+	)
+
+119 
+	#INT64_MIN
+ (-
+	`__INT64_C
+(9223372036854775807)-1)
+
+	)
+
+121 
+	#INT8_MAX
+ (127)
+
+	)
+
+122 
+	#INT16_MAX
+ (32767)
+
+	)
+
+123 
+	#INT32_MAX
+ (2147483647)
+
+	)
+
+124 
+	#INT64_MAX
+ (
+	`__INT64_C
+(9223372036854775807))
+
+	)
+
+127 
+	#UINT8_MAX
+ (255)
+
+	)
+
+128 
+	#UINT16_MAX
+ (65535)
+
+	)
+
+129 
+	#UINT32_MAX
+ (4294967295U)
+
+	)
+
+130 
+	#UINT64_MAX
+ (
+	`__UINT64_C
+(18446744073709551615))
+
+	)
+
+134 
+	#INT_LEAST8_MIN
+ (-128)
+
+	)
+
+135 
+	#INT_LEAST16_MIN
+ (-32767-1)
+
+	)
+
+136 
+	#INT_LEAST32_MIN
+ (-2147483647-1)
+
+	)
+
+137 
+	#INT_LEAST64_MIN
+ (-
+	`__INT64_C
+(9223372036854775807)-1)
+
+	)
+
+139 
+	#INT_LEAST8_MAX
+ (127)
+
+	)
+
+140 
+	#INT_LEAST16_MAX
+ (32767)
+
+	)
+
+141 
+	#INT_LEAST32_MAX
+ (2147483647)
+
+	)
+
+142 
+	#INT_LEAST64_MAX
+ (
+	`__INT64_C
+(9223372036854775807))
+
+	)
+
+145 
+	#UINT_LEAST8_MAX
+ (255)
+
+	)
+
+146 
+	#UINT_LEAST16_MAX
+ (65535)
+
+	)
+
+147 
+	#UINT_LEAST32_MAX
+ (4294967295U)
+
+	)
+
+148 
+	#UINT_LEAST64_MAX
+ (
+	`__UINT64_C
+(18446744073709551615))
+
+	)
+
+152 
+	#INT_FAST8_MIN
+ (-128)
+
+	)
+
+153 #ià
+__WORDSIZE
+ == 64
+
+154 
+	#INT_FAST16_MIN
+ (-9223372036854775807L-1)
+
+	)
+
+155 
+	#INT_FAST32_MIN
+ (-9223372036854775807L-1)
+
+	)
+
+157 
+	#INT_FAST16_MIN
+ (-2147483647-1)
+
+	)
+
+158 
+	#INT_FAST32_MIN
+ (-2147483647-1)
+
+	)
+
+160 
+	#INT_FAST64_MIN
+ (-
+	`__INT64_C
+(9223372036854775807)-1)
+
+	)
+
+162 
+	#INT_FAST8_MAX
+ (127)
+
+	)
+
+163 #ià
+__WORDSIZE
+ == 64
+
+164 
+	#INT_FAST16_MAX
+ (9223372036854775807L)
+
+	)
+
+165 
+	#INT_FAST32_MAX
+ (9223372036854775807L)
+
+	)
+
+167 
+	#INT_FAST16_MAX
+ (2147483647)
+
+	)
+
+168 
+	#INT_FAST32_MAX
+ (2147483647)
+
+	)
+
+170 
+	#INT_FAST64_MAX
+ (
+	`__INT64_C
+(9223372036854775807))
+
+	)
+
+173 
+	#UINT_FAST8_MAX
+ (255)
+
+	)
+
+174 #ià
+__WORDSIZE
+ == 64
+
+175 
+	#UINT_FAST16_MAX
+ (18446744073709551615UL)
+
+	)
+
+176 
+	#UINT_FAST32_MAX
+ (18446744073709551615UL)
+
+	)
+
+178 
+	#UINT_FAST16_MAX
+ (4294967295U)
+
+	)
+
+179 
+	#UINT_FAST32_MAX
+ (4294967295U)
+
+	)
+
+181 
+	#UINT_FAST64_MAX
+ (
+	`__UINT64_C
+(18446744073709551615))
+
+	)
+
+185 #ià
+__WORDSIZE
+ == 64
+
+186 
+	#INTPTR_MIN
+ (-9223372036854775807L-1)
+
+	)
+
+187 
+	#INTPTR_MAX
+ (9223372036854775807L)
+
+	)
+
+188 
+	#UINTPTR_MAX
+ (18446744073709551615UL)
+
+	)
+
+190 
+	#INTPTR_MIN
+ (-2147483647-1)
+
+	)
+
+191 
+	#INTPTR_MAX
+ (2147483647)
+
+	)
+
+192 
+	#UINTPTR_MAX
+ (4294967295U)
+
+	)
+
+197 
+	#INTMAX_MIN
+ (-
+	`__INT64_C
+(9223372036854775807)-1)
+
+	)
+
+199 
+	#INTMAX_MAX
+ (
+	`__INT64_C
+(9223372036854775807))
+
+	)
+
+202 
+	#UINTMAX_MAX
+ (
+	`__UINT64_C
+(18446744073709551615))
+
+	)
+
+208 #ià
+__WORDSIZE
+ == 64
+
+209 
+	#PTRDIFF_MIN
+ (-9223372036854775807L-1)
+
+	)
+
+210 
+	#PTRDIFF_MAX
+ (9223372036854775807L)
+
+	)
+
+212 #ià
+__WORDSIZE32_PTRDIFF_LONG
+
+
+213 
+	#PTRDIFF_MIN
+ (-2147483647L-1)
+
+	)
+
+214 
+	#PTRDIFF_MAX
+ (2147483647L)
+
+	)
+
+216 
+	#PTRDIFF_MIN
+ (-2147483647-1)
+
+	)
+
+217 
+	#PTRDIFF_MAX
+ (2147483647)
+
+	)
+
+222 
+	#SIG_ATOMIC_MIN
+ (-2147483647-1)
+
+	)
+
+223 
+	#SIG_ATOMIC_MAX
+ (2147483647)
+
+	)
+
+226 #ià
+__WORDSIZE
+ == 64
+
+227 
+	#SIZE_MAX
+ (18446744073709551615UL)
+
+	)
+
+229 #ià
+__WORDSIZE32_SIZE_ULONG
+
+
+230 
+	#SIZE_MAX
+ (4294967295UL)
+
+	)
+
+232 
+	#SIZE_MAX
+ (4294967295U)
+
+	)
+
+237 #iâdeà
+WCHAR_MIN
+
+
+239 
+	#WCHAR_MIN
+ 
+__WCHAR_MIN
+
+
+	)
+
+240 
+	#WCHAR_MAX
+ 
+__WCHAR_MAX
+
+
+	)
+
+244 
+	#WINT_MIN
+ (0u)
+
+	)
+
+245 
+	#WINT_MAX
+ (4294967295u)
+
+	)
+
+248 
+	#INT8_C
+(
+c
+è
+	)
+c
+
+249 
+	#INT16_C
+(
+c
+è
+	)
+c
+
+250 
+	#INT32_C
+(
+c
+è
+	)
+c
+
+251 #ià
+__WORDSIZE
+ == 64
+
+252 
+	#INT64_C
+(
+c
+èø## 
+L
+
+
+	)
+
+254 
+	#INT64_C
+(
+c
+èø## 
+LL
+
+
+	)
+
+258 
+	#UINT8_C
+(
+c
+è
+	)
+c
+
+259 
+	#UINT16_C
+(
+c
+è
+	)
+c
+
+260 
+	#UINT32_C
+(
+c
+èø## 
+U
+
+
+	)
+
+261 #ià
+__WORDSIZE
+ == 64
+
+262 
+	#UINT64_C
+(
+c
+èø## 
+UL
+
+
+	)
+
+264 
+	#UINT64_C
+(
+c
+èø## 
+ULL
+
+
+	)
+
+268 #ià
+__WORDSIZE
+ == 64
+
+269 
+	#INTMAX_C
+(
+c
+èø## 
+L
+
+
+	)
+
+270 
+	#UINTMAX_C
+(
+c
+èø## 
+UL
+
+
+	)
+
+272 
+	#INTMAX_C
+(
+c
+èø## 
+LL
+
+
+	)
+
+273 
+	#UINTMAX_C
+(
+c
+èø## 
+ULL
+
+
+	)
+
+276 #ià
+__GLIBC_USE
+ (
+IEC_60559_BFP_EXT_C2X
+)
+
+278 
+	#INT8_WIDTH
+ 8
+
+	)
+
+279 
+	#UINT8_WIDTH
+ 8
+
+	)
+
+280 
+	#INT16_WIDTH
+ 16
+
+	)
+
+281 
+	#UINT16_WIDTH
+ 16
+
+	)
+
+282 
+	#INT32_WIDTH
+ 32
+
+	)
+
+283 
+	#UINT32_WIDTH
+ 32
+
+	)
+
+284 
+	#INT64_WIDTH
+ 64
+
+	)
+
+285 
+	#UINT64_WIDTH
+ 64
+
+	)
+
+287 
+	#INT_LEAST8_WIDTH
+ 8
+
+	)
+
+288 
+	#UINT_LEAST8_WIDTH
+ 8
+
+	)
+
+289 
+	#INT_LEAST16_WIDTH
+ 16
+
+	)
+
+290 
+	#UINT_LEAST16_WIDTH
+ 16
+
+	)
+
+291 
+	#INT_LEAST32_WIDTH
+ 32
+
+	)
+
+292 
+	#UINT_LEAST32_WIDTH
+ 32
+
+	)
+
+293 
+	#INT_LEAST64_WIDTH
+ 64
+
+	)
+
+294 
+	#UINT_LEAST64_WIDTH
+ 64
+
+	)
+
+296 
+	#INT_FAST8_WIDTH
+ 8
+
+	)
+
+297 
+	#UINT_FAST8_WIDTH
+ 8
+
+	)
+
+298 
+	#INT_FAST16_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+299 
+	#UINT_FAST16_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+300 
+	#INT_FAST32_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+301 
+	#UINT_FAST32_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+302 
+	#INT_FAST64_WIDTH
+ 64
+
+	)
+
+303 
+	#UINT_FAST64_WIDTH
+ 64
+
+	)
+
+305 
+	#INTPTR_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+306 
+	#UINTPTR_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+308 
+	#INTMAX_WIDTH
+ 64
+
+	)
+
+309 
+	#UINTMAX_WIDTH
+ 64
+
+	)
+
+311 
+	#PTRDIFF_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+312 
+	#SIG_ATOMIC_WIDTH
+ 32
+
+	)
+
+313 
+	#SIZE_WIDTH
+ 
+__WORDSIZE
+
+
+	)
+
+314 
+	#WCHAR_WIDTH
+ 32
+
+	)
+
+315 
+	#WINT_WIDTH
+ 32
+
+	)
+
+	@/usr/include/stdio.h
+
+23 #iâdeà
+_STDIO_H
+
+
+24 
+	#_STDIO_H
+ 1
+
+	)
+
+26 
+	#__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+	)
+
+27 
+	~<b™s/libc-h—d”-¡¬t.h
+>
+
+29 
+	g__BEGIN_DECLS
+
+
+31 
+	#__Ãed_size_t
+
+
+	)
+
+32 
+	#__Ãed_NULL
+
+
+	)
+
+33 
+	~<¡ddef.h
+>
+
+35 
+	#__Ãed___va_li¡
+
+
+	)
+
+36 
+	~<¡d¬g.h
+>
+
+38 
+	~<b™s/ty³s.h
+>
+
+39 
+	~<b™s/ty³s/__åos_t.h
+>
+
+40 
+	~<b™s/ty³s/__åos64_t.h
+>
+
+41 
+	~<b™s/ty³s/__FILE.h
+>
+
+42 
+	~<b™s/ty³s/FILE.h
+>
+
+43 
+	~<b™s/ty³s/¡ruù_FILE.h
+>
+
+45 #ifdeà
+__USE_MISC
+
+
+46 
+	~<b™s/ty³s/cook›_io_funùiÚs_t.h
+>
+
+49 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+50 #ifdeà
+__GNUC__
+
+
+51 #iâdeà
+_VA_LIST_DEFINED
+
+
+52 
+__gnuc_va_li¡
+ 
+	tva_li¡
+;
+
+53 
+	#_VA_LIST_DEFINED
+
+
+	)
+
+56 
+	~<¡d¬g.h
+>
+
+60 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K
+
+
+61 #iâdeà
+__off_t_defšed
+
+
+62 #iâdeà
+__USE_FILE_OFFSET64
+
+
+63 
+__off_t
+ 
+	toff_t
+;
+
+65 
+__off64_t
+ 
+	toff_t
+;
+
+67 
+	#__off_t_defšed
+
+
+	)
+
+69 #ià
+defšed
+ 
+__USE_LARGEFILE64
+ && !defšed 
+__off64_t_defšed
+
+
+70 
+__off64_t
+ 
+	toff64_t
+;
+
+71 
+	#__off64_t_defšed
+
+
+	)
+
+75 #ifdeà
+__USE_XOPEN2K8
+
+
+76 #iâdeà
+__ssize_t_defšed
+
+
+77 
+__ssize_t
+ 
+	tssize_t
+;
+
+78 
+	#__ssize_t_defšed
+
+
+	)
+
+83 #iâdeà
+__USE_FILE_OFFSET64
+
+
+84 
+__åos_t
+ 
+	tåos_t
+;
+
+86 
+__åos64_t
+ 
+	tåos_t
+;
+
+88 #ifdeà
+__USE_LARGEFILE64
+
+
+89 
+__åos64_t
+ 
+	tåos64_t
+;
+
+93 
+	#_IOFBF
+ 0
+
+	)
+
+94 
+	#_IOLBF
+ 1
+
+	)
+
+95 
+	#_IONBF
+ 2
+
+	)
+
+99 
+	#BUFSIZ
+ 8192
+
+	)
+
+104 
+	#EOF
+ (-1)
+
+	)
+
+109 
+	#SEEK_SET
+ 0
+
+	)
+
+110 
+	#SEEK_CUR
+ 1
+
+	)
+
+111 
+	#SEEK_END
+ 2
+
+	)
+
+112 #ifdeà
+__USE_GNU
+
+
+113 
+	#SEEK_DATA
+ 3
+
+	)
+
+114 
+	#SEEK_HOLE
+ 4
+
+	)
+
+118 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+120 
+	#P_tmpdœ
+ "/tmp"
+
+	)
+
+123 
+	#L_tm²am
+ 20
+
+	)
+
+124 
+	#TMP_MAX
+ 238328
+
+	)
+
+128 
+	~<b™s/¡dio_lim.h
+>
+
+130 #ifdeà
+__USE_POSIX
+
+
+131 
+	#L_ù”mid
+ 9
+
+	)
+
+132 #ià!
+defšed
+ 
+__USE_XOPEN2K
+ || defšed 
+__USE_GNU
+
+
+133 
+	#L_cu£rid
+ 9
+
+	)
+
+137 #undeà
+FOPEN_MAX
+
+
+138 
+	#FOPEN_MAX
+ 16
+
+	)
+
+141 #ià
+__GLIBC_USE
+ (
+ISOC2X
+)
+
+143 
+	#_PRINTF_NAN_LEN_MAX
+ 4
+
+	)
+
+148 
+FILE
+ *
+¡dš
+;
+
+149 
+FILE
+ *
+¡dout
+;
+
+150 
+FILE
+ *
+¡d”r
+;
+
+152 
+	#¡dš
+ 
+¡dš
+
+
+	)
+
+153 
+	#¡dout
+ 
+¡dout
+
+
+	)
+
+154 
+	#¡d”r
+ 
+¡d”r
+
+
+	)
+
+157 

+	$»move
+ (cÚ¡ *
+__fž’ame
+è
+__THROW
+;
+
+159 

+	$»Çme
+ (cÚ¡ *
+__Þd
+, cÚ¡ *
+__Ãw
+è
+__THROW
+;
+
+161 #ifdeà
+__USE_ATFILE
+
+
+163 

+	$»Çm—t
+ (
+__Þdfd
+, cÚ¡ *
+__Þd
+, 
+__Ãwfd
+,
+
+164 cÚ¡ *
+__Ãw
+è
+__THROW
+;
+
+167 #ifdeà
+__USE_GNU
+
+
+169 
+	#RENAME_NOREPLACE
+ (1 << 0)
+
+	)
+
+170 
+	#RENAME_EXCHANGE
+ (1 << 1)
+
+	)
+
+171 
+	#RENAME_WHITEOUT
+ (1 << 2)
+
+	)
+
+175 

+	$»Çm—t2
+ (
+__Þdfd
+, cÚ¡ *
+__Þd
+, 
+__Ãwfd
+,
+
+176 cÚ¡ *
+__Ãw
+, 
+__æags
+è
+__THROW
+;
+
+183 

+	$fþo£
+ (
+FILE
+ *
+__¡»am
+è
+	`__nÚnuÎ
+ ((1));
+
+185 #undeà
+__©Œ_d—Îoc_fþo£
+
+
+186 
+	#__©Œ_d—Îoc_fþo£
+ 
+	`__©Œ_d—Îoc
+ (
+fþo£
+, 1)
+
+	)
+
+192 #iâdeà
+__USE_FILE_OFFSET64
+
+
+193 
+FILE
+ *
+	$tmpfže
+ ()
+
+194 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+196 #ifdeà
+__REDIRECT
+
+
+197 
+FILE
+ *
+	`__REDIRECT
+ (
+tmpfže
+, (), 
+tmpfže64
+)
+
+198 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+200 
+	#tmpfže
+ 
+tmpfže64
+
+
+	)
+
+204 #ifdeà
+__USE_LARGEFILE64
+
+
+205 
+FILE
+ *
+	$tmpfže64
+ ()
+
+206 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+210 
*
+	$tm²am
+ ([
+L_tm²am
+]è
+__THROW
+ 
+__wur
+;
+
+212 #ifdeà
+__USE_MISC
+
+
+215 
*
+	$tm²am_r
+ (
+__s
+[
+L_tm²am
+]è
+__THROW
+ 
+__wur
+;
+
+219 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+227 
*
+	$‹m²am
+ (cÚ¡ *
+__dœ
+, cÚ¡ *
+__pfx
+)
+
+228 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+__wur
+ 
+__©Œ_d—Îoc_ä“
+;
+
+235 

+	`fæush
+ (
+FILE
+ *
+__¡»am
+);
+
+237 #ifdeà
+__USE_MISC
+
+
+244 

+	`fæush_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+247 #ifdeà
+__USE_GNU
+
+
+254 

+	`fþo£®l
+ ();
+
+258 #iâdeà
+__USE_FILE_OFFSET64
+
+
+263 
+FILE
+ *
+	$fÝ’
+ (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+264 cÚ¡ *
+__»¡riù
+ 
+__modes
+)
+
+265 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+270 
+FILE
+ *
+	$äeÝ’
+ (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+271 cÚ¡ *
+__»¡riù
+ 
+__modes
+,
+
+272 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+ 
+	`__nÚnuÎ
+ ((3));
+
+274 #ifdeà
+__REDIRECT
+
+
+275 
+FILE
+ *
+	`__REDIRECT
+ (
+fÝ’
+, (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+276 cÚ¡ *
+__»¡riù
+ 
+__modes
+), 
+fÝ’64
+)
+
+277 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+278 
+FILE
+ *
+	`__REDIRECT
+ (
+äeÝ’
+, (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+279 cÚ¡ *
+__»¡riù
+ 
+__modes
+,
+
+280 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+), 
+äeÝ’64
+)
+
+281 
+__wur
+;
+
+283 
+	#fÝ’
+ 
+fÝ’64
+
+
+	)
+
+284 
+	#äeÝ’
+ 
+äeÝ’64
+
+
+	)
+
+287 #ifdeà
+__USE_LARGEFILE64
+
+
+288 
+FILE
+ *
+	$fÝ’64
+ (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+289 cÚ¡ *
+__»¡riù
+ 
+__modes
+)
+
+290 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+291 
+FILE
+ *
+	$äeÝ’64
+ (cÚ¡ *
+__»¡riù
+ 
+__fž’ame
+,
+
+292 cÚ¡ *
+__»¡riù
+ 
+__modes
+,
+
+293 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+ 
+	`__nÚnuÎ
+ ((3));
+
+296 #ifdef 
+__USE_POSIX
+
+
+298 
+FILE
+ *
+	$fdÝ’
+ (
+__fd
+, cÚ¡ *
+__modes
+è
+__THROW
+
+
+299 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+302 #ifdef 
+__USE_MISC
+
+
+305 
+FILE
+ *
+	$fÝ’cook›
+ (*
+__»¡riù
+ 
+__magic_cook›
+,
+
+306 cÚ¡ *
+__»¡riù
+ 
+__modes
+,
+
+307 
+cook›_io_funùiÚs_t
+ 
+__io_funcs
+è
+__THROW
+
+
+308 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+311 #ià
+defšed
+ 
+__USE_XOPEN2K8
+ || 
+	`__GLIBC_USE
+ (
+LIB_EXT2
+)
+
+313 
+FILE
+ *
+	$fmemÝ’
+ (*
+__s
+, 
+size_t
+ 
+__Ën
+, cÚ¡ *
+__modes
+)
+
+314 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+319 
+FILE
+ *
+	$Ý’_mem¡»am
+ (**
+__buæoc
+, 
+size_t
+ *
+__siz–oc
+è
+__THROW
+
+
+320 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+ 
+__wur
+;
+
+322 #ifdeà
+_WCHAR_H
+
+
+326 
+__FILE
+ *
+	$Ý’_wmem¡»am
+ (
+wch¬_t
+ **
+__buæoc
+, 
+size_t
+ *
+__siz–oc
+è
+__THROW
+
+
+327 
+__©Œibu‹_m®loc__
+ 
+__©Œ_d—Îoc_fþo£
+;
+
+333 

+	$£tbuf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, *__»¡riù 
+__buf
+è
+__THROW
+;
+
+337 

+	$£tvbuf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, *__»¡riù 
+__buf
+,
+
+338 
+__modes
+, 
+size_t
+ 
+__n
+è
+__THROW
+;
+
+340 #ifdef 
+__USE_MISC
+
+
+343 

+	$£tbufãr
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, *__»¡riù 
+__buf
+,
+
+344 
+size_t
+ 
+__size
+è
+__THROW
+;
+
+347 

+	$£Žšebuf
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+;
+
+355 

+	`årštf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+356 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...);
+
+361 

+	`´štf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...);
+
+363 

+	$¥rštf
+ (*
+__»¡riù
+ 
+__s
+,
+
+364 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__THROWNL
+;
+
+370 

+	`vårštf
+ (
+FILE
+ *
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__fÜm©
+,
+
+371 
+__gnuc_va_li¡
+ 
+__¬g
+);
+
+376 

+	`v´štf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+);
+
+378 

+	$v¥rštf
+ (*
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__fÜm©
+,
+
+379 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__THROWNL
+;
+
+381 #ià
+defšed
+ 
+__USE_ISOC99
+ || defšed 
+__USE_UNIX98
+
+
+383 

+	$¢´štf
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__maxËn
+,
+
+384 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...)
+
+385 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+387 

+	$v¢´štf
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__maxËn
+,
+
+388 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+389 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+392 #ià
+	`defšed
+ (
+__USE_MISC
+è|| 
+	`__GLIBC_USE
+ (
+LIB_EXT2
+)
+
+395 

+	$va¥rštf
+ (**
+__»¡riù
+ 
+__±r
+, cÚ¡ *__»¡riù 
+__f
+,
+
+396 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+397 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 2, 0))è
+__wur
+;
+
+398 

+	$__a¥rštf
+ (**
+__»¡riù
+ 
+__±r
+,
+
+399 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+400 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__wur
+;
+
+401 

+	$a¥rštf
+ (**
+__»¡riù
+ 
+__±r
+,
+
+402 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+403 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__wur
+;
+
+406 #ifdeà
+__USE_XOPEN2K8
+
+
+408 

+	$vd´štf
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fmt
+,
+
+409 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+410 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 0)));
+
+411 

+	$d´štf
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+412 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 3)));
+
+420 

+	$fsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+421 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+426 

+	$sÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+428 

+	$ssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+429 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__THROW
+;
+
+435 
+	~<b™s/æßŠ.h
+>
+
+436 #ià!
+	`__GLIBC_USE
+ (
+DEPRECATED_SCANF
+è&& !
+defšed
+ 
+__LDBL_COMPAT
+ \
+
+437 && 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 0
+
+438 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+439 #ifdeà
+__REDIRECT
+
+
+440 

+	`__REDIRECT
+ (
+fsÿnf
+, (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+441 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+442 
+__isoc23_fsÿnf
+è
+__wur
+;
+
+443 

+	`__REDIRECT
+ (
+sÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+444 
+__isoc23_sÿnf
+è
+__wur
+;
+
+445 

+	`__REDIRECT_NTH
+ (
+ssÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+446 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+447 
+__isoc23_ssÿnf
+);
+
+449 

+	$__isoc23_fsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+450 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+451 

+	$__isoc23_sÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+452 

+	$__isoc23_ssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+453 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__THROW
+;
+
+454 
+	#fsÿnf
+ 
+__isoc23_fsÿnf
+
+
+	)
+
+455 
+	#sÿnf
+ 
+__isoc23_sÿnf
+
+
+	)
+
+456 
+	#ssÿnf
+ 
+__isoc23_ssÿnf
+
+
+	)
+
+459 #ifdeà
+__REDIRECT
+
+
+460 

+	`__REDIRECT
+ (
+fsÿnf
+, (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+461 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+462 
+__isoc99_fsÿnf
+è
+__wur
+;
+
+463 

+	`__REDIRECT
+ (
+sÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+464 
+__isoc99_sÿnf
+è
+__wur
+;
+
+465 

+	`__REDIRECT_NTH
+ (
+ssÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+466 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...),
+
+467 
+__isoc99_ssÿnf
+);
+
+469 

+	$__isoc99_fsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+470 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+471 

+	$__isoc99_sÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__wur
+;
+
+472 

+	$__isoc99_ssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+473 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__THROW
+;
+
+474 
+	#fsÿnf
+ 
+__isoc99_fsÿnf
+
+
+	)
+
+475 
+	#sÿnf
+ 
+__isoc99_sÿnf
+
+
+	)
+
+476 
+	#ssÿnf
+ 
+__isoc99_ssÿnf
+
+
+	)
+
+481 #ifdef 
+__USE_ISOC99
+
+
+486 

+	$vfsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__fÜm©
+,
+
+487 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+488 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 2, 0))è
+__wur
+;
+
+494 

+	$vsÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+495 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 1, 0))è
+__wur
+;
+
+498 

+	$vssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+499 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+500 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__sÿnf__
+, 2, 0)));
+
+503 #ià!
+	`__GLIBC_USE
+ (
+DEPRECATED_SCANF
+)
+
+504 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+505 #ià
+defšed
+ 
+__REDIRECT
+ && !defšed 
+__LDBL_COMPAT
+ \
+
+506 && 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 0
+
+507 

+	`__REDIRECT
+ (
+vfsÿnf
+,
+
+508 (
+FILE
+ *
+__»¡riù
+ 
+__s
+,
+
+509 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+),
+
+510 
+__isoc23_vfsÿnf
+)
+
+511 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 2, 0))è
+__wur
+;
+
+512 

+	`__REDIRECT
+ (
+vsÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+513 
+__gnuc_va_li¡
+ 
+__¬g
+), 
+__isoc23_vsÿnf
+)
+
+514 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 1, 0))è
+__wur
+;
+
+515 

+	`__REDIRECT_NTH
+ (
+vssÿnf
+,
+
+516 (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+517 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+518 
+__gnuc_va_li¡
+ 
+__¬g
+), 
+__isoc23_vssÿnf
+)
+
+519 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__sÿnf__
+, 2, 0)));
+
+520 #–ià!
+defšed
+ 
+__REDIRECT
+
+
+521 

+	$__isoc23_vfsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__s
+,
+
+522 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+523 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__wur
+;
+
+524 

+	$__isoc23_vsÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+525 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__wur
+;
+
+526 

+	$__isoc23_vssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+527 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+528 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__THROW
+;
+
+529 
+	#vfsÿnf
+ 
+__isoc23_vfsÿnf
+
+
+	)
+
+530 
+	#vsÿnf
+ 
+__isoc23_vsÿnf
+
+
+	)
+
+531 
+	#vssÿnf
+ 
+__isoc23_vssÿnf
+
+
+	)
+
+534 #ià
+defšed
+ 
+__REDIRECT
+ && !defšed 
+__LDBL_COMPAT
+ \
+
+535 && 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 0
+
+536 

+	`__REDIRECT
+ (
+vfsÿnf
+,
+
+537 (
+FILE
+ *
+__»¡riù
+ 
+__s
+,
+
+538 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__¬g
+),
+
+539 
+__isoc99_vfsÿnf
+)
+
+540 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 2, 0))è
+__wur
+;
+
+541 

+	`__REDIRECT
+ (
+vsÿnf
+, (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+542 
+__gnuc_va_li¡
+ 
+__¬g
+), 
+__isoc99_vsÿnf
+)
+
+543 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__sÿnf__
+, 1, 0))è
+__wur
+;
+
+544 

+	`__REDIRECT_NTH
+ (
+vssÿnf
+,
+
+545 (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+546 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+547 
+__gnuc_va_li¡
+ 
+__¬g
+), 
+__isoc99_vssÿnf
+)
+
+548 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__sÿnf__
+, 2, 0)));
+
+549 #–ià!
+defšed
+ 
+__REDIRECT
+
+
+550 

+	$__isoc99_vfsÿnf
+ (
+FILE
+ *
+__»¡riù
+ 
+__s
+,
+
+551 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+552 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__wur
+;
+
+553 

+	$__isoc99_vsÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+554 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__wur
+;
+
+555 

+	$__isoc99_vssÿnf
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+556 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+557 
+__gnuc_va_li¡
+ 
+__¬g
+è
+__THROW
+;
+
+558 
+	#vfsÿnf
+ 
+__isoc99_vfsÿnf
+
+
+	)
+
+559 
+	#vsÿnf
+ 
+__isoc99_vsÿnf
+
+
+	)
+
+560 
+	#vssÿnf
+ 
+__isoc99_vssÿnf
+
+
+	)
+
+571 

+	`fg‘c
+ (
+FILE
+ *
+__¡»am
+);
+
+572 

+	`g‘c
+ (
+FILE
+ *
+__¡»am
+);
+
+578 

+	`g‘ch¬
+ ();
+
+580 #ifdeà
+__USE_POSIX199506
+
+
+585 

+	`g‘c_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+586 

+	`g‘ch¬_uÆocked
+ ();
+
+589 #ifdeà
+__USE_MISC
+
+
+596 

+	`fg‘c_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+607 

+	`åutc
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+);
+
+608 

+	`putc
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+);
+
+614 

+	`putch¬
+ (
+__c
+);
+
+616 #ifdeà
+__USE_MISC
+
+
+623 

+	`åutc_uÆocked
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+);
+
+626 #ifdeà
+__USE_POSIX199506
+
+
+631 

+	`putc_uÆocked
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+);
+
+632 

+	`putch¬_uÆocked
+ (
+__c
+);
+
+636 #ià
+defšed
+ 
+__USE_MISC
+ \
+
+637 || (
+defšed
+ 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K
+)
+
+639 

+	`g‘w
+ (
+FILE
+ *
+__¡»am
+);
+
+642 

+	`putw
+ (
+__w
+, 
+FILE
+ *
+__¡»am
+);
+
+650 
*
+	$fg‘s
+ (*
+__»¡riù
+ 
+__s
+, 
+__n
+, 
+FILE
+ *__»¡riù 
+__¡»am
+)
+
+651 
+__wur
+ 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+653 #ià
+	`__GLIBC_USE
+ (
+DEPRECATED_GETS
+)
+
+663 
*
+	$g‘s
+ (*
+__s
+è
+__wur
+ 
+__©Œibu‹_d•»ÿ‹d__
+;
+
+666 #ifdeà
+__USE_GNU
+
+
+673 
*
+	$fg‘s_uÆocked
+ (*
+__»¡riù
+ 
+__s
+, 
+__n
+,
+
+674 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+
+
+675 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+679 #ià
+defšed
+ 
+__USE_XOPEN2K8
+ || 
+	`__GLIBC_USE
+ (
+LIB_EXT2
+)
+
+690 
+__ssize_t
+ 
+	$__g‘d–im
+ (**
+__»¡riù
+ 
+__lš•Œ
+,
+
+691 
+size_t
+ *
+__»¡riù
+ 
+__n
+, 
+__d–im™”
+,
+
+692 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+693 
+__ssize_t
+ 
+	$g‘d–im
+ (**
+__»¡riù
+ 
+__lš•Œ
+,
+
+694 
+size_t
+ *
+__»¡riù
+ 
+__n
+, 
+__d–im™”
+,
+
+695 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+703 
+__ssize_t
+ 
+	$g‘lše
+ (**
+__»¡riù
+ 
+__lš•Œ
+,
+
+704 
+size_t
+ *
+__»¡riù
+ 
+__n
+,
+
+705 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+713 

+	`åuts
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+, 
+FILE
+ *__»¡riù 
+__¡»am
+);
+
+719 

+	`puts
+ (cÚ¡ *
+__s
+);
+
+726 

+	`ung‘c
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+);
+
+733 
+size_t
+ 
+	$ä—d
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+,
+
+734 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+739 
+size_t
+ 
+	`fwr™e
+ (cÚ¡ *
+__»¡riù
+ 
+__±r
+, size_ˆ
+__size
+,
+
+740 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__s
+);
+
+742 #ifdeà
+__USE_GNU
+
+
+749 

+	`åuts_uÆocked
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+750 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+);
+
+753 #ifdeà
+__USE_MISC
+
+
+760 
+size_t
+ 
+	$ä—d_uÆocked
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+,
+
+761 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+762 
+size_t
+ 
+	`fwr™e_uÆocked
+ (cÚ¡ *
+__»¡riù
+ 
+__±r
+, size_ˆ
+__size
+,
+
+763 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+);
+
+771 

+	`f£ek
+ (
+FILE
+ *
+__¡»am
+, 
+__off
+, 
+__wh’û
+);
+
+776 

+	$á–l
+ (
+FILE
+ *
+__¡»am
+è
+__wur
+;
+
+781 

+	`»wšd
+ (
+FILE
+ *
+__¡»am
+);
+
+788 #ià
+defšed
+ 
+__USE_LARGEFILE
+ || defšed 
+__USE_XOPEN2K
+
+
+789 #iâdeà
+__USE_FILE_OFFSET64
+
+
+794 

+	`f£eko
+ (
+FILE
+ *
+__¡»am
+, 
+__off_t
+ 
+__off
+, 
+__wh’û
+);
+
+799 
+__off_t
+ 
+	$á–lo
+ (
+FILE
+ *
+__¡»am
+è
+__wur
+;
+
+801 #ifdeà
+__REDIRECT
+
+
+802 

+	`__REDIRECT
+ (
+f£eko
+,
+
+803 (
+FILE
+ *
+__¡»am
+, 
+__off64_t
+ 
+__off
+, 
+__wh’û
+),
+
+804 
+f£eko64
+);
+
+805 
+__off64_t
+ 
+	`__REDIRECT
+ (
+á–lo
+, (
+FILE
+ *
+__¡»am
+), 
+á–lo64
+);
+
+807 
+	#f£eko
+ 
+f£eko64
+
+
+	)
+
+808 
+	#á–lo
+ 
+á–lo64
+
+
+	)
+
+813 #iâdeà
+__USE_FILE_OFFSET64
+
+
+818 

+	`fg‘pos
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, 
+åos_t
+ *__»¡riù 
+__pos
+);
+
+823 

+	`f£�os
+ (
+FILE
+ *
+__¡»am
+, cÚ¡ 
+åos_t
+ *
+__pos
+);
+
+825 #ifdeà
+__REDIRECT
+
+
+826 

+	`__REDIRECT
+ (
+fg‘pos
+, (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+827 
+åos_t
+ *
+__»¡riù
+ 
+__pos
+), 
+fg‘pos64
+);
+
+828 

+	`__REDIRECT
+ (
+f£�os
+,
+
+829 (
+FILE
+ *
+__¡»am
+, cÚ¡ 
+åos_t
+ *
+__pos
+), 
+f£�os64
+);
+
+831 
+	#fg‘pos
+ 
+fg‘pos64
+
+
+	)
+
+832 
+	#f£�os
+ 
+f£�os64
+
+
+	)
+
+836 #ifdeà
+__USE_LARGEFILE64
+
+
+837 

+	`f£eko64
+ (
+FILE
+ *
+__¡»am
+, 
+__off64_t
+ 
+__off
+, 
+__wh’û
+);
+
+838 
+__off64_t
+ 
+	$á–lo64
+ (
+FILE
+ *
+__¡»am
+è
+__wur
+;
+
+839 

+	`fg‘pos64
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, 
+åos64_t
+ *__»¡riù 
+__pos
+);
+
+840 

+	`f£�os64
+ (
+FILE
+ *
+__¡»am
+, cÚ¡ 
+åos64_t
+ *
+__pos
+);
+
+844 

+	$þ—»¼
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+;
+
+846 

+	$ãof
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+848 

+	$ã¼Ü
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+850 #ifdeà
+__USE_MISC
+
+
+852 

+	$þ—»¼_uÆocked
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+;
+
+853 

+	$ãof_uÆocked
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+854 

+	$ã¼Ü_uÆocked
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+862 

+	$³¼Ü
+ (cÚ¡ *
+__s
+è
+__COLD
+;
+
+865 #ifdef 
+__USE_POSIX
+
+
+867 

+	$fž’o
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+870 #ifdeà
+__USE_MISC
+
+
+872 

+	$fž’o_uÆocked
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+876 #ifdeà
+__USE_POSIX2
+
+
+881 

+	`pþo£
+ (
+FILE
+ *
+__¡»am
+);
+
+887 
+FILE
+ *
+	$pÝ’
+ (cÚ¡ *
+__commªd
+, cÚ¡ *
+__modes
+)
+
+888 
+__©Œibu‹_m®loc__
+ 
+	$__©Œ_d—Îoc
+ (
+pþo£
+, 1è
+__wur
+;
+
+893 #ifdef 
+__USE_POSIX
+
+
+895 
*
+	$ù”mid
+ (*
+__s
+è
+__THROW
+
+
+896 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1));
+
+900 #ià(
+defšed
+ 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K
+è|| defšed 
+__USE_GNU
+
+
+902 
*
+	$cu£rid
+ (*
+__s
+)
+
+903 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1));
+
+907 #ifdef 
+__USE_GNU
+
+
+908 
+ob¡ack
+;
+
+911 

+	$ob¡ack_´štf
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+912 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...)
+
+913 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 3)));
+
+914 

+	$ob¡ack_v´štf
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+915 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+916 
+__gnuc_va_li¡
+ 
+__¬gs
+)
+
+917 
+__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 0)));
+
+921 #ifdeà
+__USE_POSIX199506
+
+
+925 

+	$æockfže
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+;
+
+929 

+	$árylockfže
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+ 
+__wur
+;
+
+932 

+	$fuÆockfže
+ (
+FILE
+ *
+__¡»am
+è
+__THROW
+;
+
+935 #ià
+defšed
+ 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K
+ && !defšed 
+__USE_GNU
+
+
+938 
+	~<b™s/g‘Ýt_posix.h
+>
+
+943 

+	`__uæow
+ (
+FILE
+ *);
+
+944 

+	`__ov”æow
+ (
+FILE
+ *, );
+
+946 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+948 
+	~<b™s/¡dio2-deþ.h
+>
+
+953 #ià
+defšed
+ 
+__LDBL_COMPAT
+ || 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+954 
+	~<b™s/¡dio-ldbl.h
+>
+
+959 #ifdeà
+__USE_EXTERN_INLINES
+
+
+960 
+	~<b™s/¡dio.h
+>
+
+962 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+964 
+	~<b™s/¡dio2.h
+>
+
+967 
+__END_DECLS
+
+
+	@/usr/include/stdlib.h
+
+23 #iâdef 
+_STDLIB_H
+
+
+25 
+	#__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+	)
+
+26 
+	~<b™s/libc-h—d”-¡¬t.h
+>
+
+29 
+	#__Ãed_size_t
+
+
+	)
+
+30 
+	#__Ãed_wch¬_t
+
+
+	)
+
+31 
+	#__Ãed_NULL
+
+
+	)
+
+32 
+	~<¡ddef.h
+>
+
+34 
+	g__BEGIN_DECLS
+
+
+36 
+	#_STDLIB_H
+ 1
+
+	)
+
+38 #ià(
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+è&& !defšed 
+_SYS_WAIT_H
+
+
+40 
+	~<b™s/wa™æags.h
+>
+
+41 
+	~<b™s/wa™¡©us.h
+>
+
+44 
+	#WEXITSTATUS
+(
+¡©us
+è
+	`__WEXITSTATUS
+ (¡©us)
+
+	)
+
+45 
+	#WTERMSIG
+(
+¡©us
+è
+	`__WTERMSIG
+ (¡©us)
+
+	)
+
+46 
+	#WSTOPSIG
+(
+¡©us
+è
+	`__WSTOPSIG
+ (¡©us)
+
+	)
+
+47 
+	#WIFEXITED
+(
+¡©us
+è
+	`__WIFEXITED
+ (¡©us)
+
+	)
+
+48 
+	#WIFSIGNALED
+(
+¡©us
+è
+	`__WIFSIGNALED
+ (¡©us)
+
+	)
+
+49 
+	#WIFSTOPPED
+(
+¡©us
+è
+	`__WIFSTOPPED
+ (¡©us)
+
+	)
+
+50 #ifdeà
+__WIFCONTINUED
+
+
+51 
+	#WIFCONTINUED
+(
+¡©us
+è
+	`__WIFCONTINUED
+ (¡©us)
+
+	)
+
+56 
+	~<b™s/æßŠ.h
+>
+
+61 
+	mquÙ
+;
+
+62 
+	m»m
+;
+
+63 } 
+	tdiv_t
+;
+
+66 #iâdeà
+__ldiv_t_defšed
+
+
+69 
+	mquÙ
+;
+
+70 
+	m»m
+;
+
+71 } 
+	tldiv_t
+;
+
+72 
+	#__ldiv_t_defšed
+ 1
+
+	)
+
+75 #ià
+defšed
+ 
+__USE_ISOC99
+ && !defšed 
+__Îdiv_t_defšed
+
+
+77 
+__ex‹nsiÚ__
+ struct
+
+79 
+	mquÙ
+;
+
+80 
+	m»m
+;
+
+81 } 
+	tÎdiv_t
+;
+
+82 
+	#__Îdiv_t_defšed
+ 1
+
+	)
+
+87 
+	#RAND_MAX
+ 2147483647
+
+	)
+
+92 
+	#EXIT_FAILURE
+ 1
+
+	)
+
+93 
+	#EXIT_SUCCESS
+ 0
+
+	)
+
+97 
+	#MB_CUR_MAX
+ (
+	`__ùy³_g‘_mb_cur_max
+ ())
+
+	)
+
+98 
+size_t
+ 
+	$__ùy³_g‘_mb_cur_max
+ (è
+__THROW
+ 
+__wur
+;
+
+102 

+	$©of
+ (cÚ¡ *
+__ÅŒ
+)
+
+103 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+105 

+	$©oi
+ (cÚ¡ *
+__ÅŒ
+)
+
+106 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+108 

+	$©Þ
+ (cÚ¡ *
+__ÅŒ
+)
+
+109 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+111 #ifdeà
+__USE_ISOC99
+
+
+113 
+__ex‹nsiÚ__
+ 

+	$©Þl
+ (cÚ¡ *
+__ÅŒ
+)
+
+114 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+118 

+	$¡¹od
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+119 **
+__»¡riù
+ 
+__’d±r
+)
+
+120 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+122 #ifdef 
+__USE_ISOC99
+
+
+124 

+	$¡¹of
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+125 **
+__»¡riù
+ 
+__’d±r
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+127 

+	$¡¹Þd
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+128 **
+__»¡riù
+ 
+__’d±r
+)
+
+129 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+134 #ià
+__HAVE_FLOAT16
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+135 
+_Flßt16
+ 
+	$¡¹of16
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+136 **
+__»¡riù
+ 
+__’d±r
+)
+
+137 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+140 #ià
+__HAVE_FLOAT32
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+141 
+_Flßt32
+ 
+	$¡¹of32
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+142 **
+__»¡riù
+ 
+__’d±r
+)
+
+143 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+146 #ià
+__HAVE_FLOAT64
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+147 
+_Flßt64
+ 
+	$¡¹of64
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+148 **
+__»¡riù
+ 
+__’d±r
+)
+
+149 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+152 #ià
+__HAVE_FLOAT128
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+153 
+_Flßt128
+ 
+	$¡¹of128
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+154 **
+__»¡riù
+ 
+__’d±r
+)
+
+155 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+158 #ià
+__HAVE_FLOAT32X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+159 
+_Flßt32x
+ 
+	$¡¹of32x
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+160 **
+__»¡riù
+ 
+__’d±r
+)
+
+161 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+164 #ià
+__HAVE_FLOAT64X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+165 
+_Flßt64x
+ 
+	$¡¹of64x
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+166 **
+__»¡riù
+ 
+__’d±r
+)
+
+167 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+170 #ià
+__HAVE_FLOAT128X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+171 
+_Flßt128x
+ 
+	$¡¹of128x
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+172 **
+__»¡riù
+ 
+__’d±r
+)
+
+173 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+177 

+	$¡¹Þ
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+178 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+179 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+181 

+	$¡¹oul
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+182 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+183 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+185 #ifdeà
+__USE_MISC
+
+
+187 
+__ex‹nsiÚ__
+
+
+188 

+	$¡¹oq
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+189 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+190 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+192 
+__ex‹nsiÚ__
+
+
+193 

+	$¡¹ouq
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+194 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+195 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+198 #ifdeà
+__USE_ISOC99
+
+
+200 
+__ex‹nsiÚ__
+
+
+201 

+	$¡¹Þl
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+202 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+203 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+205 
+__ex‹nsiÚ__
+
+
+206 

+	$¡¹ouÎ
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+207 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+208 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+213 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+214 #ifdeà
+__REDIRECT
+
+
+215 

+	`__REDIRECT_NTH
+ (
+¡¹Þ
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+216 **
+__»¡riù
+ 
+__’d±r
+,
+
+217 
+__ba£
+), 
+__isoc23_¡¹Þ
+)
+
+218 
+	`__nÚnuÎ
+ ((1));
+
+219 

+	`__REDIRECT_NTH
+ (
+¡¹oul
+,
+
+220 (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+221 **
+__»¡riù
+ 
+__’d±r
+,
+
+222 
+__ba£
+), 
+__isoc23_¡¹oul
+)
+
+223 
+	`__nÚnuÎ
+ ((1));
+
+224 #ifdeà
+__USE_MISC
+
+
+225 
+__ex‹nsiÚ__
+
+
+226 

+	`__REDIRECT_NTH
+ (
+¡¹oq
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+227 **
+__»¡riù
+ 
+__’d±r
+,
+
+228 
+__ba£
+), 
+__isoc23_¡¹Þl
+)
+
+229 
+	`__nÚnuÎ
+ ((1));
+
+230 
+__ex‹nsiÚ__
+
+
+231 

+	`__REDIRECT_NTH
+ (
+¡¹ouq
+,
+
+232 (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+233 **
+__»¡riù
+ 
+__’d±r
+,
+
+234 
+__ba£
+), 
+__isoc23_¡¹ouÎ
+)
+
+235 
+	`__nÚnuÎ
+ ((1));
+
+237 
+__ex‹nsiÚ__
+
+
+238 

+	`__REDIRECT_NTH
+ (
+¡¹Þl
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+239 **
+__»¡riù
+ 
+__’d±r
+,
+
+240 
+__ba£
+), 
+__isoc23_¡¹Þl
+)
+
+241 
+	`__nÚnuÎ
+ ((1));
+
+242 
+__ex‹nsiÚ__
+
+
+243 

+	`__REDIRECT_NTH
+ (
+¡¹ouÎ
+,
+
+244 (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+245 **
+__»¡riù
+ 
+__’d±r
+,
+
+246 
+__ba£
+), 
+__isoc23_¡¹ouÎ
+)
+
+247 
+	`__nÚnuÎ
+ ((1));
+
+249 

+	$__isoc23_¡¹Þ
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+250 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+251 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+252 

+	$__isoc23_¡¹oul
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+253 **
+__»¡riù
+ 
+__’d±r
+,
+
+254 
+__ba£
+)
+
+255 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+256 
+__ex‹nsiÚ__
+
+
+257 

+	$__isoc23_¡¹Þl
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+258 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+)
+
+259 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+260 
+__ex‹nsiÚ__
+
+
+261 

+	$__isoc23_¡¹ouÎ
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+262 **
+__»¡riù
+ 
+__’d±r
+,
+
+263 
+__ba£
+)
+
+264 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+265 
+	#¡¹Þ
+ 
+__isoc23_¡¹Þ
+
+
+	)
+
+266 
+	#¡¹oul
+ 
+__isoc23_¡¹oul
+
+
+	)
+
+267 #ifdeà
+__USE_MISC
+
+
+268 
+	#¡¹oq
+ 
+__isoc23_¡¹Þl
+
+
+	)
+
+269 
+	#¡¹ouq
+ 
+__isoc23_¡¹ouÎ
+
+
+	)
+
+271 
+	#¡¹Þl
+ 
+__isoc23_¡¹Þl
+
+
+	)
+
+272 
+	#¡¹ouÎ
+ 
+__isoc23_¡¹ouÎ
+
+
+	)
+
+277 #ià
+	`__GLIBC_USE
+ (
+IEC_60559_BFP_EXT_C2X
+)
+
+278 

+	$¡räomd
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ *
+__fÜm©
+,
+
+279 
+__f
+)
+
+280 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+282 

+	$¡räomf
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ *
+__fÜm©
+,
+
+283 
+__f
+)
+
+284 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+286 

+	$¡räoml
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ *
+__fÜm©
+,
+
+287 
+__f
+)
+
+288 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+291 #ià
+__HAVE_FLOAT16
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+292 

+	$¡räomf16
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+293 
+_Flßt16
+ 
+__f
+)
+
+294 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+297 #ià
+__HAVE_FLOAT32
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+298 

+	$¡räomf32
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+299 
+_Flßt32
+ 
+__f
+)
+
+300 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+303 #ià
+__HAVE_FLOAT64
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+304 

+	$¡räomf64
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+305 
+_Flßt64
+ 
+__f
+)
+
+306 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+309 #ià
+__HAVE_FLOAT128
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+310 

+	$¡räomf128
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+311 
+_Flßt128
+ 
+__f
+)
+
+312 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+315 #ià
+__HAVE_FLOAT32X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+316 

+	$¡räomf32x
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+317 
+_Flßt32x
+ 
+__f
+)
+
+318 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+321 #ià
+__HAVE_FLOAT64X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+322 

+	$¡räomf64x
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+323 
+_Flßt64x
+ 
+__f
+)
+
+324 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+327 #ià
+__HAVE_FLOAT128X
+ && 
+	`__GLIBC_USE
+ (
+IEC_60559_TYPES_EXT
+)
+
+328 

+	$¡räomf128x
+ (*
+__de¡
+, 
+size_t
+ 
+__size
+, cÚ¡ * 
+__fÜm©
+,
+
+329 
+_Flßt128x
+ 
+__f
+)
+
+330 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3));
+
+334 #ifdeà
+__USE_GNU
+
+
+338 
+	~<b™s/ty³s/loÿË_t.h
+>
+
+340 

+	$¡¹Þ_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+341 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+,
+
+342 
+loÿË_t
+ 
+__loc
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+344 

+	$¡¹oul_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+345 **
+__»¡riù
+ 
+__’d±r
+,
+
+346 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+)
+
+347 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+349 
+__ex‹nsiÚ__
+
+
+350 

+	$¡¹Þl_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+351 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+,
+
+352 
+loÿË_t
+ 
+__loc
+)
+
+353 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+355 
+__ex‹nsiÚ__
+
+
+356 

+	$¡¹ouÎ_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+357 **
+__»¡riù
+ 
+__’d±r
+,
+
+358 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+)
+
+359 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+363 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+364 #ifdeà
+__REDIRECT
+
+
+365 

+	`__REDIRECT_NTH
+ (
+¡¹Þ_l
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+366 **
+__»¡riù
+ 
+__’d±r
+,
+
+367 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+),
+
+368 
+__isoc23_¡¹Þ_l
+)
+
+369 
+	`__nÚnuÎ
+ ((1, 4));
+
+370 

+	`__REDIRECT_NTH
+ (
+¡¹oul_l
+,
+
+371 (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+372 **
+__»¡riù
+ 
+__’d±r
+,
+
+373 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+),
+
+374 
+__isoc23_¡¹oul_l
+)
+
+375 
+	`__nÚnuÎ
+ ((1, 4));
+
+376 
+__ex‹nsiÚ__
+
+
+377 

+	`__REDIRECT_NTH
+ (
+¡¹Þl_l
+, (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+378 **
+__»¡riù
+ 
+__’d±r
+,
+
+379 
+__ba£
+,
+
+380 
+loÿË_t
+ 
+__loc
+),
+
+381 
+__isoc23_¡¹Þl_l
+)
+
+382 
+	`__nÚnuÎ
+ ((1, 4));
+
+383 
+__ex‹nsiÚ__
+
+
+384 

+	`__REDIRECT_NTH
+ (
+¡¹ouÎ_l
+,
+
+385 (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+386 **
+__»¡riù
+ 
+__’d±r
+,
+
+387 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+),
+
+388 
+__isoc23_¡¹ouÎ_l
+)
+
+389 
+	`__nÚnuÎ
+ ((1, 4));
+
+391 

+	$__isoc23_¡¹Þ_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+392 **
+__»¡riù
+ 
+__’d±r
+, 
+__ba£
+,
+
+393 
+loÿË_t
+ 
+__loc
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+394 

+	$__isoc23_¡¹oul_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+395 **
+__»¡riù
+ 
+__’d±r
+,
+
+396 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+)
+
+397 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+398 
+__ex‹nsiÚ__
+
+
+399 

+	$__isoc23_¡¹Þl_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+400 **
+__»¡riù
+ 
+__’d±r
+,
+
+401 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+)
+
+402 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+403 
+__ex‹nsiÚ__
+
+
+404 

+	$__isoc23_¡¹ouÎ_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+405 **
+__»¡riù
+ 
+__’d±r
+,
+
+406 
+__ba£
+, 
+loÿË_t
+ 
+__loc
+)
+
+407 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 4));
+
+408 
+	#¡¹Þ_l
+ 
+__isoc23_¡¹Þ_l
+
+
+	)
+
+409 
+	#¡¹oul_l
+ 
+__isoc23_¡¹oul_l
+
+
+	)
+
+410 
+	#¡¹Þl_l
+ 
+__isoc23_¡¹Þl_l
+
+
+	)
+
+411 
+	#¡¹ouÎ_l
+ 
+__isoc23_¡¹ouÎ_l
+
+
+	)
+
+415 

+	$¡¹od_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+416 **
+__»¡riù
+ 
+__’d±r
+, 
+loÿË_t
+ 
+__loc
+)
+
+417 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+419 

+	$¡¹of_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+420 **
+__»¡riù
+ 
+__’d±r
+, 
+loÿË_t
+ 
+__loc
+)
+
+421 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+423 

+	$¡¹Þd_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+424 **
+__»¡riù
+ 
+__’d±r
+,
+
+425 
+loÿË_t
+ 
+__loc
+)
+
+426 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+428 #ià
+__HAVE_FLOAT16
+
+
+429 
+_Flßt16
+ 
+	$¡¹of16_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+430 **
+__»¡riù
+ 
+__’d±r
+,
+
+431 
+loÿË_t
+ 
+__loc
+)
+
+432 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+435 #ià
+__HAVE_FLOAT32
+
+
+436 
+_Flßt32
+ 
+	$¡¹of32_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+437 **
+__»¡riù
+ 
+__’d±r
+,
+
+438 
+loÿË_t
+ 
+__loc
+)
+
+439 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+442 #ià
+__HAVE_FLOAT64
+
+
+443 
+_Flßt64
+ 
+	$¡¹of64_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+444 **
+__»¡riù
+ 
+__’d±r
+,
+
+445 
+loÿË_t
+ 
+__loc
+)
+
+446 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+449 #ià
+__HAVE_FLOAT128
+
+
+450 
+_Flßt128
+ 
+	$¡¹of128_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+451 **
+__»¡riù
+ 
+__’d±r
+,
+
+452 
+loÿË_t
+ 
+__loc
+)
+
+453 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+456 #ià
+__HAVE_FLOAT32X
+
+
+457 
+_Flßt32x
+ 
+	$¡¹of32x_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+458 **
+__»¡riù
+ 
+__’d±r
+,
+
+459 
+loÿË_t
+ 
+__loc
+)
+
+460 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+463 #ià
+__HAVE_FLOAT64X
+
+
+464 
+_Flßt64x
+ 
+	$¡¹of64x_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+465 **
+__»¡riù
+ 
+__’d±r
+,
+
+466 
+loÿË_t
+ 
+__loc
+)
+
+467 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+470 #ià
+__HAVE_FLOAT128X
+
+
+471 
+_Flßt128x
+ 
+	$¡¹of128x_l
+ (cÚ¡ *
+__»¡riù
+ 
+__ÅŒ
+,
+
+472 **
+__»¡riù
+ 
+__’d±r
+,
+
+473 
+loÿË_t
+ 
+__loc
+)
+
+474 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3));
+
+479 #ifdeà
+__USE_EXTERN_INLINES
+
+
+480 
+__ex‹º_šlše
+ 
+
+481 
+	`__NTH
+ (
+	$©oi
+ (cÚ¡ *
+__ÅŒ
+))
+
+483  (è
+	`¡¹Þ
+ (
+__ÅŒ
+, (**è
+NULL
+, 10);
+
+484 
+	}
+}
+
+485 
+__ex‹º_šlše
+ 
+
+486 
+__NTH
+ (
+	$©Þ
+ (cÚ¡ *
+__ÅŒ
+))
+
+488  
+	`¡¹Þ
+ (
+__ÅŒ
+, (**è
+NULL
+, 10);
+
+489 
+	}
+}
+
+491 #ifdeà
+__USE_ISOC99
+
+
+492 
+__ex‹nsiÚ__
+ 
+__ex‹º_šlše
+ 
+
+493 
+__NTH
+ (
+	$©Þl
+ (cÚ¡ *
+__ÅŒ
+))
+
+495  
+	`¡¹Þl
+ (
+__ÅŒ
+, (**è
+NULL
+, 10);
+
+496 
+	}
+}
+
+501 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+505 
*
+	$l64a
+ (
+__n
+è
+__THROW
+ 
+__wur
+;
+
+508 

+	$a64l
+ (cÚ¡ *
+__s
+)
+
+509 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+513 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+514 
+	~<sys/ty³s.h
+>
+
+521 

+	$¿ndom
+ (è
+__THROW
+;
+
+524 

+	$¤ªdom
+ (
+__£ed
+è
+__THROW
+;
+
+530 
*
+	$š™¡©e
+ (
+__£ed
+, *
+__¡©ebuf
+,
+
+531 
+size_t
+ 
+__¡©–’
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+535 
*
+	$£t¡©e
+ (*
+__¡©ebuf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+538 #ifdeà
+__USE_MISC
+
+
+543 
+	s¿ndom_d©a
+
+
+545 
+št32_t
+ *
+åŒ
+;
+
+546 
+št32_t
+ *
+½Œ
+;
+
+547 
+št32_t
+ *
+¡©e
+;
+
+548 
+¿nd_ty³
+;
+
+549 
+¿nd_deg
+;
+
+550 
+¿nd_£p
+;
+
+551 
+št32_t
+ *
+’d_±r
+;
+
+554 

+	$¿ndom_r
+ (
+¿ndom_d©a
+ *
+__»¡riù
+ 
+__buf
+,
+
+555 
+št32_t
+ *
+__»¡riù
+ 
+__»suÉ
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+557 

+	$¤ªdom_r
+ (
+__£ed
+, 
+¿ndom_d©a
+ *
+__buf
+)
+
+558 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+560 

+	$š™¡©e_r
+ (
+__£ed
+, *
+__»¡riù
+ 
+__¡©ebuf
+,
+
+561 
+size_t
+ 
+__¡©–’
+,
+
+562 
+¿ndom_d©a
+ *
+__»¡riù
+ 
+__buf
+)
+
+563 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 4));
+
+565 

+	$£t¡©e_r
+ (*
+__»¡riù
+ 
+__¡©ebuf
+,
+
+566 
+¿ndom_d©a
+ *
+__»¡riù
+ 
+__buf
+)
+
+567 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+573 

+	$¿nd
+ (è
+__THROW
+;
+
+575 

+	$¤ªd
+ (
+__£ed
+è
+__THROW
+;
+
+577 #ifdeà
+__USE_POSIX199506
+
+
+579 

+	$¿nd_r
+ (*
+__£ed
+è
+__THROW
+;
+
+583 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+587 

+	$d¿nd48
+ (è
+__THROW
+;
+
+588 

+	$”ªd48
+ (
+__xsubi
+[3]è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+591 

+	$Ìªd48
+ (è
+__THROW
+;
+
+592 

+	$Äªd48
+ (
+__xsubi
+[3])
+
+593 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+596 

+	$m¿nd48
+ (è
+__THROW
+;
+
+597 

+	$j¿nd48
+ (
+__xsubi
+[3])
+
+598 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+601 

+	$¤ªd48
+ (
+__£edv®
+è
+__THROW
+;
+
+602 
*
+	$£ed48
+ (
+__£ed16v
+[3])
+
+603 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+604 

+	$lcÚg48
+ (
+__·¿m
+[7]è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+606 #ifdeà
+__USE_MISC
+
+
+610 
+	sd¿nd48_d©a
+
+
+612 
+__x
+[3];
+
+613 
+__Þd_x
+[3];
+
+614 
+__c
+;
+
+615 
+__š™
+;
+
+616 
+__ex‹nsiÚ__
+ 
+__a
+;
+
+621 

+	$d¿nd48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+622 *
+__»¡riù
+ 
+__»suÉ
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+623 

+	$”ªd48_r
+ (
+__xsubi
+[3],
+
+624 
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+625 *
+__»¡riù
+ 
+__»suÉ
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+628 

+	$Ìªd48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+629 *
+__»¡riù
+ 
+__»suÉ
+)
+
+630 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+631 

+	$Äªd48_r
+ (
+__xsubi
+[3],
+
+632 
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+633 *
+__»¡riù
+ 
+__»suÉ
+)
+
+634 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+637 

+	$m¿nd48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+638 *
+__»¡riù
+ 
+__»suÉ
+)
+
+639 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+640 

+	$j¿nd48_r
+ (
+__xsubi
+[3],
+
+641 
+d¿nd48_d©a
+ *
+__»¡riù
+ 
+__bufãr
+,
+
+642 *
+__»¡riù
+ 
+__»suÉ
+)
+
+643 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+646 

+	$¤ªd48_r
+ (
+__£edv®
+, 
+d¿nd48_d©a
+ *
+__bufãr
+)
+
+647 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+649 

+	$£ed48_r
+ (
+__£ed16v
+[3],
+
+650 
+d¿nd48_d©a
+ *
+__bufãr
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+652 

+	$lcÚg48_r
+ (
+__·¿m
+[7],
+
+653 
+d¿nd48_d©a
+ *
+__bufãr
+)
+
+654 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+657 
+__ušt32_t
+ 
+	$¬c4¿ndom
+ ()
+
+658 
+__THROW
+ 
+__wur
+;
+
+661 

+	$¬c4¿ndom_buf
+ (*
+__buf
+, 
+size_t
+ 
+__size
+)
+
+662 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+666 
+__ušt32_t
+ 
+	$¬c4¿ndom_unifÜm
+ (
+__ušt32_t
+ 
+__uµ”_bound
+)
+
+667 
+__THROW
+ 
+__wur
+;
+
+672 
*
+	$m®loc
+ (
+size_t
+ 
+__size
+è
+__THROW
+ 
+__©Œibu‹_m®loc__
+
+
+673 
+	`__©Œibu‹_®loc_size__
+ ((1)è
+__wur
+;
+
+675 
*
+	$ÿÎoc
+ (
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+)
+
+676 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+	`__©Œibu‹_®loc_size__
+ ((1, 2)è
+__wur
+;
+
+683 
*
+	$»®loc
+ (*
+__±r
+, 
+size_t
+ 
+__size
+)
+
+684 
+__THROW
+ 
+__©Œibu‹_w¬n_unu£d_»suÉ__
+ 
+	`__©Œibu‹_®loc_size__
+ ((2));
+
+687 

+	$ä“
+ (*
+__±r
+è
+__THROW
+;
+
+689 #ifdeà
+__USE_MISC
+
+
+695 
*
+	$»®loÿ¼ay
+ (*
+__±r
+, 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+)
+
+696 
+__THROW
+ 
+__©Œibu‹_w¬n_unu£d_»suÉ__
+
+
+697 
+	`__©Œibu‹_®loc_size__
+ ((2, 3))
+
+698 
+__©Œ_d—Îoc_ä“
+;
+
+701 
*
+	$»®loÿ¼ay
+ (*
+__±r
+, 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+)
+
+702 
+__THROW
+ 
+	`__©Œ_d—Îoc
+ (
+»®loÿ¼ay
+, 1);
+
+705 #ifdeà
+__USE_MISC
+
+
+706 
+	~<®loÿ.h
+>
+
+709 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K
+) \
+
+710 || 
+defšed
+ 
+__USE_MISC
+
+
+712 
*
+	$v®loc
+ (
+size_t
+ 
+__size
+è
+__THROW
+ 
+__©Œibu‹_m®loc__
+
+
+713 
+	`__©Œibu‹_®loc_size__
+ ((1)è
+__wur
+;
+
+716 #ifdeà
+__USE_XOPEN2K
+
+
+718 

+	$posix_mem®ign
+ (**
+__mem±r
+, 
+size_t
+ 
+__®ignm’t
+, size_ˆ
+__size
+)
+
+719 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+722 #ifdeà
+__USE_ISOC11
+
+
+724 
*
+	$®igÃd_®loc
+ (
+size_t
+ 
+__®ignm’t
+, size_ˆ
+__size
+)
+
+725 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+	`__©Œibu‹_®loc_®ign__
+ ((1))
+
+726 
+	`__©Œibu‹_®loc_size__
+ ((2)è
+__wur
+;
+
+730 

+	$abÜt
+ (è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+734 

+	$©ex™
+ ((*
+__func
+è()è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+736 #ià
+defšed
+ 
+__USE_ISOC11
+ || defšed 
+__USE_ISOCXX11
+
+
+738 #ifdeà
+__ýlu¥lus
+
+
+739 
"C++" 
+	$©_quick_ex™
+ ((*
+__func
+) ())
+
+740 
+__THROW
+ 
+	`__asm
+ ("©_quick_ex™"è
+	`__nÚnuÎ
+ ((1));
+
+742 

+	$©_quick_ex™
+ ((*
+__func
+è()è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+746 #ifdef 
+__USE_MISC
+
+
+749 

+	$Ú_ex™
+ ((*
+__func
+è(
+__¡©us
+, *
+__¬g
+), *__arg)
+
+750 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+756 

+	$ex™
+ (
+__¡©us
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+758 #ià
+defšed
+ 
+__USE_ISOC11
+ || defšed 
+__USE_ISOCXX11
+
+
+762 

+	$quick_ex™
+ (
+__¡©us
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+765 #ifdeà
+__USE_ISOC99
+
+
+768 

+	$_Ex™
+ (
+__¡©us
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+773 
*
+	$g‘’v
+ (cÚ¡ *
+__Çme
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+775 #ifdeà
+__USE_GNU
+
+
+778 
*
+	$£cu»_g‘’v
+ (cÚ¡ *
+__Çme
+)
+
+779 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+782 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+786 

+	$pu‹nv
+ (*
+__¡ršg
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+789 #ifdeà
+__USE_XOPEN2K
+
+
+792 

+	$£‹nv
+ (cÚ¡ *
+__Çme
+, cÚ¡ *
+__v®ue
+, 
+__»¶aû
+)
+
+793 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+796 

+	$un£‹nv
+ (cÚ¡ *
+__Çme
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+799 #ifdef 
+__USE_MISC
+
+
+803 

+	$þ—»nv
+ (è
+__THROW
+;
+
+807 #ià
+defšed
+ 
+__USE_MISC
+ \
+
+808 || (
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+)
+
+814 
*
+	$mk‹mp
+ (*
+__‹m¶©e
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+817 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+826 #iâdeà
+__USE_FILE_OFFSET64
+
+
+827 

+	$mk¡emp
+ (*
+__‹m¶©e
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+829 #ifdeà
+__REDIRECT
+
+
+830 

+	`__REDIRECT
+ (
+mk¡emp
+, (*
+__‹m¶©e
+), 
+mk¡emp64
+)
+
+831 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+833 
+	#mk¡emp
+ 
+mk¡emp64
+
+
+	)
+
+836 #ifdeà
+__USE_LARGEFILE64
+
+
+837 

+	$mk¡emp64
+ (*
+__‹m¶©e
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+841 #ifdeà
+__USE_MISC
+
+
+848 #iâdeà
+__USE_FILE_OFFSET64
+
+
+849 

+	$mk¡emps
+ (*
+__‹m¶©e
+, 
+__suffixËn
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+851 #ifdeà
+__REDIRECT
+
+
+852 

+	`__REDIRECT
+ (
+mk¡emps
+, (*
+__‹m¶©e
+, 
+__suffixËn
+),
+
+853 
+mk¡emps64
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+855 
+	#mk¡emps
+ 
+mk¡emps64
+
+
+	)
+
+858 #ifdeà
+__USE_LARGEFILE64
+
+
+859 

+	$mk¡emps64
+ (*
+__‹m¶©e
+, 
+__suffixËn
+)
+
+860 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+864 #ifdeà
+__USE_XOPEN2K8
+
+
+870 
*
+	$mkd‹mp
+ (*
+__‹m¶©e
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+873 #ifdeà
+__USE_GNU
+
+
+880 #iâdeà
+__USE_FILE_OFFSET64
+
+
+881 

+	$mko¡emp
+ (*
+__‹m¶©e
+, 
+__æags
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+883 #ifdeà
+__REDIRECT
+
+
+884 

+	`__REDIRECT
+ (
+mko¡emp
+, (*
+__‹m¶©e
+, 
+__æags
+), 
+mko¡emp64
+)
+
+885 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+887 
+	#mko¡emp
+ 
+mko¡emp64
+
+
+	)
+
+890 #ifdeà
+__USE_LARGEFILE64
+
+
+891 

+	$mko¡emp64
+ (*
+__‹m¶©e
+, 
+__æags
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+900 #iâdeà
+__USE_FILE_OFFSET64
+
+
+901 

+	$mko¡emps
+ (*
+__‹m¶©e
+, 
+__suffixËn
+, 
+__æags
+)
+
+902 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+904 #ifdeà
+__REDIRECT
+
+
+905 

+	`__REDIRECT
+ (
+mko¡emps
+, (*
+__‹m¶©e
+, 
+__suffixËn
+,
+
+906 
+__æags
+), 
+mko¡emps64
+)
+
+907 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+909 
+	#mko¡emps
+ 
+mko¡emps64
+
+
+	)
+
+912 #ifdeà
+__USE_LARGEFILE64
+
+
+913 

+	$mko¡emps64
+ (*
+__‹m¶©e
+, 
+__suffixËn
+, 
+__æags
+)
+
+914 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+923 

+	$sy¡em
+ (cÚ¡ *
+__commªd
+è
+__wur
+;
+
+926 #ifdef 
+__USE_GNU
+
+
+929 
*
+	$ÿnÚiÿlize_fže_Çme
+ (cÚ¡ *
+__Çme
+)
+
+930 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__©Œibu‹_m®loc__
+
+
+931 
+__©Œ_d—Îoc_ä“
+ 
+__wur
+;
+
+934 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+940 
*
+	$»®·th
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+941 *
+__»¡riù
+ 
+__»sÞved
+è
+__THROW
+ 
+__wur
+;
+
+946 #iâdeà
+__COMPAR_FN_T
+
+
+947 
+	#__COMPAR_FN_T
+
+
+	)
+
+948 (*
+	t__com·r_â_t
+) (const *, const *);
+
+950 #ifdef 
+__USE_GNU
+
+
+951 
+__com·r_â_t
+ 
+	tcom·risÚ_â_t
+;
+
+954 #ifdeà
+__USE_GNU
+
+
+955 (*
+	t__com·r_d_â_t
+) (const *, const *, *);
+
+960 
*
+	$b£¬ch
+ (cÚ¡ *
+__key
+, cÚ¡ *
+__ba£
+,
+
+961 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+, 
+__com·r_â_t
+ 
+__com·r
+)
+
+962 
+	`__nÚnuÎ
+ ((1, 2, 5)è
+__wur
+;
+
+964 #ifdeà
+__USE_EXTERN_INLINES
+
+
+965 
+	~<b™s/¡dlib-b£¬ch.h
+>
+
+970 

+	$qsÜt
+ (*
+__ba£
+, 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+,
+
+971 
+__com·r_â_t
+ 
+__com·r
+è
+	`__nÚnuÎ
+ ((1, 4));
+
+972 #ifdeà
+__USE_GNU
+
+
+973 

+	$qsÜt_r
+ (*
+__ba£
+, 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+,
+
+974 
+__com·r_d_â_t
+ 
+__com·r
+, *
+__¬g
+)
+
+975 
+	`__nÚnuÎ
+ ((1, 4));
+
+980 

+	$abs
+ (
+__x
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+981 

+	$Ïbs
+ (
+__x
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+983 #ifdeà
+__USE_ISOC99
+
+
+984 
+__ex‹nsiÚ__
+ 

+	$Îabs
+ (
+__x
+)
+
+985 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+992 
+div_t
+ 
+	$div
+ (
+__num”
+, 
+__d’om
+)
+
+993 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+994 
+ldiv_t
+ 
+	$ldiv
+ (
+__num”
+, 
+__d’om
+)
+
+995 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+997 #ifdeà
+__USE_ISOC99
+
+
+998 
+__ex‹nsiÚ__
+ 
+Îdiv_t
+ 
+	$Îdiv
+ (
+__num”
+,
+
+999 
+__d’om
+)
+
+1000 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+1004 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+) \
+
+1005 || 
+defšed
+ 
+__USE_MISC
+
+
+1012 
*
+	$ecvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+ 
+__deýt
+,
+
+1013 *
+__»¡riù
+ 
+__sign
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+1018 
*
+	$fcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+ 
+__deýt
+,
+
+1019 *
+__»¡riù
+ 
+__sign
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+1024 
*
+	$gcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__buf
+)
+
+1025 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3)è
+__wur
+;
+
+1028 #ifdeà
+__USE_MISC
+
+
+1030 
*
+	$qecvt
+ (
+__v®ue
+, 
+__ndig™
+,
+
+1031 *
+__»¡riù
+ 
+__deýt
+, *__»¡riù 
+__sign
+)
+
+1032 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+1033 
*
+	$qfcvt
+ (
+__v®ue
+, 
+__ndig™
+,
+
+1034 *
+__»¡riù
+ 
+__deýt
+, *__»¡riù 
+__sign
+)
+
+1035 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+1036 
*
+	$qgcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__buf
+)
+
+1037 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3)è
+__wur
+;
+
+1042 

+	$ecvt_r
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+ 
+__deýt
+,
+
+1043 *
+__»¡riù
+ 
+__sign
+, *__»¡riù 
+__buf
+,
+
+1044 
+size_t
+ 
+__Ën
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4, 5));
+
+1045 

+	$fcvt_r
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+ 
+__deýt
+,
+
+1046 *
+__»¡riù
+ 
+__sign
+, *__»¡riù 
+__buf
+,
+
+1047 
+size_t
+ 
+__Ën
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4, 5));
+
+1049 

+	$qecvt_r
+ (
+__v®ue
+, 
+__ndig™
+,
+
+1050 *
+__»¡riù
+ 
+__deýt
+, *__»¡riù 
+__sign
+,
+
+1051 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+)
+
+1052 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4, 5));
+
+1053 

+	$qfcvt_r
+ (
+__v®ue
+, 
+__ndig™
+,
+
+1054 *
+__»¡riù
+ 
+__deýt
+, *__»¡riù 
+__sign
+,
+
+1055 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+)
+
+1056 
+__THROW
+ 
+	`__nÚnuÎ
+ ((3, 4, 5));
+
+1062 

+	$mbËn
+ (cÚ¡ *
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+;
+
+1065 

+	$mbtowc
+ (
+wch¬_t
+ *
+__»¡riù
+ 
+__pwc
+,
+
+1066 cÚ¡ *
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+;
+
+1069 

+	$wùomb
+ (*
+__s
+, 
+wch¬_t
+ 
+__wch¬
+è
+__THROW
+;
+
+1073 
+size_t
+ 
+	$mb¡owcs
+ (
+wch¬_t
+ *
+__»¡riù
+ 
+__pwcs
+,
+
+1074 cÚ¡ *
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+
+
+1075 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2));
+
+1077 
+size_t
+ 
+	$wc¡ombs
+ (*
+__»¡riù
+ 
+__s
+,
+
+1078 cÚ¡ 
+wch¬_t
+ *
+__»¡riù
+ 
+__pwcs
+, 
+size_t
+ 
+__n
+)
+
+1079 
+__THROW
+
+
+1080 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 3)
+
+1081 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2));
+
+1083 #ifdeà
+__USE_MISC
+
+
+1088 

+	$½m©ch
+ (cÚ¡ *
+__»¥Ú£
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+1092 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+1099 

+	$g‘subÝt
+ (**
+__»¡riù
+ 
+__ÝtiÚp
+,
+
+1100 *cÚ¡ *
+__»¡riù
+ 
+__tok’s
+,
+
+1101 **
+__»¡riù
+ 
+__v®u•
+)
+
+1102 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2, 3)è
+__wur
+;
+
+1108 #ifdeà
+__USE_XOPEN2KXSI
+
+
+1110 

+	$posix_Ý’±
+ (
+__oæag
+è
+__wur
+;
+
+1113 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+1118 

+	$g¿Á±
+ (
+__fd
+è
+__THROW
+;
+
+1122 

+	$uÆock±
+ (
+__fd
+è
+__THROW
+;
+
+1127 
*
+	$±¢ame
+ (
+__fd
+è
+__THROW
+ 
+__wur
+;
+
+1130 #ifdeà
+__USE_GNU
+
+
+1134 

+	$±¢ame_r
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+)
+
+1135 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+1138 

+	`g‘±
+ ();
+
+1141 #ifdeà
+__USE_MISC
+
+
+1145 

+	$g‘lßdavg
+ (
+__lßdavg
+[], 
+__ÃËm
+)
+
+1146 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+1149 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K
+
+
+1152 

+	$‰y¦Ù
+ (è
+__THROW
+;
+
+1155 
+	~<b™s/¡dlib-æßt.h
+>
+
+1158 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+1159 
+	~<b™s/¡dlib.h
+>
+
+1162 
+	~<b™s/æßŠ.h
+>
+
+1163 #ià
+defšed
+ 
+__LDBL_COMPAT
+ || 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+1164 
+	~<b™s/¡dlib-ldbl.h
+>
+
+1167 
+__END_DECLS
+
+
+	@/usr/include/string.h
+
+22 #iâdef 
+_STRING_H
+
+
+23 
+	#_STRING_H
+ 1
+
+	)
+
+25 
+	#__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+	)
+
+26 
+	~<b™s/libc-h—d”-¡¬t.h
+>
+
+28 
+	g__BEGIN_DECLS
+
+
+31 
+	#__Ãed_size_t
+
+
+	)
+
+32 
+	#__Ãed_NULL
+
+
+	)
+
+33 
+	~<¡ddef.h
+>
+
+36 #ià
+defšed
+ 
+__ýlu¥lus
+ && (
+__GNUC_PREREQ
+ (4, 4) \
+
+37 || 
+	$__glibc_þªg_´”eq
+ (3, 5))
+
+38 
+	#__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+	)
+
+43 
*
+	$memýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+44 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+47 
*
+	$memmove
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+48 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+53 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+ || 
+	`__GLIBC_USE
+ (
+ISOC2X
+)
+
+54 
*
+	$memcýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+55 
+__c
+, 
+size_t
+ 
+__n
+)
+
+56 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 4));
+
+61 
*
+	$mem£t
+ (*
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+64 

+	$memcmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+size_t
+ 
+__n
+)
+
+65 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+80 

+	$__memcm³q
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+size_t
+ 
+__n
+)
+
+81 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+84 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+87 
*
+	`memchr
+ (*
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+88 
+__THROW
+ 
+	`__asm
+ ("memchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+89 
cÚ¡ *
+	`memchr
+ (cÚ¡ *
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+90 
+__THROW
+ 
+	`__asm
+ ("memchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+92 #ifdeà
+__OPTIMIZE__
+
+
+93 
+__ex‹º_®ways_šlše
+ *
+
+94 
+	`memchr
+ (*
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+è
+__THROW
+
+
+96  
+	`__bužtš_memchr
+ (
+__s
+, 
+__c
+, 
+__n
+);
+
+99 
+__ex‹º_®ways_šlše
+ const *
+
+100 
+	`memchr
+ (cÚ¡ *
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+è
+__THROW
+
+
+102  
+	`__bužtš_memchr
+ (
+__s
+, 
+__c
+, 
+__n
+);
+
+105 
+	}
+}
+
+107 
*
+	$memchr
+ (cÚ¡ *
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+108 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+111 #ifdeà
+__USE_GNU
+
+
+114 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+115 
"C++" *
+	$¿wmemchr
+ (*
+__s
+, 
+__c
+)
+
+116 
+__THROW
+ 
+	`__asm
+ ("¿wmemchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+117 
"C++" cÚ¡ *
+	$¿wmemchr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+118 
+__THROW
+ 
+	`__asm
+ ("¿wmemchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+120 
*
+	$¿wmemchr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+121 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+125 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+126 
"C++" *
+	$memrchr
+ (*
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+127 
+__THROW
+ 
+	`__asm
+ ("memrchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1))
+
+128 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 3));
+
+129 
"C++" cÚ¡ *
+	$memrchr
+ (cÚ¡ *
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+130 
+__THROW
+ 
+	`__asm
+ ("memrchr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1))
+
+131 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 3));
+
+133 
*
+	$memrchr
+ (cÚ¡ *
+__s
+, 
+__c
+, 
+size_t
+ 
+__n
+)
+
+134 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1))
+
+135 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 3));
+
+141 
*
+	$¡rýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+)
+
+142 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+144 
*
+	$¡ºýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+145 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+146 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+149 
*
+	$¡rÿt
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+)
+
+150 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+152 
*
+	$¡ºÿt
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+153 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+156 

+	$¡rcmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+)
+
+157 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+159 

+	$¡ºcmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+size_t
+ 
+__n
+)
+
+160 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+163 

+	$¡rcÞl
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+)
+
+164 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+166 
+size_t
+ 
+	$¡rxäm
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+167 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+168 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+170 #ifdeà
+__USE_XOPEN2K8
+
+
+172 
+	~<b™s/ty³s/loÿË_t.h
+>
+
+175 

+	$¡rcÞl_l
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+loÿË_t
+ 
+__l
+)
+
+176 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2, 3));
+
+179 
+size_t
+ 
+	$¡rxäm_l
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+,
+
+180 
+loÿË_t
+ 
+__l
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 4))
+
+181 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+184 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+ \
+
+185 || 
+	`__GLIBC_USE
+ (
+LIB_EXT2
+è|| 
+	$__GLIBC_USE
+ (
+ISOC2X
+))
+
+187 
*
+	$¡rdup
+ (cÚ¡ *
+__s
+)
+
+188 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+	`__nÚnuÎ
+ ((1));
+
+194 #ià
+defšed
+ 
+__USE_XOPEN2K8
+ || 
+	`__GLIBC_USE
+ (
+LIB_EXT2
+è|| __GLIBC_USE (
+ISOC2X
+)
+
+195 
*
+	$¡ºdup
+ (cÚ¡ *
+__¡ršg
+, 
+size_t
+ 
+__n
+)
+
+196 
+__THROW
+ 
+__©Œibu‹_m®loc__
+ 
+	`__nÚnuÎ
+ ((1));
+
+199 #ià
+defšed
+ 
+__USE_GNU
+ && defšed 
+__GNUC__
+
+
+201 
+	#¡rdu·
+(
+s
+) \
+
+202 (
+__ex‹nsiÚ__
+ \
+
+204 cÚ¡ *
+__Þd
+ = (
+s
+); \
+
+205 
+size_t
+ 
+__Ën
+ = 
+	`¡¾’
+ (
+__Þd
+) + 1; \
+
+206 *
+__Ãw
+ = (*è
+	`__bužtš_®loÿ
+ (
+__Ën
+); \
+
+207 (*è
+	`memýy
+ (
+__Ãw
+, 
+__Þd
+, 
+__Ën
+); \
+
+208 
+	}
+}))
+
+	)
+
+211 
+	#¡ºdu·
+(
+s
+, 
+n
+) \
+
+212 (
+__ex‹nsiÚ__
+ \
+
+214 cÚ¡ *
+__Þd
+ = (
+s
+); \
+
+215 
+size_t
+ 
+__Ën
+ = 
+	`¡ºËn
+ (
+__Þd
+, (
+n
+)); \
+
+216 *
+__Ãw
+ = (*è
+	`__bužtš_®loÿ
+ (
+__Ën
+ + 1); \
+
+217 
+__Ãw
+[
+__Ën
+] = '\0'; \
+
+218 (*è
+	`memýy
+ (
+__Ãw
+, 
+__Þd
+, 
+__Ën
+); \
+
+219 }))
+
+	)
+
+223 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+226 
*
+¡rchr
+ (*
+__s
+, 
+__c
+)
+
+227 
+__THROW
+ 
+__asm
+ ("¡rchr"è
+__©Œibu‹_pu»__
+ 
+__nÚnuÎ
+ ((1));
+
+228 
cÚ¡ *
+¡rchr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+229 
+__THROW
+ 
+__asm
+ ("¡rchr"è
+__©Œibu‹_pu»__
+ 
+__nÚnuÎ
+ ((1));
+
+231 #ifdeà
+__OPTIMIZE__
+
+
+232 
+__ex‹º_®ways_šlše
+ *
+
+233 
+¡rchr
+ (*
+__s
+, 
+__c
+è
+	g__THROW
+
+
+235  
+__bužtš_¡rchr
+ (
+__s
+, 
+__c
+);
+
+238 
+__ex‹º_®ways_šlše
+ const *
+
+239 
+¡rchr
+ (cÚ¡ *
+__s
+, 
+__c
+è
+	g__THROW
+
+
+241  
+__bužtš_¡rchr
+ (
+__s
+, 
+__c
+);
+
+246 
*
+	$¡rchr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+247 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+250 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+253 
*
+	`¡¼chr
+ (*
+__s
+, 
+__c
+)
+
+254 
+__THROW
+ 
+	`__asm
+ ("¡¼chr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+255 
cÚ¡ *
+	`¡¼chr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+256 
+__THROW
+ 
+	`__asm
+ ("¡¼chr"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+258 #ifdeà
+__OPTIMIZE__
+
+
+259 
+__ex‹º_®ways_šlše
+ *
+
+260 
+	`¡¼chr
+ (*
+__s
+, 
+__c
+è
+__THROW
+
+
+262  
+	`__bužtš_¡¼chr
+ (
+__s
+, 
+__c
+);
+
+265 
+__ex‹º_®ways_šlše
+ const *
+
+266 
+	`¡¼chr
+ (cÚ¡ *
+__s
+, 
+__c
+è
+__THROW
+
+
+268  
+	`__bužtš_¡¼chr
+ (
+__s
+, 
+__c
+);
+
+271 
+	}
+}
+
+273 
*
+	$¡¼chr
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+274 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+277 #ifdeà
+__USE_MISC
+
+
+280 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+281 
"C++" *
+	$¡rchºul
+ (*
+__s
+, 
+__c
+)
+
+282 
+__THROW
+ 
+	`__asm
+ ("¡rchºul"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+283 
"C++" cÚ¡ *
+	$¡rchºul
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+284 
+__THROW
+ 
+	`__asm
+ ("¡rchºul"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+286 
*
+	$¡rchºul
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+287 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+293 
+size_t
+ 
+	$¡rc¥n
+ (cÚ¡ *
+__s
+, cÚ¡ *
+__»jeù
+)
+
+294 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+297 
+size_t
+ 
+	$¡r¥n
+ (cÚ¡ *
+__s
+, cÚ¡ *
+__acû±
+)
+
+298 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+300 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+303 
*
+	`¡½brk
+ (*
+__s
+, cÚ¡ *
+__acû±
+)
+
+304 
+__THROW
+ 
+	`__asm
+ ("¡½brk"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+305 
cÚ¡ *
+	`¡½brk
+ (cÚ¡ *
+__s
+, cÚ¡ *
+__acû±
+)
+
+306 
+__THROW
+ 
+	`__asm
+ ("¡½brk"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+308 #ifdeà
+__OPTIMIZE__
+
+
+309 
+__ex‹º_®ways_šlše
+ *
+
+310 
+	`¡½brk
+ (*
+__s
+, cÚ¡ *
+__acû±
+è
+__THROW
+
+
+312  
+	`__bužtš_¡½brk
+ (
+__s
+, 
+__acû±
+);
+
+315 
+__ex‹º_®ways_šlše
+ const *
+
+316 
+	`¡½brk
+ (cÚ¡ *
+__s
+, cÚ¡ *
+__acû±
+è
+__THROW
+
+
+318  
+	`__bužtš_¡½brk
+ (
+__s
+, 
+__acû±
+);
+
+321 
+	}
+}
+
+323 
*
+	$¡½brk
+ (cÚ¡ *
+__s
+, cÚ¡ *
+__acû±
+)
+
+324 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+327 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+330 
*
+	`¡r¡r
+ (*
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+)
+
+331 
+__THROW
+ 
+	`__asm
+ ("¡r¡r"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+332 
cÚ¡ *
+	`¡r¡r
+ (cÚ¡ *
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+)
+
+333 
+__THROW
+ 
+	`__asm
+ ("¡r¡r"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+335 #ifdeà
+__OPTIMIZE__
+
+
+336 
+__ex‹º_®ways_šlše
+ *
+
+337 
+	`¡r¡r
+ (*
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+è
+__THROW
+
+
+339  
+	`__bužtš_¡r¡r
+ (
+__hay¡ack
+, 
+__ÃedË
+);
+
+342 
+__ex‹º_®ways_šlše
+ const *
+
+343 
+	`¡r¡r
+ (cÚ¡ *
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+è
+__THROW
+
+
+345  
+	`__bužtš_¡r¡r
+ (
+__hay¡ack
+, 
+__ÃedË
+);
+
+348 
+	}
+}
+
+350 
*
+	$¡r¡r
+ (cÚ¡ *
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+)
+
+351 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+356 
*
+	$¡¹ok
+ (*
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__d–im
+)
+
+357 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+361 
*
+	$__¡¹ok_r
+ (*
+__»¡riù
+ 
+__s
+,
+
+362 cÚ¡ *
+__»¡riù
+ 
+__d–im
+,
+
+363 **
+__»¡riù
+ 
+__§ve_±r
+)
+
+364 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+365 #ifdeà
+__USE_POSIX
+
+
+366 
*
+	$¡¹ok_r
+ (*
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__d–im
+,
+
+367 **
+__»¡riù
+ 
+__§ve_±r
+)
+
+368 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+371 #ifdeà
+__USE_MISC
+
+
+373 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+374 
"C++" *
+	$¡rÿ£¡r
+ (*
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+)
+
+375 
+__THROW
+ 
+	`__asm
+ ("¡rÿ£¡r"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+376 
"C++" cÚ¡ *
+	$¡rÿ£¡r
+ (cÚ¡ *
+__hay¡ack
+,
+
+377 cÚ¡ *
+__ÃedË
+)
+
+378 
+__THROW
+ 
+	`__asm
+ ("¡rÿ£¡r"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+380 
*
+	$¡rÿ£¡r
+ (cÚ¡ *
+__hay¡ack
+, cÚ¡ *
+__ÃedË
+)
+
+381 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+385 #ifdeà
+__USE_MISC
+
+
+389 
*
+	$memmem
+ (cÚ¡ *
+__hay¡ack
+, 
+size_t
+ 
+__hay¡ackËn
+,
+
+390 cÚ¡ *
+__ÃedË
+, 
+size_t
+ 
+__ÃedËËn
+)
+
+391 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 3))
+
+392 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 2))
+
+393 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 3, 4));
+
+397 
*
+	$__mempýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+398 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+399 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+400 
*
+	$mempýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+401 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+402 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+407 
+size_t
+ 
+	$¡¾’
+ (cÚ¡ *
+__s
+)
+
+408 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+410 #ifdef 
+__USE_XOPEN2K8
+
+
+413 
+size_t
+ 
+	$¡ºËn
+ (cÚ¡ *
+__¡ršg
+, 
+size_t
+ 
+__maxËn
+)
+
+414 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+419 
*
+	$¡»¼Ü
+ (
+__”ºum
+è
+__THROW
+;
+
+420 #ifdeà
+__USE_XOPEN2K
+
+
+428 #ià
+defšed
+ 
+__USE_XOPEN2K
+ && !defšed 
+__USE_GNU
+
+
+431 #ifdeà
+__REDIRECT_NTH
+
+
+432 

+	`__REDIRECT_NTH
+ (
+¡»¼Ü_r
+,
+
+433 (
+__”ºum
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+),
+
+434 
+__xpg_¡»¼Ü_r
+è
+	`__nÚnuÎ
+ ((2))
+
+435 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+437 

+	$__xpg_¡»¼Ü_r
+ (
+__”ºum
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+)
+
+438 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+439 
+	#¡»¼Ü_r
+ 
+__xpg_¡»¼Ü_r
+
+
+	)
+
+444 
*
+	$¡»¼Ü_r
+ (
+__”ºum
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+)
+
+445 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+448 #ifdeà
+__USE_GNU
+
+
+450 
cÚ¡ *
+	$¡»¼Üdesc_Å
+ (
+__”r
+è
+__THROW
+;
+
+452 
cÚ¡ *
+	$¡»¼ÜÇme_Å
+ (
+__”r
+è
+__THROW
+;
+
+456 #ifdeà
+__USE_XOPEN2K8
+
+
+458 
*
+	$¡»¼Ü_l
+ (
+__”ºum
+, 
+loÿË_t
+ 
+__l
+è
+__THROW
+;
+
+461 #ifdeà
+__USE_MISC
+
+
+462 
+	~<¡ršgs.h
+>
+
+466 

+	$ex¶ic™_bz”o
+ (*
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1))
+
+467 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+471 
*
+	$¡r£p
+ (**
+__»¡riù
+ 
+__¡ršgp
+,
+
+472 cÚ¡ *
+__»¡riù
+ 
+__d–im
+)
+
+473 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+476 #ifdef 
+__USE_XOPEN2K8
+
+
+478 
*
+	$¡rsigÇl
+ (
+__sig
+è
+__THROW
+;
+
+480 #ifdeà
+__USE_GNU
+
+
+482 
cÚ¡ *
+	$sigabb»v_Å
+ (
+__sig
+è
+__THROW
+;
+
+485 
cÚ¡ *
+	$sigdesü_Å
+ (
+__sig
+è
+__THROW
+;
+
+489 
*
+	$__¡pýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+)
+
+490 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+491 
*
+	$¡pýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+)
+
+492 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+496 
*
+	$__¡²ýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+497 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+498 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+499 
*
+	$¡²ýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+500 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+501 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+504 #ifdeà
+__USE_MISC
+
+
+506 
+size_t
+ 
+	$¡¾ýy
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+507 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+508 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+512 
+size_t
+ 
+	$¡¾ÿt
+ (*
+__»¡riù
+ 
+__de¡
+,
+
+513 cÚ¡ *
+__»¡riù
+ 
+__¤c
+, 
+size_t
+ 
+__n
+)
+
+514 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+	`__©Œ_acûss
+ ((
+__»ad_wr™e__
+, 1, 3));
+
+517 #ifdef 
+__USE_GNU
+
+
+519 

+	$¡rv”scmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+)
+
+520 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+523 
*
+	$¡räy
+ (*
+__¡ršg
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+526 
*
+	$memäob
+ (*
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1))
+
+527 
+	`__©Œ_acûss
+ ((
+__»ad_wr™e__
+, 1, 2));
+
+529 #iâdeà
+ba£Çme
+
+
+534 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+535 
"C++" *
+	$ba£Çme
+ (*
+__fž’ame
+)
+
+536 
+__THROW
+ 
+	`__asm
+ ("ba£Çme"è
+	`__nÚnuÎ
+ ((1));
+
+537 
"C++" cÚ¡ *
+	$ba£Çme
+ (cÚ¡ *
+__fž’ame
+)
+
+538 
+__THROW
+ 
+	`__asm
+ ("ba£Çme"è
+	`__nÚnuÎ
+ ((1));
+
+540 
*
+	$ba£Çme
+ (cÚ¡ *
+__fž’ame
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+545 #ià
+	`__GNUC_PREREQ
+ (3,4)
+
+546 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+548 
+	~<b™s/¡ršg_fÜtif›d.h
+>
+
+552 
+__END_DECLS
+
+
+	@/usr/include/strings.h
+
+18 #iâdef 
+_STRINGS_H
+
+
+19 
+	#_STRINGS_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+22 
+	#__Ãed_size_t
+
+
+	)
+
+23 
+	~<¡ddef.h
+>
+
+26 #ià
+defšed
+ 
+__ýlu¥lus
+ && 
+__GNUC_PREREQ
+ (4, 4)
+
+27 
+	#__CORRECT_ISO_CPP_STRINGS_H_PROTO
+
+
+	)
+
+30 
+	g__BEGIN_DECLS
+
+
+32 #ià
+defšed
+ 
+__USE_MISC
+ || !defšed 
+__USE_XOPEN2K8
+
+
+34 

+	$bcmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+size_t
+ 
+__n
+)
+
+35 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+38 

+	$bcÝy
+ (cÚ¡ *
+__¤c
+, *
+__de¡
+, 
+size_t
+ 
+__n
+)
+
+39 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+42 

+	$bz”o
+ (*
+__s
+, 
+size_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+45 #ifdeà
+__CORRECT_ISO_CPP_STRINGS_H_PROTO
+
+
+48 
*
+	`šdex
+ (*
+__s
+, 
+__c
+)
+
+49 
+__THROW
+ 
+	`__asm
+ ("šdex"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+50 
cÚ¡ *
+	`šdex
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+51 
+__THROW
+ 
+	`__asm
+ ("šdex"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+53 #ià
+defšed
+ 
+__OPTIMIZE__
+
+
+54 
+__ex‹º_®ways_šlše
+ *
+
+55 
+	`šdex
+ (*
+__s
+, 
+__c
+è
+__THROW
+
+
+57  
+	`__bužtš_šdex
+ (
+__s
+, 
+__c
+);
+
+60 
+__ex‹º_®ways_šlše
+ const *
+
+61 
+	`šdex
+ (cÚ¡ *
+__s
+, 
+__c
+è
+__THROW
+
+
+63  
+	`__bužtš_šdex
+ (
+__s
+, 
+__c
+);
+
+66 
+	}
+}
+
+68 
*
+	$šdex
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+69 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+73 #ifdeà
+__CORRECT_ISO_CPP_STRINGS_H_PROTO
+
+
+76 
*
+	`ršdex
+ (*
+__s
+, 
+__c
+)
+
+77 
+__THROW
+ 
+	`__asm
+ ("ršdex"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+78 
cÚ¡ *
+	`ršdex
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+79 
+__THROW
+ 
+	`__asm
+ ("ršdex"è
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+81 #ià
+defšed
+ 
+__OPTIMIZE__
+
+
+82 
+__ex‹º_®ways_šlše
+ *
+
+83 
+	`ršdex
+ (*
+__s
+, 
+__c
+è
+__THROW
+
+
+85  
+	`__bužtš_ršdex
+ (
+__s
+, 
+__c
+);
+
+88 
+__ex‹º_®ways_šlše
+ const *
+
+89 
+	`ršdex
+ (cÚ¡ *
+__s
+, 
+__c
+è
+__THROW
+
+
+91  
+	`__bužtš_ršdex
+ (
+__s
+, 
+__c
+);
+
+94 
+	}
+}
+
+96 
*
+	$ršdex
+ (cÚ¡ *
+__s
+, 
+__c
+)
+
+97 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1));
+
+101 #ià
+defšed
+ 
+__USE_MISC
+ || !defšed 
+__USE_XOPEN2K8
+ || defšed 
+__USE_XOPEN2K8XSI
+
+
+104 

+	$ffs
+ (
+__i
+è
+__THROW
+ 
+__©Œibu‹_cÚ¡__
+;
+
+109 #ifdef 
+__USE_MISC
+
+
+110 

+	$ff¦
+ (
+__l
+è
+__THROW
+ 
+__©Œibu‹_cÚ¡__
+;
+
+111 
+__ex‹nsiÚ__
+ 

+	$ff¦l
+ (
+__Î
+)
+
+112 
+__THROW
+ 
+__©Œibu‹_cÚ¡__
+;
+
+116 

+	$¡rÿ£cmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+)
+
+117 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+120 

+	$¡ºÿ£cmp
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+size_t
+ 
+__n
+)
+
+121 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+123 #ifdef 
+__USE_XOPEN2K8
+
+
+125 
+	~<b™s/ty³s/loÿË_t.h
+>
+
+128 

+	$¡rÿ£cmp_l
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+, 
+loÿË_t
+ 
+__loc
+)
+
+129 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2, 3));
+
+133 

+	$¡ºÿ£cmp_l
+ (cÚ¡ *
+__s1
+, cÚ¡ *
+__s2
+,
+
+134 
+size_t
+ 
+__n
+, 
+loÿË_t
+ 
+__loc
+)
+
+135 
+__THROW
+ 
+__©Œibu‹_pu»__
+ 
+	`__nÚnuÎ
+ ((1, 2, 4));
+
+138 
+__END_DECLS
+
+
+140 #ià
+	`__GNUC_PREREQ
+ (3,4è&& 
+__USE_FORTIFY_LEVEL
+ > 0 \
+
+141 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+143 #ià
+defšed
+ 
+__USE_MISC
+ || !defšed 
+__USE_XOPEN2K8
+
+
+144 
+	~<b™s/¡ršgs_fÜtif›d.h
+>
+
+	@/usr/include/sys/epoll.h
+
+18 #iâdef 
+_SYS_EPOLL_H
+
+
+19 
+	#_SYS_EPOLL_H
+ 1
+
+	)
+
+21 
+	~<¡dšt.h
+>
+
+22 
+	~<sys/ty³s.h
+>
+
+24 
+	~<b™s/ty³s/sig£t_t.h
+>
+
+25 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+28 
+	~<b™s/•Þl.h
+>
+
+30 #iâdeà
+__EPOLL_PACKED
+
+
+31 
+	#__EPOLL_PACKED
+
+
+	)
+
+35 
+	eEPOLL_EVENTS
+
+
+37 
+	mEPOLLIN
+ = 0x001,
+
+38 
+	#EPOLLIN
+ 
+EPOLLIN
+
+
+	)
+
+39 
+	mEPOLLPRI
+ = 0x002,
+
+40 
+	#EPOLLPRI
+ 
+EPOLLPRI
+
+
+	)
+
+41 
+	mEPOLLOUT
+ = 0x004,
+
+42 
+	#EPOLLOUT
+ 
+EPOLLOUT
+
+
+	)
+
+43 
+	mEPOLLRDNORM
+ = 0x040,
+
+44 
+	#EPOLLRDNORM
+ 
+EPOLLRDNORM
+
+
+	)
+
+45 
+	mEPOLLRDBAND
+ = 0x080,
+
+46 
+	#EPOLLRDBAND
+ 
+EPOLLRDBAND
+
+
+	)
+
+47 
+	mEPOLLWRNORM
+ = 0x100,
+
+48 
+	#EPOLLWRNORM
+ 
+EPOLLWRNORM
+
+
+	)
+
+49 
+	mEPOLLWRBAND
+ = 0x200,
+
+50 
+	#EPOLLWRBAND
+ 
+EPOLLWRBAND
+
+
+	)
+
+51 
+	mEPOLLMSG
+ = 0x400,
+
+52 
+	#EPOLLMSG
+ 
+EPOLLMSG
+
+
+	)
+
+53 
+	mEPOLLERR
+ = 0x008,
+
+54 
+	#EPOLLERR
+ 
+EPOLLERR
+
+
+	)
+
+55 
+	mEPOLLHUP
+ = 0x010,
+
+56 
+	#EPOLLHUP
+ 
+EPOLLHUP
+
+
+	)
+
+57 
+	mEPOLLRDHUP
+ = 0x2000,
+
+58 
+	#EPOLLRDHUP
+ 
+EPOLLRDHUP
+
+
+	)
+
+59 
+	mEPOLLEXCLUSIVE
+ = 1u << 28,
+
+60 
+	#EPOLLEXCLUSIVE
+ 
+EPOLLEXCLUSIVE
+
+
+	)
+
+61 
+	mEPOLLWAKEUP
+ = 1u << 29,
+
+62 
+	#EPOLLWAKEUP
+ 
+EPOLLWAKEUP
+
+
+	)
+
+63 
+	mEPOLLONESHOT
+ = 1u << 30,
+
+64 
+	#EPOLLONESHOT
+ 
+EPOLLONESHOT
+
+
+	)
+
+65 
+	mEPOLLET
+ = 1u << 31
+
+66 
+	#EPOLLET
+ 
+EPOLLET
+
+
+	)
+
+71 
+	#EPOLL_CTL_ADD
+ 1
+
+	)
+
+72 
+	#EPOLL_CTL_DEL
+ 2
+
+	)
+
+73 
+	#EPOLL_CTL_MOD
+ 3
+
+	)
+
+76 
+	u•Þl_d©a
+
+
+78 *
+	m±r
+;
+
+79 
+	mfd
+;
+
+80 
+ušt32_t
+ 
+	mu32
+;
+
+81 
+ušt64_t
+ 
+	mu64
+;
+
+82 } 
+	t•Þl_d©a_t
+;
+
+84 
+	s•Þl_ev’t
+
+
+86 
+ušt32_t
+ 
+	mev’ts
+;
+
+87 
+•Þl_d©a_t
+ 
+	md©a
+;
+
+88 } 
+	g__EPOLL_PACKED
+;
+
+91 
+__BEGIN_DECLS
+
+
+97 

+	$•Þl_ü—‹
+ (
+__size
+è
+__THROW
+;
+
+101 

+	$•Þl_ü—‹1
+ (
+__æags
+è
+__THROW
+;
+
+110 

+	$•Þl_ùl
+ (
+__•fd
+, 
+__Ý
+, 
+__fd
+,
+
+111 
+•Þl_ev’t
+ *
+__ev’t
+è
+__THROW
+;
+
+124 

+	$•Þl_wa™
+ (
+__•fd
+, 
+•Þl_ev’t
+ *
+__ev’ts
+,
+
+125 
+__maxev’ts
+, 
+__timeout
+)
+
+126 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3)è
+	`__nÚnuÎ
+ ((2));
+
+134 

+	$•Þl_pwa™
+ (
+__•fd
+, 
+•Þl_ev’t
+ *
+__ev’ts
+,
+
+135 
+__maxev’ts
+, 
+__timeout
+,
+
+136 cÚ¡ 
+__sig£t_t
+ *
+__ss
+)
+
+137 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3)è
+	`__nÚnuÎ
+ ((2));
+
+143 #iâdeà
+__USE_TIME_BITS64
+
+
+144 

+	$•Þl_pwa™2
+ (
+__•fd
+, 
+•Þl_ev’t
+ *
+__ev’ts
+,
+
+145 
+__maxev’ts
+, cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+146 cÚ¡ 
+__sig£t_t
+ *
+__ss
+)
+
+147 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3)è
+	`__nÚnuÎ
+ ((2));
+
+149 #ifdeà
+__REDIRECT
+
+
+150 

+	`__REDIRECT
+ (
+•Þl_pwa™2
+, (
+__•fd
+, 
+•Þl_ev’t
+ *
+__ev
+,
+
+151 
+__maxevs
+,
+
+152 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+153 cÚ¡ 
+__sig£t_t
+ *
+__ss
+),
+
+154 
+__•Þl_pwa™2_time64
+)
+
+155 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3)è
+	`__nÚnuÎ
+ ((2));
+
+157 
+	#•Þl_pwa™2
+ 
+__•Þl_pwa™2_time64
+
+
+	)
+
+161 
+__END_DECLS
+
+
+	@/usr/include/sys/file.h
+
+18 #iâdef 
+_SYS_FILE_H
+
+
+19 
+	#_SYS_FILE_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 #iâdef 
+_FCNTL_H
+
+
+24 
+	~<fúŽ.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+32 #iâdeà
+L_SET
+
+
+33 
+	#L_SET
+ 0
+
+	)
+
+34 
+	#L_INCR
+ 1
+
+	)
+
+35 
+	#L_XTND
+ 2
+
+	)
+
+40 
+	#LOCK_SH
+ 1
+
+	)
+
+41 
+	#LOCK_EX
+ 2
+
+	)
+
+42 
+	#LOCK_UN
+ 8
+
+	)
+
+45 
+	#LOCK_NB
+ 4
+
+	)
+
+50 

+	$æock
+ (
+__fd
+, 
+__Ý”©iÚ
+è
+__THROW
+;
+
+53 
+__END_DECLS
+
+
+	@/usr/include/sys/ioctl.h
+
+18 #iâdef 
+_SYS_IOCTL_H
+
+
+19 
+	#_SYS_IOCTL_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 
+	g__BEGIN_DECLS
+
+
+26 
+	~<b™s/ioùls.h
+>
+
+29 
+	~<b™s/ioùl-ty³s.h
+>
+
+36 
+	~<sys/‰ydeçuÉs.h
+>
+
+41 #iâdeà
+__USE_TIME_BITS64
+
+
+42 

+	$ioùl
+ (
+__fd
+, 
+__»que¡
+, ...è
+__THROW
+;
+
+44 #ifdeà
+__REDIRECT
+
+
+45 

+	`__REDIRECT_NTH
+ (
+ioùl
+, (
+__fd
+, 
+__»que¡
+, ...),
+
+46 
+__ioùl_time64
+);
+
+48 

+	$__ioùl_time64
+ (
+__fd
+, 
+__»que¡
+, ...è
+__THROW
+;
+
+49 
+	#ioùl
+ 
+__ioùl_time64
+
+
+	)
+
+53 
+__END_DECLS
+
+
+	@/usr/include/sys/mman.h
+
+19 #iâdef 
+_SYS_MMAN_H
+
+
+20 
+	#_SYS_MMAN_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+23 
+	~<b™s/ty³s.h
+>
+
+24 
+	#__Ãed_size_t
+
+
+	)
+
+25 
+	~<¡ddef.h
+>
+
+27 #iâdeà
+__off_t_defšed
+
+
+28 #iâdeà
+__USE_FILE_OFFSET64
+
+
+29 
+__off_t
+ 
+	toff_t
+;
+
+31 
+__off64_t
+ 
+	toff_t
+;
+
+33 
+	#__off_t_defšed
+
+
+	)
+
+36 #iâdeà
+__mode_t_defšed
+
+
+37 
+__mode_t
+ 
+	tmode_t
+;
+
+38 
+	#__mode_t_defšed
+
+
+	)
+
+41 
+	~<b™s/mmª.h
+>
+
+44 
+	#MAP_FAILED
+ ((*è-1)
+
+	)
+
+46 
+	g__BEGIN_DECLS
+
+
+56 #iâdeà
+__USE_FILE_OFFSET64
+
+
+57 
*
+	$mm­
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__´Ù
+,
+
+58 
+__æags
+, 
+__fd
+, 
+__off_t
+ 
+__off£t
+è
+__THROW
+;
+
+60 #ifdeà
+__REDIRECT_NTH
+
+
+61 
* 
+	`__REDIRECT_NTH
+ (
+mm­
+,
+
+62 (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__´Ù
+,
+
+63 
+__æags
+, 
+__fd
+, 
+__off64_t
+ 
+__off£t
+),
+
+64 
+mm­64
+);
+
+66 
+	#mm­
+ 
+mm­64
+
+
+	)
+
+69 #ifdeà
+__USE_LARGEFILE64
+
+
+70 
*
+	$mm­64
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__´Ù
+,
+
+71 
+__æags
+, 
+__fd
+, 
+__off64_t
+ 
+__off£t
+è
+__THROW
+;
+
+76 

+	$munm­
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+;
+
+81 

+	$m´Ùeù
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__´Ù
+è
+__THROW
+;
+
+89 

+	`msync
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__æags
+);
+
+91 #ifdeà
+__USE_MISC
+
+
+94 

+	$madvi£
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__adviû
+è
+__THROW
+;
+
+96 #ifdeà
+__USE_XOPEN2K
+
+
+98 

+	$posix_madvi£
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__adviû
+è
+__THROW
+;
+
+103 

+	$mlock
+ (cÚ¡ *
+__addr
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+;
+
+106 

+	$muÆock
+ (cÚ¡ *
+__addr
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+;
+
+111 

+	$mlock®l
+ (
+__æags
+è
+__THROW
+;
+
+115 

+	$muÆock®l
+ (è
+__THROW
+;
+
+117 #ifdeà
+__USE_MISC
+
+
+123 

+	$mšcÜe
+ (*
+__¡¬t
+, 
+size_t
+ 
+__Ën
+, *
+__vec
+)
+
+124 
+__THROW
+;
+
+127 #ifdeà
+__USE_GNU
+
+
+133 
*
+	$m»m­
+ (*
+__addr
+, 
+size_t
+ 
+__Þd_Ën
+, size_ˆ
+__Ãw_Ën
+,
+
+134 
+__æags
+, ...è
+__THROW
+;
+
+138 

+	$»m­_fže_·ges
+ (*
+__¡¬t
+, 
+size_t
+ 
+__size
+, 
+__´Ù
+,
+
+139 
+size_t
+ 
+__pgoff
+, 
+__æags
+è
+__THROW
+;
+
+144 

+	`shm_Ý’
+ (cÚ¡ *
+__Çme
+, 
+__oæag
+, 
+mode_t
+ 
+__mode
+);
+
+147 

+	`shm_uÆšk
+ (cÚ¡ *
+__Çme
+);
+
+150 
+	~<b™s/mmª_ext.h
+>
+
+152 
+__END_DECLS
+
+
+	@/usr/include/sys/poll.h
+
+19 #iâdef 
+_SYS_POLL_H
+
+
+20 
+	#_SYS_POLL_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+25 
+	~<b™s/pÞl.h
+>
+
+26 #ifdeà
+__USE_GNU
+
+
+27 
+	~<b™s/ty³s/__sig£t_t.h
+>
+
+28 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+33 
+	tnfds_t
+;
+
+36 
+	spÞlfd
+
+
+38 
+	mfd
+;
+
+39 
+	mev’ts
+;
+
+40 
+	m»v’ts
+;
+
+44 
+__BEGIN_DECLS
+
+
+54 

+	$pÞl
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+, 
+__timeout
+)
+
+55 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+57 #ifdeà
+__USE_GNU
+
+
+64 

+	$µÞl
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+65 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+66 cÚ¡ 
+__sig£t_t
+ *
+__ss
+)
+
+67 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+69 #ifdeà
+__USE_TIME_BITS64
+
+
+70 #ifdeà
+__REDIRECT
+
+
+71 

+	`__REDIRECT
+ (
+µÞl
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+72 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+73 cÚ¡ 
+__sig£t_t
+ *
+__ss
+),
+
+74 
+__µÞl64
+)
+
+75 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+77 
+	#µÞl
+ 
+__µÞl64
+
+
+	)
+
+82 
+__END_DECLS
+
+
+86 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+87 
+	~<b™s/pÞl2.h
+>
+
+	@/usr/include/sys/socket.h
+
+19 #iâdef 
+_SYS_SOCKET_H
+
+
+20 
+	#_SYS_SOCKET_H
+ 1
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+24 
+	g__BEGIN_DECLS
+
+
+26 
+	~<b™s/ty³s/¡ruù_iovec.h
+>
+
+27 
+	#__Ãed_size_t
+
+
+	)
+
+28 
+	~<¡ddef.h
+>
+
+33 
+	~<b™s/sock‘.h
+>
+
+35 #ifdeà
+__USE_MISC
+
+
+36 
+	~<b™s/ty³s/¡ruù_osockaddr.h
+>
+
+43 
+	mSHUT_RD
+ = 0,
+
+44 
+	#SHUT_RD
+ 
+SHUT_RD
+
+
+	)
+
+45 
+	mSHUT_WR
+,
+
+46 
+	#SHUT_WR
+ 
+SHUT_WR
+
+
+	)
+
+47 
+	mSHUT_RDWR
+
+
+48 
+	#SHUT_RDWR
+ 
+SHUT_RDWR
+
+
+	)
+
+57 #ià
+defšed
+ 
+__ýlu¥lus
+ || !
+__GNUC_PREREQ
+ (2, 7è|| !defšed 
+__USE_GNU
+
+
+58 
+	#__SOCKADDR_ARG
+ 
+sockaddr
+ *
+__»¡riù
+
+
+	)
+
+59 
+	#__CONST_SOCKADDR_ARG
+ cÚ¡ 
+sockaddr
+ *
+
+	)
+
+63 
+	#__SOCKADDR_ALLTYPES
+ \
+
+64 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr
+) \
+
+65 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_©
+) \
+
+66 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_ax25
+) \
+
+67 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_dl
+) \
+
+68 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_eÚ
+) \
+
+69 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_š
+) \
+
+70 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_š6
+) \
+
+71 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_š¬p
+) \
+
+72 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_�x
+) \
+
+73 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_iso
+) \
+
+74 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_ns
+) \
+
+75 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_un
+) \
+
+76 
+	`__SOCKADDR_ONETYPE
+ (
+sockaddr_x25
+)
+
+	)
+
+78 
+	#__SOCKADDR_ONETYPE
+(
+ty³
+èty³ *
+__»¡riù
+ 
+__
+##ty³##__;
+
+	)
+
+79 uniÚ { 
+	m__SOCKADDR_ALLTYPES
+
+
+80 } 
+	t__SOCKADDR_ARG
+ 
+	t__©Œibu‹__
+ ((
+	t__Œª¥¬’t_uniÚ__
+));
+
+81 #undeà
+__SOCKADDR_ONETYPE
+
+
+82 
+	#__SOCKADDR_ONETYPE
+(
+ty³
+ècÚ¡ ty³ *
+__»¡riù
+ 
+__
+##ty³##__;
+
+	)
+
+83 uniÚ { 
+	m__SOCKADDR_ALLTYPES
+
+
+84 } 
+	t__CONST_SOCKADDR_ARG
+ 
+	t__©Œibu‹__
+ ((
+	t__Œª¥¬’t_uniÚ__
+));
+
+85 #undeà
+__SOCKADDR_ONETYPE
+
+
+88 #ifdeà
+__USE_GNU
+
+
+90 
+	smmsghdr
+
+
+92 
+msghdr
+ 
+	mmsg_hdr
+;
+
+93 
+	mmsg_Ën
+;
+
+102 

+	$sock‘
+ (
+__domaš
+, 
+__ty³
+, 
+__´ÙocÞ
+è
+__THROW
+;
+
+108 

+	$sock‘·œ
+ (
+__domaš
+, 
+__ty³
+, 
+__´ÙocÞ
+,
+
+109 
+__fds
+[2]è
+__THROW
+;
+
+112 

+	$bšd
+ (
+__fd
+, 
+__CONST_SOCKADDR_ARG
+ 
+__addr
+, 
+sockËn_t
+ 
+__Ën
+)
+
+113 
+__THROW
+;
+
+116 

+	$g‘sockÇme
+ (
+__fd
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+117 
+sockËn_t
+ *
+__»¡riù
+ 
+__Ën
+è
+__THROW
+;
+
+126 

+	`cÚÃù
+ (
+__fd
+, 
+__CONST_SOCKADDR_ARG
+ 
+__addr
+, 
+sockËn_t
+ 
+__Ën
+);
+
+130 

+	$g‘³”Çme
+ (
+__fd
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+131 
+sockËn_t
+ *
+__»¡riù
+ 
+__Ën
+è
+__THROW
+;
+
+138 
+ssize_t
+ 
+	`£nd
+ (
+__fd
+, cÚ¡ *
+__buf
+, 
+size_t
+ 
+__n
+, 
+__æags
+);
+
+145 
+ssize_t
+ 
+	`»cv
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__n
+, 
+__æags
+);
+
+152 
+ssize_t
+ 
+	`£ndto
+ (
+__fd
+, cÚ¡ *
+__buf
+, 
+size_t
+ 
+__n
+,
+
+153 
+__æags
+, 
+__CONST_SOCKADDR_ARG
+ 
+__addr
+,
+
+154 
+sockËn_t
+ 
+__addr_Ën
+);
+
+163 
+ssize_t
+ 
+	`»cväom
+ (
+__fd
+, *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__n
+,
+
+164 
+__æags
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+165 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+);
+
+173 #iâdeà
+__USE_TIME_BITS64
+
+
+174 
+ssize_t
+ 
+	`£ndmsg
+ (
+__fd
+, cÚ¡ 
+msghdr
+ *
+__mes§ge
+,
+
+175 
+__æags
+);
+
+177 #ifdeà
+__REDIRECT
+
+
+178 
+ssize_t
+ 
+	`__REDIRECT
+ (
+£ndmsg
+, (
+__fd
+, cÚ¡ 
+msghdr
+ *
+__mes§ge
+,
+
+179 
+__æags
+),
+
+180 
+__£ndmsg64
+);
+
+182 
+ssize_t
+ 
+	`__£ndmsg64
+ (
+__fd
+, cÚ¡ 
+msghdr
+ *
+__mes§ge
+,
+
+183 
+__æags
+);
+
+184 
+	#£ndmsg
+ 
+__£ndmsg64
+
+
+	)
+
+188 #ifdeà
+__USE_GNU
+
+
+194 #iâdeà
+__USE_TIME_BITS64
+
+
+195 

+	`£ndmmsg
+ (
+__fd
+, 
+mmsghdr
+ *
+__vmes§ges
+,
+
+196 
+__vËn
+, 
+__æags
+);
+
+198 #ifdeà
+__REDIRECT
+
+
+199 

+	`__REDIRECT
+ (
+£ndmmsg
+, (
+__fd
+, 
+mmsghdr
+ *
+__vmes§ges
+,
+
+200 
+__vËn
+, 
+__æags
+),
+
+201 
+__£ndmmsg64
+);
+
+203 

+	`__£ndmmsg64
+ (
+__fd
+, 
+mmsghdr
+ *
+__vmes§ges
+,
+
+204 
+__vËn
+, 
+__æags
+);
+
+205 
+	#£ndmmsg
+ 
+__£ndmmsg64
+
+
+	)
+
+215 #iâdeà
+__USE_TIME_BITS64
+
+
+216 
+ssize_t
+ 
+	`»cvmsg
+ (
+__fd
+, 
+msghdr
+ *
+__mes§ge
+, 
+__æags
+);
+
+218 #ifdeà
+__REDIRECT
+
+
+219 
+ssize_t
+ 
+	`__REDIRECT
+ (
+»cvmsg
+,
+
+220 (
+__fd
+, 
+msghdr
+ *
+__mes§ge
+, 
+__æags
+),
+
+221 
+__»cvmsg64
+);
+
+223 
+ssize_t
+ 
+	`__»cvmsg64
+ (
+__fd
+, 
+msghdr
+ *
+__mes§ge
+, 
+__æags
+);
+
+224 
+	#»cvmsg
+ 
+__»cvmsg64
+
+
+	)
+
+228 #ifdeà
+__USE_GNU
+
+
+234 #iâdeà
+__USE_TIME_BITS64
+
+
+235 

+	`»cvmmsg
+ (
+__fd
+, 
+mmsghdr
+ *
+__vmes§ges
+,
+
+236 
+__vËn
+, 
+__æags
+,
+
+237 
+time¥ec
+ *
+__tmo
+);
+
+239 #ifdeà
+__REDIRECT
+
+
+240 

+	`__REDIRECT
+ (
+»cvmmsg
+, (
+__fd
+, 
+mmsghdr
+ *
+__vmes§ges
+,
+
+241 
+__vËn
+, 
+__æags
+,
+
+242 
+time¥ec
+ *
+__tmo
+),
+
+243 
+__»cvmmsg64
+);
+
+245 
+	#»cvmmsg
+ 
+__»cvmmsg64
+
+
+	)
+
+254 #iâdeà
+__USE_TIME_BITS64
+
+
+255 

+	$g‘sockÝt
+ (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+256 *
+__»¡riù
+ 
+__Ýtv®
+,
+
+257 
+sockËn_t
+ *
+__»¡riù
+ 
+__ÝŽ’
+è
+__THROW
+;
+
+259 #ifdeà
+__REDIRECT
+
+
+260 

+	`__REDIRECT_NTH
+ (
+g‘sockÝt
+,
+
+261 (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+262 *
+__»¡riù
+ 
+__Ýtv®
+,
+
+263 
+sockËn_t
+ *
+__»¡riù
+ 
+__ÝŽ’
+),
+
+264 
+__g‘sockÝt64
+);
+
+266 

+	$__g‘sockÝt64
+ (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+267 *
+__»¡riù
+ 
+__Ýtv®
+,
+
+268 
+sockËn_t
+ *
+__»¡riù
+ 
+__ÝŽ’
+è
+__THROW
+;
+
+269 
+	#g‘sockÝt
+ 
+__g‘sockÝt64
+
+
+	)
+
+276 #iâdeà
+__USE_TIME_BITS64
+
+
+277 

+	$£tsockÝt
+ (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+278 cÚ¡ *
+__Ýtv®
+, 
+sockËn_t
+ 
+__ÝŽ’
+è
+__THROW
+;
+
+280 #ifdeà
+__REDIRECT
+
+
+281 

+	`__REDIRECT_NTH
+ (
+£tsockÝt
+,
+
+282 (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+283 cÚ¡ *
+__Ýtv®
+, 
+sockËn_t
+ 
+__ÝŽ’
+),
+
+284 
+__£tsockÝt64
+);
+
+286 

+	$__£tsockÝt64
+ (
+__fd
+, 
+__Ëv–
+, 
+__ÝŠame
+,
+
+287 cÚ¡ *
+__Ýtv®
+, 
+sockËn_t
+ 
+__ÝŽ’
+è
+__THROW
+;
+
+288 
+	#£tsockÝt
+ 
+__£tsockÝt64
+
+
+	)
+
+296 

+	$li¡’
+ (
+__fd
+, 
+__n
+è
+__THROW
+;
+
+306 

+	`acû±
+ (
+__fd
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+307 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+);
+
+309 #ifdeà
+__USE_GNU
+
+
+314 

+	`acû±4
+ (
+__fd
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+315 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+, 
+__æags
+);
+
+324 

+	$shutdown
+ (
+__fd
+, 
+__how
+è
+__THROW
+;
+
+327 #ifdeà
+__USE_XOPEN2K
+
+
+329 

+	$sock©m¬k
+ (
+__fd
+è
+__THROW
+;
+
+333 #ifdeà
+__USE_MISC
+
+
+337 

+	$isfdty³
+ (
+__fd
+, 
+__fdty³
+è
+__THROW
+;
+
+342 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+343 
+	~<b™s/sock‘2.h
+>
+
+346 
+__END_DECLS
+
+
+	@/usr/include/sys/stat.h
+
+22 #iâdef 
+_SYS_STAT_H
+
+
+23 
+	#_SYS_STAT_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	~<b™s/ty³s.h
+>
+
+29 #ifdeà
+__USE_XOPEN2K8
+
+
+30 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+33 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K
+
+
+37 
+	~<b™s/ty³s/time_t.h
+>
+
+39 #iâdeà
+__dev_t_defšed
+
+
+40 
+__dev_t
+ 
+	tdev_t
+;
+
+41 
+	#__dev_t_defšed
+
+
+	)
+
+44 #iâdeà
+__gid_t_defšed
+
+
+45 
+__gid_t
+ 
+	tgid_t
+;
+
+46 
+	#__gid_t_defšed
+
+
+	)
+
+49 #iâdeà
+__šo_t_defšed
+
+
+50 #iâdeà
+__USE_FILE_OFFSET64
+
+
+51 
+__šo_t
+ 
+	tšo_t
+;
+
+53 
+__šo64_t
+ 
+	tšo_t
+;
+
+55 
+	#__šo_t_defšed
+
+
+	)
+
+58 #iâdeà
+__mode_t_defšed
+
+
+59 
+__mode_t
+ 
+	tmode_t
+;
+
+60 
+	#__mode_t_defšed
+
+
+	)
+
+63 #iâdeà
+__Æšk_t_defšed
+
+
+64 
+__Æšk_t
+ 
+	tÆšk_t
+;
+
+65 
+	#__Æšk_t_defšed
+
+
+	)
+
+68 #iâdeà
+__off_t_defšed
+
+
+69 #iâdeà
+__USE_FILE_OFFSET64
+
+
+70 
+__off_t
+ 
+	toff_t
+;
+
+72 
+__off64_t
+ 
+	toff_t
+;
+
+74 
+	#__off_t_defšed
+
+
+	)
+
+77 #iâdeà
+__uid_t_defšed
+
+
+78 
+__uid_t
+ 
+	tuid_t
+;
+
+79 
+	#__uid_t_defšed
+
+
+	)
+
+83 #ifdeà
+__USE_UNIX98
+
+
+84 #iâdeà
+__blkút_t_defšed
+
+
+85 #iâdeà
+__USE_FILE_OFFSET64
+
+
+86 
+__blkút_t
+ 
+	tblkút_t
+;
+
+88 
+__blkút64_t
+ 
+	tblkút_t
+;
+
+90 
+	#__blkút_t_defšed
+
+
+	)
+
+93 #iâdeà
+__blksize_t_defšed
+
+
+94 
+__blksize_t
+ 
+	tblksize_t
+;
+
+95 
+	#__blksize_t_defšed
+
+
+	)
+
+99 
+	g__BEGIN_DECLS
+
+
+101 
+	~<b™s/¡©.h
+>
+
+103 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+104 
+	#S_IFMT
+ 
+__S_IFMT
+
+
+	)
+
+105 
+	#S_IFDIR
+ 
+__S_IFDIR
+
+
+	)
+
+106 
+	#S_IFCHR
+ 
+__S_IFCHR
+
+
+	)
+
+107 
+	#S_IFBLK
+ 
+__S_IFBLK
+
+
+	)
+
+108 
+	#S_IFREG
+ 
+__S_IFREG
+
+
+	)
+
+109 #ifdeà
+__S_IFIFO
+
+
+110 
+	#S_IFIFO
+ 
+__S_IFIFO
+
+
+	)
+
+112 #ifdeà
+__S_IFLNK
+
+
+113 
+	#S_IFLNK
+ 
+__S_IFLNK
+
+
+	)
+
+115 #ià(
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+) \
+
+116 && 
+defšed
+ 
+	g__S_IFSOCK
+
+
+117 
+	#S_IFSOCK
+ 
+__S_IFSOCK
+
+
+	)
+
+123 
+	#__S_ISTYPE
+(
+mode
+, 
+mask
+è(((modeè& 
+__S_IFMT
+è=ð(mask))
+
+	)
+
+125 
+	#S_ISDIR
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFDIR
+)
+
+	)
+
+126 
+	#S_ISCHR
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFCHR
+)
+
+	)
+
+127 
+	#S_ISBLK
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFBLK
+)
+
+	)
+
+128 
+	#S_ISREG
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFREG
+)
+
+	)
+
+129 #ifdeà
+__S_IFIFO
+
+
+130 
+	#S_ISFIFO
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFIFO
+)
+
+	)
+
+132 #ifdeà
+__S_IFLNK
+
+
+133 
+	#S_ISLNK
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFLNK
+)
+
+	)
+
+136 #ià
+defšed
+ 
+__USE_MISC
+ && !defšed 
+__S_IFLNK
+
+
+137 
+	#S_ISLNK
+(
+mode
+è0
+
+	)
+
+140 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+) \
+
+141 && 
+defšed
+ 
+	g__S_IFSOCK
+
+
+142 
+	#S_ISSOCK
+(
+mode
+è
+	`__S_ISTYPE
+((mode), 
+__S_IFSOCK
+)
+
+	)
+
+143 #–ià
+defšed
+ 
+__USE_XOPEN2K
+
+
+144 
+	#S_ISSOCK
+(
+mode
+è0
+
+	)
+
+151 #ifdef 
+__USE_POSIX199309
+
+
+152 
+	#S_TYPEISMQ
+(
+buf
+è
+	`__S_TYPEISMQ
+(buf)
+
+	)
+
+153 
+	#S_TYPEISSEM
+(
+buf
+è
+	`__S_TYPEISSEM
+(buf)
+
+	)
+
+154 
+	#S_TYPEISSHM
+(
+buf
+è
+	`__S_TYPEISSHM
+(buf)
+
+	)
+
+160 
+	#S_ISUID
+ 
+__S_ISUID
+
+
+	)
+
+161 
+	#S_ISGID
+ 
+__S_ISGID
+
+
+	)
+
+163 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+165 
+	#S_ISVTX
+ 
+__S_ISVTX
+
+
+	)
+
+168 
+	#S_IRUSR
+ 
+__S_IREAD
+
+
+	)
+
+169 
+	#S_IWUSR
+ 
+__S_IWRITE
+
+
+	)
+
+170 
+	#S_IXUSR
+ 
+__S_IEXEC
+
+
+	)
+
+172 
+	#S_IRWXU
+ (
+__S_IREAD
+|
+__S_IWRITE
+|
+__S_IEXEC
+)
+
+	)
+
+174 #ifdeà
+__USE_MISC
+
+
+175 
+	#S_IREAD
+ 
+S_IRUSR
+
+
+	)
+
+176 
+	#S_IWRITE
+ 
+S_IWUSR
+
+
+	)
+
+177 
+	#S_IEXEC
+ 
+S_IXUSR
+
+
+	)
+
+180 
+	#S_IRGRP
+ (
+S_IRUSR
+ >> 3è
+
+	)
+
+181 
+	#S_IWGRP
+ (
+S_IWUSR
+ >> 3è
+
+	)
+
+182 
+	#S_IXGRP
+ (
+S_IXUSR
+ >> 3è
+
+	)
+
+184 
+	#S_IRWXG
+ (
+S_IRWXU
+ >> 3)
+
+	)
+
+186 
+	#S_IROTH
+ (
+S_IRGRP
+ >> 3è
+
+	)
+
+187 
+	#S_IWOTH
+ (
+S_IWGRP
+ >> 3è
+
+	)
+
+188 
+	#S_IXOTH
+ (
+S_IXGRP
+ >> 3è
+
+	)
+
+190 
+	#S_IRWXO
+ (
+S_IRWXG
+ >> 3)
+
+	)
+
+193 #ifdef 
+__USE_MISC
+
+
+195 
+	#ACCESSPERMS
+ (
+S_IRWXU
+|
+S_IRWXG
+|
+S_IRWXO
+è
+
+	)
+
+196 
+	#ALLPERMS
+ (
+S_ISUID
+|
+S_ISGID
+|
+S_ISVTX
+|
+S_IRWXU
+|
+S_IRWXG
+|
+S_IRWXO
+)
+
+	)
+
+197 
+	#DEFFILEMODE
+ (
+S_IRUSR
+|
+S_IWUSR
+|
+S_IRGRP
+|
+S_IWGRP
+|
+S_IROTH
+|
+S_IWOTH
+)
+
+	)
+
+199 
+	#S_BLKSIZE
+ 512
+
+	)
+
+203 #iâdeà
+__USE_FILE_OFFSET64
+
+
+205 

+	$¡©
+ (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+206 
+¡©
+ *
+__»¡riù
+ 
+__buf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+210 

+	$f¡©
+ (
+__fd
+, 
+¡©
+ *
+__buf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+212 #ifdeà
+__USE_TIME_BITS64
+
+
+213 #ifdeà
+__REDIRECT_NTH
+
+
+214 

+	`__REDIRECT_NTH
+ (
+¡©
+, (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+215 
+¡©
+ *
+__»¡riù
+ 
+__buf
+),
+
+216 
+__¡©64_time64
+)
+
+217 
+	`__nÚnuÎ
+ ((1, 2));
+
+218 

+	`__REDIRECT_NTH
+ (
+f¡©
+, (
+__fd
+, 
+¡©
+ *
+__buf
+),
+
+219 
+__f¡©64_time64
+)
+
+220 
+	`__nÚnuÎ
+ ((2));
+
+222 
+	#¡©
+ 
+__¡©64_time64
+
+
+	)
+
+223 
+	#f¡©
+ 
+__f¡©64_time64
+
+
+	)
+
+226 #ifdeà
+__REDIRECT_NTH
+
+
+227 

+	`__REDIRECT_NTH
+ (
+¡©
+, (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+228 
+¡©
+ *
+__»¡riù
+ 
+__buf
+), 
+¡©64
+)
+
+229 
+	`__nÚnuÎ
+ ((1, 2));
+
+230 

+	`__REDIRECT_NTH
+ (
+f¡©
+, (
+__fd
+, 
+¡©
+ *
+__buf
+), 
+f¡©64
+)
+
+231 
+	`__nÚnuÎ
+ ((2));
+
+233 
+	#¡©
+ 
+¡©64
+
+
+	)
+
+234 
+	#f¡©
+ 
+f¡©64
+
+
+	)
+
+238 #ifdeà
+__USE_LARGEFILE64
+
+
+239 #iâdeà
+__USE_TIME_BITS64
+
+
+240 

+	$¡©64
+ (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+241 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+242 

+	$f¡©64
+ (
+__fd
+, 
+¡©64
+ *
+__buf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+244 #ifdeà
+__REDIRECT_NTH
+
+
+245 

+	`__REDIRECT_NTH
+ (
+¡©64
+, (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+246 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+),
+
+247 
+__¡©64_time64
+)
+
+248 
+	`__nÚnuÎ
+ ((1, 2));
+
+249 

+	`__REDIRECT_NTH
+ (
+f¡©64
+, (
+__fd
+, 
+¡©64
+ *
+__buf
+),
+
+250 
+__f¡©64_time64
+)
+
+251 
+	`__nÚnuÎ
+ ((2));
+
+253 
+	#¡©64
+ 
+__¡©64_time64
+
+
+	)
+
+254 
+	#f¡©64
+ 
+__f¡©64_time
+
+
+	)
+
+259 #ifdeà
+__USE_ATFILE
+
+
+263 #iâdeà
+__USE_FILE_OFFSET64
+
+
+264 

+	$f¡©©
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+265 
+¡©
+ *
+__»¡riù
+ 
+__buf
+, 
+__æag
+)
+
+266 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+268 #ifdeà
+__USE_TIME_BITS64
+
+
+269 #ifdeà
+__REDIRECT_NTH
+
+
+270 

+	`__REDIRECT_NTH
+ (
+f¡©©
+, (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+271 
+¡©
+ *
+__»¡riù
+ 
+__buf
+,
+
+272 
+__æag
+),
+
+273 
+__f¡©©64_time64
+è
+	`__nÚnuÎ
+ ((2, 3));
+
+275 
+	#f¡©©
+ 
+__f¡©©64_time64
+
+
+	)
+
+278 #ifdeà
+__REDIRECT_NTH
+
+
+279 

+	`__REDIRECT_NTH
+ (
+f¡©©
+, (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+280 
+¡©
+ *
+__»¡riù
+ 
+__buf
+,
+
+281 
+__æag
+),
+
+282 
+f¡©©64
+è
+	`__nÚnuÎ
+ ((2, 3));
+
+284 
+	#f¡©©
+ 
+f¡©©64
+
+
+	)
+
+289 #ifdeà
+__USE_LARGEFILE64
+
+
+290 #iâdeà
+__USE_TIME_BITS64
+
+
+291 

+	$f¡©©64
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+292 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+, 
+__æag
+)
+
+293 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+295 #ifdeà
+__REDIRECT_NTH
+
+
+296 

+	`__REDIRECT_NTH
+ (
+f¡©©64
+, (
+__fd
+,
+
+297 cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+298 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+,
+
+299 
+__æag
+),
+
+300 
+__f¡©©64_time64
+)
+
+301 
+	`__nÚnuÎ
+ ((2, 3));
+
+303 
+	#f¡©©64
+ 
+__f¡©©64_time64
+
+
+	)
+
+309 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+310 #iâdeà
+__USE_FILE_OFFSET64
+
+
+313 

+	$l¡©
+ (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+314 
+¡©
+ *
+__»¡riù
+ 
+__buf
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+316 #ifdeà
+__USE_TIME_BITS64
+
+
+317 #ifdeà
+__REDIRECT_NTH
+
+
+318 

+	`__REDIRECT_NTH
+ (
+l¡©
+,
+
+319 (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+320 
+¡©
+ *
+__»¡riù
+ 
+__buf
+), 
+__l¡©64_time64
+)
+
+321 
+	`__nÚnuÎ
+ ((1, 2));
+
+323 
+	#l¡©
+ 
+__l¡©64_time64
+
+
+	)
+
+326 #ifdeà
+__REDIRECT_NTH
+
+
+327 

+	`__REDIRECT_NTH
+ (
+l¡©
+,
+
+328 (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+329 
+¡©
+ *
+__»¡riù
+ 
+__buf
+), 
+l¡©64
+)
+
+330 
+	`__nÚnuÎ
+ ((1, 2));
+
+332 
+	#l¡©
+ 
+l¡©64
+
+
+	)
+
+336 #ifdeà
+__USE_LARGEFILE64
+
+
+337 #iâdeà
+__USE_TIME_BITS64
+
+
+338 

+	$l¡©64
+ (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+339 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+)
+
+340 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+342 

+	`__REDIRECT_NTH
+ (
+l¡©64
+, (cÚ¡ *
+__»¡riù
+ 
+__fže
+,
+
+343 
+¡©64
+ *
+__»¡riù
+ 
+__buf
+),
+
+344 
+__l¡©64_time64
+)
+
+345 
+	`__nÚnuÎ
+ ((1, 2));
+
+352 

+	$chmod
+ (cÚ¡ *
+__fže
+, 
+__mode_t
+ 
+__mode
+)
+
+353 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+355 #ifdeà
+__USE_MISC
+
+
+359 

+	$lchmod
+ (cÚ¡ *
+__fže
+, 
+__mode_t
+ 
+__mode
+)
+
+360 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+364 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+365 

+	$fchmod
+ (
+__fd
+, 
+__mode_t
+ 
+__mode
+è
+__THROW
+;
+
+368 #ifdeà
+__USE_ATFILE
+
+
+371 

+	$fchmod©
+ (
+__fd
+, cÚ¡ *
+__fže
+, 
+__mode_t
+ 
+__mode
+,
+
+372 
+__æag
+)
+
+373 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+__wur
+;
+
+380 
+__mode_t
+ 
+	$umask
+ (
+__mode_t
+ 
+__mask
+è
+__THROW
+;
+
+382 #ifdef 
+__USE_GNU
+
+
+385 
+__mode_t
+ 
+	$g‘umask
+ (è
+__THROW
+;
+
+389 

+	$mkdœ
+ (cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+)
+
+390 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+392 #ifdeà
+__USE_ATFILE
+
+
+396 

+	$mkdœ©
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+)
+
+397 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+403 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+404 

+	$mknod
+ (cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+, 
+__dev_t
+ 
+__dev
+)
+
+405 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+407 #ifdeà
+__USE_ATFILE
+
+
+411 

+	$mknod©
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+,
+
+412 
+__dev_t
+ 
+__dev
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+418 

+	$mkfifo
+ (cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+)
+
+419 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+421 #ifdeà
+__USE_ATFILE
+
+
+425 

+	$mkfifßt
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__mode_t
+ 
+__mode
+)
+
+426 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+429 #ifdeà
+__USE_ATFILE
+
+
+430 #iâdeà
+__USE_TIME_BITS64
+
+
+433 

+	$utim’§t
+ (
+__fd
+, cÚ¡ *
+__·th
+,
+
+434 cÚ¡ 
+time¥ec
+ 
+__times
+[2],
+
+435 
+__æags
+)
+
+436 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+438 #ifdeà
+__REDIRECT_NTH
+
+
+439 

+	`__REDIRECT_NTH
+ (
+utim’§t
+, (
+fd
+, cÚ¡ *
+__·th
+,
+
+440 cÚ¡ 
+time¥ec
+ 
+__times
+[2],
+
+441 
+æags
+),
+
+442 
+__utim’§t64
+è
+	`__nÚnuÎ
+ ((2));
+
+444 
+	#utim’§t
+ 
+__utim’§t64
+
+
+	)
+
+449 #ifdeà
+__USE_XOPEN2K8
+
+
+450 #iâdeà
+__USE_TIME_BITS64
+
+
+452 

+	$futim’s
+ (
+__fd
+, cÚ¡ 
+time¥ec
+ 
+__times
+[2]è
+__THROW
+;
+
+455 #ifdeà
+__REDIRECT_NTH
+
+
+456 

+	`__REDIRECT_NTH
+ (
+futim’s
+, (
+fd
+, cÚ¡ 
+time¥ec
+ 
+__times
+[2]),
+
+457 
+__futim’s64
+);
+
+459 
+	#futim’s
+ 
+__futim’s64
+
+
+	)
+
+464 #ifdeà
+__USE_GNU
+
+
+465 
+	~<b™s/¡©x.h
+>
+
+468 
+__END_DECLS
+
+
+	@/usr/include/sys/time.h
+
+18 #iâdeà
+_SYS_TIME_H
+
+
+19 
+	#_SYS_TIME_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 
+	~<b™s/ty³s.h
+>
+
+24 
+	~<b™s/ty³s/time_t.h
+>
+
+25 
+	~<b™s/ty³s/¡ruù_timev®.h
+>
+
+27 #iâdeà
+__su£cÚds_t_defšed
+
+
+28 
+__su£cÚds_t
+ 
+	tsu£cÚds_t
+;
+
+29 
+	#__su£cÚds_t_defšed
+
+
+	)
+
+32 
+	~<sys/£Ëù.h
+>
+
+34 
+	g__BEGIN_DECLS
+
+
+36 #ifdeà
+__USE_GNU
+
+
+38 
+	#TIMEVAL_TO_TIMESPEC
+(
+tv
+, 
+ts
+) { \
+
+39 (
+ts
+)->
+tv_£c
+ = (
+tv
+)->tv_sec; \
+
+40 (
+ts
+)->
+tv_n£c
+ = (
+tv
+)->
+tv_u£c
+ * 1000; \
+
+41 }
+
+	)
+
+42 
+	#TIMESPEC_TO_TIMEVAL
+(
+tv
+, 
+ts
+) { \
+
+43 (
+tv
+)->
+tv_£c
+ = (
+ts
+)->tv_sec; \
+
+44 (
+tv
+)->
+tv_u£c
+ = (
+ts
+)->
+tv_n£c
+ / 1000; \
+
+45 }
+
+	)
+
+49 #ifdeà
+__USE_MISC
+
+
+52 
+	stimezÚe
+
+
+54 
+	mtz_mšu‹swe¡
+;
+
+55 
+	mtz_d¡time
+;
+
+66 #iâdeà
+__USE_TIME_BITS64
+
+
+67 

+	$g‘timeofday
+ (
+timev®
+ *
+__»¡riù
+ 
+__tv
+,
+
+68 *
+__»¡riù
+ 
+__tz
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+70 #ifdeà
+__REDIRECT_NTH
+
+
+71 

+	`__REDIRECT_NTH
+ (
+g‘timeofday
+, (
+timev®
+ *
+__»¡riù
+ 
+__tv
+,
+
+72 *
+__»¡riù
+ 
+__tz
+),
+
+73 
+__g‘timeofday64
+è
+	`__nÚnuÎ
+ ((1));
+
+75 
+	#g‘timeofday
+ 
+__g‘timeofday64
+
+
+	)
+
+79 #ifdeà
+__USE_MISC
+
+
+80 #iâdeà
+__USE_TIME_BITS64
+
+
+86 

+	$£‰imeofday
+ (cÚ¡ 
+timev®
+ *
+__tv
+,
+
+87 cÚ¡ 
+timezÚe
+ *
+__tz
+)
+
+88 
+__THROW
+;
+
+94 

+	$adjtime
+ (cÚ¡ 
+timev®
+ *
+__d–�
+,
+
+95 
+timev®
+ *
+__Þdd–�
+è
+__THROW
+;
+
+97 #ifdeà
+__REDIRECT_NTH
+
+
+98 

+	`__REDIRECT_NTH
+ (
+£‰imeofday
+, (cÚ¡ 
+timev®
+ *
+__tv
+,
+
+99 cÚ¡ 
+timezÚe
+ *
+__tz
+),
+
+100 
+__£‰imeofday64
+);
+
+102 

+	`__REDIRECT_NTH
+ (
+adjtime
+, (cÚ¡ 
+timev®
+ *
+__d–�
+,
+
+103 
+timev®
+ *
+__Þdd–�
+),
+
+104 
+__adjtime64
+);
+
+106 
+	#£‰imeofday
+ 
+__£‰imeofday64
+
+
+	)
+
+107 
+	#adjtime
+ 
+__adjtime64
+
+
+	)
+
+114 
+	e__™im”_which
+
+
+117 
+ITIMER_REAL
+ = 0,
+
+118 
+	#ITIMER_REAL
+ 
+ITIMER_REAL
+
+
+	)
+
+120 
+ITIMER_VIRTUAL
+ = 1,
+
+121 
+	#ITIMER_VIRTUAL
+ 
+ITIMER_VIRTUAL
+
+
+	)
+
+124 
+ITIMER_PROF
+ = 2
+
+125 
+	#ITIMER_PROF
+ 
+ITIMER_PROF
+
+
+	)
+
+130 
+	s™im”v®
+
+
+133 
+timev®
+ 
+™_š‹rv®
+;
+
+135 
+timev®
+ 
+™_v®ue
+;
+
+138 #ià
+defšed
+ 
+__USE_GNU
+ && !defšed 
+__ýlu¥lus
+
+
+141 
+__™im”_which
+ 
+	t__™im”_which_t
+;
+
+143 
+	t__™im”_which_t
+;
+
+146 #iâdeà
+__USE_TIME_BITS64
+
+
+149 

+	$g‘™im”
+ (
+__™im”_which_t
+ 
+__which
+,
+
+150 
+™im”v®
+ *
+__v®ue
+è
+__THROW
+;
+
+155 

+	$£t™im”
+ (
+__™im”_which_t
+ 
+__which
+,
+
+156 cÚ¡ 
+™im”v®
+ *
+__»¡riù
+ 
+__Ãw
+,
+
+157 
+™im”v®
+ *
+__»¡riù
+ 
+__Þd
+è
+__THROW
+;
+
+162 

+	$utimes
+ (cÚ¡ *
+__fže
+, cÚ¡ 
+timev®
+ 
+__tvp
+[2])
+
+163 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+166 #ifdeà
+__REDIRECT_NTH
+
+
+167 

+	`__REDIRECT_NTH
+ (
+g‘™im”
+, (
+__™im”_which_t
+ 
+__which
+,
+
+168 
+™im”v®
+ *
+__v®ue
+),
+
+169 
+__g‘™im”64
+);
+
+171 

+	`__REDIRECT_NTH
+ (
+£t™im”
+, (
+__™im”_which_t
+ 
+__which
+,
+
+172 cÚ¡ 
+™im”v®
+ *
+__»¡riù
+ 
+__Ãw
+,
+
+173 
+™im”v®
+ *
+__»¡riù
+ 
+__Þd
+),
+
+174 
+__£t™im”64
+);
+
+176 

+	`__REDIRECT_NTH
+ (
+utimes
+, (cÚ¡ *
+__fže
+,
+
+177 cÚ¡ 
+timev®
+ 
+__tvp
+[2]),
+
+178 
+__utimes64
+è
+	`__nÚnuÎ
+ ((1));
+
+180 
+	#g‘™im”
+ 
+__g‘™im”64
+
+
+	)
+
+181 
+	#£t™im”
+ 
+__£t™im”64
+
+
+	)
+
+182 
+	#utimes
+ 
+__utimes64
+
+
+	)
+
+186 #ifdeà
+__USE_MISC
+
+
+187 #iâdeà
+__USE_TIME_BITS64
+
+
+189 

+	$lutimes
+ (cÚ¡ *
+__fže
+, cÚ¡ 
+timev®
+ 
+__tvp
+[2])
+
+190 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+193 

+	$futimes
+ (
+__fd
+, cÚ¡ 
+timev®
+ 
+__tvp
+[2]è
+__THROW
+;
+
+195 #ifdeà
+__REDIRECT_NTH
+
+
+196 

+	`__REDIRECT_NTH
+ (
+lutimes
+, (cÚ¡ *
+__fže
+,
+
+197 cÚ¡ 
+timev®
+ 
+__tvp
+[2]),
+
+198 
+__lutimes64
+è
+	`__nÚnuÎ
+ ((1));
+
+200 

+	`__REDIRECT_NTH
+ (
+futimes
+, (
+__fd
+, cÚ¡ 
+timev®
+ 
+__tvp
+[2]),
+
+201 
+__futimes64
+);
+
+203 
+	#lutimes
+ 
+__lutimes64
+
+
+	)
+
+204 
+	#futimes
+ 
+__futimes64
+
+
+	)
+
+209 #ifdeà
+__USE_GNU
+
+
+210 #iâdeà
+__USE_TIME_BITS64
+
+
+214 

+	$futime§t
+ (
+__fd
+, cÚ¡ *
+__fže
+,
+
+215 cÚ¡ 
+timev®
+ 
+__tvp
+[2]è
+__THROW
+;
+
+217 #ifdeà
+__REDIRECT_NTH
+
+
+218 

+	`__REDIRECT_NTH
+ (
+futime§t
+, (
+__fd
+, cÚ¡ *
+__fže
+,
+
+219 cÚ¡ 
+timev®
+ 
+__tvp
+[2]),
+
+220 
+__futime§t64
+);
+
+222 
+	#futime§t
+ 
+__futime§t64
+
+
+	)
+
+228 #ifdeà
+__USE_MISC
+
+
+231 
+	#tim”is£t
+(
+tvp
+è(Ñvp)->
+tv_£c
+ || (tvp)->
+tv_u£c
+)
+
+	)
+
+232 
+	#tim”þ—r
+(
+tvp
+è(Ñvp)->
+tv_£c
+ = (tvp)->
+tv_u£c
+ = 0)
+
+	)
+
+233 
+	#tim”cmp
+(
+a
+, 
+b
+, 
+CMP
+) \
+
+234 (((
+a
+)->
+tv_£c
+ =ð(
+b
+)->tv_sec) \
+
+235 ? ((
+a
+)->
+tv_u£c
+ 
+	`CMP
+ (
+b
+)->tv_usec) \
+
+236 : ((
+a
+)->
+tv_£c
+ 
+	`CMP
+ (
+b
+)->tv_£c))
+
+	)
+
+237 
+	#tim”add
+(
+a
+, 
+b
+, 
+»suÉ
+) \
+
+239 (
+»suÉ
+)->
+tv_£c
+ = (
+a
+)->tv_£ø+ (
+b
+)->tv_sec; \
+
+240 (
+»suÉ
+)->
+tv_u£c
+ = (
+a
+)->tv_u£ø+ (
+b
+)->tv_usec; \
+
+241 ià((
+»suÉ
+)->
+tv_u£c
+ >= 1000000) \
+
+243 ++(
+»suÉ
+)->
+tv_£c
+; \
+
+244 (
+»suÉ
+)->
+tv_u£c
+ -= 1000000; \
+
+246 
+	}
+} 0)
+
+	)
+
+247 
+	#tim”sub
+(
+a
+, 
+b
+, 
+»suÉ
+) \
+
+249 (
+»suÉ
+)->
+tv_£c
+ = (
+a
+)->tv_£ø- (
+b
+)->tv_sec; \
+
+250 (
+»suÉ
+)->
+tv_u£c
+ = (
+a
+)->tv_u£ø- (
+b
+)->tv_usec; \
+
+251 ià((
+»suÉ
+)->
+tv_u£c
+ < 0) { \
+
+252 --(
+»suÉ
+)->
+tv_£c
+; \
+
+253 (
+»suÉ
+)->
+tv_u£c
+ += 1000000; \
+
+255 } 0)
+
+	)
+
+258 
+	g__END_DECLS
+
+
+	@/usr/include/sys/types.h
+
+22 #iâdef 
+_SYS_TYPES_H
+
+
+23 
+	#_SYS_TYPES_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+29 
+	~<b™s/ty³s.h
+>
+
+31 #ifdef 
+__USE_MISC
+
+
+32 #iâdeà
+__u_ch¬_defšed
+
+
+33 
+__u_ch¬
+ 
+	tu_ch¬
+;
+
+34 
+__u_shÜt
+ 
+	tu_shÜt
+;
+
+35 
+__u_št
+ 
+	tu_št
+;
+
+36 
+__u_lÚg
+ 
+	tu_lÚg
+;
+
+37 
+__quad_t
+ 
+	tquad_t
+;
+
+38 
+__u_quad_t
+ 
+	tu_quad_t
+;
+
+39 
+__fsid_t
+ 
+	tfsid_t
+;
+
+40 
+	#__u_ch¬_defšed
+
+
+	)
+
+42 
+__loff_t
+ 
+	tloff_t
+;
+
+45 #iâdeà
+__šo_t_defšed
+
+
+46 #iâdeà
+__USE_FILE_OFFSET64
+
+
+47 
+__šo_t
+ 
+	tšo_t
+;
+
+49 
+__šo64_t
+ 
+	tšo_t
+;
+
+51 
+	#__šo_t_defšed
+
+
+	)
+
+53 #ià
+defšed
+ 
+__USE_LARGEFILE64
+ && !defšed 
+__šo64_t_defšed
+
+
+54 
+__šo64_t
+ 
+	tšo64_t
+;
+
+55 
+	#__šo64_t_defšed
+
+
+	)
+
+58 #iâdeà
+__dev_t_defšed
+
+
+59 
+__dev_t
+ 
+	tdev_t
+;
+
+60 
+	#__dev_t_defšed
+
+
+	)
+
+63 #iâdeà
+__gid_t_defšed
+
+
+64 
+__gid_t
+ 
+	tgid_t
+;
+
+65 
+	#__gid_t_defšed
+
+
+	)
+
+68 #iâdeà
+__mode_t_defšed
+
+
+69 
+__mode_t
+ 
+	tmode_t
+;
+
+70 
+	#__mode_t_defšed
+
+
+	)
+
+73 #iâdeà
+__Æšk_t_defšed
+
+
+74 
+__Æšk_t
+ 
+	tÆšk_t
+;
+
+75 
+	#__Æšk_t_defšed
+
+
+	)
+
+78 #iâdeà
+__uid_t_defšed
+
+
+79 
+__uid_t
+ 
+	tuid_t
+;
+
+80 
+	#__uid_t_defšed
+
+
+	)
+
+83 #iâdeà
+__off_t_defšed
+
+
+84 #iâdeà
+__USE_FILE_OFFSET64
+
+
+85 
+__off_t
+ 
+	toff_t
+;
+
+87 
+__off64_t
+ 
+	toff_t
+;
+
+89 
+	#__off_t_defšed
+
+
+	)
+
+91 #ià
+defšed
+ 
+__USE_LARGEFILE64
+ && !defšed 
+__off64_t_defšed
+
+
+92 
+__off64_t
+ 
+	toff64_t
+;
+
+93 
+	#__off64_t_defšed
+
+
+	)
+
+96 #iâdeà
+__pid_t_defšed
+
+
+97 
+__pid_t
+ 
+	tpid_t
+;
+
+98 
+	#__pid_t_defšed
+
+
+	)
+
+101 #ià(
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+) \
+
+102 && !
+defšed
+ 
+__id_t_defšed
+
+
+103 
+__id_t
+ 
+	tid_t
+;
+
+104 
+	#__id_t_defšed
+
+
+	)
+
+107 #iâdeà
+__ssize_t_defšed
+
+
+108 
+__ssize_t
+ 
+	tssize_t
+;
+
+109 
+	#__ssize_t_defšed
+
+
+	)
+
+112 #ifdef 
+__USE_MISC
+
+
+113 #iâdeà
+__daddr_t_defšed
+
+
+114 
+__daddr_t
+ 
+	tdaddr_t
+;
+
+115 
+__ÿddr_t
+ 
+	tÿddr_t
+;
+
+116 
+	#__daddr_t_defšed
+
+
+	)
+
+120 #ià(
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+è&& !defšed 
+__key_t_defšed
+
+
+121 
+__key_t
+ 
+	tkey_t
+;
+
+122 
+	#__key_t_defšed
+
+
+	)
+
+125 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+126 
+	~<b™s/ty³s/þock_t.h
+>
+
+128 
+	~<b™s/ty³s/þockid_t.h
+>
+
+129 
+	~<b™s/ty³s/time_t.h
+>
+
+130 
+	~<b™s/ty³s/tim”_t.h
+>
+
+132 #ifdeà
+__USE_XOPEN
+
+
+133 #iâdeà
+__u£cÚds_t_defšed
+
+
+134 
+__u£cÚds_t
+ 
+	tu£cÚds_t
+;
+
+135 
+	#__u£cÚds_t_defšed
+
+
+	)
+
+137 #iâdeà
+__su£cÚds_t_defšed
+
+
+138 
+__su£cÚds_t
+ 
+	tsu£cÚds_t
+;
+
+139 
+	#__su£cÚds_t_defšed
+
+
+	)
+
+143 
+	#__Ãed_size_t
+
+
+	)
+
+144 
+	~<¡ddef.h
+>
+
+146 #ifdeà
+__USE_MISC
+
+
+148 
+	tulÚg
+;
+
+149 
+	tushÜt
+;
+
+150 
+	tušt
+;
+
+155 
+	~<b™s/¡dšt-šŠ.h
+>
+
+158 
+__ušt8_t
+ 
+	tu_št8_t
+;
+
+159 
+__ušt16_t
+ 
+	tu_št16_t
+;
+
+160 
+__ušt32_t
+ 
+	tu_št32_t
+;
+
+161 
+__ušt64_t
+ 
+	tu_št64_t
+;
+
+163 #ià
+__GNUC_PREREQ
+ (2, 7)
+
+164 
+	t»gi¡”_t
+ 
+	t__©Œibu‹__
+ ((
+	t__mode__
+ (
+	t__wÜd__
+)));
+
+166 
+	t»gi¡”_t
+;
+
+171 
+	#__BIT_TYPES_DEFINED__
+ 1
+
+	)
+
+174 #ifdef 
+__USE_MISC
+
+
+176 
+	~<’dŸn.h
+>
+
+179 
+	~<sys/£Ëù.h
+>
+
+183 #ià(
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+) \
+
+184 && !
+defšed
+ 
+__blksize_t_defšed
+
+
+185 
+__blksize_t
+ 
+	tblksize_t
+;
+
+186 
+	#__blksize_t_defšed
+
+
+	)
+
+190 #iâdeà
+__USE_FILE_OFFSET64
+
+
+191 #iâdeà
+__blkút_t_defšed
+
+
+192 
+__blkút_t
+ 
+	tblkút_t
+;
+
+193 
+	#__blkút_t_defšed
+
+
+	)
+
+195 #iâdeà
+__fsblkút_t_defšed
+
+
+196 
+__fsblkút_t
+ 
+	tfsblkút_t
+;
+
+197 
+	#__fsblkút_t_defšed
+
+
+	)
+
+199 #iâdeà
+__fsfžút_t_defšed
+
+
+200 
+__fsfžút_t
+ 
+	tfsfžút_t
+;
+
+201 
+	#__fsfžút_t_defšed
+
+
+	)
+
+204 #iâdeà
+__blkút_t_defšed
+
+
+205 
+__blkút64_t
+ 
+	tblkút_t
+;
+
+206 
+	#__blkút_t_defšed
+
+
+	)
+
+208 #iâdeà
+__fsblkút_t_defšed
+
+
+209 
+__fsblkút64_t
+ 
+	tfsblkút_t
+;
+
+210 
+	#__fsblkút_t_defšed
+
+
+	)
+
+212 #iâdeà
+__fsfžút_t_defšed
+
+
+213 
+__fsfžút64_t
+ 
+	tfsfžút_t
+;
+
+214 
+	#__fsfžút_t_defšed
+
+
+	)
+
+218 #ifdeà
+__USE_LARGEFILE64
+
+
+219 
+__blkút64_t
+ 
+	tblkút64_t
+;
+
+220 
+__fsblkút64_t
+ 
+	tfsblkút64_t
+;
+
+221 
+__fsfžút64_t
+ 
+	tfsfžút64_t
+;
+
+226 #ià
+defšed
+ 
+__USE_POSIX199506
+ || defšed 
+__USE_UNIX98
+
+
+227 
+	~<b™s/±h»adty³s.h
+>
+
+230 
+	g__END_DECLS
+
+
+	@/usr/include/sys/uio.h
+
+18 #iâdeà
+_SYS_UIO_H
+
+
+19 
+	#_SYS_UIO_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+22 
+	~<sys/ty³s.h
+>
+
+23 
+	~<b™s/ty³s/¡ruù_iovec.h
+>
+
+24 
+	~<b™s/uio_lim.h
+>
+
+25 #ifdeà
+__IOV_MAX
+
+
+26 
+	#UIO_MAXIOV
+ 
+__IOV_MAX
+
+
+	)
+
+28 #undeà
+UIO_MAXIOV
+
+
+31 
+__BEGIN_DECLS
+
+
+41 
+ssize_t
+ 
+	$»adv
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+)
+
+42 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+52 
+ssize_t
+ 
+	$wr™ev
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+)
+
+53 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+56 #ifdeà
+__USE_MISC
+
+
+57 #iâdeà
+__USE_FILE_OFFSET64
+
+
+67 
+ssize_t
+ 
+	$´—dv
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+,
+
+68 
+__off_t
+ 
+__off£t
+)
+
+69 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+80 
+ssize_t
+ 
+	$pwr™ev
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+,
+
+81 
+__off_t
+ 
+__off£t
+)
+
+82 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+85 #ifdeà
+__REDIRECT
+
+
+86 
+ssize_t
+ 
+	`__REDIRECT
+ (
+´—dv
+, (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+,
+
+87 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+),
+
+88 
+´—dv64
+)
+
+89 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+90 
+ssize_t
+ 
+	`__REDIRECT
+ (
+pwr™ev
+, (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+,
+
+91 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+),
+
+92 
+pwr™ev64
+)
+
+93 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+95 
+	#´—dv
+ 
+´—dv64
+
+
+	)
+
+96 
+	#pwr™ev
+ 
+pwr™ev64
+
+
+	)
+
+100 #ifdeà
+__USE_LARGEFILE64
+
+
+110 
+ssize_t
+ 
+	$´—dv64
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+,
+
+111 
+__off64_t
+ 
+__off£t
+)
+
+112 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+123 
+ssize_t
+ 
+	$pwr™ev64
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+,
+
+124 
+__off64_t
+ 
+__off£t
+)
+
+125 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+130 #ifdeà
+__USE_GNU
+
+
+131 #iâdeà
+__USE_FILE_OFFSET64
+
+
+133 
+ssize_t
+ 
+	$´—dv2
+ (
+__å
+, cÚ¡ 
+iovec
+ *
+__iovec
+, 
+__couÁ
+,
+
+134 
+__off_t
+ 
+__off£t
+, 
+___æags
+)
+
+135 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+138 
+ssize_t
+ 
+	$pwr™ev2
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iodev
+, 
+__couÁ
+,
+
+139 
+__off_t
+ 
+__off£t
+, 
+__æags
+è
+__wur
+;
+
+142 #ifdeà
+__REDIRECT
+
+
+143 
+ssize_t
+ 
+	`__REDIRECT
+ (
+pwr™ev2
+, (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+,
+
+144 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+,
+
+145 
+__æags
+),
+
+146 
+pwr™ev64v2
+)
+
+147 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+148 
+ssize_t
+ 
+	`__REDIRECT
+ (
+´—dv2
+, (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iovec
+,
+
+149 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+,
+
+150 
+__æags
+),
+
+151 
+´—dv64v2
+)
+
+152 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+154 
+	#´—dv2
+ 
+´—dv64v2
+
+
+	)
+
+155 
+	#pwr™ev2
+ 
+pwr™ev64v2
+
+
+	)
+
+159 #ifdeà
+__USE_LARGEFILE64
+
+
+161 
+ssize_t
+ 
+	$´—dv64v2
+ (
+__å
+, cÚ¡ 
+iovec
+ *
+__iovec
+,
+
+162 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+,
+
+163 
+___æags
+)
+
+164 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+167 
+ssize_t
+ 
+	$pwr™ev64v2
+ (
+__fd
+, cÚ¡ 
+iovec
+ *
+__iodev
+,
+
+168 
+__couÁ
+, 
+__off64_t
+ 
+__off£t
+,
+
+169 
+__æags
+)
+
+170 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+174 
+__END_DECLS
+
+
+178 #ifdeà
+__USE_GNU
+
+
+179 
+	~<b™s/uio-ext.h
+>
+
+	@/usr/include/sys/un.h
+
+18 #iâdef 
+_SYS_UN_H
+
+
+19 
+	#_SYS_UN_H
+ 1
+
+	)
+
+21 
+	~<sys/cdefs.h
+>
+
+24 
+	~<b™s/sockaddr.h
+>
+
+26 
+__BEGIN_DECLS
+
+
+29 
+	ssockaddr_un
+
+
+31 
+__SOCKADDR_COMMON
+ (
+sun_
+);
+
+32 
+	msun_·th
+[108];
+
+36 #ifdeà
+__USE_MISC
+
+
+37 
+	~<¡ddef.h
+>
+
+38 
+	~<¡ršg.h
+>
+
+41 
+	#SUN_LEN
+(
+±r
+è(
+	`off£tof
+ (
+sockaddr_un
+, 
+sun_·th
+) \
+
+42 + 
+	`¡¾’
+ ((
+±r
+)->
+sun_·th
+))
+
+	)
+
+45 
+	g__END_DECLS
+
+
+	@/usr/include/sys/wait.h
+
+22 #iâdef 
+_SYS_WAIT_H
+
+
+23 
+	#_SYS_WAIT_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+29 
+	~<b™s/ty³s.h
+>
+
+30 #iâdeà
+__pid_t_defšed
+
+
+31 
+__pid_t
+ 
+	tpid_t
+;
+
+32 
+	#__pid_t_defšed
+
+
+	)
+
+35 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+36 
+	~<sigÇl.h
+>
+
+39 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+
+
+42 
+	~<b™s/ty³s/¡ruù_ru§ge.h
+>
+
+46 #ià!
+defšed
+ 
+_STDLIB_H
+ || (!defšed 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K8
+)
+
+49 
+	~<b™s/wa™æags.h
+>
+
+52 
+	~<b™s/wa™¡©us.h
+>
+
+54 
+	#WEXITSTATUS
+(
+¡©us
+è
+	`__WEXITSTATUS
+ (¡©us)
+
+	)
+
+55 
+	#WTERMSIG
+(
+¡©us
+è
+	`__WTERMSIG
+ (¡©us)
+
+	)
+
+56 
+	#WSTOPSIG
+(
+¡©us
+è
+	`__WSTOPSIG
+ (¡©us)
+
+	)
+
+57 
+	#WIFEXITED
+(
+¡©us
+è
+	`__WIFEXITED
+ (¡©us)
+
+	)
+
+58 
+	#WIFSIGNALED
+(
+¡©us
+è
+	`__WIFSIGNALED
+ (¡©us)
+
+	)
+
+59 
+	#WIFSTOPPED
+(
+¡©us
+è
+	`__WIFSTOPPED
+ (¡©us)
+
+	)
+
+60 #ifdeà
+__WIFCONTINUED
+
+
+61 
+	#WIFCONTINUED
+(
+¡©us
+è
+	`__WIFCONTINUED
+ (¡©us)
+
+	)
+
+65 #ifdef 
+__USE_MISC
+
+
+66 
+	#WCOREFLAG
+ 
+__WCOREFLAG
+
+
+	)
+
+67 
+	#WCOREDUMP
+(
+¡©us
+è
+	`__WCOREDUMP
+ (¡©us)
+
+	)
+
+68 
+	#W_EXITCODE
+(
+»t
+, 
+sig
+è
+	`__W_EXITCODE
+ (»t, sig)
+
+	)
+
+69 
+	#W_STOPCODE
+(
+sig
+è
+	`__W_STOPCODE
+ (sig)
+
+	)
+
+73 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+74 
+	~<b™s/ty³s/idty³_t.h
+>
+
+83 
+__pid_t
+ 
+wa™
+ (*
+__¡©_loc
+);
+
+85 #ifdef 
+__USE_MISC
+
+
+87 
+	#WAIT_ANY
+ (-1è
+
+	)
+
+88 
+	#WAIT_MYPGRP
+ 0
+
+	)
+
+106 
+__pid_t
+ 
+wa™pid
+ (__pid_ˆ
+__pid
+, *
+__¡©_loc
+, 
+__ÝtiÚs
+);
+
+108 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+109 #iâdeà
+__id_t_defšed
+
+
+110 
+__id_t
+ 
+	tid_t
+;
+
+111 
+	#__id_t_defšed
+
+
+	)
+
+114 
+	~<b™s/ty³s/sigšfo_t.h
+>
+
+127 

+wa™id
+ (
+idty³_t
+ 
+__idty³
+, 
+__id_t
+ 
+__id
+, 
+sigšfo_t
+ *
+__šfÝ
+,
+
+128 
+__ÝtiÚs
+);
+
+131 #ià
+defšed
+ 
+__USE_MISC
+ \
+
+132 || (
+defšed
+ 
+	g__USE_XOPEN_EXTENDED
+ && !defšed 
+	g__USE_XOPEN2K
+)
+
+135 
+	gru§ge
+;
+
+142 #iâdeà
+__USE_TIME_BITS64
+
+
+143 
+__pid_t
+ 
+	$wa™3
+ (*
+__¡©_loc
+, 
+__ÝtiÚs
+,
+
+144 
+ru§ge
+ * 
+__u§ge
+è
+__THROWNL
+;
+
+146 #ifdeà
+__REDIRECT_NTHNL
+
+
+147 
+__pid_t
+ 
+	`__REDIRECT_NTHNL
+ (
+wa™3
+, (*
+__¡©_loc
+, 
+__ÝtiÚs
+,
+
+148 
+ru§ge
+ * 
+__u§ge
+),
+
+149 
+__wa™3_time64
+);
+
+151 
+	#wa™3
+ 
+__wa™3_time64
+
+
+	)
+
+156 #ifdeà
+__USE_MISC
+
+
+157 #iâdeà
+__USE_TIME_BITS64
+
+
+159 
+__pid_t
+ 
+	$wa™4
+ (
+__pid_t
+ 
+__pid
+, *
+__¡©_loc
+, 
+__ÝtiÚs
+,
+
+160 
+ru§ge
+ *
+__u§ge
+è
+__THROWNL
+;
+
+162 #ifdeà
+__REDIRECT_NTHNL
+
+
+163 
+__pid_t
+ 
+	`__REDIRECT_NTHNL
+ (
+wa™4
+, (__pid_ˆ
+__pid
+, *
+__¡©_loc
+,
+
+164 
+__ÝtiÚs
+, 
+ru§ge
+ *
+__u§ge
+),
+
+165 
+__wa™4_time64
+);
+
+167 
+	#wa™4
+ 
+__wa™4_time64
+
+
+	)
+
+173 
+__END_DECLS
+
+
+	@/usr/include/syslog.h
+
+1 
+	~<sys/sy¦og.h
+>
+
+	@/usr/include/time.h
+
+22 #iâdef 
+_TIME_H
+
+
+23 
+	#_TIME_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	#__Ãed_size_t
+
+
+	)
+
+28 
+	#__Ãed_NULL
+
+
+	)
+
+29 
+	~<¡ddef.h
+>
+
+33 
+	~<b™s/time.h
+>
+
+37 
+	~<b™s/ty³s/þock_t.h
+>
+
+38 
+	~<b™s/ty³s/time_t.h
+>
+
+39 
+	~<b™s/ty³s/¡ruù_tm.h
+>
+
+41 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_ISOC11
+
+
+42 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+45 #ifdeà
+__USE_POSIX199309
+
+
+46 
+	~<b™s/ty³s/þockid_t.h
+>
+
+47 
+	~<b™s/ty³s/tim”_t.h
+>
+
+48 
+	~<b™s/ty³s/¡ruù_™im”¥ec.h
+>
+
+49 
+	gsigev’t
+;
+
+52 #ifdeà
+__USE_XOPEN2K
+
+
+53 #iâdeà
+__pid_t_defšed
+
+
+54 
+__pid_t
+ 
+	tpid_t
+;
+
+55 
+	#__pid_t_defšed
+
+
+	)
+
+59 #ifdeà
+__USE_XOPEN2K8
+
+
+60 
+	~<b™s/ty³s/loÿË_t.h
+>
+
+63 #ifdeà
+__USE_ISOC11
+
+
+65 
+	#TIME_UTC
+ 1
+
+	)
+
+68 
+__BEGIN_DECLS
+
+
+72 
+þock_t
+ 
+	$þock
+ (è
+__THROW
+;
+
+74 #iâdeà
+__USE_TIME_BITS64
+
+
+76 
+time_t
+ 
+	$time
+ (
+time_t
+ *
+__tim”
+è
+__THROW
+;
+
+79 

+	$difáime
+ (
+time_t
+ 
+__time1
+,�ime_ˆ
+__time0
+)
+
+80 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+83 
+time_t
+ 
+	$mktime
+ (
+tm
+ *
+__�
+è
+__THROW
+;
+
+85 #ifdeà
+__REDIRECT_NTH
+
+
+86 
+time_t
+ 
+	`__REDIRECT_NTH
+ (
+time
+, (time_ˆ*
+__tim”
+), 
+__time64
+);
+
+87 

+	`__REDIRECT_NTH
+ (
+difáime
+, (
+time_t
+ 
+__time1
+,�ime_ˆ
+__time0
+),
+
+88 
+__difáime64
+è
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+89 
+time_t
+ 
+	`__REDIRECT_NTH
+ (
+mktime
+, (
+tm
+ *
+__�
+), 
+__mktime64
+);
+
+91 
+	#time
+ 
+__time64
+
+
+	)
+
+92 
+	#difáime
+ 
+__difáime64
+
+
+	)
+
+93 
+	#mktime
+ 
+__mktime64
+
+
+	)
+
+100 
+size_t
+ 
+	$¡ráime
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__maxsize
+,
+
+101 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+102 cÚ¡ 
+tm
+ *
+__»¡riù
+ 
+__�
+)
+
+103 
+__THROW
+ 
+	`__nÚnuÎ
+((1, 3, 4));
+
+105 #ifdeà
+__USE_XOPEN
+
+
+108 
*
+	$¡½time
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+109 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+tm
+ *
+__�
+)
+
+110 
+__THROW
+;
+
+113 #ifdeà
+__USE_XOPEN2K8
+
+
+117 
+size_t
+ 
+	$¡ráime_l
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__maxsize
+,
+
+118 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+119 cÚ¡ 
+tm
+ *
+__»¡riù
+ 
+__�
+,
+
+120 
+loÿË_t
+ 
+__loc
+è
+__THROW
+;
+
+123 #ifdeà
+__USE_GNU
+
+
+124 
*
+	$¡½time_l
+ (cÚ¡ *
+__»¡riù
+ 
+__s
+,
+
+125 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+tm
+ *
+__�
+,
+
+126 
+loÿË_t
+ 
+__loc
+è
+__THROW
+;
+
+130 #iâdeà
+__USE_TIME_BITS64
+
+
+133 

+tm
+ *
+	$gmtime
+ (cÚ¡ 
+time_t
+ *
+__tim”
+è
+__THROW
+;
+
+137 

+tm
+ *
+	$loÿÉime
+ (cÚ¡ 
+time_t
+ *
+__tim”
+è
+__THROW
+;
+
+140 #ifdeà
+__REDIRECT_NTH
+
+
+141 

+tm
+*
+	`__REDIRECT_NTH
+ (
+gmtime
+, (cÚ¡ 
+time_t
+ *
+__tim”
+), 
+__gmtime64
+);
+
+142 

+tm
+ *
+	`__REDIRECT_NTH
+ (
+loÿÉime
+, (cÚ¡ 
+time_t
+ *
+__tim”
+),
+
+143 
+__loÿÉime64
+);
+
+145 
+	#gmtime
+ 
+__gmtime64
+
+
+	)
+
+146 
+	#loÿÉime
+ 
+__loÿÉime64
+
+
+	)
+
+151 #ià
+defšed
+ 
+__USE_POSIX
+ || 
+	`__GLIBC_USE
+ (
+ISOC2X
+)
+
+152 #iâdeà
+__USE_TIME_BITS64
+
+
+155 

+tm
+ *
+	$gmtime_r
+ (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__tim”
+,
+
+156 
+tm
+ *
+__»¡riù
+ 
+__�
+è
+__THROW
+;
+
+160 

+tm
+ *
+	$loÿÉime_r
+ (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__tim”
+,
+
+161 
+tm
+ *
+__»¡riù
+ 
+__�
+è
+__THROW
+;
+
+163 #ifdeà
+__REDIRECT_NTH
+
+
+164 

+tm
+*
+	`__REDIRECT_NTH
+ (
+gmtime_r
+, (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__tim”
+,
+
+165 
+tm
+ *
+__»¡riù
+ 
+__�
+),
+
+166 
+__gmtime64_r
+);
+
+168 

+tm
+*
+	`__REDIRECT_NTH
+ (
+loÿÉime_r
+, (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__t
+,
+
+169 
+tm
+ *
+__»¡riù
+ 
+__�
+),
+
+170 
+__loÿÉime64_r
+);
+
+172 
+	#gmtime_r
+ 
+__gmtime64_r
+
+
+	)
+
+173 
+	#loÿÉime_r
+ 
+__loÿÉime_r
+
+
+	)
+
+180 
*
+	$asùime
+ (cÚ¡ 
+tm
+ *
+__�
+è
+__THROW
+;
+
+183 #iâdeà
+__USE_TIME_BITS64
+
+
+184 
*
+	$ùime
+ (cÚ¡ 
+time_t
+ *
+__tim”
+è
+__THROW
+;
+
+186 #ifdeà
+__REDIRECT_NTH
+
+
+187 
*
+	`__REDIRECT_NTH
+ (
+ùime
+, (cÚ¡ 
+time_t
+ *
+__tim”
+), 
+__ùime64
+);
+
+189 
+	#ùime
+ 
+__ùime64
+
+
+	)
+
+193 #ifdeà
+__USE_POSIX
+
+
+198 
*
+	$asùime_r
+ (cÚ¡ 
+tm
+ *
+__»¡riù
+ 
+__�
+,
+
+199 *
+__»¡riù
+ 
+__buf
+è
+__THROW
+;
+
+202 #iâdeà
+__USE_TIME_BITS64
+
+
+203 
*
+	$ùime_r
+ (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__tim”
+,
+
+204 *
+__»¡riù
+ 
+__buf
+è
+__THROW
+;
+
+206 #ifdeà
+__REDIRECT_NTH
+
+
+207 
*
+	`__REDIRECT_NTH
+ (
+ùime_r
+, (cÚ¡ 
+time_t
+ *
+__»¡riù
+ 
+__tim”
+,
+
+208 *
+__»¡riù
+ 
+__buf
+), 
+__ùime64_r
+);
+
+210 
+	#ùime_r
+ 
+__ùime64_r
+
+
+	)
+
+218 
*
+__tzÇme
+[2];
+
+219 

+__daylight
+;
+
+220 

+__timezÚe
+;
+
+223 #ifdef 
+__USE_POSIX
+
+
+225 
*
+tzÇme
+[2];
+
+229 

+	$tz£t
+ (è
+__THROW
+;
+
+232 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+233 

+daylight
+;
+
+234 

+timezÚe
+;
+
+240 
+	#__i¦—p
+(
+y—r
+) \
+
+241 ((
+y—r
+è% 4 =ð0 && ((y—rè% 100 !ð0 || (y—rè% 400 =ð0))
+
+	)
+
+244 #ià
+defšed
+ 
+__USE_MISC
+ || 
+	`__GLIBC_USE
+ (
+ISOC2X
+)
+
+245 #iâdeà
+__USE_TIME_BITS64
+
+
+247 
+time_t
+ 
+	$timegm
+ (
+tm
+ *
+__�
+è
+__THROW
+;
+
+249 #ifdeà
+__REDIRECT_NTH
+
+
+250 
+time_t
+ 
+	`__REDIRECT_NTH
+ (
+timegm
+, (
+tm
+ *
+__�
+), 
+__timegm64
+);
+
+252 
+	#timegm
+ 
+__timegm64
+
+
+	)
+
+258 #ifdeà
+__USE_MISC
+
+
+262 #iâdeà
+__USE_TIME_BITS64
+
+
+264 
+time_t
+ 
+	$tim–oÿl
+ (
+tm
+ *
+__�
+è
+__THROW
+;
+
+266 #ifdeà
+__REDIRECT_NTH
+
+
+267 
+time_t
+ 
+	`__REDIRECT_NTH
+ (
+tim–oÿl
+, (
+tm
+ *
+__�
+), 
+__mktime64
+);
+
+272 

+	$dysize
+ (
+__y—r
+è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+276 #ifdeà
+__USE_POSIX199309
+
+
+277 #iâdeà
+__USE_TIME_BITS64
+
+
+282 

+	`Çno¦“p
+ (cÚ¡ 
+time¥ec
+ *
+__»que¡ed_time
+,
+
+283 
+time¥ec
+ *
+__»maššg
+);
+
+286 

+	$þock_g‘»s
+ (
+þockid_t
+ 
+__þock_id
+, 
+time¥ec
+ *
+__»s
+è
+__THROW
+;
+
+289 

+	$þock_g‘time
+ (
+þockid_t
+ 
+__þock_id
+, 
+time¥ec
+ *
+__�
+)
+
+290 
+__THROW
+ 
+	`__nÚnuÎ
+((2));
+
+293 

+	$þock_£‰ime
+ (
+þockid_t
+ 
+__þock_id
+, cÚ¡ 
+time¥ec
+ *
+__�
+)
+
+294 
+__THROW
+ 
+	`__nÚnuÎ
+((2));
+
+296 #ifdeà
+__REDIRECT
+
+
+297 

+	`__REDIRECT
+ (
+Çno¦“p
+, (cÚ¡ 
+time¥ec
+ *
+__»que¡ed_time
+,
+
+298 
+time¥ec
+ *
+__»maššg
+),
+
+299 
+__Çno¦“p64
+);
+
+300 

+	`__REDIRECT_NTH
+ (
+þock_g‘»s
+, (
+þockid_t
+ 
+__þock_id
+,
+
+301 
+time¥ec
+ *
+__»s
+),
+
+302 
+__þock_g‘»s64
+);
+
+303 

+	`__REDIRECT_NTH
+ (
+þock_g‘time
+, (
+þockid_t
+ 
+__þock_id
+, 
+
+304 
+time¥ec
+ *
+__�
+), 
+__þock_g‘time64
+)
+
+305 
+	`__nÚnuÎ
+((2));
+
+306 

+	`__REDIRECT_NTH
+ (
+þock_£‰ime
+, (
+þockid_t
+ 
+__þock_id
+, const 
+
+307 
+time¥ec
+ *
+__�
+), 
+__þock_£‰ime64
+)
+
+308 
+	`__nÚnuÎ
+((2));
+
+310 
+	#Çno¦“p
+ 
+__Çno¦“p64
+
+
+	)
+
+311 
+	#þock_g‘»s
+ 
+__þock_g‘»s64
+
+
+	)
+
+312 
+	#þock_g‘time
+ 
+__þock_g‘time64
+
+
+	)
+
+313 
+	#þock_£‰ime
+ 
+__þock_£‰ime64
+
+
+	)
+
+318 #ifdeà
+__USE_XOPEN2K
+
+
+323 #iâdeà
+__USE_TIME_BITS64
+
+
+324 

+	`þock_Çno¦“p
+ (
+þockid_t
+ 
+__þock_id
+, 
+__æags
+,
+
+325 cÚ¡ 
+time¥ec
+ *
+__»q
+,
+
+326 
+time¥ec
+ *
+__»m
+);
+
+328 #ifdeà
+__REDIRECT
+
+
+329 

+	`__REDIRECT
+ (
+þock_Çno¦“p
+, (
+þockid_t
+ 
+__þock_id
+, 
+__æags
+,
+
+330 cÚ¡ 
+time¥ec
+ *
+__»q
+,
+
+331 
+time¥ec
+ *
+__»m
+),
+
+332 
+__þock_Çno¦“p_time64
+);
+
+334 
+	#þock_Çno¦“p
+ 
+__þock_Çno¦“p_time64
+
+
+	)
+
+339 

+	$þock_g‘ýuþockid
+ (
+pid_t
+ 
+__pid
+, 
+þockid_t
+ *
+__þock_id
+è
+__THROW
+;
+
+344 

+	$tim”_ü—‹
+ (
+þockid_t
+ 
+__þock_id
+,
+
+345 
+sigev’t
+ *
+__»¡riù
+ 
+__evp
+,
+
+346 
+tim”_t
+ *
+__»¡riù
+ 
+__tim”id
+è
+__THROW
+;
+
+349 

+	$tim”_d–‘e
+ (
+tim”_t
+ 
+__tim”id
+è
+__THROW
+;
+
+352 #iâdeà
+__USE_TIME_BITS64
+
+
+353 

+	$tim”_£‰ime
+ (
+tim”_t
+ 
+__tim”id
+, 
+__æags
+,
+
+354 cÚ¡ 
+™im”¥ec
+ *
+__»¡riù
+ 
+__v®ue
+,
+
+355 
+™im”¥ec
+ *
+__»¡riù
+ 
+__ov®ue
+è
+__THROW
+;
+
+358 

+	$tim”_g‘time
+ (
+tim”_t
+ 
+__tim”id
+, 
+™im”¥ec
+ *
+__v®ue
+)
+
+359 
+__THROW
+;
+
+361 #ifdeà
+__REDIRECT_NTH
+
+
+362 

+	`__REDIRECT_NTH
+ (
+tim”_£‰ime
+, (
+tim”_t
+ 
+__tim”id
+, 
+__æags
+,
+
+363 cÚ¡ 
+™im”¥ec
+ *
+__»¡riù
+ 
+__v®ue
+,
+
+364 
+™im”¥ec
+ *
+__»¡riù
+ 
+__ov®ue
+),
+
+365 
+__tim”_£‰ime64
+);
+
+367 

+	`__REDIRECT_NTH
+ (
+tim”_g‘time
+, (
+tim”_t
+ 
+__tim”id
+,
+
+368 
+™im”¥ec
+ *
+__v®ue
+),
+
+369 
+__tim”_g‘time64
+);
+
+371 
+	#tim”_£‰ime
+ 
+__tim”_£‰ime64
+
+
+	)
+
+372 
+	#tim”_g‘time
+ 
+__tim”_g‘time64
+
+
+	)
+
+377 

+	$tim”_g‘ov”run
+ (
+tim”_t
+ 
+__tim”id
+è
+__THROW
+;
+
+381 #ifdeà
+__USE_ISOC11
+
+
+382 #iâdeà
+__USE_TIME_BITS64
+
+
+384 

+	$time¥ec_g‘
+ (
+time¥ec
+ *
+__ts
+, 
+__ba£
+)
+
+385 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+387 #ifdeà
+__REDIRECT_NTH
+
+
+388 

+	`__REDIRECT_NTH
+ (
+time¥ec_g‘
+, (
+time¥ec
+ *
+__ts
+, 
+__ba£
+),
+
+389 
+__time¥ec_g‘64
+è
+	`__nÚnuÎ
+ ((1));
+
+391 
+	#time¥ec_g‘
+ 
+__time¥ec_g‘64
+
+
+	)
+
+397 #ià
+	`__GLIBC_USE
+ (
+ISOC2X
+)
+
+398 #iâdeà
+__USE_TIME_BITS64
+
+
+400 

+	$time¥ec_g‘»s
+ (
+time¥ec
+ *
+__ts
+, 
+__ba£
+)
+
+401 
+__THROW
+;
+
+403 #ifdeà
+__REDIRECT_NTH
+
+
+404 

+	`__REDIRECT_NTH
+ (
+time¥ec_g‘»s
+, (
+time¥ec
+ *
+__ts
+,
+
+405 
+__ba£
+),
+
+406 
+__time¥ec_g‘»s64
+);
+
+408 
+	#time¥ec_g‘»s
+ 
+__time¥ec_g‘»s64
+
+
+	)
+
+414 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+426 

+g‘d©e_”r
+;
+
+435 

+tm
+ *
+	`g‘d©e
+ (cÚ¡ *
+__¡ršg
+);
+
+438 #ifdeà
+__USE_GNU
+
+
+449 

+	`g‘d©e_r
+ (cÚ¡ *
+__»¡riù
+ 
+__¡ršg
+,
+
+450 
+tm
+ *
+__»¡riù
+ 
+__»sbuå
+);
+
+453 
+__END_DECLS
+
+
+	@/usr/include/unistd.h
+
+22 #iâdef 
+_UNISTD_H
+
+
+23 
+	#_UNISTD_H
+ 1
+
+	)
+
+25 
+	~<ã©u»s.h
+>
+
+27 
+	g__BEGIN_DECLS
+
+
+32 #ifdeà
+__USE_XOPEN2K8
+
+
+34 
+	#_POSIX_VERSION
+ 200809L
+
+	)
+
+35 #–ià
+defšed
+ 
+__USE_XOPEN2K
+
+
+37 
+	#_POSIX_VERSION
+ 200112L
+
+	)
+
+38 #–ià
+defšed
+ 
+__USE_POSIX199506
+
+
+40 
+	#_POSIX_VERSION
+ 199506L
+
+	)
+
+41 #–ià
+defšed
+ 
+__USE_POSIX199309
+
+
+43 
+	#_POSIX_VERSION
+ 199309L
+
+	)
+
+46 
+	#_POSIX_VERSION
+ 199009L
+
+	)
+
+52 #ifdeà
+__USE_XOPEN2K8
+
+
+53 
+	#__POSIX2_THIS_VERSION
+ 200809L
+
+	)
+
+55 #–ià
+defšed
+ 
+__USE_XOPEN2K
+
+
+57 
+	#__POSIX2_THIS_VERSION
+ 200112L
+
+	)
+
+58 #–ià
+defšed
+ 
+__USE_POSIX199506
+
+
+60 
+	#__POSIX2_THIS_VERSION
+ 199506L
+
+	)
+
+63 
+	#__POSIX2_THIS_VERSION
+ 199209L
+
+	)
+
+67 
+	#_POSIX2_VERSION
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+70 
+	#_POSIX2_C_VERSION
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+74 
+	#_POSIX2_C_BIND
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+78 
+	#_POSIX2_C_DEV
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+82 
+	#_POSIX2_SW_DEV
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+86 
+	#_POSIX2_LOCALEDEF
+ 
+__POSIX2_THIS_VERSION
+
+
+	)
+
+89 #ifdeà
+__USE_XOPEN2K8
+
+
+90 
+	#_XOPEN_VERSION
+ 700
+
+	)
+
+91 #–ià
+defšed
+ 
+__USE_XOPEN2K
+
+
+92 
+	#_XOPEN_VERSION
+ 600
+
+	)
+
+93 #–ià
+defšed
+ 
+__USE_UNIX98
+
+
+94 
+	#_XOPEN_VERSION
+ 500
+
+	)
+
+96 
+	#_XOPEN_VERSION
+ 4
+
+	)
+
+100 
+	#_XOPEN_XCU_VERSION
+ 4
+
+	)
+
+103 
+	#_XOPEN_XPG2
+ 1
+
+	)
+
+104 
+	#_XOPEN_XPG3
+ 1
+
+	)
+
+105 
+	#_XOPEN_XPG4
+ 1
+
+	)
+
+108 
+	#_XOPEN_UNIX
+ 1
+
+	)
+
+112 
+	#_XOPEN_ENH_I18N
+ 1
+
+	)
+
+115 
+	#_XOPEN_LEGACY
+ 1
+
+	)
+
+202 
+	~<b™s/posix_Ýt.h
+>
+
+205 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K
+
+
+206 
+	~<b™s/’vœÚm’ts.h
+>
+
+210 
+	#STDIN_FILENO
+ 0
+
+	)
+
+211 
+	#STDOUT_FILENO
+ 1
+
+	)
+
+212 
+	#STDERR_FILENO
+ 2
+
+	)
+
+217 
+	~<b™s/ty³s.h
+>
+
+219 #iâdef 
+__ssize_t_defšed
+
+
+220 
+__ssize_t
+ 
+	tssize_t
+;
+
+221 
+	#__ssize_t_defšed
+
+
+	)
+
+224 
+	#__Ãed_size_t
+
+
+	)
+
+225 
+	#__Ãed_NULL
+
+
+	)
+
+226 
+	~<¡ddef.h
+>
+
+228 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K
+
+
+231 #iâdeà
+__gid_t_defšed
+
+
+232 
+__gid_t
+ 
+	tgid_t
+;
+
+233 
+	#__gid_t_defšed
+
+
+	)
+
+236 #iâdeà
+__uid_t_defšed
+
+
+237 
+__uid_t
+ 
+	tuid_t
+;
+
+238 
+	#__uid_t_defšed
+
+
+	)
+
+241 #iâdeà
+__off_t_defšed
+
+
+242 #iâdeà
+__USE_FILE_OFFSET64
+
+
+243 
+__off_t
+ 
+	toff_t
+;
+
+245 
+__off64_t
+ 
+	toff_t
+;
+
+247 
+	#__off_t_defšed
+
+
+	)
+
+249 #ià
+defšed
+ 
+__USE_LARGEFILE64
+ && !defšed 
+__off64_t_defšed
+
+
+250 
+__off64_t
+ 
+	toff64_t
+;
+
+251 
+	#__off64_t_defšed
+
+
+	)
+
+254 #iâdeà
+__u£cÚds_t_defšed
+
+
+255 
+__u£cÚds_t
+ 
+	tu£cÚds_t
+;
+
+256 
+	#__u£cÚds_t_defšed
+
+
+	)
+
+259 #iâdeà
+__pid_t_defšed
+
+
+260 
+__pid_t
+ 
+	tpid_t
+;
+
+261 
+	#__pid_t_defšed
+
+
+	)
+
+265 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+266 #iâdeà
+__š�Œ_t_defšed
+
+
+267 
+__š�Œ_t
+ 
+	tš�Œ_t
+;
+
+268 
+	#__š�Œ_t_defšed
+
+
+	)
+
+272 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+273 #iâdeà
+__sockËn_t_defšed
+
+
+274 
+__sockËn_t
+ 
+	tsockËn_t
+;
+
+275 
+	#__sockËn_t_defšed
+
+
+	)
+
+281 
+	#R_OK
+ 4
+
+	)
+
+282 
+	#W_OK
+ 2
+
+	)
+
+283 
+	#X_OK
+ 1
+
+	)
+
+284 
+	#F_OK
+ 0
+
+	)
+
+287 

+	$acûss
+ (cÚ¡ *
+__Çme
+, 
+__ty³
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+289 #ifdeà
+__USE_GNU
+
+
+292 

+	$euidacûss
+ (cÚ¡ *
+__Çme
+, 
+__ty³
+)
+
+293 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+296 

+	$—cûss
+ (cÚ¡ *
+__Çme
+, 
+__ty³
+)
+
+297 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+300 

+	$execv—t
+ (
+__fd
+, cÚ¡ *
+__·th
+, *cÚ¡ 
+__¬gv
+[],
+
+301 *cÚ¡ 
+__’vp
+[], 
+__æags
+)
+
+302 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+305 #ifdeà
+__USE_ATFILE
+
+
+309 

+	$çcûs§t
+ (
+__fd
+, cÚ¡ *
+__fže
+, 
+__ty³
+, 
+__æag
+)
+
+310 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+__wur
+;
+
+315 #iâdef 
+_STDIO_H
+
+
+316 
+	#SEEK_SET
+ 0
+
+	)
+
+317 
+	#SEEK_CUR
+ 1
+
+	)
+
+318 
+	#SEEK_END
+ 2
+
+	)
+
+319 #ifdeà
+__USE_GNU
+
+
+320 
+	#SEEK_DATA
+ 3
+
+	)
+
+321 
+	#SEEK_HOLE
+ 4
+
+	)
+
+325 #ià
+defšed
+ 
+__USE_MISC
+ && !defšed 
+L_SET
+
+
+327 
+	#L_SET
+ 
+SEEK_SET
+
+
+	)
+
+328 
+	#L_INCR
+ 
+SEEK_CUR
+
+
+	)
+
+329 
+	#L_XTND
+ 
+SEEK_END
+
+
+	)
+
+338 #iâdeà
+__USE_FILE_OFFSET64
+
+
+339 
+__off_t
+ 
+	$l£ek
+ (
+__fd
+, 
+__off_t
+ 
+__off£t
+, 
+__wh’û
+è
+__THROW
+;
+
+341 #ifdeà
+__REDIRECT_NTH
+
+
+342 
+__off64_t
+ 
+	`__REDIRECT_NTH
+ (
+l£ek
+,
+
+343 (
+__fd
+, 
+__off64_t
+ 
+__off£t
+, 
+__wh’û
+),
+
+344 
+l£ek64
+);
+
+346 
+	#l£ek
+ 
+l£ek64
+
+
+	)
+
+349 #ifdeà
+__USE_LARGEFILE64
+
+
+350 
+__off64_t
+ 
+	$l£ek64
+ (
+__fd
+, 
+__off64_t
+ 
+__off£t
+, 
+__wh’û
+)
+
+351 
+__THROW
+;
+
+358 

+	`þo£
+ (
+__fd
+);
+
+360 #ifdeà
+__USE_MISC
+
+
+363 

+	$þo£äom
+ (
+__lowfd
+è
+__THROW
+;
+
+371 
+ssize_t
+ 
+	$»ad
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+è
+__wur
+
+
+372 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+378 
+ssize_t
+ 
+	$wr™e
+ (
+__fd
+, cÚ¡ *
+__buf
+, 
+size_t
+ 
+__n
+è
+__wur
+
+
+379 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+381 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+
+
+382 #iâdeà
+__USE_FILE_OFFSET64
+
+
+389 
+ssize_t
+ 
+	$´—d
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+390 
+__off_t
+ 
+__off£t
+è
+__wur
+
+
+391 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+398 
+ssize_t
+ 
+	$pwr™e
+ (
+__fd
+, cÚ¡ *
+__buf
+, 
+size_t
+ 
+__n
+,
+
+399 
+__off_t
+ 
+__off£t
+è
+__wur
+
+
+400 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+403 #ifdeà
+__REDIRECT
+
+
+404 
+ssize_t
+ 
+	`__REDIRECT
+ (
+´—d
+, (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+405 
+__off64_t
+ 
+__off£t
+),
+
+406 
+´—d64
+è
+__wur
+
+
+407 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+408 
+ssize_t
+ 
+	`__REDIRECT
+ (
+pwr™e
+, (
+__fd
+, cÚ¡ *
+__buf
+,
+
+409 
+size_t
+ 
+__nby‹s
+, 
+__off64_t
+ 
+__off£t
+),
+
+410 
+pwr™e64
+è
+__wur
+
+
+411 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+413 
+	#´—d
+ 
+´—d64
+
+
+	)
+
+414 
+	#pwr™e
+ 
+pwr™e64
+
+
+	)
+
+418 #ifdeà
+__USE_LARGEFILE64
+
+
+422 
+ssize_t
+ 
+	$´—d64
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+423 
+__off64_t
+ 
+__off£t
+è
+__wur
+
+
+424 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+427 
+ssize_t
+ 
+	$pwr™e64
+ (
+__fd
+, cÚ¡ *
+__buf
+, 
+size_t
+ 
+__n
+,
+
+428 
+__off64_t
+ 
+__off£t
+è
+__wur
+
+
+429 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2, 3));
+
+437 

+	$p�e
+ (
+__p�edes
+[2]è
+__THROW
+ 
+__wur
+;
+
+439 #ifdeà
+__USE_GNU
+
+
+442 

+	$p�e2
+ (
+__p�edes
+[2], 
+__æags
+è
+__THROW
+ 
+__wur
+;
+
+452 

+	$®¬m
+ (
+__£cÚds
+è
+__THROW
+;
+
+464 

+	`¦“p
+ (
+__£cÚds
+);
+
+466 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+) \
+
+467 || 
+defšed
+ 
+__USE_MISC
+
+
+472 
+__u£cÚds_t
+ 
+	$u®¬m
+ (
+__u£cÚds_t
+ 
+__v®ue
+, __u£cÚds_ˆ
+__š‹rv®
+)
+
+473 
+__THROW
+;
+
+480 

+	`u¦“p
+ (
+__u£cÚds_t
+ 
+__u£cÚds
+);
+
+489 

+	`·u£
+ ();
+
+493 

+	$chown
+ (cÚ¡ *
+__fže
+, 
+__uid_t
+ 
+__owÃr
+, 
+__gid_t
+ 
+__group
+)
+
+494 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+496 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+498 

+	$fchown
+ (
+__fd
+, 
+__uid_t
+ 
+__owÃr
+, 
+__gid_t
+ 
+__group
+è
+__THROW
+ 
+__wur
+;
+
+503 

+	$lchown
+ (cÚ¡ *
+__fže
+, 
+__uid_t
+ 
+__owÃr
+, 
+__gid_t
+ 
+__group
+)
+
+504 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+508 #ifdeà
+__USE_ATFILE
+
+
+511 

+	$fchowÇt
+ (
+__fd
+, cÚ¡ *
+__fže
+, 
+__uid_t
+ 
+__owÃr
+,
+
+512 
+__gid_t
+ 
+__group
+, 
+__æag
+)
+
+513 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+__wur
+;
+
+517 

+	$chdœ
+ (cÚ¡ *
+__·th
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+519 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+521 

+	$fchdœ
+ (
+__fd
+è
+__THROW
+ 
+__wur
+;
+
+531 
*
+	$g‘cwd
+ (*
+__buf
+, 
+size_t
+ 
+__size
+è
+__THROW
+ 
+__wur
+;
+
+533 #ifdef 
+__USE_GNU
+
+
+537 
*
+	$g‘_cu¼’t_dœ_Çme
+ (è
+__THROW
+;
+
+540 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+) \
+
+541 || 
+defšed
+ 
+__USE_MISC
+
+
+545 
*
+	$g‘wd
+ (*
+__buf
+)
+
+546 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__©Œibu‹_d•»ÿ‹d__
+ 
+__wur
+
+
+547 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1));
+
+552 

+	$dup
+ (
+__fd
+è
+__THROW
+ 
+__wur
+;
+
+555 

+	$dup2
+ (
+__fd
+, 
+__fd2
+è
+__THROW
+;
+
+557 #ifdeà
+__USE_GNU
+
+
+560 

+	$dup3
+ (
+__fd
+, 
+__fd2
+, 
+__æags
+è
+__THROW
+;
+
+564 
**
+__’vœÚ
+;
+
+565 #ifdeà
+__USE_GNU
+
+
+566 
**
+’vœÚ
+;
+
+572 

+	$execve
+ (cÚ¡ *
+__·th
+, *cÚ¡ 
+__¬gv
+[],
+
+573 *cÚ¡ 
+__’vp
+[]è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+575 #ifdeà
+__USE_XOPEN2K8
+
+
+578 

+	$ãxecve
+ (
+__fd
+, *cÚ¡ 
+__¬gv
+[], *cÚ¡ 
+__’vp
+[])
+
+579 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+584 

+	$execv
+ (cÚ¡ *
+__·th
+, *cÚ¡ 
+__¬gv
+[])
+
+585 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+589 

+	$exeþe
+ (cÚ¡ *
+__·th
+, cÚ¡ *
+__¬g
+, ...)
+
+590 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+594 

+	$exeþ
+ (cÚ¡ *
+__·th
+, cÚ¡ *
+__¬g
+, ...)
+
+595 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+599 

+	$execvp
+ (cÚ¡ *
+__fže
+, *cÚ¡ 
+__¬gv
+[])
+
+600 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+605 

+	$exeþp
+ (cÚ¡ *
+__fže
+, cÚ¡ *
+__¬g
+, ...)
+
+606 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+608 #ifdeà
+__USE_GNU
+
+
+611 

+	$execv³
+ (cÚ¡ *
+__fže
+, *cÚ¡ 
+__¬gv
+[],
+
+612 *cÚ¡ 
+__’vp
+[])
+
+613 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+617 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN
+
+
+619 

+	$niû
+ (
+__šc
+è
+__THROW
+ 
+__wur
+;
+
+624 

+	$_ex™
+ (
+__¡©us
+è
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+630 
+	~<b™s/cÚâame.h
+>
+
+633 

+	$·thcÚf
+ (cÚ¡ *
+__·th
+, 
+__Çme
+)
+
+634 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+637 

+	$å©hcÚf
+ (
+__fd
+, 
+__Çme
+è
+__THROW
+;
+
+640 

+	$syscÚf
+ (
+__Çme
+è
+__THROW
+;
+
+642 #ifdef 
+__USE_POSIX2
+
+
+644 
+size_t
+ 
+	$cÚf¡r
+ (
+__Çme
+, *
+__buf
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+
+
+645 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+650 
+__pid_t
+ 
+	$g‘pid
+ (è
+__THROW
+;
+
+653 
+__pid_t
+ 
+	$g‘µid
+ (è
+__THROW
+;
+
+656 
+__pid_t
+ 
+	$g‘pg½
+ (è
+__THROW
+;
+
+659 
+__pid_t
+ 
+	$__g‘pgid
+ (
+__pid_t
+ 
+__pid
+è
+__THROW
+;
+
+660 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+661 
+__pid_t
+ 
+	$g‘pgid
+ (
+__pid_t
+ 
+__pid
+è
+__THROW
+;
+
+668 

+	$£�gid
+ (
+__pid_t
+ 
+__pid
+, __pid_ˆ
+__pgid
+è
+__THROW
+;
+
+670 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+682 

+	$£�g½
+ (è
+__THROW
+;
+
+689 
+__pid_t
+ 
+	$£tsid
+ (è
+__THROW
+;
+
+691 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+693 
+__pid_t
+ 
+	$g‘sid
+ (
+__pid_t
+ 
+__pid
+è
+__THROW
+;
+
+697 
+__uid_t
+ 
+	$g‘uid
+ (è
+__THROW
+;
+
+700 
+__uid_t
+ 
+	$g‘euid
+ (è
+__THROW
+;
+
+703 
+__gid_t
+ 
+	$g‘gid
+ (è
+__THROW
+;
+
+706 
+__gid_t
+ 
+	$g‘egid
+ (è
+__THROW
+;
+
+711 

+	$g‘groups
+ (
+__size
+, 
+__gid_t
+ 
+__li¡
+[]è
+__THROW
+ 
+__wur
+
+
+712 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 1);
+
+713 #ifdef 
+__USE_GNU
+
+
+715 

+	$group_memb”
+ (
+__gid_t
+ 
+__gid
+è
+__THROW
+;
+
+722 

+	$£tuid
+ (
+__uid_t
+ 
+__uid
+è
+__THROW
+ 
+__wur
+;
+
+724 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+727 

+	$£Œeuid
+ (
+__uid_t
+ 
+__ruid
+, __uid_ˆ
+__euid
+è
+__THROW
+ 
+__wur
+;
+
+730 #ifdeà
+__USE_XOPEN2K
+
+
+732 

+	$£‹uid
+ (
+__uid_t
+ 
+__uid
+è
+__THROW
+ 
+__wur
+;
+
+739 

+	$£tgid
+ (
+__gid_t
+ 
+__gid
+è
+__THROW
+ 
+__wur
+;
+
+741 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+744 

+	$£Œegid
+ (
+__gid_t
+ 
+__rgid
+, __gid_ˆ
+__egid
+è
+__THROW
+ 
+__wur
+;
+
+747 #ifdeà
+__USE_XOPEN2K
+
+
+749 

+	$£‹gid
+ (
+__gid_t
+ 
+__gid
+è
+__THROW
+ 
+__wur
+;
+
+752 #ifdeà
+__USE_GNU
+
+
+755 

+	$g‘»suid
+ (
+__uid_t
+ *
+__ruid
+, __uid_ˆ*
+__euid
+, __uid_ˆ*
+__suid
+)
+
+756 
+__THROW
+;
+
+760 

+	$g‘»sgid
+ (
+__gid_t
+ *
+__rgid
+, __gid_ˆ*
+__egid
+, __gid_ˆ*
+__sgid
+)
+
+761 
+__THROW
+;
+
+765 

+	$£Œesuid
+ (
+__uid_t
+ 
+__ruid
+, __uid_ˆ
+__euid
+, __uid_ˆ
+__suid
+)
+
+766 
+__THROW
+ 
+__wur
+;
+
+770 

+	$£Œesgid
+ (
+__gid_t
+ 
+__rgid
+, __gid_ˆ
+__egid
+, __gid_ˆ
+__sgid
+)
+
+771 
+__THROW
+ 
+__wur
+;
+
+778 
+__pid_t
+ 
+	$fÜk
+ (è
+__THROWNL
+;
+
+780 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K8
+) \
+
+781 || 
+defšed
+ 
+__USE_MISC
+
+
+786 
+__pid_t
+ 
+	$vfÜk
+ (è
+__THROW
+;
+
+789 #ifdeà
+__USE_GNU
+
+
+793 
+__pid_t
+ 
+	$_FÜk
+ (è
+__THROW
+;
+
+799 
*
+	$‰yÇme
+ (
+__fd
+è
+__THROW
+;
+
+803 

+	$‰yÇme_r
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+)
+
+804 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2)è
+__wur
+
+
+805 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+809 

+	$i§‰y
+ (
+__fd
+è
+__THROW
+;
+
+811 #ifdeà
+__USE_MISC
+
+
+814 

+	$‰y¦Ù
+ (è
+__THROW
+;
+
+819 

+	$lšk
+ (cÚ¡ *
+__äom
+, cÚ¡ *
+__to
+)
+
+820 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+;
+
+822 #ifdeà
+__USE_ATFILE
+
+
+825 

+	$lšk©
+ (
+__äomfd
+, cÚ¡ *
+__äom
+, 
+__tofd
+,
+
+826 cÚ¡ *
+__to
+, 
+__æags
+)
+
+827 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 4)è
+__wur
+;
+
+830 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+832 

+	$symlšk
+ (cÚ¡ *
+__äom
+, cÚ¡ *
+__to
+)
+
+833 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+;
+
+838 
+ssize_t
+ 
+	$»adlšk
+ (cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+839 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+)
+
+840 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+
+
+841 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 2, 3);
+
+845 #ifdeà
+__USE_ATFILE
+
+
+847 

+	$symlšk©
+ (cÚ¡ *
+__äom
+, 
+__tofd
+,
+
+848 cÚ¡ *
+__to
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 3)è
+__wur
+;
+
+851 
+ssize_t
+ 
+	$»adlšk©
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+852 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+)
+
+853 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3)è
+__wur
+
+
+854 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 3, 4);
+
+858 

+	$uÆšk
+ (cÚ¡ *
+__Çme
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+860 #ifdeà
+__USE_ATFILE
+
+
+862 

+	$uÆšk©
+ (
+__fd
+, cÚ¡ *
+__Çme
+, 
+__æag
+)
+
+863 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2));
+
+867 

+	$rmdœ
+ (cÚ¡ *
+__·th
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+871 
+__pid_t
+ 
+	$tcg‘pg½
+ (
+__fd
+è
+__THROW
+;
+
+874 

+	$tc£�g½
+ (
+__fd
+, 
+__pid_t
+ 
+__pg½_id
+è
+__THROW
+;
+
+881 
*
+	`g‘logš
+ ();
+
+882 #ifdeà
+__USE_POSIX199506
+
+
+889 

+	$g‘logš_r
+ (*
+__Çme
+, 
+size_t
+ 
+__Çme_Ën
+è
+	`__nÚnuÎ
+ ((1))
+
+890 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+893 #ifdef 
+__USE_MISC
+
+
+895 

+	$£Žogš
+ (cÚ¡ *
+__Çme
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+899 #ifdef 
+__USE_POSIX2
+
+
+903 
+	~<b™s/g‘Ýt_posix.h
+>
+
+907 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+911 

+	$g‘ho¡Çme
+ (*
+__Çme
+, 
+size_t
+ 
+__Ën
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1))
+
+912 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+916 #ià
+defšed
+ 
+__USE_MISC
+
+
+919 

+	$£tho¡Çme
+ (cÚ¡ *
+__Çme
+, 
+size_t
+ 
+__Ën
+)
+
+920 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 2));
+
+924 

+	$£tho¡id
+ (
+__id
+è
+__THROW
+ 
+__wur
+;
+
+930 

+	$g‘domašÇme
+ (*
+__Çme
+, 
+size_t
+ 
+__Ën
+)
+
+931 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+
+
+932 
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+933 

+	$£tdomašÇme
+ (cÚ¡ *
+__Çme
+, 
+size_t
+ 
+__Ën
+)
+
+934 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 2));
+
+939 

+	$vhªgup
+ (è
+__THROW
+;
+
+942 

+	$»voke
+ (cÚ¡ *
+__fže
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+950 

+	$´ofž
+ (*
+__§m¶e_bufãr
+, 
+size_t
+ 
+__size
+,
+
+951 
+size_t
+ 
+__off£t
+, 
+__sÿË
+)
+
+952 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1));
+
+958 

+	$acù
+ (cÚ¡ *
+__Çme
+è
+__THROW
+;
+
+962 
*
+	$g‘u£rsh–l
+ (è
+__THROW
+;
+
+963 

+	$’du£rsh–l
+ (è
+__THROW
+;
+
+964 

+	$£tu£rsh–l
+ (è
+__THROW
+;
+
+970 

+	$d«mÚ
+ (
+__nochdœ
+, 
+__noþo£
+è
+__THROW
+ 
+__wur
+;
+
+974 #ià
+defšed
+ 
+__USE_MISC
+ || (defšed 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K
+)
+
+977 

+	$chroÙ
+ (cÚ¡ *
+__·th
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+981 
*
+	$g‘·ss
+ (cÚ¡ *
+__´om±
+è
+	`__nÚnuÎ
+ ((1));
+
+989 

+	`fsync
+ (
+__fd
+);
+
+992 #ifdeà
+__USE_GNU
+
+
+995 

+	$syncfs
+ (
+__fd
+è
+__THROW
+;
+
+999 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+1002 

+	`g‘ho¡id
+ ();
+
+1005 

+	$sync
+ (è
+__THROW
+;
+
+1008 #ià
+defšed
+ 
+__USE_MISC
+ || !defšed 
+__USE_XOPEN2K
+
+
+1011 

+	$g‘·gesize
+ (è
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+1016 

+	$g‘d�bËsize
+ (è
+__THROW
+;
+
+1022 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+1025 #iâdeà
+__USE_FILE_OFFSET64
+
+
+1026 

+	$Œunÿ‹
+ (cÚ¡ *
+__fže
+, 
+__off_t
+ 
+__Ëngth
+)
+
+1027 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+1029 #ifdeà
+__REDIRECT_NTH
+
+
+1030 

+	`__REDIRECT_NTH
+ (
+Œunÿ‹
+,
+
+1031 (cÚ¡ *
+__fže
+, 
+__off64_t
+ 
+__Ëngth
+),
+
+1032 
+Œunÿ‹64
+è
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+1034 
+	#Œunÿ‹
+ 
+Œunÿ‹64
+
+
+	)
+
+1037 #ifdeà
+__USE_LARGEFILE64
+
+
+1038 

+	$Œunÿ‹64
+ (cÚ¡ *
+__fže
+, 
+__off64_t
+ 
+__Ëngth
+)
+
+1039 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+;
+
+1044 #ià
+defšed
+ 
+__USE_POSIX199309
+ \
+
+1045 || 
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+1048 #iâdeà
+__USE_FILE_OFFSET64
+
+
+1049 

+	$árunÿ‹
+ (
+__fd
+, 
+__off_t
+ 
+__Ëngth
+è
+__THROW
+ 
+__wur
+;
+
+1051 #ifdeà
+__REDIRECT_NTH
+
+
+1052 

+	`__REDIRECT_NTH
+ (
+árunÿ‹
+, (
+__fd
+, 
+__off64_t
+ 
+__Ëngth
+),
+
+1053 
+árunÿ‹64
+è
+__wur
+;
+
+1055 
+	#árunÿ‹
+ 
+árunÿ‹64
+
+
+	)
+
+1058 #ifdeà
+__USE_LARGEFILE64
+
+
+1059 

+	$árunÿ‹64
+ (
+__fd
+, 
+__off64_t
+ 
+__Ëngth
+è
+__THROW
+ 
+__wur
+;
+
+1065 #ià(
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ && !defšed 
+__USE_XOPEN2K
+) \
+
+1066 || 
+defšed
+ 
+__USE_MISC
+
+
+1070 

+	$brk
+ (*
+__addr
+è
+__THROW
+ 
+__wur
+;
+
+1076 
*
+	$sbrk
+ (
+š�Œ_t
+ 
+__d–�
+è
+__THROW
+;
+
+1080 #ifdeà
+__USE_MISC
+
+
+1091 

+	$sysÿÎ
+ (
+__sy¢o
+, ...è
+__THROW
+;
+
+1096 #ià(
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+è&& !defšed 
+F_LOCK
+
+
+1108 
+	#F_ULOCK
+ 0
+
+	)
+
+1109 
+	#F_LOCK
+ 1
+
+	)
+
+1110 
+	#F_TLOCK
+ 2
+
+	)
+
+1111 
+	#F_TEST
+ 3
+
+	)
+
+1113 #iâdeà
+__USE_FILE_OFFSET64
+
+
+1114 

+	$lockf
+ (
+__fd
+, 
+__cmd
+, 
+__off_t
+ 
+__Ën
+è
+__wur
+;
+
+1116 #ifdeà
+__REDIRECT
+
+
+1117 

+	`__REDIRECT
+ (
+lockf
+, (
+__fd
+, 
+__cmd
+, 
+__off64_t
+ 
+__Ën
+),
+
+1118 
+lockf64
+è
+__wur
+;
+
+1120 
+	#lockf
+ 
+lockf64
+
+
+	)
+
+1123 #ifdeà
+__USE_LARGEFILE64
+
+
+1124 

+	$lockf64
+ (
+__fd
+, 
+__cmd
+, 
+__off64_t
+ 
+__Ën
+è
+__wur
+;
+
+1129 #ifdeà
+__USE_GNU
+
+
+1134 
+	#TEMP_FAILURE_RETRY
+(
+ex´essiÚ
+) \
+
+1135 (
+__ex‹nsiÚ__
+ \
+
+1136 ({ 
+__»suÉ
+; \
+
+1137 dØ
+__»suÉ
+ = (è(
+ex´essiÚ
+); \
+
+1138 
+__»suÉ
+ =ð-1L && 
+”ºo
+ =ð
+EINTR
+); \
+
+1139 
+__»suÉ
+; 
+	}
+}))
+
+	)
+
+1142 
+ssize_t
+ 
+cÝy_fže_¿nge
+ (
+__šfd
+, 
+__off64_t
+ *
+__pšoff
+,
+
+1143 
+__outfd
+, 
+__off64_t
+ *
+__poutoff
+,
+
+1144 
+size_t
+ 
+__Ëngth
+, 
+__æags
+);
+
+1147 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_UNIX98
+
+
+1150 

+fd©async
+ (
+__fždes
+);
+
+1153 #ifdeà
+__USE_MISC
+
+
+1159 
*
+	$üy±
+ (cÚ¡ *
+__key
+, cÚ¡ *
+__§É
+)
+
+1160 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2));
+
+1163 #ifdef 
+__USE_XOPEN
+
+
+1168 

+	$swab
+ (cÚ¡ *
+__»¡riù
+ 
+__äom
+, *__»¡riù 
+__to
+,
+
+1169 
+ssize_t
+ 
+__n
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2))
+
+1170 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 1, 3))
+
+1171 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+1178 #ià
+defšed
+ 
+__USE_XOPEN
+ && !defšed 
+__USE_XOPEN2K
+
+
+1180 
*
+	$ù”mid
+ (*
+__s
+è
+__THROW
+;
+
+1183 
*
+	`cu£rid
+ (*
+__s
+);
+
+1189 #ià
+defšed
+ 
+__USE_UNIX98
+ && !defšed 
+__USE_XOPEN2K
+
+
+1190 

+	$±h»ad_©fÜk
+ ((*
+__´•¬e
+) (),
+
+1191 (*
+__·»Á
+) (),
+
+1192 (*
+__chžd
+è()è
+__THROW
+;
+
+1195 #ifdeà
+__USE_MISC
+
+
+1198 
+	$g‘’ŒÝy
+ (*
+__bufãr
+, 
+size_t
+ 
+__Ëngth
+è
+__wur
+
+
+1199 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+1202 #ifdeà
+__USE_GNU
+
+
+1208 

+	$þo£_¿nge
+ (
+__fd
+, 
+__max_fd
+,
+
+1209 
+__æags
+è
+__THROW
+;
+
+1213 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+1214 
+	~<b™s/uni¡d.h
+>
+
+1218 
+	~<b™s/uni¡d_ext.h
+>
+
+1220 
+__END_DECLS
+
+
+	@/usr/include/alloca.h
+
+18 #iâdef 
+_ALLOCA_H
+
+
+19 
+	#_ALLOCA_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 
+	#__Ãed_size_t
+
+
+	)
+
+24 
+	~<¡ddef.h
+>
+
+26 
+	g__BEGIN_DECLS
+
+
+29 #undeà
+®loÿ
+
+
+32 
*
+	$®loÿ
+ (
+size_t
+ 
+__size
+è
+__THROW
+;
+
+34 #ifdef 
+__GNUC__
+
+
+35 
+	#®loÿ
+(
+size
+è
+	`__bužtš_®loÿ
+ (size)
+
+	)
+
+38 
+__END_DECLS
+
+
+	@/usr/include/arpa/nameser.h
+
+48 #iâdeà
+_ARPA_NAMESER_H_
+
+
+49 
+	#_ARPA_NAMESER_H_
+
+
+	)
+
+51 
+	~<sys/·¿m.h
+>
+
+52 
+	~<sys/ty³s.h
+>
+
+53 
+	~<¡dšt.h
+>
+
+55 #ifdeà
+_LIBC
+
+
+56 
+	#__NAMESER_DEPRECATED
+
+
+	)
+
+58 
+	#__NAMESER_DEPRECATED
+ 
+__©Œibu‹_d•»ÿ‹d__
+
+
+	)
+
+64 
+	#NS_PACKETSZ
+ 512
+
+	)
+
+65 
+	#NS_MAXDNAME
+ 1025
+
+	)
+
+66 
+	#NS_MAXMSG
+ 65535
+
+	)
+
+67 
+	#NS_MAXCDNAME
+ 255
+
+	)
+
+68 
+	#NS_MAXLABEL
+ 63
+
+	)
+
+69 
+	#NS_HFIXEDSZ
+ 12
+
+	)
+
+70 
+	#NS_QFIXEDSZ
+ 4
+
+	)
+
+71 
+	#NS_RRFIXEDSZ
+ 10
+
+	)
+
+72 
+	#NS_INT32SZ
+ 4
+
+	)
+
+73 
+	#NS_INT16SZ
+ 2
+
+	)
+
+74 
+	#NS_INT8SZ
+ 1
+
+	)
+
+75 
+	#NS_INADDRSZ
+ 4
+
+	)
+
+76 
+	#NS_IN6ADDRSZ
+ 16
+
+	)
+
+77 
+	#NS_CMPRSFLGS
+ 0xc0
+
+	)
+
+78 
+	#NS_DEFAULTPORT
+ 53
+
+	)
+
+83 
+	e__ns_£ù
+ {
+
+84 
+	mns_s_qd
+ = 0,
+
+85 
+	mns_s_zn
+ = 0,
+
+86 
+	mns_s_ª
+ = 1,
+
+87 
+	mns_s_´
+ = 1,
+
+88 
+	mns_s_ns
+ = 2,
+
+89 
+	mns_s_ud
+ = 2,
+
+90 
+	mns_s_¬
+ = 3,
+
+91 
+	mns_s_max
+ = 4
+
+92 } 
+	tns_£ù
+;
+
+99 
+	s__ns_msg
+ {
+
+100 cÚ¡ *
+	m_msg
+, *
+	m_eom
+;
+
+101 
+ušt16_t
+ 
+	m_id
+, 
+	m_æags
+, 
+	m_couÁs
+[
+ns_s_max
+];
+
+102 cÚ¡ *
+	m_£ùiÚs
+[
+ns_s_max
+];
+
+103 
+ns_£ù
+ 
+	m_£ù
+;
+
+104 
+	m_¼num
+;
+
+105 cÚ¡ *
+	m_msg_±r
+;
+
+106 } 
+	tns_msg
+;
+
+109 
+	s_ns_æagd©a
+ { 
+	mmask
+, 
+	mshiá
+; };
+
+110 
cÚ¡ 
+_ns_æagd©a
+ _ns_flagdata[];
+
+114 
+	#ns_msg_id
+(
+hªdË
+è((hªdË).
+_id
+ + 0)
+
+	)
+
+115 
+	#ns_msg_ba£
+(
+hªdË
+è((hªdË).
+_msg
+ + 0)
+
+	)
+
+116 
+	#ns_msg_’d
+(
+hªdË
+è((hªdË).
+_eom
+ + 0)
+
+	)
+
+117 
+	#ns_msg_size
+(
+hªdË
+è((hªdË).
+_eom
+ - (hªdË).
+_msg
+)
+
+	)
+
+118 
+	#ns_msg_couÁ
+(
+hªdË
+, 
+£ùiÚ
+è((hªdË).
+_couÁs
+[£ùiÚ] + 0)
+
+	)
+
+123 
+	s__ns_¼
+ {
+
+124 
+	mÇme
+[
+NS_MAXDNAME
+];
+
+125 
+ušt16_t
+ 
+	mty³
+;
+
+126 
+ušt16_t
+ 
+	m¼_þass
+;
+
+127 
+ušt32_t
+ 
+	m‰l
+;
+
+128 
+ušt16_t
+ 
+	mrdËngth
+;
+
+129 cÚ¡ * 
+	mrd©a
+;
+
+130 } 
+	tns_¼
+;
+
+133 
+	#ns_¼_Çme
+(
+¼
+è((Ôr).
+Çme
+[0] !ð'\0'è? (¼).Çm�: ".")
+
+	)
+
+134 
+	#ns_¼_ty³
+(
+¼
+è((
+ns_ty³
+)(Ôr).
+ty³
+ + 0))
+
+	)
+
+135 
+	#ns_¼_þass
+(
+¼
+è((
+ns_þass
+)(Ôr).
+¼_þass
+ + 0))
+
+	)
+
+136 
+	#ns_¼_‰l
+(
+¼
+è(Ôr).
+‰l
+ + 0)
+
+	)
+
+137 
+	#ns_¼_rdËn
+(
+¼
+è(Ôr).
+rdËngth
+ + 0)
+
+	)
+
+138 
+	#ns_¼_rd©a
+(
+¼
+è(Ôr).
+rd©a
+ + 0)
+
+	)
+
+145 
+	e__ns_æag
+ {
+
+146 
+	mns_f_qr
+,
+
+147 
+	mns_f_Ýcode
+,
+
+148 
+	mns_f_¯
+,
+
+149 
+	mns_f_tc
+,
+
+150 
+	mns_f_rd
+,
+
+151 
+	mns_f_¿
+,
+
+152 
+	mns_f_z
+,
+
+153 
+	mns_f_ad
+,
+
+154 
+	mns_f_cd
+,
+
+155 
+	mns_f_rcode
+,
+
+156 
+	mns_f_max
+
+
+157 } 
+	tns_æag
+;
+
+162 
+	e__ns_Ýcode
+ {
+
+163 
+	mns_o_qu”y
+ = 0,
+
+164 
+	mns_o_iqu”y
+ = 1,
+
+165 
+	mns_o_¡©us
+ = 2,
+
+167 
+	mns_o_nÙify
+ = 4,
+
+168 
+	mns_o_upd©e
+ = 5,
+
+169 
+	mns_o_max
+ = 6
+
+170 } 
+	tns_Ýcode
+;
+
+175 
+	e__ns_rcode
+ {
+
+176 
+	mns_r_nÛ¼Ü
+ = 0,
+
+177 
+	mns_r_fÜm”r
+ = 1,
+
+178 
+	mns_r_£rvçž
+ = 2,
+
+179 
+	mns_r_nxdomaš
+ = 3,
+
+180 
+	mns_r_nÙim¶
+ = 4,
+
+181 
+	mns_r_»fu£d
+ = 5,
+
+183 
+	mns_r_yxdomaš
+ = 6,
+
+184 
+	mns_r_yx¼£t
+ = 7,
+
+185 
+	mns_r_nx¼£t
+ = 8,
+
+186 
+	mns_r_nÙauth
+ = 9,
+
+187 
+	mns_r_nÙzÚe
+ = 10,
+
+188 
+	mns_r_max
+ = 11,
+
+190 
+	mns_r_badv”s
+ = 16,
+
+192 
+	mns_r_badsig
+ = 16,
+
+193 
+	mns_r_badkey
+ = 17,
+
+194 
+	mns_r_badtime
+ = 18
+
+195 } 
+	tns_rcode
+;
+
+198 
+	e__ns_upd©e_Ý”©iÚ
+ {
+
+199 
+	mns_uÝ_d–‘e
+ = 0,
+
+200 
+	mns_uÝ_add
+ = 1,
+
+201 
+	mns_uÝ_max
+ = 2
+
+202 } 
+	tns_upd©e_Ý”©iÚ
+;
+
+207 
+	sns_tsig_key
+ {
+
+208 
+	mÇme
+[
+NS_MAXDNAME
+], 
+	m®g
+[NS_MAXDNAME];
+
+209 *
+	md©a
+;
+
+210 
+	mËn
+;
+
+212 
+ns_tsig_key
+ 
+	tns_tsig_key
+;
+
+217 
+	sns_tý_tsig_¡©e
+ {
+
+218 
+	mcouÁ”
+;
+
+219 
+d¡_key
+ *
+	mkey
+;
+
+220 *
+	mùx
+;
+
+221 
+	msig
+[
+NS_PACKETSZ
+];
+
+222 
+	msigËn
+;
+
+224 
+ns_tý_tsig_¡©e
+ 
+	tns_tý_tsig_¡©e
+;
+
+226 
+	#NS_TSIG_FUDGE
+ 300
+
+	)
+
+227 
+	#NS_TSIG_TCP_COUNT
+ 100
+
+	)
+
+228 
+	#NS_TSIG_ALG_HMAC_MD5
+ "HMAC-MD5.SIG-ALG.REG.INT"
+
+	)
+
+230 
+	#NS_TSIG_ERROR_NO_TSIG
+ -10
+
+	)
+
+231 
+	#NS_TSIG_ERROR_NO_SPACE
+ -11
+
+	)
+
+232 
+	#NS_TSIG_ERROR_FORMERR
+ -12
+
+	)
+
+237 
+	e__ns_ty³
+
+
+239 
+	mns_t_šv®id
+ = 0,
+
+241 
+	mns_t_a
+ = 1,
+
+242 
+	mns_t_ns
+ = 2,
+
+243 
+	mns_t_md
+ = 3,
+
+244 
+	mns_t_mf
+ = 4,
+
+245 
+	mns_t_úame
+ = 5,
+
+246 
+	mns_t_sß
+ = 6,
+
+247 
+	mns_t_mb
+ = 7,
+
+248 
+	mns_t_mg
+ = 8,
+
+249 
+	mns_t_mr
+ = 9,
+
+250 
+	mns_t_nuÎ
+ = 10,
+
+251 
+	mns_t_wks
+ = 11,
+
+252 
+	mns_t_±r
+ = 12,
+
+253 
+	mns_t_hšfo
+ = 13,
+
+254 
+	mns_t_mšfo
+ = 14,
+
+255 
+	mns_t_mx
+ = 15,
+
+256 
+	mns_t_txt
+ = 16,
+
+257 
+	mns_t_½
+ = 17,
+
+258 
+	mns_t_afsdb
+ = 18,
+
+259 
+	mns_t_x25
+ = 19,
+
+260 
+	mns_t_isdn
+ = 20,
+
+261 
+	mns_t_¹
+ = 21,
+
+262 
+	mns_t_n§p
+ = 22,
+
+263 
+	mns_t_n§p_±r
+ = 23,
+
+264 
+	mns_t_sig
+ = 24,
+
+265 
+	mns_t_key
+ = 25,
+
+266 
+	mns_t_px
+ = 26,
+
+267 
+	mns_t_gpos
+ = 27,
+
+268 
+	mns_t_¯¯
+ = 28,
+
+269 
+	mns_t_loc
+ = 29,
+
+270 
+	mns_t_nxt
+ = 30,
+
+271 
+	mns_t_eid
+ = 31,
+
+272 
+	mns_t_nimloc
+ = 32,
+
+273 
+	mns_t_¤v
+ = 33,
+
+274 
+	mns_t_©ma
+ = 34,
+
+275 
+	mns_t_Ç±r
+ = 35,
+
+276 
+	mns_t_kx
+ = 36,
+
+277 
+	mns_t_û¹
+ = 37,
+
+278 
+	mns_t_a6
+ = 38,
+
+279 
+	mns_t_dÇme
+ = 39,
+
+280 
+	mns_t_sšk
+ = 40,
+
+281 
+	mns_t_Ýt
+ = 41,
+
+282 
+	mns_t_­l
+ = 42,
+
+283 
+	mns_t_ds
+ = 43,
+
+284 
+	mns_t_sshå
+ = 44,
+
+285 
+	mns_t_�£ckey
+ = 45,
+
+286 
+	mns_t_¼sig
+ = 46,
+
+287 
+	mns_t_n£c
+ = 47,
+
+288 
+	mns_t_dnskey
+ = 48,
+
+289 
+	mns_t_dhcid
+ = 49,
+
+290 
+	mns_t_n£c3
+ = 50,
+
+291 
+	mns_t_n£c3·¿m
+ = 51,
+
+292 
+	mns_t_Ž§
+ = 52,
+
+293 
+	mns_t_smim—
+ = 53,
+
+294 
+	mns_t_h�
+ = 55,
+
+295 
+	mns_t_nšfo
+ = 56,
+
+296 
+	mns_t_rkey
+ = 57,
+
+297 
+	mns_t_�lšk
+ = 58,
+
+298 
+	mns_t_cds
+ = 59,
+
+299 
+	mns_t_cdnskey
+ = 60,
+
+300 
+	mns_t_Ý’pgpkey
+ = 61,
+
+301 
+	mns_t_csync
+ = 62,
+
+302 
+	mns_t_¥f
+ = 99,
+
+303 
+	mns_t_ušfo
+ = 100,
+
+304 
+	mns_t_uid
+ = 101,
+
+305 
+	mns_t_gid
+ = 102,
+
+306 
+	mns_t_un¥ec
+ = 103,
+
+307 
+	mns_t_nid
+ = 104,
+
+308 
+	mns_t_l32
+ = 105,
+
+309 
+	mns_t_l64
+ = 106,
+
+310 
+	mns_t_Í
+ = 107,
+
+311 
+	mns_t_eui48
+ = 108,
+
+312 
+	mns_t_eui64
+ = 109,
+
+313 
+	mns_t_tkey
+ = 249,
+
+314 
+	mns_t_tsig
+ = 250,
+
+315 
+	mns_t_ixä
+ = 251,
+
+316 
+	mns_t_axä
+ = 252,
+
+317 
+	mns_t_mažb
+ = 253,
+
+318 
+	mns_t_maža
+ = 254,
+
+319 
+	mns_t_ªy
+ = 255,
+
+320 
+	mns_t_uri
+ = 256,
+
+321 
+	mns_t_ÿa
+ = 257,
+
+322 
+	mns_t_avc
+ = 258,
+
+323 
+	mns_t_�
+ = 32768,
+
+324 
+	mns_t_dlv
+ = 32769,
+
+326 
+	mns_t_max
+ = 65536
+
+327 } 
+	tns_ty³
+;
+
+332 
+	e__ns_þass
+ {
+
+333 
+	mns_c_šv®id
+ = 0,
+
+334 
+	mns_c_š
+ = 1,
+
+335 
+	mns_c_2
+ = 2,
+
+336 
+	mns_c_chaos
+ = 3,
+
+337 
+	mns_c_hs
+ = 4,
+
+339 
+	mns_c_nÚe
+ = 254,
+
+340 
+	mns_c_ªy
+ = 255,
+
+341 
+	mns_c_max
+ = 65536
+
+342 } 
+	tns_þass
+;
+
+345 
+	e__ns_û¹_ty³s
+ {
+
+346 
+	mû¹_t_pkix
+ = 1,
+
+347 
+	mû¹_t_¥ki
+ = 2,
+
+348 
+	mû¹_t_pgp
+ = 3,
+
+349 
+	mû¹_t_u¾
+ = 253,
+
+350 
+	mû¹_t_oid
+ = 254
+
+351 } 
+	tns_û¹_ty³s
+;
+
+356 
+	#NS_OPT_DNSSEC_OK
+ 0x8000U
+
+	)
+
+357 
+	#NS_OPT_NSID
+ 3
+
+	)
+
+362 
+	#NS_GET16
+(
+s
+, 
+ý
+) do { \
+
+363 cÚ¡ *
+t_ý
+ = (cÚ¡ *)(
+ý
+); \
+
+364 (
+s
+èð((
+ušt16_t
+)
+t_ý
+[0] << 8) \
+
+365 | ((
+ušt16_t
+)
+t_ý
+[1]) \
+
+367 (
+ý
+è+ð
+NS_INT16SZ
+; \
+
+368 } 0)
+
+	)
+
+370 
+	#NS_GET32
+(
+l
+, 
+ý
+) do { \
+
+371 cÚ¡ *
+t_ý
+ = (cÚ¡ *)(
+ý
+); \
+
+372 (
+l
+èð((
+ušt32_t
+)
+t_ý
+[0] << 24) \
+
+373 | ((
+ušt32_t
+)
+t_ý
+[1] << 16) \
+
+374 | ((
+ušt32_t
+)
+t_ý
+[2] << 8) \
+
+375 | ((
+ušt32_t
+)
+t_ý
+[3]) \
+
+377 (
+ý
+è+ð
+NS_INT32SZ
+; \
+
+378 } 0)
+
+	)
+
+380 
+	#NS_PUT16
+(
+s
+, 
+ý
+) do { \
+
+381 
+ušt16_t
+ 
+t_s
+ = (ušt16_t)(
+s
+); \
+
+382 *
+t_ý
+ = (*)(
+ý
+); \
+
+383 *
+t_ý
+++ = 
+t_s
+ >> 8; \
+
+384 *
+t_ý
+ = 
+t_s
+; \
+
+385 (
+ý
+è+ð
+NS_INT16SZ
+; \
+
+386 } 0)
+
+	)
+
+388 
+	#NS_PUT32
+(
+l
+, 
+ý
+) do { \
+
+389 
+ušt32_t
+ 
+t_l
+ = (ušt32_t)(
+l
+); \
+
+390 *
+t_ý
+ = (*)(
+ý
+); \
+
+391 *
+t_ý
+++ = 
+t_l
+ >> 24; \
+
+392 *
+t_ý
+++ = 
+t_l
+ >> 16; \
+
+393 *
+t_ý
+++ = 
+t_l
+ >> 8; \
+
+394 *
+t_ý
+ = 
+t_l
+; \
+
+395 (
+ý
+è+ð
+NS_INT32SZ
+; \
+
+396 } 0)
+
+	)
+
+398 
+__BEGIN_DECLS
+
+
+399 
+	$ns_msg_g‘æag
+ (
+ns_msg
+, è
+__THROW
+;
+
+400 
+	$ns_g‘16
+ (cÚ¡ *è
+__THROW
+;
+
+401 
+	$ns_g‘32
+ (cÚ¡ *è
+__THROW
+;
+
+402 
+	$ns_put16
+ (, *è
+__THROW
+;
+
+403 
+	$ns_put32
+ (, *è
+__THROW
+;
+
+404 
+	$ns_š™·r£
+ (cÚ¡ *, , 
+ns_msg
+ *è
+__THROW
+;
+
+405 
+	$ns_sk�¼
+ (const *, const *,
+
+406 
+ns_£ù
+, è
+__THROW
+;
+
+407 
+	$ns_·r£¼
+ (
+ns_msg
+ *, 
+ns_£ù
+, , 
+ns_¼
+ *è
+__THROW
+;
+
+408 
+	$ns_¥ršŒr
+ (cÚ¡ 
+ns_msg
+ *, cÚ¡ 
+ns_¼
+ *,
+
+409 cÚ¡ *, cÚ¡ *, *, 
+size_t
+)
+
+410 
+__THROW
+ 
+__NAMESER_DEPRECATED
+;
+
+411 
+	$ns_¥ršŒrf
+ (cÚ¡ *, 
+size_t
+, const *,
+
+412 
+ns_þass
+, 
+ns_ty³
+, ,
+
+413 cÚ¡ *, 
+size_t
+, const *,
+
+414 cÚ¡ *, *, 
+size_t
+)
+
+415 
+__THROW
+ 
+__NAMESER_DEPRECATED
+;
+
+416 
+	$ns_fÜm©_‰l
+ (, *, 
+size_t
+)
+
+417 
+__THROW
+ 
+__NAMESER_DEPRECATED
+;
+
+418 
+	$ns_·r£_‰l
+ (const *, *)
+
+419 
+__THROW
+ 
+__NAMESER_DEPRECATED
+;
+
+420 
+ušt32_t
+ 
+	$ns_d©‘o£cs
+ (const *, *)
+
+421 
+__THROW
+ 
+__NAMESER_DEPRECATED
+;
+
+422 
+	$ns_Çme_ÁÞ
+ (cÚ¡ *, *, 
+size_t
+)
+
+423 
+__THROW
+;
+
+424 
+	$ns_Çme_ÁÝ
+ (cÚ¡ *, *, 
+size_t
+è
+__THROW
+;
+
+425 
+	$ns_Çme_±Ú
+ (cÚ¡ *, *, 
+size_t
+è
+__THROW
+;
+
+426 
+	$ns_Çme_uÅack
+ (const *, const *,
+
+427 cÚ¡ *, *, 
+size_t
+)
+
+428 
+__THROW
+;
+
+429 
+	$ns_Çme_·ck
+ (const *, *, ,
+
+431 
+__THROW
+;
+
+432 
+	$ns_Çme_uncom´ess
+ (const *,
+
+435 *, 
+size_t
+è
+__THROW
+;
+
+436 
+	$ns_Çme_com´ess
+ (cÚ¡ *, *, 
+size_t
+,
+
+438 cÚ¡ **è
+__THROW
+;
+
+439 
+	$ns_Çme_sk�
+ (const **, const *)
+
+440 
+__THROW
+;
+
+441 
+	$ns_Çme_rÞlback
+ (const *,
+
+443 cÚ¡ **è
+__THROW
+;
+
+445 
+	$ns_§medomaš
+ (cÚ¡ *, cÚ¡ *è
+__THROW
+
+
+446 
+__NAMESER_DEPRECATED
+;
+
+447 
+	$ns_subdomaš
+ (cÚ¡ *, cÚ¡ *è
+__THROW
+
+
+448 
+__NAMESER_DEPRECATED
+;
+
+449 
+	$ns_makeÿnÚ
+ (cÚ¡ *, *, 
+size_t
+è
+__THROW
+
+
+450 
+__NAMESER_DEPRECATED
+;
+
+451 
+	$ns_§m’ame
+ (cÚ¡ *, cÚ¡ *è
+__THROW
+
+
+452 
+__NAMESER_DEPRECATED
+;
+
+453 
+__END_DECLS
+
+
+455 
+	~<¬·/Çme£r_com·t.h
+>
+
+	@/usr/include/asm/bitsperlong.h
+
+2 #iâdeà
+__ASM_X86_BITSPERLONG_H
+
+
+3 
+	#__ASM_X86_BITSPERLONG_H
+
+
+	)
+
+5 #ià
+defšed
+(
+__x86_64__
+è&& !defšed(
+__ILP32__
+)
+
+6 
+	#__BITS_PER_LONG
+ 64
+
+	)
+
+8 
+	#__BITS_PER_LONG
+ 32
+
+	)
+
+11 
+	~<asm-g’”ic/b™¥”lÚg.h
+>
+
+	@/usr/include/asm/sockios.h
+
+1 
+	~<asm-g’”ic/sockios.h
+>
+
+	@/usr/include/asm/types.h
+
+1 
+	~<asm-g’”ic/ty³s.h
+>
+
+	@/usr/include/bits/byteswap.h
+
+19 #ià!
+defšed
+ 
+_BYTESWAP_H
+ && !defšed 
+_NETINET_IN_H
+ && !defšed 
+_ENDIAN_H
+
+
+23 #iâdeà
+_BITS_BYTESWAP_H
+
+
+24 
+	#_BITS_BYTESWAP_H
+ 1
+
+	)
+
+26 
+	~<ã©u»s.h
+>
+
+27 
+	~<b™s/ty³s.h
+>
+
+30 
+	#__bsw­_cÚ¡ªt_16
+(
+x
+) \
+
+31 ((
+__ušt16_t
+è((((
+x
+è>> 8è& 0xffè| (((xè& 0xffè<< 8)))
+
+	)
+
+33 
+__šlše
+ 
+__ušt16_t
+
+
+34 
+	$__bsw­_16
+ (
+__ušt16_t
+ 
+__bsx
+)
+
+36 #ià
+	`__GNUC_PREREQ
+ (4, 8)
+
+37  
+	`__bužtš_bsw­16
+ (
+__bsx
+);
+
+39  
+	`__bsw­_cÚ¡ªt_16
+ (
+__bsx
+);
+
+41 
+	}
+}
+
+44 
+	#__bsw­_cÚ¡ªt_32
+(
+x
+) \
+
+45 ((((
+x
+) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) \
+
+46 | (((
+x
+è& 0x0000ff00uè<< 8è| (((xè& 0x000000ffuè<< 24))
+
+	)
+
+48 
+__šlše
+ 
+__ušt32_t
+
+
+49 
+	$__bsw­_32
+ (
+__ušt32_t
+ 
+__bsx
+)
+
+51 #ià
+	`__GNUC_PREREQ
+ (4, 3)
+
+52  
+	`__bužtš_bsw­32
+ (
+__bsx
+);
+
+54  
+	`__bsw­_cÚ¡ªt_32
+ (
+__bsx
+);
+
+56 
+	}
+}
+
+59 
+	#__bsw­_cÚ¡ªt_64
+(
+x
+) \
+
+60 ((((
+x
+) & 0xff00000000000000ull) >> 56) \
+
+61 | (((
+x
+) & 0x00ff000000000000ull) >> 40) \
+
+62 | (((
+x
+) & 0x0000ff0000000000ull) >> 24) \
+
+63 | (((
+x
+) & 0x000000ff00000000ull) >> 8) \
+
+64 | (((
+x
+) & 0x00000000ff000000ull) << 8) \
+
+65 | (((
+x
+) & 0x0000000000ff0000ull) << 24) \
+
+66 | (((
+x
+) & 0x000000000000ff00ull) << 40) \
+
+67 | (((
+x
+è& 0x00000000000000ffuÎè<< 56))
+
+	)
+
+69 
+__ex‹nsiÚ__
+ 
+__šlše
+ 
+__ušt64_t
+
+
+70 
+	$__bsw­_64
+ (
+__ušt64_t
+ 
+__bsx
+)
+
+72 #ià
+	`__GNUC_PREREQ
+ (4, 3)
+
+73  
+	`__bužtš_bsw­64
+ (
+__bsx
+);
+
+75  
+	`__bsw­_cÚ¡ªt_64
+ (
+__bsx
+);
+
+77 
+	}
+}
+
+	@/usr/include/bits/confname.h
+
+19 #iâdeà
+_UNISTD_H
+
+
+26 
+	m_PC_LINK_MAX
+,
+
+27 
+	#_PC_LINK_MAX
+ 
+_PC_LINK_MAX
+
+
+	)
+
+28 
+	m_PC_MAX_CANON
+,
+
+29 
+	#_PC_MAX_CANON
+ 
+_PC_MAX_CANON
+
+
+	)
+
+30 
+	m_PC_MAX_INPUT
+,
+
+31 
+	#_PC_MAX_INPUT
+ 
+_PC_MAX_INPUT
+
+
+	)
+
+32 
+	m_PC_NAME_MAX
+,
+
+33 
+	#_PC_NAME_MAX
+ 
+_PC_NAME_MAX
+
+
+	)
+
+34 
+	m_PC_PATH_MAX
+,
+
+35 
+	#_PC_PATH_MAX
+ 
+_PC_PATH_MAX
+
+
+	)
+
+36 
+	m_PC_PIPE_BUF
+,
+
+37 
+	#_PC_PIPE_BUF
+ 
+_PC_PIPE_BUF
+
+
+	)
+
+38 
+	m_PC_CHOWN_RESTRICTED
+,
+
+39 
+	#_PC_CHOWN_RESTRICTED
+ 
+_PC_CHOWN_RESTRICTED
+
+
+	)
+
+40 
+	m_PC_NO_TRUNC
+,
+
+41 
+	#_PC_NO_TRUNC
+ 
+_PC_NO_TRUNC
+
+
+	)
+
+42 
+	m_PC_VDISABLE
+,
+
+43 
+	#_PC_VDISABLE
+ 
+_PC_VDISABLE
+
+
+	)
+
+44 
+	m_PC_SYNC_IO
+,
+
+45 
+	#_PC_SYNC_IO
+ 
+_PC_SYNC_IO
+
+
+	)
+
+46 
+	m_PC_ASYNC_IO
+,
+
+47 
+	#_PC_ASYNC_IO
+ 
+_PC_ASYNC_IO
+
+
+	)
+
+48 
+	m_PC_PRIO_IO
+,
+
+49 
+	#_PC_PRIO_IO
+ 
+_PC_PRIO_IO
+
+
+	)
+
+50 
+	m_PC_SOCK_MAXBUF
+,
+
+51 
+	#_PC_SOCK_MAXBUF
+ 
+_PC_SOCK_MAXBUF
+
+
+	)
+
+52 
+	m_PC_FILESIZEBITS
+,
+
+53 
+	#_PC_FILESIZEBITS
+ 
+_PC_FILESIZEBITS
+
+
+	)
+
+54 
+	m_PC_REC_INCR_XFER_SIZE
+,
+
+55 
+	#_PC_REC_INCR_XFER_SIZE
+ 
+_PC_REC_INCR_XFER_SIZE
+
+
+	)
+
+56 
+	m_PC_REC_MAX_XFER_SIZE
+,
+
+57 
+	#_PC_REC_MAX_XFER_SIZE
+ 
+_PC_REC_MAX_XFER_SIZE
+
+
+	)
+
+58 
+	m_PC_REC_MIN_XFER_SIZE
+,
+
+59 
+	#_PC_REC_MIN_XFER_SIZE
+ 
+_PC_REC_MIN_XFER_SIZE
+
+
+	)
+
+60 
+	m_PC_REC_XFER_ALIGN
+,
+
+61 
+	#_PC_REC_XFER_ALIGN
+ 
+_PC_REC_XFER_ALIGN
+
+
+	)
+
+62 
+	m_PC_ALLOC_SIZE_MIN
+,
+
+63 
+	#_PC_ALLOC_SIZE_MIN
+ 
+_PC_ALLOC_SIZE_MIN
+
+
+	)
+
+64 
+	m_PC_SYMLINK_MAX
+,
+
+65 
+	#_PC_SYMLINK_MAX
+ 
+_PC_SYMLINK_MAX
+
+
+	)
+
+66 
+	m_PC_2_SYMLINKS
+
+
+67 
+	#_PC_2_SYMLINKS
+ 
+_PC_2_SYMLINKS
+
+
+	)
+
+73 
+	m_SC_ARG_MAX
+,
+
+74 
+	#_SC_ARG_MAX
+ 
+_SC_ARG_MAX
+
+
+	)
+
+75 
+	m_SC_CHILD_MAX
+,
+
+76 
+	#_SC_CHILD_MAX
+ 
+_SC_CHILD_MAX
+
+
+	)
+
+77 
+	m_SC_CLK_TCK
+,
+
+78 
+	#_SC_CLK_TCK
+ 
+_SC_CLK_TCK
+
+
+	)
+
+79 
+	m_SC_NGROUPS_MAX
+,
+
+80 
+	#_SC_NGROUPS_MAX
+ 
+_SC_NGROUPS_MAX
+
+
+	)
+
+81 
+	m_SC_OPEN_MAX
+,
+
+82 
+	#_SC_OPEN_MAX
+ 
+_SC_OPEN_MAX
+
+
+	)
+
+83 
+	m_SC_STREAM_MAX
+,
+
+84 
+	#_SC_STREAM_MAX
+ 
+_SC_STREAM_MAX
+
+
+	)
+
+85 
+	m_SC_TZNAME_MAX
+,
+
+86 
+	#_SC_TZNAME_MAX
+ 
+_SC_TZNAME_MAX
+
+
+	)
+
+87 
+	m_SC_JOB_CONTROL
+,
+
+88 
+	#_SC_JOB_CONTROL
+ 
+_SC_JOB_CONTROL
+
+
+	)
+
+89 
+	m_SC_SAVED_IDS
+,
+
+90 
+	#_SC_SAVED_IDS
+ 
+_SC_SAVED_IDS
+
+
+	)
+
+91 
+	m_SC_REALTIME_SIGNALS
+,
+
+92 
+	#_SC_REALTIME_SIGNALS
+ 
+_SC_REALTIME_SIGNALS
+
+
+	)
+
+93 
+	m_SC_PRIORITY_SCHEDULING
+,
+
+94 
+	#_SC_PRIORITY_SCHEDULING
+ 
+_SC_PRIORITY_SCHEDULING
+
+
+	)
+
+95 
+	m_SC_TIMERS
+,
+
+96 
+	#_SC_TIMERS
+ 
+_SC_TIMERS
+
+
+	)
+
+97 
+	m_SC_ASYNCHRONOUS_IO
+,
+
+98 
+	#_SC_ASYNCHRONOUS_IO
+ 
+_SC_ASYNCHRONOUS_IO
+
+
+	)
+
+99 
+	m_SC_PRIORITIZED_IO
+,
+
+100 
+	#_SC_PRIORITIZED_IO
+ 
+_SC_PRIORITIZED_IO
+
+
+	)
+
+101 
+	m_SC_SYNCHRONIZED_IO
+,
+
+102 
+	#_SC_SYNCHRONIZED_IO
+ 
+_SC_SYNCHRONIZED_IO
+
+
+	)
+
+103 
+	m_SC_FSYNC
+,
+
+104 
+	#_SC_FSYNC
+ 
+_SC_FSYNC
+
+
+	)
+
+105 
+	m_SC_MAPPED_FILES
+,
+
+106 
+	#_SC_MAPPED_FILES
+ 
+_SC_MAPPED_FILES
+
+
+	)
+
+107 
+	m_SC_MEMLOCK
+,
+
+108 
+	#_SC_MEMLOCK
+ 
+_SC_MEMLOCK
+
+
+	)
+
+109 
+	m_SC_MEMLOCK_RANGE
+,
+
+110 
+	#_SC_MEMLOCK_RANGE
+ 
+_SC_MEMLOCK_RANGE
+
+
+	)
+
+111 
+	m_SC_MEMORY_PROTECTION
+,
+
+112 
+	#_SC_MEMORY_PROTECTION
+ 
+_SC_MEMORY_PROTECTION
+
+
+	)
+
+113 
+	m_SC_MESSAGE_PASSING
+,
+
+114 
+	#_SC_MESSAGE_PASSING
+ 
+_SC_MESSAGE_PASSING
+
+
+	)
+
+115 
+	m_SC_SEMAPHORES
+,
+
+116 
+	#_SC_SEMAPHORES
+ 
+_SC_SEMAPHORES
+
+
+	)
+
+117 
+	m_SC_SHARED_MEMORY_OBJECTS
+,
+
+118 
+	#_SC_SHARED_MEMORY_OBJECTS
+ 
+_SC_SHARED_MEMORY_OBJECTS
+
+
+	)
+
+119 
+	m_SC_AIO_LISTIO_MAX
+,
+
+120 
+	#_SC_AIO_LISTIO_MAX
+ 
+_SC_AIO_LISTIO_MAX
+
+
+	)
+
+121 
+	m_SC_AIO_MAX
+,
+
+122 
+	#_SC_AIO_MAX
+ 
+_SC_AIO_MAX
+
+
+	)
+
+123 
+	m_SC_AIO_PRIO_DELTA_MAX
+,
+
+124 
+	#_SC_AIO_PRIO_DELTA_MAX
+ 
+_SC_AIO_PRIO_DELTA_MAX
+
+
+	)
+
+125 
+	m_SC_DELAYTIMER_MAX
+,
+
+126 
+	#_SC_DELAYTIMER_MAX
+ 
+_SC_DELAYTIMER_MAX
+
+
+	)
+
+127 
+	m_SC_MQ_OPEN_MAX
+,
+
+128 
+	#_SC_MQ_OPEN_MAX
+ 
+_SC_MQ_OPEN_MAX
+
+
+	)
+
+129 
+	m_SC_MQ_PRIO_MAX
+,
+
+130 
+	#_SC_MQ_PRIO_MAX
+ 
+_SC_MQ_PRIO_MAX
+
+
+	)
+
+131 
+	m_SC_VERSION
+,
+
+132 
+	#_SC_VERSION
+ 
+_SC_VERSION
+
+
+	)
+
+133 
+	m_SC_PAGESIZE
+,
+
+134 
+	#_SC_PAGESIZE
+ 
+_SC_PAGESIZE
+
+
+	)
+
+135 
+	#_SC_PAGE_SIZE
+ 
+_SC_PAGESIZE
+
+
+	)
+
+136 
+	m_SC_RTSIG_MAX
+,
+
+137 
+	#_SC_RTSIG_MAX
+ 
+_SC_RTSIG_MAX
+
+
+	)
+
+138 
+	m_SC_SEM_NSEMS_MAX
+,
+
+139 
+	#_SC_SEM_NSEMS_MAX
+ 
+_SC_SEM_NSEMS_MAX
+
+
+	)
+
+140 
+	m_SC_SEM_VALUE_MAX
+,
+
+141 
+	#_SC_SEM_VALUE_MAX
+ 
+_SC_SEM_VALUE_MAX
+
+
+	)
+
+142 
+	m_SC_SIGQUEUE_MAX
+,
+
+143 
+	#_SC_SIGQUEUE_MAX
+ 
+_SC_SIGQUEUE_MAX
+
+
+	)
+
+144 
+	m_SC_TIMER_MAX
+,
+
+145 
+	#_SC_TIMER_MAX
+ 
+_SC_TIMER_MAX
+
+
+	)
+
+149 
+	m_SC_BC_BASE_MAX
+,
+
+150 
+	#_SC_BC_BASE_MAX
+ 
+_SC_BC_BASE_MAX
+
+
+	)
+
+151 
+	m_SC_BC_DIM_MAX
+,
+
+152 
+	#_SC_BC_DIM_MAX
+ 
+_SC_BC_DIM_MAX
+
+
+	)
+
+153 
+	m_SC_BC_SCALE_MAX
+,
+
+154 
+	#_SC_BC_SCALE_MAX
+ 
+_SC_BC_SCALE_MAX
+
+
+	)
+
+155 
+	m_SC_BC_STRING_MAX
+,
+
+156 
+	#_SC_BC_STRING_MAX
+ 
+_SC_BC_STRING_MAX
+
+
+	)
+
+157 
+	m_SC_COLL_WEIGHTS_MAX
+,
+
+158 
+	#_SC_COLL_WEIGHTS_MAX
+ 
+_SC_COLL_WEIGHTS_MAX
+
+
+	)
+
+159 
+	m_SC_EQUIV_CLASS_MAX
+,
+
+160 
+	#_SC_EQUIV_CLASS_MAX
+ 
+_SC_EQUIV_CLASS_MAX
+
+
+	)
+
+161 
+	m_SC_EXPR_NEST_MAX
+,
+
+162 
+	#_SC_EXPR_NEST_MAX
+ 
+_SC_EXPR_NEST_MAX
+
+
+	)
+
+163 
+	m_SC_LINE_MAX
+,
+
+164 
+	#_SC_LINE_MAX
+ 
+_SC_LINE_MAX
+
+
+	)
+
+165 
+	m_SC_RE_DUP_MAX
+,
+
+166 
+	#_SC_RE_DUP_MAX
+ 
+_SC_RE_DUP_MAX
+
+
+	)
+
+167 
+	m_SC_CHARCLASS_NAME_MAX
+,
+
+168 
+	#_SC_CHARCLASS_NAME_MAX
+ 
+_SC_CHARCLASS_NAME_MAX
+
+
+	)
+
+170 
+	m_SC_2_VERSION
+,
+
+171 
+	#_SC_2_VERSION
+ 
+_SC_2_VERSION
+
+
+	)
+
+172 
+	m_SC_2_C_BIND
+,
+
+173 
+	#_SC_2_C_BIND
+ 
+_SC_2_C_BIND
+
+
+	)
+
+174 
+	m_SC_2_C_DEV
+,
+
+175 
+	#_SC_2_C_DEV
+ 
+_SC_2_C_DEV
+
+
+	)
+
+176 
+	m_SC_2_FORT_DEV
+,
+
+177 
+	#_SC_2_FORT_DEV
+ 
+_SC_2_FORT_DEV
+
+
+	)
+
+178 
+	m_SC_2_FORT_RUN
+,
+
+179 
+	#_SC_2_FORT_RUN
+ 
+_SC_2_FORT_RUN
+
+
+	)
+
+180 
+	m_SC_2_SW_DEV
+,
+
+181 
+	#_SC_2_SW_DEV
+ 
+_SC_2_SW_DEV
+
+
+	)
+
+182 
+	m_SC_2_LOCALEDEF
+,
+
+183 
+	#_SC_2_LOCALEDEF
+ 
+_SC_2_LOCALEDEF
+
+
+	)
+
+185 
+	m_SC_PII
+,
+
+186 
+	#_SC_PII
+ 
+_SC_PII
+
+
+	)
+
+187 
+	m_SC_PII_XTI
+,
+
+188 
+	#_SC_PII_XTI
+ 
+_SC_PII_XTI
+
+
+	)
+
+189 
+	m_SC_PII_SOCKET
+,
+
+190 
+	#_SC_PII_SOCKET
+ 
+_SC_PII_SOCKET
+
+
+	)
+
+191 
+	m_SC_PII_INTERNET
+,
+
+192 
+	#_SC_PII_INTERNET
+ 
+_SC_PII_INTERNET
+
+
+	)
+
+193 
+	m_SC_PII_OSI
+,
+
+194 
+	#_SC_PII_OSI
+ 
+_SC_PII_OSI
+
+
+	)
+
+195 
+	m_SC_POLL
+,
+
+196 
+	#_SC_POLL
+ 
+_SC_POLL
+
+
+	)
+
+197 
+	m_SC_SELECT
+,
+
+198 
+	#_SC_SELECT
+ 
+_SC_SELECT
+
+
+	)
+
+199 
+	m_SC_UIO_MAXIOV
+,
+
+200 
+	#_SC_UIO_MAXIOV
+ 
+_SC_UIO_MAXIOV
+
+
+	)
+
+201 
+	m_SC_IOV_MAX
+ = 
+_SC_UIO_MAXIOV
+,
+
+202 
+	#_SC_IOV_MAX
+ 
+_SC_IOV_MAX
+
+
+	)
+
+203 
+	m_SC_PII_INTERNET_STREAM
+,
+
+204 
+	#_SC_PII_INTERNET_STREAM
+ 
+_SC_PII_INTERNET_STREAM
+
+
+	)
+
+205 
+	m_SC_PII_INTERNET_DGRAM
+,
+
+206 
+	#_SC_PII_INTERNET_DGRAM
+ 
+_SC_PII_INTERNET_DGRAM
+
+
+	)
+
+207 
+	m_SC_PII_OSI_COTS
+,
+
+208 
+	#_SC_PII_OSI_COTS
+ 
+_SC_PII_OSI_COTS
+
+
+	)
+
+209 
+	m_SC_PII_OSI_CLTS
+,
+
+210 
+	#_SC_PII_OSI_CLTS
+ 
+_SC_PII_OSI_CLTS
+
+
+	)
+
+211 
+	m_SC_PII_OSI_M
+,
+
+212 
+	#_SC_PII_OSI_M
+ 
+_SC_PII_OSI_M
+
+
+	)
+
+213 
+	m_SC_T_IOV_MAX
+,
+
+214 
+	#_SC_T_IOV_MAX
+ 
+_SC_T_IOV_MAX
+
+
+	)
+
+217 
+	m_SC_THREADS
+,
+
+218 
+	#_SC_THREADS
+ 
+_SC_THREADS
+
+
+	)
+
+219 
+	m_SC_THREAD_SAFE_FUNCTIONS
+,
+
+220 
+	#_SC_THREAD_SAFE_FUNCTIONS
+ 
+_SC_THREAD_SAFE_FUNCTIONS
+
+
+	)
+
+221 
+	m_SC_GETGR_R_SIZE_MAX
+,
+
+222 
+	#_SC_GETGR_R_SIZE_MAX
+ 
+_SC_GETGR_R_SIZE_MAX
+
+
+	)
+
+223 
+	m_SC_GETPW_R_SIZE_MAX
+,
+
+224 
+	#_SC_GETPW_R_SIZE_MAX
+ 
+_SC_GETPW_R_SIZE_MAX
+
+
+	)
+
+225 
+	m_SC_LOGIN_NAME_MAX
+,
+
+226 
+	#_SC_LOGIN_NAME_MAX
+ 
+_SC_LOGIN_NAME_MAX
+
+
+	)
+
+227 
+	m_SC_TTY_NAME_MAX
+,
+
+228 
+	#_SC_TTY_NAME_MAX
+ 
+_SC_TTY_NAME_MAX
+
+
+	)
+
+229 
+	m_SC_THREAD_DESTRUCTOR_ITERATIONS
+,
+
+230 
+	#_SC_THREAD_DESTRUCTOR_ITERATIONS
+ 
+_SC_THREAD_DESTRUCTOR_ITERATIONS
+
+
+	)
+
+231 
+	m_SC_THREAD_KEYS_MAX
+,
+
+232 
+	#_SC_THREAD_KEYS_MAX
+ 
+_SC_THREAD_KEYS_MAX
+
+
+	)
+
+233 
+	m_SC_THREAD_STACK_MIN
+,
+
+234 
+	#_SC_THREAD_STACK_MIN
+ 
+_SC_THREAD_STACK_MIN
+
+
+	)
+
+235 
+	m_SC_THREAD_THREADS_MAX
+,
+
+236 
+	#_SC_THREAD_THREADS_MAX
+ 
+_SC_THREAD_THREADS_MAX
+
+
+	)
+
+237 
+	m_SC_THREAD_ATTR_STACKADDR
+,
+
+238 
+	#_SC_THREAD_ATTR_STACKADDR
+ 
+_SC_THREAD_ATTR_STACKADDR
+
+
+	)
+
+239 
+	m_SC_THREAD_ATTR_STACKSIZE
+,
+
+240 
+	#_SC_THREAD_ATTR_STACKSIZE
+ 
+_SC_THREAD_ATTR_STACKSIZE
+
+
+	)
+
+241 
+	m_SC_THREAD_PRIORITY_SCHEDULING
+,
+
+242 
+	#_SC_THREAD_PRIORITY_SCHEDULING
+ 
+_SC_THREAD_PRIORITY_SCHEDULING
+
+
+	)
+
+243 
+	m_SC_THREAD_PRIO_INHERIT
+,
+
+244 
+	#_SC_THREAD_PRIO_INHERIT
+ 
+_SC_THREAD_PRIO_INHERIT
+
+
+	)
+
+245 
+	m_SC_THREAD_PRIO_PROTECT
+,
+
+246 
+	#_SC_THREAD_PRIO_PROTECT
+ 
+_SC_THREAD_PRIO_PROTECT
+
+
+	)
+
+247 
+	m_SC_THREAD_PROCESS_SHARED
+,
+
+248 
+	#_SC_THREAD_PROCESS_SHARED
+ 
+_SC_THREAD_PROCESS_SHARED
+
+
+	)
+
+250 
+	m_SC_NPROCESSORS_CONF
+,
+
+251 
+	#_SC_NPROCESSORS_CONF
+ 
+_SC_NPROCESSORS_CONF
+
+
+	)
+
+252 
+	m_SC_NPROCESSORS_ONLN
+,
+
+253 
+	#_SC_NPROCESSORS_ONLN
+ 
+_SC_NPROCESSORS_ONLN
+
+
+	)
+
+254 
+	m_SC_PHYS_PAGES
+,
+
+255 
+	#_SC_PHYS_PAGES
+ 
+_SC_PHYS_PAGES
+
+
+	)
+
+256 
+	m_SC_AVPHYS_PAGES
+,
+
+257 
+	#_SC_AVPHYS_PAGES
+ 
+_SC_AVPHYS_PAGES
+
+
+	)
+
+258 
+	m_SC_ATEXIT_MAX
+,
+
+259 
+	#_SC_ATEXIT_MAX
+ 
+_SC_ATEXIT_MAX
+
+
+	)
+
+260 
+	m_SC_PASS_MAX
+,
+
+261 
+	#_SC_PASS_MAX
+ 
+_SC_PASS_MAX
+
+
+	)
+
+263 
+	m_SC_XOPEN_VERSION
+,
+
+264 
+	#_SC_XOPEN_VERSION
+ 
+_SC_XOPEN_VERSION
+
+
+	)
+
+265 
+	m_SC_XOPEN_XCU_VERSION
+,
+
+266 
+	#_SC_XOPEN_XCU_VERSION
+ 
+_SC_XOPEN_XCU_VERSION
+
+
+	)
+
+267 
+	m_SC_XOPEN_UNIX
+,
+
+268 
+	#_SC_XOPEN_UNIX
+ 
+_SC_XOPEN_UNIX
+
+
+	)
+
+269 
+	m_SC_XOPEN_CRYPT
+,
+
+270 
+	#_SC_XOPEN_CRYPT
+ 
+_SC_XOPEN_CRYPT
+
+
+	)
+
+271 
+	m_SC_XOPEN_ENH_I18N
+,
+
+272 
+	#_SC_XOPEN_ENH_I18N
+ 
+_SC_XOPEN_ENH_I18N
+
+
+	)
+
+273 
+	m_SC_XOPEN_SHM
+,
+
+274 
+	#_SC_XOPEN_SHM
+ 
+_SC_XOPEN_SHM
+
+
+	)
+
+276 
+	m_SC_2_CHAR_TERM
+,
+
+277 
+	#_SC_2_CHAR_TERM
+ 
+_SC_2_CHAR_TERM
+
+
+	)
+
+278 
+	m_SC_2_C_VERSION
+,
+
+279 
+	#_SC_2_C_VERSION
+ 
+_SC_2_C_VERSION
+
+
+	)
+
+280 
+	m_SC_2_UPE
+,
+
+281 
+	#_SC_2_UPE
+ 
+_SC_2_UPE
+
+
+	)
+
+283 
+	m_SC_XOPEN_XPG2
+,
+
+284 
+	#_SC_XOPEN_XPG2
+ 
+_SC_XOPEN_XPG2
+
+
+	)
+
+285 
+	m_SC_XOPEN_XPG3
+,
+
+286 
+	#_SC_XOPEN_XPG3
+ 
+_SC_XOPEN_XPG3
+
+
+	)
+
+287 
+	m_SC_XOPEN_XPG4
+,
+
+288 
+	#_SC_XOPEN_XPG4
+ 
+_SC_XOPEN_XPG4
+
+
+	)
+
+290 
+	m_SC_CHAR_BIT
+,
+
+291 
+	#_SC_CHAR_BIT
+ 
+_SC_CHAR_BIT
+
+
+	)
+
+292 
+	m_SC_CHAR_MAX
+,
+
+293 
+	#_SC_CHAR_MAX
+ 
+_SC_CHAR_MAX
+
+
+	)
+
+294 
+	m_SC_CHAR_MIN
+,
+
+295 
+	#_SC_CHAR_MIN
+ 
+_SC_CHAR_MIN
+
+
+	)
+
+296 
+	m_SC_INT_MAX
+,
+
+297 
+	#_SC_INT_MAX
+ 
+_SC_INT_MAX
+
+
+	)
+
+298 
+	m_SC_INT_MIN
+,
+
+299 
+	#_SC_INT_MIN
+ 
+_SC_INT_MIN
+
+
+	)
+
+300 
+	m_SC_LONG_BIT
+,
+
+301 
+	#_SC_LONG_BIT
+ 
+_SC_LONG_BIT
+
+
+	)
+
+302 
+	m_SC_WORD_BIT
+,
+
+303 
+	#_SC_WORD_BIT
+ 
+_SC_WORD_BIT
+
+
+	)
+
+304 
+	m_SC_MB_LEN_MAX
+,
+
+305 
+	#_SC_MB_LEN_MAX
+ 
+_SC_MB_LEN_MAX
+
+
+	)
+
+306 
+	m_SC_NZERO
+,
+
+307 
+	#_SC_NZERO
+ 
+_SC_NZERO
+
+
+	)
+
+308 
+	m_SC_SSIZE_MAX
+,
+
+309 
+	#_SC_SSIZE_MAX
+ 
+_SC_SSIZE_MAX
+
+
+	)
+
+310 
+	m_SC_SCHAR_MAX
+,
+
+311 
+	#_SC_SCHAR_MAX
+ 
+_SC_SCHAR_MAX
+
+
+	)
+
+312 
+	m_SC_SCHAR_MIN
+,
+
+313 
+	#_SC_SCHAR_MIN
+ 
+_SC_SCHAR_MIN
+
+
+	)
+
+314 
+	m_SC_SHRT_MAX
+,
+
+315 
+	#_SC_SHRT_MAX
+ 
+_SC_SHRT_MAX
+
+
+	)
+
+316 
+	m_SC_SHRT_MIN
+,
+
+317 
+	#_SC_SHRT_MIN
+ 
+_SC_SHRT_MIN
+
+
+	)
+
+318 
+	m_SC_UCHAR_MAX
+,
+
+319 
+	#_SC_UCHAR_MAX
+ 
+_SC_UCHAR_MAX
+
+
+	)
+
+320 
+	m_SC_UINT_MAX
+,
+
+321 
+	#_SC_UINT_MAX
+ 
+_SC_UINT_MAX
+
+
+	)
+
+322 
+	m_SC_ULONG_MAX
+,
+
+323 
+	#_SC_ULONG_MAX
+ 
+_SC_ULONG_MAX
+
+
+	)
+
+324 
+	m_SC_USHRT_MAX
+,
+
+325 
+	#_SC_USHRT_MAX
+ 
+_SC_USHRT_MAX
+
+
+	)
+
+327 
+	m_SC_NL_ARGMAX
+,
+
+328 
+	#_SC_NL_ARGMAX
+ 
+_SC_NL_ARGMAX
+
+
+	)
+
+329 
+	m_SC_NL_LANGMAX
+,
+
+330 
+	#_SC_NL_LANGMAX
+ 
+_SC_NL_LANGMAX
+
+
+	)
+
+331 
+	m_SC_NL_MSGMAX
+,
+
+332 
+	#_SC_NL_MSGMAX
+ 
+_SC_NL_MSGMAX
+
+
+	)
+
+333 
+	m_SC_NL_NMAX
+,
+
+334 
+	#_SC_NL_NMAX
+ 
+_SC_NL_NMAX
+
+
+	)
+
+335 
+	m_SC_NL_SETMAX
+,
+
+336 
+	#_SC_NL_SETMAX
+ 
+_SC_NL_SETMAX
+
+
+	)
+
+337 
+	m_SC_NL_TEXTMAX
+,
+
+338 
+	#_SC_NL_TEXTMAX
+ 
+_SC_NL_TEXTMAX
+
+
+	)
+
+340 
+	m_SC_XBS5_ILP32_OFF32
+,
+
+341 
+	#_SC_XBS5_ILP32_OFF32
+ 
+_SC_XBS5_ILP32_OFF32
+
+
+	)
+
+342 
+	m_SC_XBS5_ILP32_OFFBIG
+,
+
+343 
+	#_SC_XBS5_ILP32_OFFBIG
+ 
+_SC_XBS5_ILP32_OFFBIG
+
+
+	)
+
+344 
+	m_SC_XBS5_LP64_OFF64
+,
+
+345 
+	#_SC_XBS5_LP64_OFF64
+ 
+_SC_XBS5_LP64_OFF64
+
+
+	)
+
+346 
+	m_SC_XBS5_LPBIG_OFFBIG
+,
+
+347 
+	#_SC_XBS5_LPBIG_OFFBIG
+ 
+_SC_XBS5_LPBIG_OFFBIG
+
+
+	)
+
+349 
+	m_SC_XOPEN_LEGACY
+,
+
+350 
+	#_SC_XOPEN_LEGACY
+ 
+_SC_XOPEN_LEGACY
+
+
+	)
+
+351 
+	m_SC_XOPEN_REALTIME
+,
+
+352 
+	#_SC_XOPEN_REALTIME
+ 
+_SC_XOPEN_REALTIME
+
+
+	)
+
+353 
+	m_SC_XOPEN_REALTIME_THREADS
+,
+
+354 
+	#_SC_XOPEN_REALTIME_THREADS
+ 
+_SC_XOPEN_REALTIME_THREADS
+
+
+	)
+
+356 
+	m_SC_ADVISORY_INFO
+,
+
+357 
+	#_SC_ADVISORY_INFO
+ 
+_SC_ADVISORY_INFO
+
+
+	)
+
+358 
+	m_SC_BARRIERS
+,
+
+359 
+	#_SC_BARRIERS
+ 
+_SC_BARRIERS
+
+
+	)
+
+360 
+	m_SC_BASE
+,
+
+361 
+	#_SC_BASE
+ 
+_SC_BASE
+
+
+	)
+
+362 
+	m_SC_C_LANG_SUPPORT
+,
+
+363 
+	#_SC_C_LANG_SUPPORT
+ 
+_SC_C_LANG_SUPPORT
+
+
+	)
+
+364 
+	m_SC_C_LANG_SUPPORT_R
+,
+
+365 
+	#_SC_C_LANG_SUPPORT_R
+ 
+_SC_C_LANG_SUPPORT_R
+
+
+	)
+
+366 
+	m_SC_CLOCK_SELECTION
+,
+
+367 
+	#_SC_CLOCK_SELECTION
+ 
+_SC_CLOCK_SELECTION
+
+
+	)
+
+368 
+	m_SC_CPUTIME
+,
+
+369 
+	#_SC_CPUTIME
+ 
+_SC_CPUTIME
+
+
+	)
+
+370 
+	m_SC_THREAD_CPUTIME
+,
+
+371 
+	#_SC_THREAD_CPUTIME
+ 
+_SC_THREAD_CPUTIME
+
+
+	)
+
+372 
+	m_SC_DEVICE_IO
+,
+
+373 
+	#_SC_DEVICE_IO
+ 
+_SC_DEVICE_IO
+
+
+	)
+
+374 
+	m_SC_DEVICE_SPECIFIC
+,
+
+375 
+	#_SC_DEVICE_SPECIFIC
+ 
+_SC_DEVICE_SPECIFIC
+
+
+	)
+
+376 
+	m_SC_DEVICE_SPECIFIC_R
+,
+
+377 
+	#_SC_DEVICE_SPECIFIC_R
+ 
+_SC_DEVICE_SPECIFIC_R
+
+
+	)
+
+378 
+	m_SC_FD_MGMT
+,
+
+379 
+	#_SC_FD_MGMT
+ 
+_SC_FD_MGMT
+
+
+	)
+
+380 
+	m_SC_FIFO
+,
+
+381 
+	#_SC_FIFO
+ 
+_SC_FIFO
+
+
+	)
+
+382 
+	m_SC_PIPE
+,
+
+383 
+	#_SC_PIPE
+ 
+_SC_PIPE
+
+
+	)
+
+384 
+	m_SC_FILE_ATTRIBUTES
+,
+
+385 
+	#_SC_FILE_ATTRIBUTES
+ 
+_SC_FILE_ATTRIBUTES
+
+
+	)
+
+386 
+	m_SC_FILE_LOCKING
+,
+
+387 
+	#_SC_FILE_LOCKING
+ 
+_SC_FILE_LOCKING
+
+
+	)
+
+388 
+	m_SC_FILE_SYSTEM
+,
+
+389 
+	#_SC_FILE_SYSTEM
+ 
+_SC_FILE_SYSTEM
+
+
+	)
+
+390 
+	m_SC_MONOTONIC_CLOCK
+,
+
+391 
+	#_SC_MONOTONIC_CLOCK
+ 
+_SC_MONOTONIC_CLOCK
+
+
+	)
+
+392 
+	m_SC_MULTI_PROCESS
+,
+
+393 
+	#_SC_MULTI_PROCESS
+ 
+_SC_MULTI_PROCESS
+
+
+	)
+
+394 
+	m_SC_SINGLE_PROCESS
+,
+
+395 
+	#_SC_SINGLE_PROCESS
+ 
+_SC_SINGLE_PROCESS
+
+
+	)
+
+396 
+	m_SC_NETWORKING
+,
+
+397 
+	#_SC_NETWORKING
+ 
+_SC_NETWORKING
+
+
+	)
+
+398 
+	m_SC_READER_WRITER_LOCKS
+,
+
+399 
+	#_SC_READER_WRITER_LOCKS
+ 
+_SC_READER_WRITER_LOCKS
+
+
+	)
+
+400 
+	m_SC_SPIN_LOCKS
+,
+
+401 
+	#_SC_SPIN_LOCKS
+ 
+_SC_SPIN_LOCKS
+
+
+	)
+
+402 
+	m_SC_REGEXP
+,
+
+403 
+	#_SC_REGEXP
+ 
+_SC_REGEXP
+
+
+	)
+
+404 
+	m_SC_REGEX_VERSION
+,
+
+405 
+	#_SC_REGEX_VERSION
+ 
+_SC_REGEX_VERSION
+
+
+	)
+
+406 
+	m_SC_SHELL
+,
+
+407 
+	#_SC_SHELL
+ 
+_SC_SHELL
+
+
+	)
+
+408 
+	m_SC_SIGNALS
+,
+
+409 
+	#_SC_SIGNALS
+ 
+_SC_SIGNALS
+
+
+	)
+
+410 
+	m_SC_SPAWN
+,
+
+411 
+	#_SC_SPAWN
+ 
+_SC_SPAWN
+
+
+	)
+
+412 
+	m_SC_SPORADIC_SERVER
+,
+
+413 
+	#_SC_SPORADIC_SERVER
+ 
+_SC_SPORADIC_SERVER
+
+
+	)
+
+414 
+	m_SC_THREAD_SPORADIC_SERVER
+,
+
+415 
+	#_SC_THREAD_SPORADIC_SERVER
+ 
+_SC_THREAD_SPORADIC_SERVER
+
+
+	)
+
+416 
+	m_SC_SYSTEM_DATABASE
+,
+
+417 
+	#_SC_SYSTEM_DATABASE
+ 
+_SC_SYSTEM_DATABASE
+
+
+	)
+
+418 
+	m_SC_SYSTEM_DATABASE_R
+,
+
+419 
+	#_SC_SYSTEM_DATABASE_R
+ 
+_SC_SYSTEM_DATABASE_R
+
+
+	)
+
+420 
+	m_SC_TIMEOUTS
+,
+
+421 
+	#_SC_TIMEOUTS
+ 
+_SC_TIMEOUTS
+
+
+	)
+
+422 
+	m_SC_TYPED_MEMORY_OBJECTS
+,
+
+423 
+	#_SC_TYPED_MEMORY_OBJECTS
+ 
+_SC_TYPED_MEMORY_OBJECTS
+
+
+	)
+
+424 
+	m_SC_USER_GROUPS
+,
+
+425 
+	#_SC_USER_GROUPS
+ 
+_SC_USER_GROUPS
+
+
+	)
+
+426 
+	m_SC_USER_GROUPS_R
+,
+
+427 
+	#_SC_USER_GROUPS_R
+ 
+_SC_USER_GROUPS_R
+
+
+	)
+
+428 
+	m_SC_2_PBS
+,
+
+429 
+	#_SC_2_PBS
+ 
+_SC_2_PBS
+
+
+	)
+
+430 
+	m_SC_2_PBS_ACCOUNTING
+,
+
+431 
+	#_SC_2_PBS_ACCOUNTING
+ 
+_SC_2_PBS_ACCOUNTING
+
+
+	)
+
+432 
+	m_SC_2_PBS_LOCATE
+,
+
+433 
+	#_SC_2_PBS_LOCATE
+ 
+_SC_2_PBS_LOCATE
+
+
+	)
+
+434 
+	m_SC_2_PBS_MESSAGE
+,
+
+435 
+	#_SC_2_PBS_MESSAGE
+ 
+_SC_2_PBS_MESSAGE
+
+
+	)
+
+436 
+	m_SC_2_PBS_TRACK
+,
+
+437 
+	#_SC_2_PBS_TRACK
+ 
+_SC_2_PBS_TRACK
+
+
+	)
+
+438 
+	m_SC_SYMLOOP_MAX
+,
+
+439 
+	#_SC_SYMLOOP_MAX
+ 
+_SC_SYMLOOP_MAX
+
+
+	)
+
+440 
+	m_SC_STREAMS
+,
+
+441 
+	#_SC_STREAMS
+ 
+_SC_STREAMS
+
+
+	)
+
+442 
+	m_SC_2_PBS_CHECKPOINT
+,
+
+443 
+	#_SC_2_PBS_CHECKPOINT
+ 
+_SC_2_PBS_CHECKPOINT
+
+
+	)
+
+445 
+	m_SC_V6_ILP32_OFF32
+,
+
+446 
+	#_SC_V6_ILP32_OFF32
+ 
+_SC_V6_ILP32_OFF32
+
+
+	)
+
+447 
+	m_SC_V6_ILP32_OFFBIG
+,
+
+448 
+	#_SC_V6_ILP32_OFFBIG
+ 
+_SC_V6_ILP32_OFFBIG
+
+
+	)
+
+449 
+	m_SC_V6_LP64_OFF64
+,
+
+450 
+	#_SC_V6_LP64_OFF64
+ 
+_SC_V6_LP64_OFF64
+
+
+	)
+
+451 
+	m_SC_V6_LPBIG_OFFBIG
+,
+
+452 
+	#_SC_V6_LPBIG_OFFBIG
+ 
+_SC_V6_LPBIG_OFFBIG
+
+
+	)
+
+454 
+	m_SC_HOST_NAME_MAX
+,
+
+455 
+	#_SC_HOST_NAME_MAX
+ 
+_SC_HOST_NAME_MAX
+
+
+	)
+
+456 
+	m_SC_TRACE
+,
+
+457 
+	#_SC_TRACE
+ 
+_SC_TRACE
+
+
+	)
+
+458 
+	m_SC_TRACE_EVENT_FILTER
+,
+
+459 
+	#_SC_TRACE_EVENT_FILTER
+ 
+_SC_TRACE_EVENT_FILTER
+
+
+	)
+
+460 
+	m_SC_TRACE_INHERIT
+,
+
+461 
+	#_SC_TRACE_INHERIT
+ 
+_SC_TRACE_INHERIT
+
+
+	)
+
+462 
+	m_SC_TRACE_LOG
+,
+
+463 
+	#_SC_TRACE_LOG
+ 
+_SC_TRACE_LOG
+
+
+	)
+
+465 
+	m_SC_LEVEL1_ICACHE_SIZE
+,
+
+466 
+	#_SC_LEVEL1_ICACHE_SIZE
+ 
+_SC_LEVEL1_ICACHE_SIZE
+
+
+	)
+
+467 
+	m_SC_LEVEL1_ICACHE_ASSOC
+,
+
+468 
+	#_SC_LEVEL1_ICACHE_ASSOC
+ 
+_SC_LEVEL1_ICACHE_ASSOC
+
+
+	)
+
+469 
+	m_SC_LEVEL1_ICACHE_LINESIZE
+,
+
+470 
+	#_SC_LEVEL1_ICACHE_LINESIZE
+ 
+_SC_LEVEL1_ICACHE_LINESIZE
+
+
+	)
+
+471 
+	m_SC_LEVEL1_DCACHE_SIZE
+,
+
+472 
+	#_SC_LEVEL1_DCACHE_SIZE
+ 
+_SC_LEVEL1_DCACHE_SIZE
+
+
+	)
+
+473 
+	m_SC_LEVEL1_DCACHE_ASSOC
+,
+
+474 
+	#_SC_LEVEL1_DCACHE_ASSOC
+ 
+_SC_LEVEL1_DCACHE_ASSOC
+
+
+	)
+
+475 
+	m_SC_LEVEL1_DCACHE_LINESIZE
+,
+
+476 
+	#_SC_LEVEL1_DCACHE_LINESIZE
+ 
+_SC_LEVEL1_DCACHE_LINESIZE
+
+
+	)
+
+477 
+	m_SC_LEVEL2_CACHE_SIZE
+,
+
+478 
+	#_SC_LEVEL2_CACHE_SIZE
+ 
+_SC_LEVEL2_CACHE_SIZE
+
+
+	)
+
+479 
+	m_SC_LEVEL2_CACHE_ASSOC
+,
+
+480 
+	#_SC_LEVEL2_CACHE_ASSOC
+ 
+_SC_LEVEL2_CACHE_ASSOC
+
+
+	)
+
+481 
+	m_SC_LEVEL2_CACHE_LINESIZE
+,
+
+482 
+	#_SC_LEVEL2_CACHE_LINESIZE
+ 
+_SC_LEVEL2_CACHE_LINESIZE
+
+
+	)
+
+483 
+	m_SC_LEVEL3_CACHE_SIZE
+,
+
+484 
+	#_SC_LEVEL3_CACHE_SIZE
+ 
+_SC_LEVEL3_CACHE_SIZE
+
+
+	)
+
+485 
+	m_SC_LEVEL3_CACHE_ASSOC
+,
+
+486 
+	#_SC_LEVEL3_CACHE_ASSOC
+ 
+_SC_LEVEL3_CACHE_ASSOC
+
+
+	)
+
+487 
+	m_SC_LEVEL3_CACHE_LINESIZE
+,
+
+488 
+	#_SC_LEVEL3_CACHE_LINESIZE
+ 
+_SC_LEVEL3_CACHE_LINESIZE
+
+
+	)
+
+489 
+	m_SC_LEVEL4_CACHE_SIZE
+,
+
+490 
+	#_SC_LEVEL4_CACHE_SIZE
+ 
+_SC_LEVEL4_CACHE_SIZE
+
+
+	)
+
+491 
+	m_SC_LEVEL4_CACHE_ASSOC
+,
+
+492 
+	#_SC_LEVEL4_CACHE_ASSOC
+ 
+_SC_LEVEL4_CACHE_ASSOC
+
+
+	)
+
+493 
+	m_SC_LEVEL4_CACHE_LINESIZE
+,
+
+494 
+	#_SC_LEVEL4_CACHE_LINESIZE
+ 
+_SC_LEVEL4_CACHE_LINESIZE
+
+
+	)
+
+497 
+	m_SC_IPV6
+ = 
+_SC_LEVEL1_ICACHE_SIZE
+ + 50,
+
+498 
+	#_SC_IPV6
+ 
+_SC_IPV6
+
+
+	)
+
+499 
+	m_SC_RAW_SOCKETS
+,
+
+500 
+	#_SC_RAW_SOCKETS
+ 
+_SC_RAW_SOCKETS
+
+
+	)
+
+502 
+	m_SC_V7_ILP32_OFF32
+,
+
+503 
+	#_SC_V7_ILP32_OFF32
+ 
+_SC_V7_ILP32_OFF32
+
+
+	)
+
+504 
+	m_SC_V7_ILP32_OFFBIG
+,
+
+505 
+	#_SC_V7_ILP32_OFFBIG
+ 
+_SC_V7_ILP32_OFFBIG
+
+
+	)
+
+506 
+	m_SC_V7_LP64_OFF64
+,
+
+507 
+	#_SC_V7_LP64_OFF64
+ 
+_SC_V7_LP64_OFF64
+
+
+	)
+
+508 
+	m_SC_V7_LPBIG_OFFBIG
+,
+
+509 
+	#_SC_V7_LPBIG_OFFBIG
+ 
+_SC_V7_LPBIG_OFFBIG
+
+
+	)
+
+511 
+	m_SC_SS_REPL_MAX
+,
+
+512 
+	#_SC_SS_REPL_MAX
+ 
+_SC_SS_REPL_MAX
+
+
+	)
+
+514 
+	m_SC_TRACE_EVENT_NAME_MAX
+,
+
+515 
+	#_SC_TRACE_EVENT_NAME_MAX
+ 
+_SC_TRACE_EVENT_NAME_MAX
+
+
+	)
+
+516 
+	m_SC_TRACE_NAME_MAX
+,
+
+517 
+	#_SC_TRACE_NAME_MAX
+ 
+_SC_TRACE_NAME_MAX
+
+
+	)
+
+518 
+	m_SC_TRACE_SYS_MAX
+,
+
+519 
+	#_SC_TRACE_SYS_MAX
+ 
+_SC_TRACE_SYS_MAX
+
+
+	)
+
+520 
+	m_SC_TRACE_USER_EVENT_MAX
+,
+
+521 
+	#_SC_TRACE_USER_EVENT_MAX
+ 
+_SC_TRACE_USER_EVENT_MAX
+
+
+	)
+
+523 
+	m_SC_XOPEN_STREAMS
+,
+
+524 
+	#_SC_XOPEN_STREAMS
+ 
+_SC_XOPEN_STREAMS
+
+
+	)
+
+526 
+	m_SC_THREAD_ROBUST_PRIO_INHERIT
+,
+
+527 
+	#_SC_THREAD_ROBUST_PRIO_INHERIT
+ 
+_SC_THREAD_ROBUST_PRIO_INHERIT
+
+
+	)
+
+528 
+	m_SC_THREAD_ROBUST_PRIO_PROTECT
+,
+
+529 
+	#_SC_THREAD_ROBUST_PRIO_PROTECT
+ 
+_SC_THREAD_ROBUST_PRIO_PROTECT
+
+
+	)
+
+531 
+	m_SC_MINSIGSTKSZ
+,
+
+532 
+	#_SC_MINSIGSTKSZ
+ 
+_SC_MINSIGSTKSZ
+
+
+	)
+
+534 
+	m_SC_SIGSTKSZ
+
+
+535 
+	#_SC_SIGSTKSZ
+ 
+_SC_SIGSTKSZ
+
+
+	)
+
+541 
+	m_CS_PATH
+,
+
+542 
+	#_CS_PATH
+ 
+_CS_PATH
+
+
+	)
+
+544 
+	m_CS_V6_WIDTH_RESTRICTED_ENVS
+,
+
+545 
+	#_CS_V6_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V6_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+546 
+	#_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V6_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+548 
+	m_CS_GNU_LIBC_VERSION
+,
+
+549 
+	#_CS_GNU_LIBC_VERSION
+ 
+_CS_GNU_LIBC_VERSION
+
+
+	)
+
+550 
+	m_CS_GNU_LIBPTHREAD_VERSION
+,
+
+551 
+	#_CS_GNU_LIBPTHREAD_VERSION
+ 
+_CS_GNU_LIBPTHREAD_VERSION
+
+
+	)
+
+553 
+	m_CS_V5_WIDTH_RESTRICTED_ENVS
+,
+
+554 
+	#_CS_V5_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V5_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+555 
+	#_CS_POSIX_V5_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V5_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+557 
+	m_CS_V7_WIDTH_RESTRICTED_ENVS
+,
+
+558 
+	#_CS_V7_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V7_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+559 
+	#_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
+ 
+_CS_V7_WIDTH_RESTRICTED_ENVS
+
+
+	)
+
+561 
+	m_CS_LFS_CFLAGS
+ = 1000,
+
+562 
+	#_CS_LFS_CFLAGS
+ 
+_CS_LFS_CFLAGS
+
+
+	)
+
+563 
+	m_CS_LFS_LDFLAGS
+,
+
+564 
+	#_CS_LFS_LDFLAGS
+ 
+_CS_LFS_LDFLAGS
+
+
+	)
+
+565 
+	m_CS_LFS_LIBS
+,
+
+566 
+	#_CS_LFS_LIBS
+ 
+_CS_LFS_LIBS
+
+
+	)
+
+567 
+	m_CS_LFS_LINTFLAGS
+,
+
+568 
+	#_CS_LFS_LINTFLAGS
+ 
+_CS_LFS_LINTFLAGS
+
+
+	)
+
+569 
+	m_CS_LFS64_CFLAGS
+,
+
+570 
+	#_CS_LFS64_CFLAGS
+ 
+_CS_LFS64_CFLAGS
+
+
+	)
+
+571 
+	m_CS_LFS64_LDFLAGS
+,
+
+572 
+	#_CS_LFS64_LDFLAGS
+ 
+_CS_LFS64_LDFLAGS
+
+
+	)
+
+573 
+	m_CS_LFS64_LIBS
+,
+
+574 
+	#_CS_LFS64_LIBS
+ 
+_CS_LFS64_LIBS
+
+
+	)
+
+575 
+	m_CS_LFS64_LINTFLAGS
+,
+
+576 
+	#_CS_LFS64_LINTFLAGS
+ 
+_CS_LFS64_LINTFLAGS
+
+
+	)
+
+578 
+	m_CS_XBS5_ILP32_OFF32_CFLAGS
+ = 1100,
+
+579 
+	#_CS_XBS5_ILP32_OFF32_CFLAGS
+ 
+_CS_XBS5_ILP32_OFF32_CFLAGS
+
+
+	)
+
+580 
+	m_CS_XBS5_ILP32_OFF32_LDFLAGS
+,
+
+581 
+	#_CS_XBS5_ILP32_OFF32_LDFLAGS
+ 
+_CS_XBS5_ILP32_OFF32_LDFLAGS
+
+
+	)
+
+582 
+	m_CS_XBS5_ILP32_OFF32_LIBS
+,
+
+583 
+	#_CS_XBS5_ILP32_OFF32_LIBS
+ 
+_CS_XBS5_ILP32_OFF32_LIBS
+
+
+	)
+
+584 
+	m_CS_XBS5_ILP32_OFF32_LINTFLAGS
+,
+
+585 
+	#_CS_XBS5_ILP32_OFF32_LINTFLAGS
+ 
+_CS_XBS5_ILP32_OFF32_LINTFLAGS
+
+
+	)
+
+586 
+	m_CS_XBS5_ILP32_OFFBIG_CFLAGS
+,
+
+587 
+	#_CS_XBS5_ILP32_OFFBIG_CFLAGS
+ 
+_CS_XBS5_ILP32_OFFBIG_CFLAGS
+
+
+	)
+
+588 
+	m_CS_XBS5_ILP32_OFFBIG_LDFLAGS
+,
+
+589 
+	#_CS_XBS5_ILP32_OFFBIG_LDFLAGS
+ 
+_CS_XBS5_ILP32_OFFBIG_LDFLAGS
+
+
+	)
+
+590 
+	m_CS_XBS5_ILP32_OFFBIG_LIBS
+,
+
+591 
+	#_CS_XBS5_ILP32_OFFBIG_LIBS
+ 
+_CS_XBS5_ILP32_OFFBIG_LIBS
+
+
+	)
+
+592 
+	m_CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+,
+
+593 
+	#_CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+ 
+_CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+
+
+	)
+
+594 
+	m_CS_XBS5_LP64_OFF64_CFLAGS
+,
+
+595 
+	#_CS_XBS5_LP64_OFF64_CFLAGS
+ 
+_CS_XBS5_LP64_OFF64_CFLAGS
+
+
+	)
+
+596 
+	m_CS_XBS5_LP64_OFF64_LDFLAGS
+,
+
+597 
+	#_CS_XBS5_LP64_OFF64_LDFLAGS
+ 
+_CS_XBS5_LP64_OFF64_LDFLAGS
+
+
+	)
+
+598 
+	m_CS_XBS5_LP64_OFF64_LIBS
+,
+
+599 
+	#_CS_XBS5_LP64_OFF64_LIBS
+ 
+_CS_XBS5_LP64_OFF64_LIBS
+
+
+	)
+
+600 
+	m_CS_XBS5_LP64_OFF64_LINTFLAGS
+,
+
+601 
+	#_CS_XBS5_LP64_OFF64_LINTFLAGS
+ 
+_CS_XBS5_LP64_OFF64_LINTFLAGS
+
+
+	)
+
+602 
+	m_CS_XBS5_LPBIG_OFFBIG_CFLAGS
+,
+
+603 
+	#_CS_XBS5_LPBIG_OFFBIG_CFLAGS
+ 
+_CS_XBS5_LPBIG_OFFBIG_CFLAGS
+
+
+	)
+
+604 
+	m_CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+,
+
+605 
+	#_CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+ 
+_CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+
+
+	)
+
+606 
+	m_CS_XBS5_LPBIG_OFFBIG_LIBS
+,
+
+607 
+	#_CS_XBS5_LPBIG_OFFBIG_LIBS
+ 
+_CS_XBS5_LPBIG_OFFBIG_LIBS
+
+
+	)
+
+608 
+	m_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+,
+
+609 
+	#_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+ 
+_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+
+
+	)
+
+611 
+	m_CS_POSIX_V6_ILP32_OFF32_CFLAGS
+,
+
+612 
+	#_CS_POSIX_V6_ILP32_OFF32_CFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFF32_CFLAGS
+
+
+	)
+
+613 
+	m_CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+,
+
+614 
+	#_CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+
+
+	)
+
+615 
+	m_CS_POSIX_V6_ILP32_OFF32_LIBS
+,
+
+616 
+	#_CS_POSIX_V6_ILP32_OFF32_LIBS
+ 
+_CS_POSIX_V6_ILP32_OFF32_LIBS
+
+
+	)
+
+617 
+	m_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+,
+
+618 
+	#_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+
+
+	)
+
+619 
+	m_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+,
+
+620 
+	#_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+
+
+	)
+
+621 
+	m_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+,
+
+622 
+	#_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+
+
+	)
+
+623 
+	m_CS_POSIX_V6_ILP32_OFFBIG_LIBS
+,
+
+624 
+	#_CS_POSIX_V6_ILP32_OFFBIG_LIBS
+ 
+_CS_POSIX_V6_ILP32_OFFBIG_LIBS
+
+
+	)
+
+625 
+	m_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+,
+
+626 
+	#_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+ 
+_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+
+
+	)
+
+627 
+	m_CS_POSIX_V6_LP64_OFF64_CFLAGS
+,
+
+628 
+	#_CS_POSIX_V6_LP64_OFF64_CFLAGS
+ 
+_CS_POSIX_V6_LP64_OFF64_CFLAGS
+
+
+	)
+
+629 
+	m_CS_POSIX_V6_LP64_OFF64_LDFLAGS
+,
+
+630 
+	#_CS_POSIX_V6_LP64_OFF64_LDFLAGS
+ 
+_CS_POSIX_V6_LP64_OFF64_LDFLAGS
+
+
+	)
+
+631 
+	m_CS_POSIX_V6_LP64_OFF64_LIBS
+,
+
+632 
+	#_CS_POSIX_V6_LP64_OFF64_LIBS
+ 
+_CS_POSIX_V6_LP64_OFF64_LIBS
+
+
+	)
+
+633 
+	m_CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+,
+
+634 
+	#_CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+ 
+_CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+
+
+	)
+
+635 
+	m_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+,
+
+636 
+	#_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+ 
+_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+
+
+	)
+
+637 
+	m_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+,
+
+638 
+	#_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+ 
+_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+
+
+	)
+
+639 
+	m_CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+,
+
+640 
+	#_CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ 
+_CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+
+
+	)
+
+641 
+	m_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+,
+
+642 
+	#_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+ 
+_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+
+
+	)
+
+644 
+	m_CS_POSIX_V7_ILP32_OFF32_CFLAGS
+,
+
+645 
+	#_CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFF32_CFLAGS
+
+
+	)
+
+646 
+	m_CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+,
+
+647 
+	#_CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+
+
+	)
+
+648 
+	m_CS_POSIX_V7_ILP32_OFF32_LIBS
+,
+
+649 
+	#_CS_POSIX_V7_ILP32_OFF32_LIBS
+ 
+_CS_POSIX_V7_ILP32_OFF32_LIBS
+
+
+	)
+
+650 
+	m_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+,
+
+651 
+	#_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+
+
+	)
+
+652 
+	m_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+,
+
+653 
+	#_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+
+
+	)
+
+654 
+	m_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+,
+
+655 
+	#_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+
+
+	)
+
+656 
+	m_CS_POSIX_V7_ILP32_OFFBIG_LIBS
+,
+
+657 
+	#_CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ 
+_CS_POSIX_V7_ILP32_OFFBIG_LIBS
+
+
+	)
+
+658 
+	m_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+,
+
+659 
+	#_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+ 
+_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+
+
+	)
+
+660 
+	m_CS_POSIX_V7_LP64_OFF64_CFLAGS
+,
+
+661 
+	#_CS_POSIX_V7_LP64_OFF64_CFLAGS
+ 
+_CS_POSIX_V7_LP64_OFF64_CFLAGS
+
+
+	)
+
+662 
+	m_CS_POSIX_V7_LP64_OFF64_LDFLAGS
+,
+
+663 
+	#_CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ 
+_CS_POSIX_V7_LP64_OFF64_LDFLAGS
+
+
+	)
+
+664 
+	m_CS_POSIX_V7_LP64_OFF64_LIBS
+,
+
+665 
+	#_CS_POSIX_V7_LP64_OFF64_LIBS
+ 
+_CS_POSIX_V7_LP64_OFF64_LIBS
+
+
+	)
+
+666 
+	m_CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+,
+
+667 
+	#_CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+ 
+_CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+
+
+	)
+
+668 
+	m_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+,
+
+669 
+	#_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ 
+_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+
+
+	)
+
+670 
+	m_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+,
+
+671 
+	#_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ 
+_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+
+
+	)
+
+672 
+	m_CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+,
+
+673 
+	#_CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ 
+_CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+
+
+	)
+
+674 
+	m_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+,
+
+675 
+	#_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+ 
+_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+
+	)
+
+677 
+	m_CS_V6_ENV
+,
+
+678 
+	#_CS_V6_ENV
+ 
+_CS_V6_ENV
+
+
+	)
+
+679 
+	m_CS_V7_ENV
+
+
+680 
+	#_CS_V7_ENV
+ 
+_CS_V7_ENV
+
+
+	)
+
+	@/usr/include/bits/dl_find_object.h
+
+19 #iâdeà
+_DLFCN_H
+
+
+23 #ifdeà
+__x86_64__
+
+
+24 
+	#DLFO_STRUCT_HAS_EH_DBASE
+ 0
+
+	)
+
+26 
+	#DLFO_STRUCT_HAS_EH_DBASE
+ 1
+
+	)
+
+28 
+	#DLFO_STRUCT_HAS_EH_COUNT
+ 0
+
+	)
+
+29 
+	#DLFO_EH_SEGMENT_TYPE
+ 
+PT_GNU_EH_FRAME
+
+
+	)
+
+	@/usr/include/bits/dlfcn.h
+
+19 #iâdeà
+_DLFCN_H
+
+
+24 
+	#RTLD_LAZY
+ 0x00001
+
+	)
+
+25 
+	#RTLD_NOW
+ 0x00002
+
+	)
+
+26 
+	#RTLD_BINDING_MASK
+ 0x3
+
+	)
+
+27 
+	#RTLD_NOLOAD
+ 0x00004
+
+	)
+
+28 
+	#RTLD_DEEPBIND
+ 0x00008
+
+	)
+
+33 
+	#RTLD_GLOBAL
+ 0x00100
+
+	)
+
+38 
+	#RTLD_LOCAL
+ 0
+
+	)
+
+41 
+	#RTLD_NODELETE
+ 0x01000
+
+	)
+
+43 #ifdeà
+__USE_GNU
+
+
+54 
+	#DL_CALL_FCT
+(
+fùp
+, 
+¬gs
+) \
+
+55 (
+	`_dl_mcouÁ_w¿µ”_check
+ ((*è(
+fùp
+)), (*(fùp)è
+¬gs
+)
+
+	)
+
+57 
+__BEGIN_DECLS
+
+
+60 

+	$_dl_mcouÁ_w¿µ”_check
+ (*
+__£låc
+è
+__THROW
+;
+
+62 
+__END_DECLS
+
+
+	@/usr/include/bits/endian.h
+
+19 #iâdeà
+_BITS_ENDIAN_H
+
+
+20 
+	#_BITS_ENDIAN_H
+ 1
+
+	)
+
+30 
+	#__LITTLE_ENDIAN
+ 1234
+
+	)
+
+31 
+	#__BIG_ENDIAN
+ 4321
+
+	)
+
+32 
+	#__PDP_ENDIAN
+ 3412
+
+	)
+
+35 
+	~<b™s/’dŸÂess.h
+>
+
+39 #iâdeà
+__FLOAT_WORD_ORDER
+
+
+40 
+	#__FLOAT_WORD_ORDER
+ 
+__BYTE_ORDER
+
+
+	)
+
+43 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+44 
+	#__LONG_LONG_PAIR
+(
+HI
+, 
+LO
+èLO, 
+	)
+HI
+
+45 #–ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+46 
+	#__LONG_LONG_PAIR
+(
+HI
+, 
+LO
+èHI, 
+	)
+LO
+
+	@/usr/include/bits/environments.h
+
+18 #iâdeà
+_UNISTD_H
+
+
+22 
+	~<b™s/wÜdsize.h
+>
+
+42 #ià
+__WORDSIZE
+ == 64
+
+56 
+	#_POSIX_V7_LPBIG_OFFBIG
+ -1
+
+	)
+
+57 
+	#_POSIX_V6_LPBIG_OFFBIG
+ -1
+
+	)
+
+58 
+	#_XBS5_LPBIG_OFFBIG
+ -1
+
+	)
+
+61 
+	#_POSIX_V7_LP64_OFF64
+ 1
+
+	)
+
+62 
+	#_POSIX_V6_LP64_OFF64
+ 1
+
+	)
+
+63 
+	#_XBS5_LP64_OFF64
+ 1
+
+	)
+
+69 
+	#_POSIX_V7_ILP32_OFFBIG
+ 1
+
+	)
+
+70 
+	#_POSIX_V6_ILP32_OFFBIG
+ 1
+
+	)
+
+71 
+	#_XBS5_ILP32_OFFBIG
+ 1
+
+	)
+
+73 #iâdeà
+__x86_64__
+
+
+75 
+	#_POSIX_V7_ILP32_OFF32
+ 1
+
+	)
+
+76 
+	#_POSIX_V6_ILP32_OFF32
+ 1
+
+	)
+
+77 
+	#_XBS5_ILP32_OFF32
+ 1
+
+	)
+
+95 
+	#__ILP32_OFF32_CFLAGS
+ "-m32"
+
+	)
+
+96 
+	#__ILP32_OFF32_LDFLAGS
+ "-m32"
+
+	)
+
+97 #ià
+defšed
+ 
+__x86_64__
+ && defšed 
+__ILP32__
+
+
+98 
+	#__ILP32_OFFBIG_CFLAGS
+ "-mx32"
+
+	)
+
+99 
+	#__ILP32_OFFBIG_LDFLAGS
+ "-mx32"
+
+	)
+
+101 
+	#__ILP32_OFFBIG_CFLAGS
+ "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+	)
+
+102 
+	#__ILP32_OFFBIG_LDFLAGS
+ "-m32"
+
+	)
+
+104 
+	#__LP64_OFF64_CFLAGS
+ "-m64"
+
+	)
+
+105 
+	#__LP64_OFF64_LDFLAGS
+ "-m64"
+
+	)
+
+	@/usr/include/bits/epoll.h
+
+18 #iâdef 
+_SYS_EPOLL_H
+
+
+25 
+	mEPOLL_CLOEXEC
+ = 02000000
+
+26 
+	#EPOLL_CLOEXEC
+ 
+EPOLL_CLOEXEC
+
+
+	)
+
+29 
+	#__EPOLL_PACKED
+ 
+	`__©Œibu‹__
+ ((
+__·cked__
+))
+
+	)
+
+	@/usr/include/bits/err-ldbl.h
+
+19 #iâdeà
+_ERR_H
+
+
+23 
+	$__LDBL_REDIR_DECL
+ (
+w¬n
+)
+
+24 
+	$__LDBL_REDIR_DECL
+ (
+vw¬n
+)
+
+25 
+	$__LDBL_REDIR_DECL
+ (
+w¬nx
+)
+
+26 
+	$__LDBL_REDIR_DECL
+ (
+vw¬nx
+)
+
+27 
+	$__LDBL_REDIR_DECL
+ (
+”r
+)
+
+28 
+	$__LDBL_REDIR_DECL
+ (
+v”r
+)
+
+29 
+	$__LDBL_REDIR_DECL
+ (
+”rx
+)
+
+30 
+	`__LDBL_REDIR_DECL
+ (
+v”rx
+)
+
+	@/usr/include/bits/errno.h
+
+19 #iâdeà
+_BITS_ERRNO_H
+
+
+20 
+	#_BITS_ERRNO_H
+ 1
+
+	)
+
+22 #ià!
+defšed
+ 
+_ERRNO_H
+
+
+26 
+	~<lšux/”ºo.h
+>
+
+29 #iâdeà
+ENOTSUP
+
+
+30 
+	#ENOTSUP
+ 
+EOPNOTSUPP
+
+
+	)
+
+33 #iâdeà
+ECANCELED
+
+
+34 
+	#ECANCELED
+ 125
+
+	)
+
+37 #iâdeà
+EOWNERDEAD
+
+
+38 
+	#EOWNERDEAD
+ 130
+
+	)
+
+41 #iâdeà
+ENOTRECOVERABLE
+
+
+42 
+	#ENOTRECOVERABLE
+ 131
+
+	)
+
+45 #iâdeà
+ERFKILL
+
+
+46 
+	#ERFKILL
+ 132
+
+	)
+
+49 #iâdeà
+EHWPOISON
+
+
+50 
+	#EHWPOISON
+ 133
+
+	)
+
+	@/usr/include/bits/fcntl.h
+
+19 #iâdeà
+_FCNTL_H
+
+
+23 #ifdeà
+__x86_64__
+
+
+24 
+	#__O_LARGEFILE
+ 0
+
+	)
+
+27 #ifdeà
+__x86_64__
+
+
+29 
+	#F_GETLK64
+ 5
+
+	)
+
+30 
+	#F_SETLK64
+ 6
+
+	)
+
+31 
+	#F_SETLKW64
+ 7
+
+	)
+
+35 
+	sæock
+
+
+37 
+	ml_ty³
+;
+
+38 
+	ml_wh’û
+;
+
+39 #iâdeà
+__USE_FILE_OFFSET64
+
+
+40 
+__off_t
+ 
+	ml_¡¬t
+;
+
+41 
+__off_t
+ 
+	ml_Ën
+;
+
+43 
+__off64_t
+ 
+	ml_¡¬t
+;
+
+44 
+__off64_t
+ 
+	ml_Ën
+;
+
+46 
+__pid_t
+ 
+	ml_pid
+;
+
+49 #ifdeà
+__USE_LARGEFILE64
+
+
+50 
+	sæock64
+
+
+52 
+	ml_ty³
+;
+
+53 
+	ml_wh’û
+;
+
+54 
+__off64_t
+ 
+	ml_¡¬t
+;
+
+55 
+__off64_t
+ 
+	ml_Ën
+;
+
+56 
+__pid_t
+ 
+	ml_pid
+;
+
+61 
+	~<b™s/fúŽ-lšux.h
+>
+
+	@/usr/include/bits/fcntl2.h
+
+19 #iâdef 
+_FCNTL_H
+
+
+25 #iâdeà
+__USE_FILE_OFFSET64
+
+
+26 

+	$__Ý’_2
+ (cÚ¡ *
+__·th
+, 
+__oæag
+è
+	`__nÚnuÎ
+ ((1));
+
+27 

+	`__REDIRECT
+ (
+__Ý’_®Ÿs
+, (cÚ¡ *
+__·th
+, 
+__oæag
+, ...),
+
+28 
+Ý’
+è
+	`__nÚnuÎ
+ ((1));
+
+30 

+	`__REDIRECT
+ (
+__Ý’_2
+, (cÚ¡ *
+__·th
+, 
+__oæag
+),
+
+31 
+__Ý’64_2
+è
+	`__nÚnuÎ
+ ((1));
+
+32 

+	`__REDIRECT
+ (
+__Ý’_®Ÿs
+, (cÚ¡ *
+__·th
+, 
+__oæag
+, ...),
+
+33 
+Ý’64
+è
+	`__nÚnuÎ
+ ((1));
+
+35 
+	`__”rÜdeþ
+ (
+__Ý’_too_mªy_¬gs
+,
+
+37 
+	`__”rÜdeþ
+ (
+__Ý’_missšg_mode
+,
+
+40 
+__fÜtify_funùiÚ
+ 
+
+41 
+	$Ý’
+ (cÚ¡ *
+__·th
+, 
+__oæag
+, ...)
+
+43 ià(
+	`__va_¬g_·ck_Ën
+ () > 1)
+
+44 
+	`__Ý’_too_mªy_¬gs
+ ();
+
+46 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__oæag
+))
+
+48 ià(
+	`__OPEN_NEEDS_MODE
+ (
+__oæag
+è&& 
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+50 
+	`__Ý’_missšg_mode
+ ();
+
+51  
+	`__Ý’_2
+ (
+__·th
+, 
+__oæag
+);
+
+53  
+	`__Ý’_®Ÿs
+ (
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+56 ià(
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+57  
+	`__Ý’_2
+ (
+__·th
+, 
+__oæag
+);
+
+59  
+	`__Ý’_®Ÿs
+ (
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+60 
+	}
+}
+
+63 #ifdeà
+__USE_LARGEFILE64
+
+
+64 

+	$__Ý’64_2
+ (cÚ¡ *
+__·th
+, 
+__oæag
+è
+	`__nÚnuÎ
+ ((1));
+
+65 

+	`__REDIRECT
+ (
+__Ý’64_®Ÿs
+, (cÚ¡ *
+__·th
+, 
+__oæag
+,
+
+66 ...), 
+Ý’64
+è
+	`__nÚnuÎ
+ ((1));
+
+67 
+	`__”rÜdeþ
+ (
+__Ý’64_too_mªy_¬gs
+,
+
+69 
+	`__”rÜdeþ
+ (
+__Ý’64_missšg_mode
+,
+
+72 
+__fÜtify_funùiÚ
+ 
+
+73 
+	$Ý’64
+ (cÚ¡ *
+__·th
+, 
+__oæag
+, ...)
+
+75 ià(
+	`__va_¬g_·ck_Ën
+ () > 1)
+
+76 
+	`__Ý’64_too_mªy_¬gs
+ ();
+
+78 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__oæag
+))
+
+80 ià(
+	`__OPEN_NEEDS_MODE
+ (
+__oæag
+è&& 
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+82 
+	`__Ý’64_missšg_mode
+ ();
+
+83  
+	`__Ý’64_2
+ (
+__·th
+, 
+__oæag
+);
+
+85  
+	`__Ý’64_®Ÿs
+ (
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+88 ià(
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+89  
+	`__Ý’64_2
+ (
+__·th
+, 
+__oæag
+);
+
+91  
+	`__Ý’64_®Ÿs
+ (
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+92 
+	}
+}
+
+96 #ifdeà
+__USE_ATFILE
+
+
+97 #iâdeà
+__USE_FILE_OFFSET64
+
+
+98 

+	$__Ý’©_2
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__oæag
+)
+
+99 
+	`__nÚnuÎ
+ ((2));
+
+100 

+	`__REDIRECT
+ (
+__Ý’©_®Ÿs
+, (
+__fd
+, cÚ¡ *
+__·th
+,
+
+101 
+__oæag
+, ...), 
+Ý’©
+)
+
+102 
+	`__nÚnuÎ
+ ((2));
+
+104 

+	`__REDIRECT
+ (
+__Ý’©_2
+, (
+__fd
+, cÚ¡ *
+__·th
+,
+
+105 
+__oæag
+), 
+__Ý’©64_2
+)
+
+106 
+	`__nÚnuÎ
+ ((2));
+
+107 

+	`__REDIRECT
+ (
+__Ý’©_®Ÿs
+, (
+__fd
+, cÚ¡ *
+__·th
+,
+
+108 
+__oæag
+, ...), 
+Ý’©64
+)
+
+109 
+	`__nÚnuÎ
+ ((2));
+
+111 
+	`__”rÜdeþ
+ (
+__Ý’©_too_mªy_¬gs
+,
+
+113 
+	`__”rÜdeþ
+ (
+__Ý’©_missšg_mode
+,
+
+116 
+__fÜtify_funùiÚ
+ 
+
+117 
+	$Ý’©
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__oæag
+, ...)
+
+119 ià(
+	`__va_¬g_·ck_Ën
+ () > 1)
+
+120 
+	`__Ý’©_too_mªy_¬gs
+ ();
+
+122 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__oæag
+))
+
+124 ià(
+	`__OPEN_NEEDS_MODE
+ (
+__oæag
+è&& 
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+126 
+	`__Ý’©_missšg_mode
+ ();
+
+127  
+	`__Ý’©_2
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+);
+
+129  
+	`__Ý’©_®Ÿs
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+132 ià(
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+133  
+	`__Ý’©_2
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+);
+
+135  
+	`__Ý’©_®Ÿs
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+136 
+	}
+}
+
+139 #ifdeà
+__USE_LARGEFILE64
+
+
+140 

+	$__Ý’©64_2
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__oæag
+)
+
+141 
+	`__nÚnuÎ
+ ((2));
+
+142 

+	`__REDIRECT
+ (
+__Ý’©64_®Ÿs
+, (
+__fd
+, cÚ¡ *
+__·th
+,
+
+143 
+__oæag
+, ...), 
+Ý’©64
+)
+
+144 
+	`__nÚnuÎ
+ ((2));
+
+145 
+	`__”rÜdeþ
+ (
+__Ý’©64_too_mªy_¬gs
+,
+
+147 
+	`__”rÜdeþ
+ (
+__Ý’©64_missšg_mode
+,
+
+150 
+__fÜtify_funùiÚ
+ 
+
+151 
+	$Ý’©64
+ (
+__fd
+, cÚ¡ *
+__·th
+, 
+__oæag
+, ...)
+
+153 ià(
+	`__va_¬g_·ck_Ën
+ () > 1)
+
+154 
+	`__Ý’©64_too_mªy_¬gs
+ ();
+
+156 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__oæag
+))
+
+158 ià(
+	`__OPEN_NEEDS_MODE
+ (
+__oæag
+è&& 
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+160 
+	`__Ý’©64_missšg_mode
+ ();
+
+161  
+	`__Ý’©64_2
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+);
+
+163  
+	`__Ý’©64_®Ÿs
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+166 ià(
+	`__va_¬g_·ck_Ën
+ () < 1)
+
+167  
+	`__Ý’©64_2
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+);
+
+169  
+	`__Ý’©64_®Ÿs
+ (
+__fd
+, 
+__·th
+, 
+__oæag
+, 
+	`__va_¬g_·ck
+ ());
+
+170 
+	}
+}
+
+	@/usr/include/bits/floatn.h
+
+19 #iâdeà
+_BITS_FLOATN_H
+
+
+20 
+	#_BITS_FLOATN_H
+
+
+	)
+
+22 
+	~<ã©u»s.h
+>
+
+29 #ià(
+defšed
+ 
+__x86_64__
+ \
+
+30 ? 
+__GNUC_PREREQ
+ (4, 3) \
+
+31 : (
+defšed
+ 
+__GNU__
+ ? 
+	$__GNUC_PREREQ
+ (4, 5è: 
+	$__GNUC_PREREQ
+ (4, 4)))
+
+32 
+	#__HAVE_FLOAT128
+ 1
+
+	)
+
+34 
+	#__HAVE_FLOAT128
+ 0
+
+	)
+
+39 #ià
+__HAVE_FLOAT128
+
+
+40 
+	#__HAVE_DISTINCT_FLOAT128
+ 1
+
+	)
+
+42 
+	#__HAVE_DISTINCT_FLOAT128
+ 0
+
+	)
+
+48 
+	#__HAVE_FLOAT64X
+ 1
+
+	)
+
+54 
+	#__HAVE_FLOAT64X_LONG_DOUBLE
+ 1
+
+	)
+
+56 #iâdeà
+__ASSEMBLER__
+
+
+60 #ià
+__HAVE_FLOAT128
+
+
+61 #ià!
+	`__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+63 
+	#__f128
+(
+x
+èx##
+q
+
+
+	)
+
+65 
+	#__f128
+(
+x
+èx##
+f128
+
+
+	)
+
+70 #ià
+__HAVE_FLOAT128
+
+
+71 #ià!
+	`__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+74 
+_Com¶ex
+ 
+	t__cæßt128
+ 
+	t__©Œibu‹__
+ ((
+	t__mode__
+ (
+	t__TC__
+)));
+
+75 
+	#__CFLOAT128
+ 
+__cæßt128
+
+
+	)
+
+77 
+	#__CFLOAT128
+ 
+_Com¶ex
+ 
+_Flßt128
+
+
+	)
+
+82 #ià
+__HAVE_FLOAT128
+
+
+85 #ià!
+	`__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+86 
+__æßt128
+ 
+	t_Flßt128
+;
+
+90 #ià!
+	`__GNUC_PREREQ
+ (7, 0)
+
+91 
+	#__bužtš_huge_v®f128
+(è((
+_Flßt128
+è
+	`__bužtš_huge_v®
+ ())
+
+	)
+
+99 #ià!
+	`__GNUC_PREREQ
+ (7, 0)
+
+100 
+	#__bužtš_cÝysignf128
+ 
+__bužtš_cÝysignq
+
+
+	)
+
+101 
+	#__bužtš_çbsf128
+ 
+__bužtš_çbsq
+
+
+	)
+
+102 
+	#__bužtš_šff128
+(è((
+_Flßt128
+è
+	`__bužtš_šf
+ ())
+
+	)
+
+103 
+	#__bužtš_Çnf128
+(
+x
+è((
+_Flßt128
+è
+	`__bužtš_Çn
+ (x))
+
+	)
+
+104 
+	#__bužtš_Çnsf128
+(
+x
+è((
+_Flßt128
+è
+	`__bužtš_Çns
+ (x))
+
+	)
+
+111 #ià!
+	`__GNUC_PREREQ
+ (6, 0)
+
+112 
+	#__bužtš_signb™f128
+ 
+__signb™f128
+
+
+	)
+
+119 
+	~<b™s/æßŠ-commÚ.h
+>
+
+	@/usr/include/bits/getopt_posix.h
+
+20 #iâdeà
+_GETOPT_POSIX_H
+
+
+21 
+	#_GETOPT_POSIX_H
+ 1
+
+	)
+
+23 #ià!
+defšed
+ 
+_UNISTD_H
+ && !defšed 
+_STDIO_H
+
+
+27 
+	~<b™s/g‘Ýt_cÜe.h
+>
+
+29 
+	g__BEGIN_DECLS
+
+
+31 #ià
+defšed
+ 
+__USE_POSIX2
+ && !defšed 
+__USE_POSIX_IMPLICITLY
+ \
+
+32 && !
+defšed
+ 
+	g__USE_GNU
+ && !defšed 
+	g_GETOPT_H
+
+
+37 #ifdeà
+__REDIRECT
+
+
+38 

+__REDIRECT_NTH
+ (
+g‘Ýt
+, (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+39 cÚ¡ *
+__shÜtÝts
+),
+
+40 
+__posix_g‘Ýt
+);
+
+42 

+	$__posix_g‘Ýt
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+43 cÚ¡ *
+__shÜtÝts
+)
+
+44 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+45 
+	#g‘Ýt
+ 
+__posix_g‘Ýt
+
+
+	)
+
+49 
+__END_DECLS
+
+
+	@/usr/include/bits/in.h
+
+20 #iâdeà
+_NETINET_IN_H
+
+
+32 #ià
+defšed
+ 
+_UAPI_LINUX_IN6_H
+ \
+
+33 || 
+defšed
+ 
+	g_UAPI_IPV6_H
+ \
+
+34 || 
+defšed
+ 
+	g_LINUX_IN6_H
+ \
+
+35 || 
+defšed
+ 
+	g_IPV6_H
+
+
+39 
+	#__USE_KERNEL_IPV6_DEFS
+ 1
+
+	)
+
+41 
+	#__USE_KERNEL_IPV6_DEFS
+ 0
+
+	)
+
+47 
+	#IP_OPTIONS
+ 4
+
+	)
+
+48 
+	#IP_HDRINCL
+ 3
+
+	)
+
+49 
+	#IP_TOS
+ 1
+
+	)
+
+50 
+	#IP_TTL
+ 2
+
+	)
+
+51 
+	#IP_RECVOPTS
+ 6
+
+	)
+
+53 
+	#IP_RECVRETOPTS
+ 
+IP_RETOPTS
+
+
+	)
+
+54 
+	#IP_RETOPTS
+ 7
+
+	)
+
+55 
+	#IP_MULTICAST_IF
+ 32
+
+	)
+
+56 
+	#IP_MULTICAST_TTL
+ 33
+
+	)
+
+57 
+	#IP_MULTICAST_LOOP
+ 34
+
+	)
+
+58 
+	#IP_ADD_MEMBERSHIP
+ 35
+
+	)
+
+59 
+	#IP_DROP_MEMBERSHIP
+ 36
+
+	)
+
+60 
+	#IP_UNBLOCK_SOURCE
+ 37
+
+	)
+
+61 
+	#IP_BLOCK_SOURCE
+ 38
+
+	)
+
+62 
+	#IP_ADD_SOURCE_MEMBERSHIP
+ 39
+
+	)
+
+63 
+	#IP_DROP_SOURCE_MEMBERSHIP
+ 40
+
+	)
+
+64 
+	#IP_MSFILTER
+ 41
+
+	)
+
+65 #ifdeà
+__USE_MISC
+
+
+66 
+	#MCAST_JOIN_GROUP
+ 42
+
+	)
+
+67 
+	#MCAST_BLOCK_SOURCE
+ 43
+
+	)
+
+68 
+	#MCAST_UNBLOCK_SOURCE
+ 44
+
+	)
+
+69 
+	#MCAST_LEAVE_GROUP
+ 45
+
+	)
+
+70 
+	#MCAST_JOIN_SOURCE_GROUP
+ 46
+
+	)
+
+71 
+	#MCAST_LEAVE_SOURCE_GROUP
+ 47
+
+	)
+
+72 
+	#MCAST_MSFILTER
+ 48
+
+	)
+
+73 
+	#IP_MULTICAST_ALL
+ 49
+
+	)
+
+74 
+	#IP_UNICAST_IF
+ 50
+
+	)
+
+76 
+	#MCAST_EXCLUDE
+ 0
+
+	)
+
+77 
+	#MCAST_INCLUDE
+ 1
+
+	)
+
+80 
+	#IP_ROUTER_ALERT
+ 5
+
+	)
+
+81 
+	#IP_PKTINFO
+ 8
+
+	)
+
+82 
+	#IP_PKTOPTIONS
+ 9
+
+	)
+
+83 
+	#IP_PMTUDISC
+ 10
+
+	)
+
+84 
+	#IP_MTU_DISCOVER
+ 10
+
+	)
+
+85 
+	#IP_RECVERR
+ 11
+
+	)
+
+86 
+	#IP_RECVTTL
+ 12
+
+	)
+
+87 
+	#IP_RECVTOS
+ 13
+
+	)
+
+88 
+	#IP_MTU
+ 14
+
+	)
+
+89 
+	#IP_FREEBIND
+ 15
+
+	)
+
+90 
+	#IP_IPSEC_POLICY
+ 16
+
+	)
+
+91 
+	#IP_XFRM_POLICY
+ 17
+
+	)
+
+92 
+	#IP_PASSSEC
+ 18
+
+	)
+
+93 
+	#IP_TRANSPARENT
+ 19
+
+	)
+
+94 
+	#IP_MULTICAST_ALL
+ 49
+
+	)
+
+97 
+	#IP_ORIGDSTADDR
+ 20
+
+	)
+
+98 
+	#IP_RECVORIGDSTADDR
+ 
+IP_ORIGDSTADDR
+
+
+	)
+
+100 
+	#IP_MINTTL
+ 21
+
+	)
+
+101 
+	#IP_NODEFRAG
+ 22
+
+	)
+
+102 
+	#IP_CHECKSUM
+ 23
+
+	)
+
+103 
+	#IP_BIND_ADDRESS_NO_PORT
+ 24
+
+	)
+
+104 
+	#IP_RECVFRAGSIZE
+ 25
+
+	)
+
+105 
+	#IP_RECVERR_RFC4884
+ 26
+
+	)
+
+108 
+	#IP_PMTUDISC_DONT
+ 0
+
+	)
+
+109 
+	#IP_PMTUDISC_WANT
+ 1
+
+	)
+
+110 
+	#IP_PMTUDISC_DO
+ 2
+
+	)
+
+111 
+	#IP_PMTUDISC_PROBE
+ 3
+
+	)
+
+115 
+	#IP_PMTUDISC_INTERFACE
+ 4
+
+	)
+
+117 
+	#IP_PMTUDISC_OMIT
+ 5
+
+	)
+
+119 
+	#IP_MULTICAST_IF
+ 32
+
+	)
+
+120 
+	#IP_MULTICAST_TTL
+ 33
+
+	)
+
+121 
+	#IP_MULTICAST_LOOP
+ 34
+
+	)
+
+122 
+	#IP_ADD_MEMBERSHIP
+ 35
+
+	)
+
+123 
+	#IP_DROP_MEMBERSHIP
+ 36
+
+	)
+
+124 
+	#IP_UNBLOCK_SOURCE
+ 37
+
+	)
+
+125 
+	#IP_BLOCK_SOURCE
+ 38
+
+	)
+
+126 
+	#IP_ADD_SOURCE_MEMBERSHIP
+ 39
+
+	)
+
+127 
+	#IP_DROP_SOURCE_MEMBERSHIP
+ 40
+
+	)
+
+128 
+	#IP_MSFILTER
+ 41
+
+	)
+
+129 
+	#IP_MULTICAST_ALL
+ 49
+
+	)
+
+130 
+	#IP_UNICAST_IF
+ 50
+
+	)
+
+131 
+	#IP_LOCAL_PORT_RANGE
+ 51
+
+	)
+
+134 
+	#SOL_IP
+ 0
+
+	)
+
+136 
+	#IP_DEFAULT_MULTICAST_TTL
+ 1
+
+	)
+
+137 
+	#IP_DEFAULT_MULTICAST_LOOP
+ 1
+
+	)
+
+138 
+	#IP_MAX_MEMBERSHIPS
+ 20
+
+	)
+
+140 #ifdeà
+__USE_MISC
+
+
+144 
+	s�_Ýts
+
+
+146 
+š_addr
+ 
+	m�_d¡
+;
+
+147 
+	m�_Ýts
+[40];
+
+151 
+	sš_pktšfo
+
+
+153 
+	m�i_ifšdex
+;
+
+154 
+š_addr
+ 
+	m�i_¥ec_d¡
+;
+
+155 
+š_addr
+ 
+	m�i_addr
+;
+
+162 
+	#IPV6_ADDRFORM
+ 1
+
+	)
+
+163 
+	#IPV6_2292PKTINFO
+ 2
+
+	)
+
+164 
+	#IPV6_2292HOPOPTS
+ 3
+
+	)
+
+165 
+	#IPV6_2292DSTOPTS
+ 4
+
+	)
+
+166 
+	#IPV6_2292RTHDR
+ 5
+
+	)
+
+167 
+	#IPV6_2292PKTOPTIONS
+ 6
+
+	)
+
+168 
+	#IPV6_CHECKSUM
+ 7
+
+	)
+
+169 
+	#IPV6_2292HOPLIMIT
+ 8
+
+	)
+
+171 
+	#SCM_SRCRT
+ 
+IPV6_RXSRCRT
+
+
+	)
+
+173 
+	#IPV6_NEXTHOP
+ 9
+
+	)
+
+174 
+	#IPV6_AUTHHDR
+ 10
+
+	)
+
+175 
+	#IPV6_UNICAST_HOPS
+ 16
+
+	)
+
+176 
+	#IPV6_MULTICAST_IF
+ 17
+
+	)
+
+177 
+	#IPV6_MULTICAST_HOPS
+ 18
+
+	)
+
+178 
+	#IPV6_MULTICAST_LOOP
+ 19
+
+	)
+
+179 
+	#IPV6_JOIN_GROUP
+ 20
+
+	)
+
+180 
+	#IPV6_LEAVE_GROUP
+ 21
+
+	)
+
+181 
+	#IPV6_ROUTER_ALERT
+ 22
+
+	)
+
+182 
+	#IPV6_MTU_DISCOVER
+ 23
+
+	)
+
+183 
+	#IPV6_MTU
+ 24
+
+	)
+
+184 
+	#IPV6_RECVERR
+ 25
+
+	)
+
+185 
+	#IPV6_V6ONLY
+ 26
+
+	)
+
+186 
+	#IPV6_JOIN_ANYCAST
+ 27
+
+	)
+
+187 
+	#IPV6_LEAVE_ANYCAST
+ 28
+
+	)
+
+188 
+	#IPV6_MULTICAST_ALL
+ 29
+
+	)
+
+189 
+	#IPV6_ROUTER_ALERT_ISOLATE
+ 30
+
+	)
+
+190 
+	#IPV6_RECVERR_RFC4884
+ 31
+
+	)
+
+191 
+	#IPV6_IPSEC_POLICY
+ 34
+
+	)
+
+192 
+	#IPV6_XFRM_POLICY
+ 35
+
+	)
+
+193 
+	#IPV6_HDRINCL
+ 36
+
+	)
+
+196 
+	#IPV6_RECVPKTINFO
+ 49
+
+	)
+
+197 
+	#IPV6_PKTINFO
+ 50
+
+	)
+
+198 
+	#IPV6_RECVHOPLIMIT
+ 51
+
+	)
+
+199 
+	#IPV6_HOPLIMIT
+ 52
+
+	)
+
+200 
+	#IPV6_RECVHOPOPTS
+ 53
+
+	)
+
+201 
+	#IPV6_HOPOPTS
+ 54
+
+	)
+
+202 
+	#IPV6_RTHDRDSTOPTS
+ 55
+
+	)
+
+203 
+	#IPV6_RECVRTHDR
+ 56
+
+	)
+
+204 
+	#IPV6_RTHDR
+ 57
+
+	)
+
+205 
+	#IPV6_RECVDSTOPTS
+ 58
+
+	)
+
+206 
+	#IPV6_DSTOPTS
+ 59
+
+	)
+
+207 
+	#IPV6_RECVPATHMTU
+ 60
+
+	)
+
+208 
+	#IPV6_PATHMTU
+ 61
+
+	)
+
+209 
+	#IPV6_DONTFRAG
+ 62
+
+	)
+
+212 
+	#IPV6_RECVTCLASS
+ 66
+
+	)
+
+213 
+	#IPV6_TCLASS
+ 67
+
+	)
+
+215 
+	#IPV6_AUTOFLOWLABEL
+ 70
+
+	)
+
+218 
+	#IPV6_ADDR_PREFERENCES
+ 72
+
+	)
+
+221 
+	#IPV6_MINHOPCOUNT
+ 73
+
+	)
+
+223 
+	#IPV6_ORIGDSTADDR
+ 74
+
+	)
+
+224 
+	#IPV6_RECVORIGDSTADDR
+ 
+IPV6_ORIGDSTADDR
+
+
+	)
+
+225 
+	#IPV6_TRANSPARENT
+ 75
+
+	)
+
+226 
+	#IPV6_UNICAST_IF
+ 76
+
+	)
+
+227 
+	#IPV6_RECVFRAGSIZE
+ 77
+
+	)
+
+228 
+	#IPV6_FREEBIND
+ 78
+
+	)
+
+231 #ià!
+__USE_KERNEL_IPV6_DEFS
+
+
+232 
+	#IPV6_ADD_MEMBERSHIP
+ 
+IPV6_JOIN_GROUP
+
+
+	)
+
+233 
+	#IPV6_DROP_MEMBERSHIP
+ 
+IPV6_LEAVE_GROUP
+
+
+	)
+
+235 
+	#IPV6_RXHOPOPTS
+ 
+IPV6_HOPOPTS
+
+
+	)
+
+236 
+	#IPV6_RXDSTOPTS
+ 
+IPV6_DSTOPTS
+
+
+	)
+
+239 
+	#IPV6_PMTUDISC_DONT
+ 0
+
+	)
+
+240 
+	#IPV6_PMTUDISC_WANT
+ 1
+
+	)
+
+241 
+	#IPV6_PMTUDISC_DO
+ 2
+
+	)
+
+242 
+	#IPV6_PMTUDISC_PROBE
+ 3
+
+	)
+
+243 
+	#IPV6_PMTUDISC_INTERFACE
+ 4
+
+	)
+
+244 
+	#IPV6_PMTUDISC_OMIT
+ 5
+
+	)
+
+247 
+	#SOL_IPV6
+ 41
+
+	)
+
+248 
+	#SOL_ICMPV6
+ 58
+
+	)
+
+251 
+	#IPV6_RTHDR_LOOSE
+ 0
+
+	)
+
+252 
+	#IPV6_RTHDR_STRICT
+ 1
+
+	)
+
+254 
+	#IPV6_RTHDR_TYPE_0
+ 0
+
+	)
+
+	@/usr/include/bits/ioctl-types.h
+
+19 #iâdeà
+_SYS_IOCTL_H
+
+
+24 
+	~<asm/ioùls.h
+>
+
+27 
+	swšsize
+
+
+29 
+	mws_row
+;
+
+30 
+	mws_cÞ
+;
+
+31 
+	mws_xpix–
+;
+
+32 
+	mws_ypix–
+;
+
+35 
+	#NCC
+ 8
+
+	)
+
+36 
+	s‹rmio
+
+
+38 
+	mc_iæag
+;
+
+39 
+	mc_oæag
+;
+
+40 
+	mc_cæag
+;
+
+41 
+	mc_læag
+;
+
+42 
+	mc_lše
+;
+
+43 
+	mc_cc
+[
+NCC
+];
+
+47 
+	#TIOCM_LE
+ 0x001
+
+	)
+
+48 
+	#TIOCM_DTR
+ 0x002
+
+	)
+
+49 
+	#TIOCM_RTS
+ 0x004
+
+	)
+
+50 
+	#TIOCM_ST
+ 0x008
+
+	)
+
+51 
+	#TIOCM_SR
+ 0x010
+
+	)
+
+52 
+	#TIOCM_CTS
+ 0x020
+
+	)
+
+53 
+	#TIOCM_CAR
+ 0x040
+
+	)
+
+54 
+	#TIOCM_RNG
+ 0x080
+
+	)
+
+55 
+	#TIOCM_DSR
+ 0x100
+
+	)
+
+56 
+	#TIOCM_CD
+ 
+TIOCM_CAR
+
+
+	)
+
+57 
+	#TIOCM_RI
+ 
+TIOCM_RNG
+
+
+	)
+
+62 
+	#N_TTY
+ 0
+
+	)
+
+63 
+	#N_SLIP
+ 1
+
+	)
+
+64 
+	#N_MOUSE
+ 2
+
+	)
+
+65 
+	#N_PPP
+ 3
+
+	)
+
+66 
+	#N_STRIP
+ 4
+
+	)
+
+67 
+	#N_AX25
+ 5
+
+	)
+
+68 
+	#N_X25
+ 6
+
+	)
+
+69 
+	#N_6PACK
+ 7
+
+	)
+
+70 
+	#N_MASC
+ 8
+
+	)
+
+71 
+	#N_R3964
+ 9
+
+	)
+
+72 
+	#N_PROFIBUS_FDL
+ 10
+
+	)
+
+73 
+	#N_IRDA
+ 11
+
+	)
+
+74 
+	#N_SMSBLOCK
+ 12
+
+	)
+
+75 
+	#N_HDLC
+ 13
+
+	)
+
+76 
+	#N_SYNC_PPP
+ 14
+
+	)
+
+77 
+	#N_HCI
+ 15
+
+	)
+
+	@/usr/include/bits/ioctls.h
+
+18 #iâdeà
+_SYS_IOCTL_H
+
+
+23 
+	~<asm/ioùls.h
+>
+
+26 
+	#SIOCADDRT
+ 0x890B
+
+	)
+
+27 
+	#SIOCDELRT
+ 0x890C
+
+	)
+
+28 
+	#SIOCRTMSG
+ 0x890D
+
+	)
+
+31 
+	#SIOCGIFNAME
+ 0x8910
+
+	)
+
+32 
+	#SIOCSIFLINK
+ 0x8911
+
+	)
+
+33 
+	#SIOCGIFCONF
+ 0x8912
+
+	)
+
+34 
+	#SIOCGIFFLAGS
+ 0x8913
+
+	)
+
+35 
+	#SIOCSIFFLAGS
+ 0x8914
+
+	)
+
+36 
+	#SIOCGIFADDR
+ 0x8915
+
+	)
+
+37 
+	#SIOCSIFADDR
+ 0x8916
+
+	)
+
+38 
+	#SIOCGIFDSTADDR
+ 0x8917
+
+	)
+
+39 
+	#SIOCSIFDSTADDR
+ 0x8918
+
+	)
+
+40 
+	#SIOCGIFBRDADDR
+ 0x8919
+
+	)
+
+41 
+	#SIOCSIFBRDADDR
+ 0x891¨
+
+	)
+
+42 
+	#SIOCGIFNETMASK
+ 0x891b
+
+	)
+
+43 
+	#SIOCSIFNETMASK
+ 0x891ø
+
+	)
+
+44 
+	#SIOCGIFMETRIC
+ 0x891d
+
+	)
+
+45 
+	#SIOCSIFMETRIC
+ 0x891�
+
+	)
+
+46 
+	#SIOCGIFMEM
+ 0x891à
+
+	)
+
+47 
+	#SIOCSIFMEM
+ 0x8920
+
+	)
+
+48 
+	#SIOCGIFMTU
+ 0x8921
+
+	)
+
+49 
+	#SIOCSIFMTU
+ 0x8922
+
+	)
+
+50 
+	#SIOCSIFNAME
+ 0x8923
+
+	)
+
+51 
+	#SIOCSIFHWADDR
+ 0x8924
+
+	)
+
+52 
+	#SIOCGIFENCAP
+ 0x8925
+
+	)
+
+53 
+	#SIOCSIFENCAP
+ 0x8926
+
+	)
+
+54 
+	#SIOCGIFHWADDR
+ 0x8927
+
+	)
+
+55 
+	#SIOCGIFSLAVE
+ 0x8929
+
+	)
+
+56 
+	#SIOCSIFSLAVE
+ 0x8930
+
+	)
+
+57 
+	#SIOCADDMULTI
+ 0x8931
+
+	)
+
+58 
+	#SIOCDELMULTI
+ 0x8932
+
+	)
+
+59 
+	#SIOCGIFINDEX
+ 0x8933
+
+	)
+
+60 
+	#SIOGIFINDEX
+ 
+SIOCGIFINDEX
+
+
+	)
+
+61 
+	#SIOCSIFPFLAGS
+ 0x8934
+
+	)
+
+62 
+	#SIOCGIFPFLAGS
+ 0x8935
+
+	)
+
+63 
+	#SIOCDIFADDR
+ 0x8936
+
+	)
+
+64 
+	#SIOCSIFHWBROADCAST
+ 0x8937
+
+	)
+
+65 
+	#SIOCGIFCOUNT
+ 0x8938
+
+	)
+
+67 
+	#SIOCGIFBR
+ 0x8940
+
+	)
+
+68 
+	#SIOCSIFBR
+ 0x8941
+
+	)
+
+70 
+	#SIOCGIFTXQLEN
+ 0x8942
+
+	)
+
+71 
+	#SIOCSIFTXQLEN
+ 0x8943
+
+	)
+
+76 
+	#SIOCDARP
+ 0x8953
+
+	)
+
+77 
+	#SIOCGARP
+ 0x8954
+
+	)
+
+78 
+	#SIOCSARP
+ 0x8955
+
+	)
+
+81 
+	#SIOCDRARP
+ 0x8960
+
+	)
+
+82 
+	#SIOCGRARP
+ 0x8961
+
+	)
+
+83 
+	#SIOCSRARP
+ 0x8962
+
+	)
+
+87 
+	#SIOCGIFMAP
+ 0x8970
+
+	)
+
+88 
+	#SIOCSIFMAP
+ 0x8971
+
+	)
+
+92 
+	#SIOCADDDLCI
+ 0x8980
+
+	)
+
+93 
+	#SIOCDELDLCI
+ 0x8981
+
+	)
+
+102 
+	#SIOCDEVPRIVATE
+ 0x89F0
+
+	)
+
+108 
+	#SIOCPROTOPRIVATE
+ 0x89E0
+
+	)
+
+	@/usr/include/bits/libc-header-start.h
+
+27 #iâdeà
+__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+31 #undeà
+__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+
+
+33 
+	~<ã©u»s.h
+>
+
+37 #undeà
+__GLIBC_USE_LIB_EXT2
+
+
+38 #ià(
+defšed
+ 
+__USE_GNU
+ \
+
+39 || (
+defšed
+ 
+	g__STDC_WANT_LIB_EXT2__
+ && __STDC_WANT_LIB_EXT2__ > 0))
+
+40 
+	#__GLIBC_USE_LIB_EXT2
+ 1
+
+	)
+
+42 
+	#__GLIBC_USE_LIB_EXT2
+ 0
+
+	)
+
+67 #undeà
+__GLIBC_USE_IEC_60559_BFP_EXT
+
+
+68 #ià
+defšed
+ 
+__USE_GNU
+ || defšed 
+__STDC_WANT_IEC_60559_BFP_EXT__
+
+
+69 
+	#__GLIBC_USE_IEC_60559_BFP_EXT
+ 1
+
+	)
+
+71 
+	#__GLIBC_USE_IEC_60559_BFP_EXT
+ 0
+
+	)
+
+73 #undeà
+__GLIBC_USE_IEC_60559_BFP_EXT_C2X
+
+
+74 #ià
+__GLIBC_USE
+ (
+IEC_60559_BFP_EXT
+è|| __GLIBC_USE (
+ISOC2X
+)
+
+75 
+	#__GLIBC_USE_IEC_60559_BFP_EXT_C2X
+ 1
+
+	)
+
+77 
+	#__GLIBC_USE_IEC_60559_BFP_EXT_C2X
+ 0
+
+	)
+
+79 #undeà
+__GLIBC_USE_IEC_60559_EXT
+
+
+80 #ià
+__GLIBC_USE
+ (
+IEC_60559_BFP_EXT
+è|| 
+defšed
+ 
+__STDC_WANT_IEC_60559_EXT__
+
+
+81 
+	#__GLIBC_USE_IEC_60559_EXT
+ 1
+
+	)
+
+83 
+	#__GLIBC_USE_IEC_60559_EXT
+ 0
+
+	)
+
+90 #undeà
+__GLIBC_USE_IEC_60559_FUNCS_EXT
+
+
+91 #ià
+defšed
+ 
+__USE_GNU
+ || defšed 
+__STDC_WANT_IEC_60559_FUNCS_EXT__
+
+
+92 
+	#__GLIBC_USE_IEC_60559_FUNCS_EXT
+ 1
+
+	)
+
+94 
+	#__GLIBC_USE_IEC_60559_FUNCS_EXT
+ 0
+
+	)
+
+96 #undeà
+__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
+
+
+97 #ià
+__GLIBC_USE
+ (
+IEC_60559_FUNCS_EXT
+è|| __GLIBC_USE (
+ISOC2X
+)
+
+98 
+	#__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
+ 1
+
+	)
+
+100 
+	#__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
+ 0
+
+	)
+
+105 #undeà
+__GLIBC_USE_IEC_60559_TYPES_EXT
+
+
+106 #ià
+defšed
+ 
+__USE_GNU
+ || defšed 
+__STDC_WANT_IEC_60559_TYPES_EXT__
+
+
+107 
+	#__GLIBC_USE_IEC_60559_TYPES_EXT
+ 1
+
+	)
+
+109 
+	#__GLIBC_USE_IEC_60559_TYPES_EXT
+ 0
+
+	)
+
+	@/usr/include/bits/mman.h
+
+19 #iâdeà
+_SYS_MMAN_H
+
+
+27 
+	#MAP_32BIT
+ 0x40
+
+	)
+
+29 
+	~<b™s/mmª-m­-æags-g’”ic.h
+>
+
+32 
+	~<b™s/mmª-lšux.h
+>
+
+	@/usr/include/bits/mman_ext.h
+
+19 #iâdeà
+_SYS_MMAN_H
+
+
+23 #ifdeà
+__USE_GNU
+
+
+24 
+	giovec
+;
+
+25 
+__ssize_t
+ 
+	$´oûss_madvi£
+ (
+__pid_fd
+, cÚ¡ 
+iovec
+ *
+__iov
+,
+
+26 
+size_t
+ 
+__couÁ
+, 
+__adviû
+,
+
+27 
+__æags
+)
+
+28 
+__THROW
+;
+
+30 

+	$´oûss_m»Ëa£
+ (
+pidfd
+, 
+æags
+è
+__THROW
+;
+
+	@/usr/include/bits/netdb.h
+
+18 #iâdeà
+_NETDB_H
+
+
+26 
+	sÃ‹Á
+
+
+28 *
+	mn_Çme
+;
+
+29 **
+	mn_®Ÿ£s
+;
+
+30 
+	mn_add¹y³
+;
+
+31 
+ušt32_t
+ 
+	mn_Ãt
+;
+
+	@/usr/include/bits/poll.h
+
+18 #iâdeà
+_SYS_POLL_H
+
+
+25 
+	#POLLIN
+ 0x001
+
+	)
+
+26 
+	#POLLPRI
+ 0x002
+
+	)
+
+27 
+	#POLLOUT
+ 0x004
+
+	)
+
+29 #ià
+defšed
+ 
+__USE_XOPEN
+ || defšed 
+__USE_XOPEN2K8
+
+
+31 
+	#POLLRDNORM
+ 0x040
+
+	)
+
+32 
+	#POLLRDBAND
+ 0x080
+
+	)
+
+33 
+	#POLLWRNORM
+ 0x100
+
+	)
+
+34 
+	#POLLWRBAND
+ 0x200
+
+	)
+
+37 #ifdeà
+__USE_GNU
+
+
+39 
+	#POLLMSG
+ 0x400
+
+	)
+
+40 
+	#POLLREMOVE
+ 0x1000
+
+	)
+
+41 
+	#POLLRDHUP
+ 0x2000
+
+	)
+
+47 
+	#POLLERR
+ 0x008
+
+	)
+
+48 
+	#POLLHUP
+ 0x010
+
+	)
+
+49 
+	#POLLNVAL
+ 0x020
+
+	)
+
+	@/usr/include/bits/poll2.h
+
+19 #iâdeà
+_SYS_POLL_H
+
+
+24 
+__BEGIN_DECLS
+
+
+26 

+__REDIRECT
+ (
+__pÞl_®Ÿs
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+27 
+__timeout
+), 
+pÞl
+);
+
+28 

+	$__pÞl_chk
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+, 
+__timeout
+,
+
+29 
+__SIZE_TYPE__
+ 
+__fd¦’
+)
+
+30 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+31 

+	`__REDIRECT
+ (
+__pÞl_chk_w¬n
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+32 
+__timeout
+, 
+__SIZE_TYPE__
+ 
+__fd¦’
+),
+
+33 
+__pÞl_chk
+)
+
+34 
+	`__w¬Ç‰r
+ ("poll called with fds buffer�oo small file‚fdsƒntries");
+
+36 
+__fÜtify_funùiÚ
+ 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2) 
+
+37 
+	$pÞl
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+, 
+__timeout
+)
+
+39  
+	`__glibc_fÜtify
+ (
+pÞl
+, 
+__nfds
+,  (*
+__fds
+),
+
+40 
+	`__glibc_objsize
+ (
+__fds
+),
+
+41 
+__fds
+, 
+__nfds
+, 
+__timeout
+);
+
+42 
+	}
+}
+
+45 #ifdeà
+__USE_GNU
+
+
+46 #ifdeà
+__USE_TIME_BITS64
+
+
+47 

+__REDIRECT
+ (
+__µÞl64_®Ÿs
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+48 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+49 cÚ¡ 
+__sig£t_t
+ *
+__ss
+), 
+__µÞl64
+);
+
+50 

+	$__µÞl64_chk
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+51 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+52 cÚ¡ 
+__sig£t_t
+ *
+__ss
+, 
+__SIZE_TYPE__
+ 
+__fd¦’
+)
+
+53 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+54 

+	`__REDIRECT
+ (
+__µÞl64_chk_w¬n
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__n
+,
+
+55 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+56 cÚ¡ 
+__sig£t_t
+ *
+__ss
+,
+
+57 
+__SIZE_TYPE__
+ 
+__fd¦’
+),
+
+58 
+__µÞl64_chk
+)
+
+59 
+	`__w¬Ç‰r
+ ("ppoll called with fds buffer�oo small file‚fdsƒntries");
+
+61 
+__fÜtify_funùiÚ
+ 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2) 
+
+62 
+	$µÞl
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+, cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+63 cÚ¡ 
+__sig£t_t
+ *
+__ss
+)
+
+65  
+	`__glibc_fÜtify
+ (
+µÞl64
+, 
+__nfds
+,  (*
+__fds
+),
+
+66 
+	`__glibc_objsize
+ (
+__fds
+),
+
+67 
+__fds
+, 
+__nfds
+, 
+__timeout
+, 
+__ss
+);
+
+68 
+	}
+}
+
+70 

+__REDIRECT
+ (
+__µÞl_®Ÿs
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+71 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+72 cÚ¡ 
+__sig£t_t
+ *
+__ss
+), 
+µÞl
+);
+
+73 

+	$__µÞl_chk
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+74 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+75 cÚ¡ 
+__sig£t_t
+ *
+__ss
+, 
+__SIZE_TYPE__
+ 
+__fd¦’
+)
+
+76 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+77 

+	`__REDIRECT
+ (
+__µÞl_chk_w¬n
+, (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+,
+
+78 cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+79 cÚ¡ 
+__sig£t_t
+ *
+__ss
+,
+
+80 
+__SIZE_TYPE__
+ 
+__fd¦’
+),
+
+81 
+__µÞl_chk
+)
+
+82 
+	`__w¬Ç‰r
+ ("ppoll called with fds buffer�oo small file‚fdsƒntries");
+
+84 
+__fÜtify_funùiÚ
+ 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2) 
+
+85 
+	$µÞl
+ (
+pÞlfd
+ *
+__fds
+, 
+nfds_t
+ 
+__nfds
+, cÚ¡ 
+time¥ec
+ *
+__timeout
+,
+
+86 cÚ¡ 
+__sig£t_t
+ *
+__ss
+)
+
+88  
+	`__glibc_fÜtify
+ (
+µÞl
+, 
+__nfds
+,  (*
+__fds
+),
+
+89 
+	`__glibc_objsize
+ (
+__fds
+),
+
+90 
+__fds
+, 
+__nfds
+, 
+__timeout
+, 
+__ss
+);
+
+91 
+	}
+}
+
+95 
+	g__END_DECLS
+
+
+	@/usr/include/bits/posix1_lim.h
+
+24 #iâdef 
+_BITS_POSIX1_LIM_H
+
+
+25 
+	#_BITS_POSIX1_LIM_H
+ 1
+
+	)
+
+27 
+	~<b™s/wÜdsize.h
+>
+
+32 
+	#_POSIX_AIO_LISTIO_MAX
+ 2
+
+	)
+
+35 
+	#_POSIX_AIO_MAX
+ 1
+
+	)
+
+38 
+	#_POSIX_ARG_MAX
+ 4096
+
+	)
+
+41 #ifdeà
+__USE_XOPEN2K
+
+
+42 
+	#_POSIX_CHILD_MAX
+ 25
+
+	)
+
+44 
+	#_POSIX_CHILD_MAX
+ 6
+
+	)
+
+48 
+	#_POSIX_DELAYTIMER_MAX
+ 32
+
+	)
+
+52 
+	#_POSIX_HOST_NAME_MAX
+ 255
+
+	)
+
+55 
+	#_POSIX_LINK_MAX
+ 8
+
+	)
+
+58 
+	#_POSIX_LOGIN_NAME_MAX
+ 9
+
+	)
+
+61 
+	#_POSIX_MAX_CANON
+ 255
+
+	)
+
+65 
+	#_POSIX_MAX_INPUT
+ 255
+
+	)
+
+68 
+	#_POSIX_MQ_OPEN_MAX
+ 8
+
+	)
+
+71 
+	#_POSIX_MQ_PRIO_MAX
+ 32
+
+	)
+
+74 
+	#_POSIX_NAME_MAX
+ 14
+
+	)
+
+77 #ifdeà
+__USE_XOPEN2K
+
+
+78 
+	#_POSIX_NGROUPS_MAX
+ 8
+
+	)
+
+80 
+	#_POSIX_NGROUPS_MAX
+ 0
+
+	)
+
+84 #ifdeà
+__USE_XOPEN2K
+
+
+85 
+	#_POSIX_OPEN_MAX
+ 20
+
+	)
+
+87 
+	#_POSIX_OPEN_MAX
+ 16
+
+	)
+
+90 #ià!
+defšed
+ 
+__USE_XOPEN2K
+ || defšed 
+__USE_GNU
+
+
+93 
+	#_POSIX_FD_SETSIZE
+ 
+_POSIX_OPEN_MAX
+
+
+	)
+
+97 
+	#_POSIX_PATH_MAX
+ 256
+
+	)
+
+100 
+	#_POSIX_PIPE_BUF
+ 512
+
+	)
+
+104 
+	#_POSIX_RE_DUP_MAX
+ 255
+
+	)
+
+107 
+	#_POSIX_RTSIG_MAX
+ 8
+
+	)
+
+110 
+	#_POSIX_SEM_NSEMS_MAX
+ 256
+
+	)
+
+113 
+	#_POSIX_SEM_VALUE_MAX
+ 32767
+
+	)
+
+116 
+	#_POSIX_SIGQUEUE_MAX
+ 32
+
+	)
+
+119 
+	#_POSIX_SSIZE_MAX
+ 32767
+
+	)
+
+122 
+	#_POSIX_STREAM_MAX
+ 8
+
+	)
+
+125 
+	#_POSIX_SYMLINK_MAX
+ 255
+
+	)
+
+129 
+	#_POSIX_SYMLOOP_MAX
+ 8
+
+	)
+
+132 
+	#_POSIX_TIMER_MAX
+ 32
+
+	)
+
+135 
+	#_POSIX_TTY_NAME_MAX
+ 9
+
+	)
+
+138 #ifdeà
+__USE_XOPEN2K
+
+
+139 
+	#_POSIX_TZNAME_MAX
+ 6
+
+	)
+
+141 
+	#_POSIX_TZNAME_MAX
+ 3
+
+	)
+
+144 #ià!
+defšed
+ 
+__USE_XOPEN2K
+ || defšed 
+__USE_GNU
+
+
+146 
+	#_POSIX_QLIMIT
+ 1
+
+	)
+
+150 
+	#_POSIX_HIWAT
+ 
+_POSIX_PIPE_BUF
+
+
+	)
+
+153 
+	#_POSIX_UIO_MAXIOV
+ 16
+
+	)
+
+157 
+	#_POSIX_CLOCKRES_MIN
+ 20000000
+
+	)
+
+161 
+	~<b™s/loÿl_lim.h
+>
+
+164 #iâdef 
+SSIZE_MAX
+
+
+168 #ià
+__WORDSIZE
+ =ð64 || 
+__WORDSIZE32_SIZE_ULONG
+
+
+169 
+	#SSIZE_MAX
+ 
+LONG_MAX
+
+
+	)
+
+171 
+	#SSIZE_MAX
+ 
+INT_MAX
+
+
+	)
+
+179 #iâdef 
+NGROUPS_MAX
+
+
+180 
+	#NGROUPS_MAX
+ 8
+
+	)
+
+	@/usr/include/bits/posix2_lim.h
+
+22 #iâdef 
+_BITS_POSIX2_LIM_H
+
+
+23 
+	#_BITS_POSIX2_LIM_H
+ 1
+
+	)
+
+27 
+	#_POSIX2_BC_BASE_MAX
+ 99
+
+	)
+
+30 
+	#_POSIX2_BC_DIM_MAX
+ 2048
+
+	)
+
+33 
+	#_POSIX2_BC_SCALE_MAX
+ 99
+
+	)
+
+36 
+	#_POSIX2_BC_STRING_MAX
+ 1000
+
+	)
+
+40 
+	#_POSIX2_COLL_WEIGHTS_MAX
+ 2
+
+	)
+
+44 
+	#_POSIX2_EXPR_NEST_MAX
+ 32
+
+	)
+
+47 
+	#_POSIX2_LINE_MAX
+ 2048
+
+	)
+
+51 
+	#_POSIX2_RE_DUP_MAX
+ 255
+
+	)
+
+55 
+	#_POSIX2_CHARCLASS_NAME_MAX
+ 14
+
+	)
+
+62 #iâdef 
+BC_BASE_MAX
+
+
+63 
+	#BC_BASE_MAX
+ 
+_POSIX2_BC_BASE_MAX
+
+
+	)
+
+65 #iâdef 
+BC_DIM_MAX
+
+
+66 
+	#BC_DIM_MAX
+ 
+_POSIX2_BC_DIM_MAX
+
+
+	)
+
+68 #iâdef 
+BC_SCALE_MAX
+
+
+69 
+	#BC_SCALE_MAX
+ 
+_POSIX2_BC_SCALE_MAX
+
+
+	)
+
+71 #iâdef 
+BC_STRING_MAX
+
+
+72 
+	#BC_STRING_MAX
+ 
+_POSIX2_BC_STRING_MAX
+
+
+	)
+
+74 #iâdef 
+COLL_WEIGHTS_MAX
+
+
+75 
+	#COLL_WEIGHTS_MAX
+ 255
+
+	)
+
+77 #iâdef 
+EXPR_NEST_MAX
+
+
+78 
+	#EXPR_NEST_MAX
+ 
+_POSIX2_EXPR_NEST_MAX
+
+
+	)
+
+80 #iâdef 
+LINE_MAX
+
+
+81 
+	#LINE_MAX
+ 
+_POSIX2_LINE_MAX
+
+
+	)
+
+83 #iâdef 
+CHARCLASS_NAME_MAX
+
+
+84 
+	#CHARCLASS_NAME_MAX
+ 2048
+
+	)
+
+88 
+	#RE_DUP_MAX
+ (0x7fff)
+
+	)
+
+	@/usr/include/bits/posix_opt.h
+
+19 #iâdef 
+_BITS_POSIX_OPT_H
+
+
+20 
+	#_BITS_POSIX_OPT_H
+ 1
+
+	)
+
+23 
+	#_POSIX_JOB_CONTROL
+ 1
+
+	)
+
+26 
+	#_POSIX_SAVED_IDS
+ 1
+
+	)
+
+32 
+	#_POSIX_PRIORITY_SCHEDULING
+ 200809L
+
+	)
+
+35 
+	#_POSIX_SYNCHRONIZED_IO
+ 200809L
+
+	)
+
+38 
+	#_POSIX_FSYNC
+ 200809L
+
+	)
+
+41 
+	#_POSIX_MAPPED_FILES
+ 200809L
+
+	)
+
+44 
+	#_POSIX_MEMLOCK
+ 200809L
+
+	)
+
+47 
+	#_POSIX_MEMLOCK_RANGE
+ 200809L
+
+	)
+
+50 
+	#_POSIX_MEMORY_PROTECTION
+ 200809L
+
+	)
+
+53 
+	#_POSIX_CHOWN_RESTRICTED
+ 0
+
+	)
+
+57 
+	#_POSIX_VDISABLE
+ '\0'
+
+	)
+
+60 
+	#_POSIX_NO_TRUNC
+ 1
+
+	)
+
+63 
+	#_XOPEN_REALTIME
+ 1
+
+	)
+
+66 
+	#_XOPEN_REALTIME_THREADS
+ 1
+
+	)
+
+69 
+	#_XOPEN_SHM
+ 1
+
+	)
+
+72 
+	#_POSIX_THREADS
+ 200809L
+
+	)
+
+75 
+	#_POSIX_REENTRANT_FUNCTIONS
+ 1
+
+	)
+
+76 
+	#_POSIX_THREAD_SAFE_FUNCTIONS
+ 200809L
+
+	)
+
+79 
+	#_POSIX_THREAD_PRIORITY_SCHEDULING
+ 200809L
+
+	)
+
+82 
+	#_POSIX_THREAD_ATTR_STACKSIZE
+ 200809L
+
+	)
+
+85 
+	#_POSIX_THREAD_ATTR_STACKADDR
+ 200809L
+
+	)
+
+88 
+	#_POSIX_THREAD_PRIO_INHERIT
+ 200809L
+
+	)
+
+92 
+	#_POSIX_THREAD_PRIO_PROTECT
+ 200809L
+
+	)
+
+94 #ifdeà
+__USE_XOPEN2K8
+
+
+96 
+	#_POSIX_THREAD_ROBUST_PRIO_INHERIT
+ 200809L
+
+	)
+
+99 
+	#_POSIX_THREAD_ROBUST_PRIO_PROTECT
+ -1
+
+	)
+
+103 
+	#_POSIX_SEMAPHORES
+ 200809L
+
+	)
+
+106 
+	#_POSIX_REALTIME_SIGNALS
+ 200809L
+
+	)
+
+109 
+	#_POSIX_ASYNCHRONOUS_IO
+ 200809L
+
+	)
+
+110 
+	#_POSIX_ASYNC_IO
+ 1
+
+	)
+
+112 
+	#_LFS_ASYNCHRONOUS_IO
+ 1
+
+	)
+
+114 
+	#_POSIX_PRIORITIZED_IO
+ 200809L
+
+	)
+
+117 
+	#_LFS64_ASYNCHRONOUS_IO
+ 1
+
+	)
+
+120 
+	#_LFS_LARGEFILE
+ 1
+
+	)
+
+121 
+	#_LFS64_LARGEFILE
+ 1
+
+	)
+
+122 
+	#_LFS64_STDIO
+ 1
+
+	)
+
+125 
+	#_POSIX_SHARED_MEMORY_OBJECTS
+ 200809L
+
+	)
+
+128 
+	#_POSIX_CPUTIME
+ 0
+
+	)
+
+131 
+	#_POSIX_THREAD_CPUTIME
+ 0
+
+	)
+
+134 
+	#_POSIX_REGEXP
+ 1
+
+	)
+
+137 
+	#_POSIX_READER_WRITER_LOCKS
+ 200809L
+
+	)
+
+140 
+	#_POSIX_SHELL
+ 1
+
+	)
+
+143 
+	#_POSIX_TIMEOUTS
+ 200809L
+
+	)
+
+146 
+	#_POSIX_SPIN_LOCKS
+ 200809L
+
+	)
+
+149 
+	#_POSIX_SPAWN
+ 200809L
+
+	)
+
+152 
+	#_POSIX_TIMERS
+ 200809L
+
+	)
+
+155 
+	#_POSIX_BARRIERS
+ 200809L
+
+	)
+
+158 
+	#_POSIX_MESSAGE_PASSING
+ 200809L
+
+	)
+
+161 
+	#_POSIX_THREAD_PROCESS_SHARED
+ 200809L
+
+	)
+
+164 
+	#_POSIX_MONOTONIC_CLOCK
+ 0
+
+	)
+
+167 
+	#_POSIX_CLOCK_SELECTION
+ 200809L
+
+	)
+
+170 
+	#_POSIX_ADVISORY_INFO
+ 200809L
+
+	)
+
+173 
+	#_POSIX_IPV6
+ 200809L
+
+	)
+
+176 
+	#_POSIX_RAW_SOCKETS
+ 200809L
+
+	)
+
+179 
+	#_POSIX2_CHAR_TERM
+ 200809L
+
+	)
+
+182 
+	#_POSIX_SPORADIC_SERVER
+ -1
+
+	)
+
+183 
+	#_POSIX_THREAD_SPORADIC_SERVER
+ -1
+
+	)
+
+186 
+	#_POSIX_TRACE
+ -1
+
+	)
+
+187 
+	#_POSIX_TRACE_EVENT_FILTER
+ -1
+
+	)
+
+188 
+	#_POSIX_TRACE_INHERIT
+ -1
+
+	)
+
+189 
+	#_POSIX_TRACE_LOG
+ -1
+
+	)
+
+192 
+	#_POSIX_TYPED_MEMORY_OBJECTS
+ -1
+
+	)
+
+	@/usr/include/bits/pthreadtypes.h
+
+19 #iâdeà
+_BITS_PTHREADTYPES_COMMON_H
+
+
+20 
+	#_BITS_PTHREADTYPES_COMMON_H
+ 1
+
+	)
+
+23 
+	~<b™s/th»ad-sh¬ed-ty³s.h
+>
+
+27 
+	t±h»ad_t
+;
+
+34 
+	m__size
+[
+__SIZEOF_PTHREAD_MUTEXATTR_T
+];
+
+35 
+	m__®ign
+;
+
+36 } 
+	t±h»ad_mu‹x©Œ_t
+;
+
+43 
+	m__size
+[
+__SIZEOF_PTHREAD_CONDATTR_T
+];
+
+44 
+	m__®ign
+;
+
+45 } 
+	t±h»ad_cÚd©Œ_t
+;
+
+49 
+	t±h»ad_key_t
+;
+
+53 
+	t__ONCE_ALIGNMENT
+ 
+	t±h»ad_Úû_t
+;
+
+56 
+	u±h»ad_©Œ_t
+
+
+58 
+	m__size
+[
+__SIZEOF_PTHREAD_ATTR_T
+];
+
+59 
+	m__®ign
+;
+
+61 #iâdeà
+__have_±h»ad_©Œ_t
+
+
+62 
+±h»ad_©Œ_t
+ 
+	t±h»ad_©Œ_t
+;
+
+63 
+	#__have_±h»ad_©Œ_t
+ 1
+
+	)
+
+69 
+__±h»ad_mu‹x_s
+ 
+	m__d©a
+;
+
+70 
+	m__size
+[
+__SIZEOF_PTHREAD_MUTEX_T
+];
+
+71 
+	m__®ign
+;
+
+72 } 
+	t±h»ad_mu‹x_t
+;
+
+77 
+__±h»ad_cÚd_s
+ 
+	m__d©a
+;
+
+78 
+	m__size
+[
+__SIZEOF_PTHREAD_COND_T
+];
+
+79 
+__ex‹nsiÚ__
+ 
+	m__®ign
+;
+
+80 } 
+	t±h»ad_cÚd_t
+;
+
+83 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K
+
+
+88 
+__±h»ad_rwlock_¬ch_t
+ 
+	m__d©a
+;
+
+89 
+	m__size
+[
+__SIZEOF_PTHREAD_RWLOCK_T
+];
+
+90 
+	m__®ign
+;
+
+91 } 
+	t±h»ad_rwlock_t
+;
+
+95 
+	m__size
+[
+__SIZEOF_PTHREAD_RWLOCKATTR_T
+];
+
+96 
+	m__®ign
+;
+
+97 } 
+	t±h»ad_rwlock©Œ_t
+;
+
+101 #ifdeà
+__USE_XOPEN2K
+
+
+103 vÞ©ž�
+	t±h»ad_¥šlock_t
+;
+
+110 
+	m__size
+[
+__SIZEOF_PTHREAD_BARRIER_T
+];
+
+111 
+	m__®ign
+;
+
+112 } 
+	t±h»ad_b¬r›r_t
+;
+
+116 
+	m__size
+[
+__SIZEOF_PTHREAD_BARRIERATTR_T
+];
+
+117 
+	m__®ign
+;
+
+118 } 
+	t±h»ad_b¬r›¿‰r_t
+;
+
+	@/usr/include/bits/sigaction.h
+
+19 #iâdeà
+_BITS_SIGACTION_H
+
+
+20 
+	#_BITS_SIGACTION_H
+ 1
+
+	)
+
+22 #iâdeà
+_SIGNAL_H
+
+
+27 
+	ssigaùiÚ
+
+
+30 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+34 
+__sighªdËr_t
+ 
+	m§_hªdËr
+;
+
+36 (*
+	m§_sigaùiÚ
+è(, 
+	msigšfo_t
+ *, *);
+
+38 
+	m__sigaùiÚ_hªdËr
+;
+
+39 
+	#§_hªdËr
+ 
+__sigaùiÚ_hªdËr
+.
+§_hªdËr
+
+
+	)
+
+40 
+	#§_sigaùiÚ
+ 
+__sigaùiÚ_hªdËr
+.
+§_sigaùiÚ
+
+
+	)
+
+42 
+__sighªdËr_t
+ 
+	m§_hªdËr
+;
+
+46 
+__sig£t_t
+ 
+	m§_mask
+;
+
+49 
+	m§_æags
+;
+
+52 (*
+	m§_»¡Ü”
+) ();
+
+56 
+	#SA_NOCLDSTOP
+ 1
+
+	)
+
+57 
+	#SA_NOCLDWAIT
+ 2
+
+	)
+
+58 
+	#SA_SIGINFO
+ 4
+
+	)
+
+60 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_MISC
+
+
+61 
+	#SA_ONSTACK
+ 0x08000000
+
+	)
+
+63 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+64 
+	#SA_RESTART
+ 0x10000000
+
+	)
+
+65 
+	#SA_NODEFER
+ 0x40000000
+
+	)
+
+67 
+	#SA_RESETHAND
+ 0x80000000
+
+	)
+
+69 #ifdeà
+__USE_MISC
+
+
+70 
+	#SA_INTERRUPT
+ 0x20000000
+
+	)
+
+73 
+	#SA_NOMASK
+ 
+SA_NODEFER
+
+
+	)
+
+74 
+	#SA_ONESHOT
+ 
+SA_RESETHAND
+
+
+	)
+
+75 
+	#SA_STACK
+ 
+SA_ONSTACK
+
+
+	)
+
+79 
+	#SIG_BLOCK
+ 0
+
+	)
+
+80 
+	#SIG_UNBLOCK
+ 1
+
+	)
+
+81 
+	#SIG_SETMASK
+ 2
+
+	)
+
+	@/usr/include/bits/sigcontext.h
+
+18 #iâdeà
+_BITS_SIGCONTEXT_H
+
+
+19 
+	#_BITS_SIGCONTEXT_H
+ 1
+
+	)
+
+21 #ià!
+defšed
+ 
+_SIGNAL_H
+ && !defšed 
+_SYS_UCONTEXT_H
+
+
+25 
+	~<b™s/ty³s.h
+>
+
+27 
+	#FP_XSTATE_MAGIC1
+ 0x46505853U
+
+	)
+
+28 
+	#FP_XSTATE_MAGIC2
+ 0x46505845U
+
+	)
+
+29 
+	#FP_XSTATE_MAGIC2_SIZE
+  (
+FP_XSTATE_MAGIC2
+)
+
+	)
+
+31 
+	s_åx_sw_by‹s
+
+
+33 
+__ušt32_t
+ 
+	mmagic1
+;
+
+34 
+__ušt32_t
+ 
+	mex‹nded_size
+;
+
+35 
+__ušt64_t
+ 
+	mx¡©e_bv
+;
+
+36 
+__ušt32_t
+ 
+	mx¡©e_size
+;
+
+37 
+__ušt32_t
+ 
+	m__glibc_»£rved1
+[7];
+
+40 
+	s_å»g
+
+
+42 
+	msignifiÿnd
+[4];
+
+43 
+	mexpÚ’t
+;
+
+46 
+	s_åx»g
+
+
+48 
+	msignifiÿnd
+[4];
+
+49 
+	mexpÚ’t
+;
+
+50 
+	m__glibc_»£rved1
+[3];
+
+53 
+	s_xmm»g
+
+
+55 
+__ušt32_t
+ 
+	m–em’t
+[4];
+
+60 #iâdeà
+__x86_64__
+
+
+62 
+	s_å¡©e
+
+
+65 
+__ušt32_t
+ 
+	mcw
+;
+
+66 
+__ušt32_t
+ 
+	msw
+;
+
+67 
+__ušt32_t
+ 
+	m�g
+;
+
+68 
+__ušt32_t
+ 
+	m�off
+;
+
+69 
+__ušt32_t
+ 
+	mcs£l
+;
+
+70 
+__ušt32_t
+ 
+	md©aoff
+;
+
+71 
+__ušt32_t
+ 
+	md©a£l
+;
+
+72 
+_å»g
+ 
+	m_¡
+[8];
+
+73 
+	m¡©us
+;
+
+74 
+	mmagic
+;
+
+77 
+__ušt32_t
+ 
+	m_fx¤_’v
+[6];
+
+78 
+__ušt32_t
+ 
+	mmxc¤
+;
+
+79 
+__ušt32_t
+ 
+	m__glibc_»£rved1
+;
+
+80 
+_åx»g
+ 
+	m_fx¤_¡
+[8];
+
+81 
+_xmm»g
+ 
+	m_xmm
+[8];
+
+82 
+__ušt32_t
+ 
+	m__glibc_»£rved2
+[56];
+
+85 #iâdeà
+sigcÚ‹xt_¡ruù
+
+
+90 
+	#sigcÚ‹xt_¡ruù
+ 
+sigcÚ‹xt
+
+
+	)
+
+93 
+	#X86_FXSR_MAGIC
+ 0x0000
+
+	)
+
+95 
+	ssigcÚ‹xt
+
+
+97 
+	mgs
+, 
+	m__gsh
+;
+
+98 
+	mfs
+, 
+	m__fsh
+;
+
+99 
+	mes
+, 
+	m__esh
+;
+
+100 
+	mds
+, 
+	m__dsh
+;
+
+101 
+	medi
+;
+
+102 
+	mesi
+;
+
+103 
+	mebp
+;
+
+104 
+	me¥
+;
+
+105 
+	mebx
+;
+
+106 
+	medx
+;
+
+107 
+	mecx
+;
+
+108 
+	m—x
+;
+
+109 
+	mŒ­no
+;
+
+110 
+	m”r
+;
+
+111 
+	me�
+;
+
+112 
+	mcs
+, 
+	m__csh
+;
+
+113 
+	meæags
+;
+
+114 
+	me¥_©_sigÇl
+;
+
+115 
+	mss
+, 
+	m__ssh
+;
+
+116 
+_å¡©e
+ * 
+	må¡©e
+;
+
+117 
+	mÞdmask
+;
+
+118 
+	mü2
+;
+
+123 
+	s_å¡©e
+
+
+126 
+__ušt16_t
+ 
+	mcwd
+;
+
+127 
+__ušt16_t
+ 
+	mswd
+;
+
+128 
+__ušt16_t
+ 
+	máw
+;
+
+129 
+__ušt16_t
+ 
+	mfÝ
+;
+
+130 
+__ušt64_t
+ 
+	mr�
+;
+
+131 
+__ušt64_t
+ 
+	mrdp
+;
+
+132 
+__ušt32_t
+ 
+	mmxc¤
+;
+
+133 
+__ušt32_t
+ 
+	mmxü_mask
+;
+
+134 
+_åx»g
+ 
+	m_¡
+[8];
+
+135 
+_xmm»g
+ 
+	m_xmm
+[16];
+
+136 
+__ušt32_t
+ 
+	m__glibc_»£rved1
+[24];
+
+139 
+	ssigcÚ‹xt
+
+
+141 
+__ušt64_t
+ 
+	mr8
+;
+
+142 
+__ušt64_t
+ 
+	mr9
+;
+
+143 
+__ušt64_t
+ 
+	mr10
+;
+
+144 
+__ušt64_t
+ 
+	mr11
+;
+
+145 
+__ušt64_t
+ 
+	mr12
+;
+
+146 
+__ušt64_t
+ 
+	mr13
+;
+
+147 
+__ušt64_t
+ 
+	mr14
+;
+
+148 
+__ušt64_t
+ 
+	mr15
+;
+
+149 
+__ušt64_t
+ 
+	mrdi
+;
+
+150 
+__ušt64_t
+ 
+	mrsi
+;
+
+151 
+__ušt64_t
+ 
+	mrbp
+;
+
+152 
+__ušt64_t
+ 
+	mrbx
+;
+
+153 
+__ušt64_t
+ 
+	mrdx
+;
+
+154 
+__ušt64_t
+ 
+	m¿x
+;
+
+155 
+__ušt64_t
+ 
+	mrcx
+;
+
+156 
+__ušt64_t
+ 
+	mr¥
+;
+
+157 
+__ušt64_t
+ 
+	mr�
+;
+
+158 
+__ušt64_t
+ 
+	meæags
+;
+
+159 
+	mcs
+;
+
+160 
+	mgs
+;
+
+161 
+	mfs
+;
+
+162 
+	m__·d0
+;
+
+163 
+__ušt64_t
+ 
+	m”r
+;
+
+164 
+__ušt64_t
+ 
+	mŒ­no
+;
+
+165 
+__ušt64_t
+ 
+	mÞdmask
+;
+
+166 
+__ušt64_t
+ 
+	mü2
+;
+
+167 
+__ex‹nsiÚ__
+ union
+
+169 
+_å¡©e
+ * 
+	må¡©e
+;
+
+170 
+__ušt64_t
+ 
+	m__å¡©e_wÜd
+;
+
+172 
+__ušt64_t
+ 
+	m__»£rved1
+ [8];
+
+177 
+	s_x§ve_hdr
+
+
+179 
+__ušt64_t
+ 
+	mx¡©e_bv
+;
+
+180 
+__ušt64_t
+ 
+	m__glibc_»£rved1
+[2];
+
+181 
+__ušt64_t
+ 
+	m__glibc_»£rved2
+[5];
+
+184 
+	s_ymmh_¡©e
+
+
+186 
+__ušt32_t
+ 
+	mymmh_¥aû
+[64];
+
+189 
+	s_x¡©e
+
+
+191 
+_å¡©e
+ 
+	må¡©e
+;
+
+192 
+_x§ve_hdr
+ 
+	mx¡©e_hdr
+;
+
+193 
+_ymmh_¡©e
+ 
+	mymmh
+;
+
+	@/usr/include/bits/sigevent-consts.h
+
+19 #iâdeà
+_BITS_SIGEVENT_CONSTS_H
+
+
+20 
+	#_BITS_SIGEVENT_CONSTS_H
+ 1
+
+	)
+
+22 #ià!
+defšed
+ 
+_SIGNAL_H
+ && !defšed 
+_AIO_H
+
+
+29 
+	mSIGEV_SIGNAL
+ = 0,
+
+30 
+	#SIGEV_SIGNAL
+ 
+SIGEV_SIGNAL
+
+
+	)
+
+31 
+	mSIGEV_NONE
+,
+
+32 
+	#SIGEV_NONE
+ 
+SIGEV_NONE
+
+
+	)
+
+33 
+	mSIGEV_THREAD
+,
+
+34 
+	#SIGEV_THREAD
+ 
+SIGEV_THREAD
+
+
+	)
+
+36 
+	mSIGEV_THREAD_ID
+ = 4
+
+38 
+	#SIGEV_THREAD_ID
+ 
+SIGEV_THREAD_ID
+
+
+	)
+
+	@/usr/include/bits/siginfo-consts.h
+
+19 #iâdeà
+_BITS_SIGINFO_CONSTS_H
+
+
+20 
+	#_BITS_SIGINFO_CONSTS_H
+ 1
+
+	)
+
+22 #iâdeà
+_SIGNAL_H
+
+
+28 
+	~<b™s/sigšfo-¬ch.h
+>
+
+29 #iâdeà
+__SI_ASYNCIO_AFTER_SIGIO
+
+
+30 
+	#__SI_ASYNCIO_AFTER_SIGIO
+ 1
+
+	)
+
+37 
+	mSI_ASYNCNL
+ = -60,
+
+38 
+	mSI_DETHREAD
+ = -7,
+
+40 
+	mSI_TKILL
+,
+
+41 
+	mSI_SIGIO
+,
+
+42 #ià
+__SI_ASYNCIO_AFTER_SIGIO
+
+
+43 
+	mSI_ASYNCIO
+,
+
+44 
+	mSI_MESGQ
+,
+
+45 
+	mSI_TIMER
+,
+
+47 
+	mSI_MESGQ
+,
+
+48 
+	mSI_TIMER
+,
+
+49 
+	mSI_ASYNCIO
+,
+
+51 
+	mSI_QUEUE
+,
+
+52 
+	mSI_USER
+,
+
+53 
+	mSI_KERNEL
+ = 0x80
+
+55 
+	#SI_ASYNCNL
+ 
+SI_ASYNCNL
+
+
+	)
+
+56 
+	#SI_DETHREAD
+ 
+SI_DETHREAD
+
+
+	)
+
+57 
+	#SI_TKILL
+ 
+SI_TKILL
+
+
+	)
+
+58 
+	#SI_SIGIO
+ 
+SI_SIGIO
+
+
+	)
+
+59 
+	#SI_ASYNCIO
+ 
+SI_ASYNCIO
+
+
+	)
+
+60 
+	#SI_MESGQ
+ 
+SI_MESGQ
+
+
+	)
+
+61 
+	#SI_TIMER
+ 
+SI_TIMER
+
+
+	)
+
+62 
+	#SI_ASYNCIO
+ 
+SI_ASYNCIO
+
+
+	)
+
+63 
+	#SI_QUEUE
+ 
+SI_QUEUE
+
+
+	)
+
+64 
+	#SI_USER
+ 
+SI_USER
+
+
+	)
+
+65 
+	#SI_KERNEL
+ 
+SI_KERNEL
+
+
+	)
+
+69 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+73 
+	mILL_ILLOPC
+ = 1,
+
+74 
+	#ILL_ILLOPC
+ 
+ILL_ILLOPC
+
+
+	)
+
+75 
+	mILL_ILLOPN
+,
+
+76 
+	#ILL_ILLOPN
+ 
+ILL_ILLOPN
+
+
+	)
+
+77 
+	mILL_ILLADR
+,
+
+78 
+	#ILL_ILLADR
+ 
+ILL_ILLADR
+
+
+	)
+
+79 
+	mILL_ILLTRP
+,
+
+80 
+	#ILL_ILLTRP
+ 
+ILL_ILLTRP
+
+
+	)
+
+81 
+	mILL_PRVOPC
+,
+
+82 
+	#ILL_PRVOPC
+ 
+ILL_PRVOPC
+
+
+	)
+
+83 
+	mILL_PRVREG
+,
+
+84 
+	#ILL_PRVREG
+ 
+ILL_PRVREG
+
+
+	)
+
+85 
+	mILL_COPROC
+,
+
+86 
+	#ILL_COPROC
+ 
+ILL_COPROC
+
+
+	)
+
+87 
+	mILL_BADSTK
+,
+
+88 
+	#ILL_BADSTK
+ 
+ILL_BADSTK
+
+
+	)
+
+89 
+	mILL_BADIADDR
+
+
+90 
+	#ILL_BADIADDR
+ 
+ILL_BADIADDR
+
+
+	)
+
+96 
+	mFPE_INTDIV
+ = 1,
+
+97 
+	#FPE_INTDIV
+ 
+FPE_INTDIV
+
+
+	)
+
+98 
+	mFPE_INTOVF
+,
+
+99 
+	#FPE_INTOVF
+ 
+FPE_INTOVF
+
+
+	)
+
+100 
+	mFPE_FLTDIV
+,
+
+101 
+	#FPE_FLTDIV
+ 
+FPE_FLTDIV
+
+
+	)
+
+102 
+	mFPE_FLTOVF
+,
+
+103 
+	#FPE_FLTOVF
+ 
+FPE_FLTOVF
+
+
+	)
+
+104 
+	mFPE_FLTUND
+,
+
+105 
+	#FPE_FLTUND
+ 
+FPE_FLTUND
+
+
+	)
+
+106 
+	mFPE_FLTRES
+,
+
+107 
+	#FPE_FLTRES
+ 
+FPE_FLTRES
+
+
+	)
+
+108 
+	mFPE_FLTINV
+,
+
+109 
+	#FPE_FLTINV
+ 
+FPE_FLTINV
+
+
+	)
+
+110 
+	mFPE_FLTSUB
+,
+
+111 
+	#FPE_FLTSUB
+ 
+FPE_FLTSUB
+
+
+	)
+
+112 
+	mFPE_FLTUNK
+ = 14,
+
+113 
+	#FPE_FLTUNK
+ 
+FPE_FLTUNK
+
+
+	)
+
+114 
+	mFPE_CONDTRAP
+
+
+115 
+	#FPE_CONDTRAP
+ 
+FPE_CONDTRAP
+
+
+	)
+
+121 
+	mSEGV_MAPERR
+ = 1,
+
+122 
+	#SEGV_MAPERR
+ 
+SEGV_MAPERR
+
+
+	)
+
+123 
+	mSEGV_ACCERR
+,
+
+124 
+	#SEGV_ACCERR
+ 
+SEGV_ACCERR
+
+
+	)
+
+125 
+	mSEGV_BNDERR
+,
+
+126 
+	#SEGV_BNDERR
+ 
+SEGV_BNDERR
+
+
+	)
+
+127 
+	mSEGV_PKUERR
+,
+
+128 
+	#SEGV_PKUERR
+ 
+SEGV_PKUERR
+
+
+	)
+
+129 
+	mSEGV_ACCADI
+,
+
+130 
+	#SEGV_ACCADI
+ 
+SEGV_ACCADI
+
+
+	)
+
+131 
+	mSEGV_ADIDERR
+,
+
+132 
+	#SEGV_ADIDERR
+ 
+SEGV_ADIDERR
+
+
+	)
+
+133 
+	mSEGV_ADIPERR
+,
+
+134 
+	#SEGV_ADIPERR
+ 
+SEGV_ADIPERR
+
+
+	)
+
+135 
+	mSEGV_MTEAERR
+,
+
+136 
+	#SEGV_MTEAERR
+ 
+SEGV_MTEAERR
+
+
+	)
+
+137 
+	mSEGV_MTESERR
+
+
+138 
+	#SEGV_MTESERR
+ 
+SEGV_MTESERR
+
+
+	)
+
+144 
+	mBUS_ADRALN
+ = 1,
+
+145 
+	#BUS_ADRALN
+ 
+BUS_ADRALN
+
+
+	)
+
+146 
+	mBUS_ADRERR
+,
+
+147 
+	#BUS_ADRERR
+ 
+BUS_ADRERR
+
+
+	)
+
+148 
+	mBUS_OBJERR
+,
+
+149 
+	#BUS_OBJERR
+ 
+BUS_OBJERR
+
+
+	)
+
+150 
+	mBUS_MCEERR_AR
+,
+
+151 
+	#BUS_MCEERR_AR
+ 
+BUS_MCEERR_AR
+
+
+	)
+
+152 
+	mBUS_MCEERR_AO
+
+
+153 
+	#BUS_MCEERR_AO
+ 
+BUS_MCEERR_AO
+
+
+	)
+
+157 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+161 
+	mTRAP_BRKPT
+ = 1,
+
+162 
+	#TRAP_BRKPT
+ 
+TRAP_BRKPT
+
+
+	)
+
+163 
+	mTRAP_TRACE
+,
+
+164 
+	#TRAP_TRACE
+ 
+TRAP_TRACE
+
+
+	)
+
+165 
+	mTRAP_BRANCH
+,
+
+166 
+	#TRAP_BRANCH
+ 
+TRAP_BRANCH
+
+
+	)
+
+167 
+	mTRAP_HWBKPT
+,
+
+168 
+	#TRAP_HWBKPT
+ 
+TRAP_HWBKPT
+
+
+	)
+
+169 
+	mTRAP_UNK
+
+
+170 
+	#TRAP_UNK
+ 
+TRAP_UNK
+
+
+	)
+
+174 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+178 
+	mCLD_EXITED
+ = 1,
+
+179 
+	#CLD_EXITED
+ 
+CLD_EXITED
+
+
+	)
+
+180 
+	mCLD_KILLED
+,
+
+181 
+	#CLD_KILLED
+ 
+CLD_KILLED
+
+
+	)
+
+182 
+	mCLD_DUMPED
+,
+
+183 
+	#CLD_DUMPED
+ 
+CLD_DUMPED
+
+
+	)
+
+184 
+	mCLD_TRAPPED
+,
+
+185 
+	#CLD_TRAPPED
+ 
+CLD_TRAPPED
+
+
+	)
+
+186 
+	mCLD_STOPPED
+,
+
+187 
+	#CLD_STOPPED
+ 
+CLD_STOPPED
+
+
+	)
+
+188 
+	mCLD_CONTINUED
+
+
+189 
+	#CLD_CONTINUED
+ 
+CLD_CONTINUED
+
+
+	)
+
+195 
+	mPOLL_IN
+ = 1,
+
+196 
+	#POLL_IN
+ 
+POLL_IN
+
+
+	)
+
+197 
+	mPOLL_OUT
+,
+
+198 
+	#POLL_OUT
+ 
+POLL_OUT
+
+
+	)
+
+199 
+	mPOLL_MSG
+,
+
+200 
+	#POLL_MSG
+ 
+POLL_MSG
+
+
+	)
+
+201 
+	mPOLL_ERR
+,
+
+202 
+	#POLL_ERR
+ 
+POLL_ERR
+
+
+	)
+
+203 
+	mPOLL_PRI
+,
+
+204 
+	#POLL_PRI
+ 
+POLL_PRI
+
+
+	)
+
+205 
+	mPOLL_HUP
+
+
+206 
+	#POLL_HUP
+ 
+POLL_HUP
+
+
+	)
+
+212 #ifdeà
+__USE_GNU
+
+
+213 
+	~<b™s/sigšfo-cÚ¡s-¬ch.h
+>
+
+	@/usr/include/bits/signal_ext.h
+
+19 #iâdeà
+_SIGNAL_H
+
+
+23 #ifdeà
+__USE_GNU
+
+
+29 

+tgkžl
+ (
+__pid_t
+ 
+__tgid
+, __pid_ˆ
+__tid
+, 
+__sigÇl
+);
+
+	@/usr/include/bits/signum-generic.h
+
+19 #iâdef 
+_BITS_SIGNUM_GENERIC_H
+
+
+20 
+	#_BITS_SIGNUM_GENERIC_H
+ 1
+
+	)
+
+22 #iâdeà
+_SIGNAL_H
+
+
+28 
+	#SIG_ERR
+ ((
+__sighªdËr_t
+è-1è
+
+	)
+
+29 
+	#SIG_DFL
+ ((
+__sighªdËr_t
+è0è
+
+	)
+
+30 
+	#SIG_IGN
+ ((
+__sighªdËr_t
+è1è
+
+	)
+
+32 #ifdeà
+__USE_XOPEN
+
+
+33 
+	#SIG_HOLD
+ ((
+__sighªdËr_t
+è2è
+
+	)
+
+48 
+	#SIGINT
+ 2
+
+	)
+
+49 
+	#SIGILL
+ 4
+
+	)
+
+50 
+	#SIGABRT
+ 6
+
+	)
+
+51 
+	#SIGFPE
+ 8
+
+	)
+
+52 
+	#SIGSEGV
+ 11
+
+	)
+
+53 
+	#SIGTERM
+ 15
+
+	)
+
+56 
+	#SIGHUP
+ 1
+
+	)
+
+57 
+	#SIGQUIT
+ 3
+
+	)
+
+58 
+	#SIGTRAP
+ 5
+
+	)
+
+59 
+	#SIGKILL
+ 9
+
+	)
+
+60 
+	#SIGPIPE
+ 13
+
+	)
+
+61 
+	#SIGALRM
+ 14
+
+	)
+
+64 
+	#SIGIO
+ 
+SIGPOLL
+
+
+	)
+
+65 
+	#SIGIOT
+ 
+SIGABRT
+
+
+	)
+
+66 
+	#SIGCLD
+ 
+SIGCHLD
+
+
+	)
+
+76 
+	~<b™s/signum-¬ch.h
+>
+
+79 
+	#_NSIG
+ (
+__SIGRTMAX
+ + 1)
+
+	)
+
+	@/usr/include/bits/sigstack.h
+
+19 #iâdeà
+_BITS_SIGSTACK_H
+
+
+20 
+	#_BITS_SIGSTACK_H
+ 1
+
+	)
+
+22 #ià!
+defšed
+ 
+_SIGNAL_H
+ && !defšed 
+_SYS_UCONTEXT_H
+
+
+27 
+	#MINSIGSTKSZ
+ 2048
+
+	)
+
+30 
+	#SIGSTKSZ
+ 8192
+
+	)
+
+	@/usr/include/bits/sigstksz.h
+
+19 #iâdeà
+_SIGNAL_H
+
+
+23 #ià
+defšed
+ 
+__USE_DYNAMIC_STACK_SIZE
+ && __USE_DYNAMIC_STACK_SIZE
+
+24 
+	~<uni¡d.h
+>
+
+27 #undeà
+SIGSTKSZ
+
+
+28 
+	#SIGSTKSZ
+ 
+	`syscÚf
+ (
+_SC_SIGSTKSZ
+)
+
+	)
+
+31 #undeà
+MINSIGSTKSZ
+
+
+32 
+	#MINSIGSTKSZ
+ 
+SIGSTKSZ
+
+
+	)
+
+	@/usr/include/bits/sigthread.h
+
+19 #iâdeà
+_BITS_SIGTHREAD_H
+
+
+20 
+	#_BITS_SIGTHREAD_H
+ 1
+
+	)
+
+22 #ià!
+defšed
+ 
+_SIGNAL_H
+ && !defšed 
+_PTHREAD_H
+
+
+27 
+	~<b™s/ty³s/__sig£t_t.h
+>
+
+31 

+	$±h»ad_sigmask
+ (
+__how
+,
+
+32 cÚ¡ 
+__sig£t_t
+ *
+__»¡riù
+ 
+__Ãwmask
+,
+
+33 
+__sig£t_t
+ *
+__»¡riù
+ 
+__Þdmask
+)
+__THROW
+;
+
+36 

+	$±h»ad_kžl
+ (
+±h»ad_t
+ 
+__th»adid
+, 
+__signo
+è
+__THROW
+;
+
+38 #ifdeà
+__USE_GNU
+
+
+40 

+	$±h»ad_sigqueue
+ (
+±h»ad_t
+ 
+__th»adid
+, 
+__signo
+,
+
+41 cÚ¡ 
+sigv®
+ 
+__v®ue
+è
+__THROW
+;
+
+	@/usr/include/bits/sockaddr.h
+
+23 #iâdeà
+_BITS_SOCKADDR_H
+
+
+24 
+	#_BITS_SOCKADDR_H
+ 1
+
+	)
+
+28 
+	t§_çmžy_t
+;
+
+34 
+	#__SOCKADDR_COMMON
+(
+§_´efix
+) \
+
+35 
+§_çmžy_t
+ 
+§_´efix
+##
+çmžy
+
+
+	)
+
+37 
+	#__SOCKADDR_COMMON_SIZE
+ ( ())
+
+	)
+
+40 
+	#_SS_SIZE
+ 128
+
+	)
+
+	@/usr/include/bits/socket.h
+
+19 #iâdeà
+__BITS_SOCKET_H
+
+
+20 
+	#__BITS_SOCKET_H
+
+
+	)
+
+22 #iâdeà
+_SYS_SOCKET_H
+
+
+26 
+	#__Ãed_size_t
+
+
+	)
+
+27 
+	~<¡ddef.h
+>
+
+29 
+	~<sys/ty³s.h
+>
+
+32 #iâdeà
+__sockËn_t_defšed
+
+
+33 
+__sockËn_t
+ 
+	tsockËn_t
+;
+
+34 
+	#__sockËn_t_defšed
+
+
+	)
+
+38 
+	~<b™s/sock‘_ty³.h
+>
+
+41 
+	#PF_UNSPEC
+ 0
+
+	)
+
+42 
+	#PF_LOCAL
+ 1
+
+	)
+
+43 
+	#PF_UNIX
+ 
+PF_LOCAL
+
+
+	)
+
+44 
+	#PF_FILE
+ 
+PF_LOCAL
+
+
+	)
+
+45 
+	#PF_INET
+ 2
+
+	)
+
+46 
+	#PF_AX25
+ 3
+
+	)
+
+47 
+	#PF_IPX
+ 4
+
+	)
+
+48 
+	#PF_APPLETALK
+ 5
+
+	)
+
+49 
+	#PF_NETROM
+ 6
+
+	)
+
+50 
+	#PF_BRIDGE
+ 7
+
+	)
+
+51 
+	#PF_ATMPVC
+ 8
+
+	)
+
+52 
+	#PF_X25
+ 9
+
+	)
+
+53 
+	#PF_INET6
+ 10
+
+	)
+
+54 
+	#PF_ROSE
+ 11
+
+	)
+
+55 
+	#PF_DECÃt
+ 12
+
+	)
+
+56 
+	#PF_NETBEUI
+ 13
+
+	)
+
+57 
+	#PF_SECURITY
+ 14
+
+	)
+
+58 
+	#PF_KEY
+ 15
+
+	)
+
+59 
+	#PF_NETLINK
+ 16
+
+	)
+
+60 
+	#PF_ROUTE
+ 
+PF_NETLINK
+
+
+	)
+
+61 
+	#PF_PACKET
+ 17
+
+	)
+
+62 
+	#PF_ASH
+ 18
+
+	)
+
+63 
+	#PF_ECONET
+ 19
+
+	)
+
+64 
+	#PF_ATMSVC
+ 20
+
+	)
+
+65 
+	#PF_RDS
+ 21
+
+	)
+
+66 
+	#PF_SNA
+ 22
+
+	)
+
+67 
+	#PF_IRDA
+ 23
+
+	)
+
+68 
+	#PF_PPPOX
+ 24
+
+	)
+
+69 
+	#PF_WANPIPE
+ 25
+
+	)
+
+70 
+	#PF_LLC
+ 26
+
+	)
+
+71 
+	#PF_IB
+ 27
+
+	)
+
+72 
+	#PF_MPLS
+ 28
+
+	)
+
+73 
+	#PF_CAN
+ 29
+
+	)
+
+74 
+	#PF_TIPC
+ 30
+
+	)
+
+75 
+	#PF_BLUETOOTH
+ 31
+
+	)
+
+76 
+	#PF_IUCV
+ 32
+
+	)
+
+77 
+	#PF_RXRPC
+ 33
+
+	)
+
+78 
+	#PF_ISDN
+ 34
+
+	)
+
+79 
+	#PF_PHONET
+ 35
+
+	)
+
+80 
+	#PF_IEEE802154
+ 36
+
+	)
+
+81 
+	#PF_CAIF
+ 37
+
+	)
+
+82 
+	#PF_ALG
+ 38
+
+	)
+
+83 
+	#PF_NFC
+ 39
+
+	)
+
+84 
+	#PF_VSOCK
+ 40
+
+	)
+
+85 
+	#PF_KCM
+ 41
+
+	)
+
+86 
+	#PF_QIPCRTR
+ 42
+
+	)
+
+87 
+	#PF_SMC
+ 43
+
+	)
+
+88 
+	#PF_XDP
+ 44
+
+	)
+
+89 
+	#PF_MCTP
+ 45
+
+	)
+
+90 
+	#PF_MAX
+ 46
+
+	)
+
+93 
+	#AF_UNSPEC
+ 
+PF_UNSPEC
+
+
+	)
+
+94 
+	#AF_LOCAL
+ 
+PF_LOCAL
+
+
+	)
+
+95 
+	#AF_UNIX
+ 
+PF_UNIX
+
+
+	)
+
+96 
+	#AF_FILE
+ 
+PF_FILE
+
+
+	)
+
+97 
+	#AF_INET
+ 
+PF_INET
+
+
+	)
+
+98 
+	#AF_AX25
+ 
+PF_AX25
+
+
+	)
+
+99 
+	#AF_IPX
+ 
+PF_IPX
+
+
+	)
+
+100 
+	#AF_APPLETALK
+ 
+PF_APPLETALK
+
+
+	)
+
+101 
+	#AF_NETROM
+ 
+PF_NETROM
+
+
+	)
+
+102 
+	#AF_BRIDGE
+ 
+PF_BRIDGE
+
+
+	)
+
+103 
+	#AF_ATMPVC
+ 
+PF_ATMPVC
+
+
+	)
+
+104 
+	#AF_X25
+ 
+PF_X25
+
+
+	)
+
+105 
+	#AF_INET6
+ 
+PF_INET6
+
+
+	)
+
+106 
+	#AF_ROSE
+ 
+PF_ROSE
+
+
+	)
+
+107 
+	#AF_DECÃt
+ 
+PF_DECÃt
+
+
+	)
+
+108 
+	#AF_NETBEUI
+ 
+PF_NETBEUI
+
+
+	)
+
+109 
+	#AF_SECURITY
+ 
+PF_SECURITY
+
+
+	)
+
+110 
+	#AF_KEY
+ 
+PF_KEY
+
+
+	)
+
+111 
+	#AF_NETLINK
+ 
+PF_NETLINK
+
+
+	)
+
+112 
+	#AF_ROUTE
+ 
+PF_ROUTE
+
+
+	)
+
+113 
+	#AF_PACKET
+ 
+PF_PACKET
+
+
+	)
+
+114 
+	#AF_ASH
+ 
+PF_ASH
+
+
+	)
+
+115 
+	#AF_ECONET
+ 
+PF_ECONET
+
+
+	)
+
+116 
+	#AF_ATMSVC
+ 
+PF_ATMSVC
+
+
+	)
+
+117 
+	#AF_RDS
+ 
+PF_RDS
+
+
+	)
+
+118 
+	#AF_SNA
+ 
+PF_SNA
+
+
+	)
+
+119 
+	#AF_IRDA
+ 
+PF_IRDA
+
+
+	)
+
+120 
+	#AF_PPPOX
+ 
+PF_PPPOX
+
+
+	)
+
+121 
+	#AF_WANPIPE
+ 
+PF_WANPIPE
+
+
+	)
+
+122 
+	#AF_LLC
+ 
+PF_LLC
+
+
+	)
+
+123 
+	#AF_IB
+ 
+PF_IB
+
+
+	)
+
+124 
+	#AF_MPLS
+ 
+PF_MPLS
+
+
+	)
+
+125 
+	#AF_CAN
+ 
+PF_CAN
+
+
+	)
+
+126 
+	#AF_TIPC
+ 
+PF_TIPC
+
+
+	)
+
+127 
+	#AF_BLUETOOTH
+ 
+PF_BLUETOOTH
+
+
+	)
+
+128 
+	#AF_IUCV
+ 
+PF_IUCV
+
+
+	)
+
+129 
+	#AF_RXRPC
+ 
+PF_RXRPC
+
+
+	)
+
+130 
+	#AF_ISDN
+ 
+PF_ISDN
+
+
+	)
+
+131 
+	#AF_PHONET
+ 
+PF_PHONET
+
+
+	)
+
+132 
+	#AF_IEEE802154
+ 
+PF_IEEE802154
+
+
+	)
+
+133 
+	#AF_CAIF
+ 
+PF_CAIF
+
+
+	)
+
+134 
+	#AF_ALG
+ 
+PF_ALG
+
+
+	)
+
+135 
+	#AF_NFC
+ 
+PF_NFC
+
+
+	)
+
+136 
+	#AF_VSOCK
+ 
+PF_VSOCK
+
+
+	)
+
+137 
+	#AF_KCM
+ 
+PF_KCM
+
+
+	)
+
+138 
+	#AF_QIPCRTR
+ 
+PF_QIPCRTR
+
+
+	)
+
+139 
+	#AF_SMC
+ 
+PF_SMC
+
+
+	)
+
+140 
+	#AF_XDP
+ 
+PF_XDP
+
+
+	)
+
+141 
+	#AF_MCTP
+ 
+PF_MCTP
+
+
+	)
+
+142 
+	#AF_MAX
+ 
+PF_MAX
+
+
+	)
+
+148 
+	#SOL_RAW
+ 255
+
+	)
+
+149 
+	#SOL_DECNET
+ 261
+
+	)
+
+150 
+	#SOL_X25
+ 262
+
+	)
+
+151 
+	#SOL_PACKET
+ 263
+
+	)
+
+152 
+	#SOL_ATM
+ 264
+
+	)
+
+153 
+	#SOL_AAL
+ 265
+
+	)
+
+154 
+	#SOL_IRDA
+ 266
+
+	)
+
+155 
+	#SOL_NETBEUI
+ 267
+
+	)
+
+156 
+	#SOL_LLC
+ 268
+
+	)
+
+157 
+	#SOL_DCCP
+ 269
+
+	)
+
+158 
+	#SOL_NETLINK
+ 270
+
+	)
+
+159 
+	#SOL_TIPC
+ 271
+
+	)
+
+160 
+	#SOL_RXRPC
+ 272
+
+	)
+
+161 
+	#SOL_PPPOL2TP
+ 273
+
+	)
+
+162 
+	#SOL_BLUETOOTH
+ 274
+
+	)
+
+163 
+	#SOL_PNPIPE
+ 275
+
+	)
+
+164 
+	#SOL_RDS
+ 276
+
+	)
+
+165 
+	#SOL_IUCV
+ 277
+
+	)
+
+166 
+	#SOL_CAIF
+ 278
+
+	)
+
+167 
+	#SOL_ALG
+ 279
+
+	)
+
+168 
+	#SOL_NFC
+ 280
+
+	)
+
+169 
+	#SOL_KCM
+ 281
+
+	)
+
+170 
+	#SOL_TLS
+ 282
+
+	)
+
+171 
+	#SOL_XDP
+ 283
+
+	)
+
+172 
+	#SOL_MPTCP
+ 284
+
+	)
+
+173 
+	#SOL_MCTP
+ 285
+
+	)
+
+174 
+	#SOL_SMC
+ 286
+
+	)
+
+177 
+	#SOMAXCONN
+ 4096
+
+	)
+
+180 
+	~<b™s/sockaddr.h
+>
+
+183 
+	ssockaddr
+
+
+185 
+__SOCKADDR_COMMON
+ (
+§_
+);
+
+186 
+	m§_d©a
+[14];
+
+192 
+	#__ss_®igÁy³
+ 
+
+	)
+
+193 
+	#_SS_PADSIZE
+ \
+
+194 (
+_SS_SIZE
+ - 
+__SOCKADDR_COMMON_SIZE
+ -  (
+__ss_®igÁy³
+))
+
+	)
+
+196 
+	ssockaddr_¡Üage
+
+
+198 
+__SOCKADDR_COMMON
+ (
+ss_
+);
+
+199 
+	m__ss_·ddšg
+[
+_SS_PADSIZE
+];
+
+200 
+__ss_®igÁy³
+ 
+	m__ss_®ign
+;
+
+207 
+	mMSG_OOB
+ = 0x01,
+
+208 
+	#MSG_OOB
+ 
+MSG_OOB
+
+
+	)
+
+209 
+	mMSG_PEEK
+ = 0x02,
+
+210 
+	#MSG_PEEK
+ 
+MSG_PEEK
+
+
+	)
+
+211 
+	mMSG_DONTROUTE
+ = 0x04,
+
+212 
+	#MSG_DONTROUTE
+ 
+MSG_DONTROUTE
+
+
+	)
+
+213 #ifdeà
+__USE_GNU
+
+
+215 
+	mMSG_TRYHARD
+ = 
+MSG_DONTROUTE
+,
+
+216 
+	#MSG_TRYHARD
+ 
+MSG_DONTROUTE
+
+
+	)
+
+218 
+	mMSG_CTRUNC
+ = 0x08,
+
+219 
+	#MSG_CTRUNC
+ 
+MSG_CTRUNC
+
+
+	)
+
+220 
+	mMSG_PROXY
+ = 0x10,
+
+221 
+	#MSG_PROXY
+ 
+MSG_PROXY
+
+
+	)
+
+222 
+	mMSG_TRUNC
+ = 0x20,
+
+223 
+	#MSG_TRUNC
+ 
+MSG_TRUNC
+
+
+	)
+
+224 
+	mMSG_DONTWAIT
+ = 0x40,
+
+225 
+	#MSG_DONTWAIT
+ 
+MSG_DONTWAIT
+
+
+	)
+
+226 
+	mMSG_EOR
+ = 0x80,
+
+227 
+	#MSG_EOR
+ 
+MSG_EOR
+
+
+	)
+
+228 
+	mMSG_WAITALL
+ = 0x100,
+
+229 
+	#MSG_WAITALL
+ 
+MSG_WAITALL
+
+
+	)
+
+230 
+	mMSG_FIN
+ = 0x200,
+
+231 
+	#MSG_FIN
+ 
+MSG_FIN
+
+
+	)
+
+232 
+	mMSG_SYN
+ = 0x400,
+
+233 
+	#MSG_SYN
+ 
+MSG_SYN
+
+
+	)
+
+234 
+	mMSG_CONFIRM
+ = 0x800,
+
+235 
+	#MSG_CONFIRM
+ 
+MSG_CONFIRM
+
+
+	)
+
+236 
+	mMSG_RST
+ = 0x1000,
+
+237 
+	#MSG_RST
+ 
+MSG_RST
+
+
+	)
+
+238 
+	mMSG_ERRQUEUE
+ = 0x2000,
+
+239 
+	#MSG_ERRQUEUE
+ 
+MSG_ERRQUEUE
+
+
+	)
+
+240 
+	mMSG_NOSIGNAL
+ = 0x4000,
+
+241 
+	#MSG_NOSIGNAL
+ 
+MSG_NOSIGNAL
+
+
+	)
+
+242 
+	mMSG_MORE
+ = 0x8000,
+
+243 
+	#MSG_MORE
+ 
+MSG_MORE
+
+
+	)
+
+244 
+	mMSG_WAITFORONE
+ = 0x10000,
+
+245 
+	#MSG_WAITFORONE
+ 
+MSG_WAITFORONE
+
+
+	)
+
+246 
+	mMSG_BATCH
+ = 0x40000,
+
+247 
+	#MSG_BATCH
+ 
+MSG_BATCH
+
+
+	)
+
+248 
+	mMSG_ZEROCOPY
+ = 0x4000000,
+
+249 
+	#MSG_ZEROCOPY
+ 
+MSG_ZEROCOPY
+
+
+	)
+
+250 
+	mMSG_FASTOPEN
+ = 0x20000000,
+
+251 
+	#MSG_FASTOPEN
+ 
+MSG_FASTOPEN
+
+
+	)
+
+253 
+	mMSG_CMSG_CLOEXEC
+ = 0x40000000
+
+256 
+	#MSG_CMSG_CLOEXEC
+ 
+MSG_CMSG_CLOEXEC
+
+
+	)
+
+262 
+	smsghdr
+
+
+264 *
+	mmsg_Çme
+;
+
+265 
+sockËn_t
+ 
+	mmsg_Çm–’
+;
+
+267 
+iovec
+ *
+	mmsg_iov
+;
+
+268 
+size_t
+ 
+	mmsg_iovËn
+;
+
+270 *
+	mmsg_cÚŒÞ
+;
+
+271 
+size_t
+ 
+	mmsg_cÚŒÞËn
+;
+
+276 
+	mmsg_æags
+;
+
+280 
+	scmsghdr
+
+
+282 
+size_t
+ 
+	mcmsg_Ën
+;
+
+287 
+	mcmsg_Ëv–
+;
+
+288 
+	mcmsg_ty³
+;
+
+289 #ià
+__glibc_c99_æex¬r_avažabË
+
+
+290 
+__ex‹nsiÚ__
+ 
+__cmsg_d©a
+ 
+	m__æex¬r
+;
+
+295 #ià
+__glibc_c99_æex¬r_avažabË
+
+
+296 
+	#CMSG_DATA
+(
+cmsg
+è((cmsg)->
+__cmsg_d©a
+)
+
+	)
+
+298 
+	#CMSG_DATA
+(
+cmsg
+è((*è((
+cmsghdr
+ *è(cmsgè+ 1))
+
+	)
+
+300 
+	#CMSG_NXTHDR
+(
+mhdr
+, 
+cmsg
+è
+	`__cmsg_nxthdr
+ (mhdr, cmsg)
+
+	)
+
+301 
+	#CMSG_FIRSTHDR
+(
+mhdr
+) \
+
+302 ((
+size_t
+è(
+mhdr
+)->
+msg_cÚŒÞËn
+ >ð (
+cmsghdr
+) \
+
+303 ? (
+cmsghdr
+ *è(
+mhdr
+)->
+msg_cÚŒÞ
+ : (cmsghd¸*è0)
+
+	)
+
+304 
+	#CMSG_ALIGN
+(
+Ën
+è((Ö’è+  (
+size_t
+) - 1) \
+
+305 & (
+size_t
+è~( (size_tè- 1))
+
+	)
+
+306 
+	#CMSG_SPACE
+(
+Ën
+è(
+	`CMSG_ALIGN
+ (len) \
+
+307 + 
+	`CMSG_ALIGN
+ ( (
+cmsghdr
+)))
+
+	)
+
+308 
+	#CMSG_LEN
+(
+Ën
+è(
+	`CMSG_ALIGN
+ ( (
+cmsghdr
+)è+ (Ën))
+
+	)
+
+312 
+	#__CMSG_PADDING
+(
+Ën
+è(( (
+size_t
+) \
+
+313 - ((
+Ën
+è& ( (
+size_t
+) - 1))) \
+
+314 & ( (
+size_t
+è- 1))
+
+	)
+
+316 

+cmsghdr
+ *
+	$__cmsg_nxthdr
+ (
+msghdr
+ *
+__mhdr
+,
+
+317 
+cmsghdr
+ *
+__cmsg
+è
+__THROW
+;
+
+318 #ifdeà
+__USE_EXTERN_INLINES
+
+
+319 #iâdeà
+_EXTERN_INLINE
+
+
+320 
+	#_EXTERN_INLINE
+ 
+__ex‹º_šlše
+
+
+	)
+
+322 
+_EXTERN_INLINE
+ 
+cmsghdr
+ *
+
+323 
+	`__NTH
+ (
+	$__cmsg_nxthdr
+ (
+msghdr
+ *
+__mhdr
+, 
+cmsghdr
+ *
+__cmsg
+))
+
+332 * 
+__msg_cÚŒÞ_±r
+ = (*è
+__mhdr
+->
+msg_cÚŒÞ
+;
+
+333 * 
+__cmsg_±r
+ = (*è
+__cmsg
+;
+
+335 
+size_t
+ 
+__size_Ãeded
+ =  (
+cmsghdr
+)
+
+336 + 
+	`__CMSG_PADDING
+ (
+__cmsg
+->
+cmsg_Ën
+);
+
+339 ià((
+size_t
+è
+__cmsg
+->
+cmsg_Ën
+ <  (
+cmsghdr
+))
+
+340  (
+cmsghdr
+ *) 0;
+
+344 ià(((
+size_t
+)
+
+345 (
+__msg_cÚŒÞ_±r
+ + 
+__mhdr
+->
+msg_cÚŒÞËn
+ - 
+__cmsg_±r
+)
+
+346 < 
+__size_Ãeded
+)
+
+347 || ((
+size_t
+)
+
+348 (
+__msg_cÚŒÞ_±r
+ + 
+__mhdr
+->
+msg_cÚŒÞËn
+ - 
+__cmsg_±r
+
+
+349 - 
+__size_Ãeded
+)
+
+350 < 
+__cmsg
+->
+cmsg_Ën
+))
+
+352  (
+cmsghdr
+ *) 0;
+
+355 
+__cmsg
+ = (
+cmsghdr
+ *) ((*) __cmsg
+
+356 + 
+	`CMSG_ALIGN
+ (
+__cmsg
+->
+cmsg_Ën
+));
+
+357  
+__cmsg
+;
+
+358 
+	}
+}
+
+365 
+	mSCM_RIGHTS
+ = 0x01
+
+366 
+	#SCM_RIGHTS
+ 
+SCM_RIGHTS
+
+
+	)
+
+367 #ifdeà
+__USE_GNU
+
+
+368 , 
+	mSCM_CREDENTIALS
+ = 0x02
+
+369 
+	#SCM_CREDENTIALS
+ 
+SCM_CREDENTIALS
+
+
+	)
+
+373 #ifdeà
+__USE_GNU
+
+
+375 
+	suüed
+
+
+377 
+pid_t
+ 
+	mpid
+;
+
+378 
+uid_t
+ 
+	muid
+;
+
+379 
+gid_t
+ 
+	mgid
+;
+
+383 #ifdeà
+__USE_MISC
+
+
+384 
+	~<b™s/ty³s/time_t.h
+>
+
+385 
+	~<asm/sock‘.h
+>
+
+387 
+	#SO_DEBUG
+ 1
+
+	)
+
+388 
+	~<b™s/sock‘-cÚ¡ªts.h
+>
+
+392 
+	slšg”
+
+
+394 
+	ml_Úoff
+;
+
+395 
+	ml_lšg”
+;
+
+	@/usr/include/bits/socket2.h
+
+19 #iâdeà
+_SYS_SOCKET_H
+
+
+23 
+ssize_t
+ 
+__»cv_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__n
+, size_ˆ
+__buæ’
+,
+
+24 
+__æags
+);
+
+25 
+ssize_t
+ 
+__REDIRECT
+ (
+__»cv_®Ÿs
+, (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__n
+,
+
+26 
+__æags
+), 
+»cv
+);
+
+27 
+ssize_t
+ 
+__REDIRECT
+ (
+__»cv_chk_w¬n
+,
+
+28 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__n
+, size_ˆ
+__buæ’
+,
+
+29 
+__æags
+), 
+__»cv_chk
+)
+
+30 
+__w¬Ç‰r
+ ("recv called with bigger†ength�han size of destination "
+
+33 
+__fÜtify_funùiÚ
+ 
+ssize_t
+
+
+34 
+	$»cv
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__n
+, 
+__æags
+)
+
+36 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize0
+ (
+__buf
+);
+
+37 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+38  
+	`__»cv_®Ÿs
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+__æags
+);
+
+39 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+40  
+	`__»cv_chk_w¬n
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+sz
+, 
+__æags
+);
+
+41  
+	`__»cv_chk
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+sz
+, 
+__æags
+);
+
+42 
+	}
+}
+
+44 
+ssize_t
+ 
+__»cväom_chk
+ (
+__fd
+, *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__n
+,
+
+45 
+size_t
+ 
+__buæ’
+, 
+__æags
+,
+
+46 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+47 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+);
+
+48 
+ssize_t
+ 
+__REDIRECT
+ (
+__»cväom_®Ÿs
+,
+
+49 (
+__fd
+, *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__n
+,
+
+50 
+__æags
+, 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+51 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+), 
+»cväom
+);
+
+52 
+ssize_t
+ 
+__REDIRECT
+ (
+__»cväom_chk_w¬n
+,
+
+53 (
+__fd
+, *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__n
+,
+
+54 
+size_t
+ 
+__buæ’
+, 
+__æags
+,
+
+55 
+__SOCKADDR_ARG
+ 
+__addr
+,
+
+56 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+), 
+__»cväom_chk
+)
+
+57 
+__w¬Ç‰r
+ ("recvfrom called with bigger†ength�han size of "
+
+60 
+__fÜtify_funùiÚ
+ 
+ssize_t
+
+
+61 
+	$»cväom
+ (
+__fd
+, *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__n
+, 
+__æags
+,
+
+62 
+__SOCKADDR_ARG
+ 
+__addr
+, 
+sockËn_t
+ *
+__»¡riù
+ 
+__addr_Ën
+)
+
+64 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize0
+ (
+__buf
+);
+
+65 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+66  
+	`__»cväom_®Ÿs
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+__æags
+, 
+__addr
+, 
+__addr_Ën
+);
+
+67 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+68  
+	`__»cväom_chk_w¬n
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+sz
+, 
+__æags
+, 
+__addr
+,
+
+69 
+__addr_Ën
+);
+
+70  
+	`__»cväom_chk
+ (
+__fd
+, 
+__buf
+, 
+__n
+, 
+sz
+, 
+__æags
+, 
+__addr
+, 
+__addr_Ën
+);
+
+71 
+	}
+}
+
+	@/usr/include/bits/ss_flags.h
+
+19 #iâdeà
+_BITS_SS_FLAGS_H
+
+
+20 
+	#_BITS_SS_FLAGS_H
+ 1
+
+	)
+
+22 #ià!
+defšed
+ 
+_SIGNAL_H
+ && !defšed 
+_SYS_UCONTEXT_H
+
+
+29 
+	mSS_ONSTACK
+ = 1,
+
+30 
+	#SS_ONSTACK
+ 
+SS_ONSTACK
+
+
+	)
+
+31 
+	mSS_DISABLE
+
+
+32 
+	#SS_DISABLE
+ 
+SS_DISABLE
+
+
+	)
+
+	@/usr/include/bits/stat.h
+
+18 #ià!
+defšed
+ 
+_SYS_STAT_H
+ && !defšed 
+_FCNTL_H
+
+
+22 #iâdeà
+_BITS_STAT_H
+
+
+23 
+	#_BITS_STAT_H
+ 1
+
+	)
+
+25 
+	~<b™s/¡ruù_¡©.h
+>
+
+29 
+	#__S_IFMT
+ 0170000
+
+	)
+
+32 
+	#__S_IFDIR
+ 0040000
+
+	)
+
+33 
+	#__S_IFCHR
+ 0020000
+
+	)
+
+34 
+	#__S_IFBLK
+ 0060000
+
+	)
+
+35 
+	#__S_IFREG
+ 0100000
+
+	)
+
+36 
+	#__S_IFIFO
+ 0010000
+
+	)
+
+37 
+	#__S_IFLNK
+ 0120000
+
+	)
+
+38 
+	#__S_IFSOCK
+ 0140000
+
+	)
+
+42 
+	#__S_TYPEISMQ
+(
+buf
+è((buf)->
+¡_mode
+ - (buf)->¡_mode)
+
+	)
+
+43 
+	#__S_TYPEISSEM
+(
+buf
+è((buf)->
+¡_mode
+ - (buf)->¡_mode)
+
+	)
+
+44 
+	#__S_TYPEISSHM
+(
+buf
+è((buf)->
+¡_mode
+ - (buf)->¡_mode)
+
+	)
+
+48 
+	#__S_ISUID
+ 04000
+
+	)
+
+49 
+	#__S_ISGID
+ 02000
+
+	)
+
+50 
+	#__S_ISVTX
+ 01000
+
+	)
+
+51 
+	#__S_IREAD
+ 0400
+
+	)
+
+52 
+	#__S_IWRITE
+ 0200
+
+	)
+
+53 
+	#__S_IEXEC
+ 0100
+
+	)
+
+55 #ifdeà
+__USE_ATFILE
+
+
+56 
+	#UTIME_NOW
+ ((1È<< 30è- 1l)
+
+	)
+
+57 
+	#UTIME_OMIT
+ ((1È<< 30è- 2l)
+
+	)
+
+	@/usr/include/bits/statx.h
+
+21 #iâdeà
+_SYS_STAT_H
+
+
+22 #”rÜ 
+Nev”
+ 
+šþude
+ <
+b™s
+/
+¡©x
+.
+h
+> 
+dœeùly
+, inþud�<
+sys
+/
+¡©
+.h> 
+š¡—d
+.
+
+29 #ifdeà
+__has_šþude
+
+
+30 #ià
+__has_šþude
+ ("linux/stat.h")
+
+31 
+	~"lšux/¡©.h
+"
+
+32 #ifdeà
+STATX_TYPE
+
+
+33 
+	#__¡©x_time¡amp_defšed
+ 1
+
+	)
+
+34 
+	#__¡©x_defšed
+ 1
+
+	)
+
+39 
+	~<b™s/¡©x-g’”ic.h
+>
+
+	@/usr/include/bits/stdint-intn.h
+
+19 #iâdeà
+_BITS_STDINT_INTN_H
+
+
+20 
+	#_BITS_STDINT_INTN_H
+ 1
+
+	)
+
+22 
+	~<b™s/ty³s.h
+>
+
+24 
+__št8_t
+ 
+	tšt8_t
+;
+
+25 
+__št16_t
+ 
+	tšt16_t
+;
+
+26 
+__št32_t
+ 
+	tšt32_t
+;
+
+27 
+__št64_t
+ 
+	tšt64_t
+;
+
+	@/usr/include/bits/stdint-uintn.h
+
+19 #iâdeà
+_BITS_STDINT_UINTN_H
+
+
+20 
+	#_BITS_STDINT_UINTN_H
+ 1
+
+	)
+
+22 
+	~<b™s/ty³s.h
+>
+
+24 
+__ušt8_t
+ 
+	tušt8_t
+;
+
+25 
+__ušt16_t
+ 
+	tušt16_t
+;
+
+26 
+__ušt32_t
+ 
+	tušt32_t
+;
+
+27 
+__ušt64_t
+ 
+	tušt64_t
+;
+
+	@/usr/include/bits/stdio-ldbl.h
+
+19 #iâdeà
+_STDIO_H
+
+
+23 
+	$__LDBL_REDIR_DECL
+ (
+årštf
+)
+
+24 
+	$__LDBL_REDIR_DECL
+ (
+´štf
+)
+
+25 
+	$__LDBL_REDIR_DECL
+ (
+¥rštf
+)
+
+26 
+	$__LDBL_REDIR_DECL
+ (
+vårštf
+)
+
+27 
+	$__LDBL_REDIR_DECL
+ (
+v´štf
+)
+
+28 
+	$__LDBL_REDIR_DECL
+ (
+v¥rštf
+)
+
+29 #ià!
+	`__GLIBC_USE
+ (
+DEPRECATED_SCANF
+)
+
+30 #ià
+defšed
+ 
+__LDBL_COMPAT
+
+
+31 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+32 
+	$__LDBL_REDIR1_DECL
+ (
+fsÿnf
+, 
+__Ædbl___isoc23_fsÿnf
+)
+
+33 
+	$__LDBL_REDIR1_DECL
+ (
+sÿnf
+, 
+__Ædbl___isoc23_sÿnf
+)
+
+34 
+	$__LDBL_REDIR1_DECL
+ (
+ssÿnf
+, 
+__Ædbl___isoc23_ssÿnf
+)
+
+36 
+	$__LDBL_REDIR1_DECL
+ (
+fsÿnf
+, 
+__Ædbl___isoc99_fsÿnf
+)
+
+37 
+	$__LDBL_REDIR1_DECL
+ (
+sÿnf
+, 
+__Ædbl___isoc99_sÿnf
+)
+
+38 
+	$__LDBL_REDIR1_DECL
+ (
+ssÿnf
+, 
+__Ædbl___isoc99_ssÿnf
+)
+
+40 #–ià
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+41 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+42 
+	$__LDBL_REDIR1_DECL
+ (
+fsÿnf
+, 
+__isoc23_fsÿnf›“128
+)
+
+43 
+	$__LDBL_REDIR1_DECL
+ (
+sÿnf
+, 
+__isoc23_sÿnf›“128
+)
+
+44 
+	$__LDBL_REDIR1_DECL
+ (
+ssÿnf
+, 
+__isoc23_ssÿnf›“128
+)
+
+46 
+	$__LDBL_REDIR1_DECL
+ (
+fsÿnf
+, 
+__isoc99_fsÿnf›“128
+)
+
+47 
+	$__LDBL_REDIR1_DECL
+ (
+sÿnf
+, 
+__isoc99_sÿnf›“128
+)
+
+48 
+	$__LDBL_REDIR1_DECL
+ (
+ssÿnf
+, 
+__isoc99_ssÿnf›“128
+)
+
+51 #”rÜ 
+b™s
+/
+¡dlib
+-
+ldbl
+.
+h
+ 
+šþuded
+ 
+wh’
+ 
+no
+†dbÈ
+»dœeùiÚs
+ 
+¬e
+ 
+»quœed
+.
+
+54 
+	$__LDBL_REDIR_DECL
+ (
+fsÿnf
+)
+
+55 
+	$__LDBL_REDIR_DECL
+ (
+sÿnf
+)
+
+56 
+	$__LDBL_REDIR_DECL
+ (
+ssÿnf
+)
+
+59 #ià
+defšed
+ 
+__USE_ISOC99
+ || defšed 
+__USE_UNIX98
+
+
+60 
+	$__LDBL_REDIR_DECL
+ (
+¢´štf
+)
+
+61 
+	$__LDBL_REDIR_DECL
+ (
+v¢´štf
+)
+
+64 #ifdef 
+__USE_ISOC99
+
+
+65 #ià!
+	`__GLIBC_USE
+ (
+DEPRECATED_SCANF
+)
+
+66 #ià
+defšed
+ 
+__LDBL_COMPAT
+
+
+67 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+68 
+	$__LDBL_REDIR1_DECL
+ (
+vfsÿnf
+, 
+__Ædbl___isoc23_vfsÿnf
+)
+
+69 
+	$__LDBL_REDIR1_DECL
+ (
+vsÿnf
+, 
+__Ædbl___isoc23_vsÿnf
+)
+
+70 
+	$__LDBL_REDIR1_DECL
+ (
+vssÿnf
+, 
+__Ædbl___isoc23_vssÿnf
+)
+
+72 
+	$__LDBL_REDIR1_DECL
+ (
+vfsÿnf
+, 
+__Ædbl___isoc99_vfsÿnf
+)
+
+73 
+	$__LDBL_REDIR1_DECL
+ (
+vsÿnf
+, 
+__Ædbl___isoc99_vsÿnf
+)
+
+74 
+	$__LDBL_REDIR1_DECL
+ (
+vssÿnf
+, 
+__Ædbl___isoc99_vssÿnf
+)
+
+76 #–ià
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+77 #ià
+	`__GLIBC_USE
+ (
+C2X_STRTOL
+)
+
+78 
+	$__LDBL_REDIR1_DECL
+ (
+vfsÿnf
+, 
+__isoc23_vfsÿnf›“128
+)
+
+79 
+	$__LDBL_REDIR1_DECL
+ (
+vsÿnf
+, 
+__isoc23_vsÿnf›“128
+)
+
+80 
+	$__LDBL_REDIR1_DECL
+ (
+vssÿnf
+, 
+__isoc23_vssÿnf›“128
+)
+
+82 
+	$__LDBL_REDIR1_DECL
+ (
+vfsÿnf
+, 
+__isoc99_vfsÿnf›“128
+)
+
+83 
+	$__LDBL_REDIR1_DECL
+ (
+vsÿnf
+, 
+__isoc99_vsÿnf›“128
+)
+
+84 
+	$__LDBL_REDIR1_DECL
+ (
+vssÿnf
+, 
+__isoc99_vssÿnf›“128
+)
+
+87 #”rÜ 
+b™s
+/
+¡dlib
+-
+ldbl
+.
+h
+ 
+šþuded
+ 
+wh’
+ 
+no
+†dbÈ
+»dœeùiÚs
+ 
+¬e
+ 
+»quœed
+.
+
+90 
+	$__LDBL_REDIR_DECL
+ (
+vfsÿnf
+)
+
+91 
+	$__LDBL_REDIR_DECL
+ (
+vssÿnf
+)
+
+92 
+	$__LDBL_REDIR_DECL
+ (
+vsÿnf
+)
+
+96 #ifdeà
+__USE_XOPEN2K8
+
+
+97 
+	$__LDBL_REDIR_DECL
+ (
+vd´štf
+)
+
+98 
+	$__LDBL_REDIR_DECL
+ (
+d´štf
+)
+
+101 #ifdeà
+__USE_GNU
+
+
+102 
+	$__LDBL_REDIR_DECL
+ (
+va¥rštf
+)
+
+103 
+	$__LDBL_REDIR2_DECL
+ (
+a¥rštf
+)
+
+104 
+	$__LDBL_REDIR_DECL
+ (
+a¥rštf
+)
+
+105 
+	$__LDBL_REDIR_DECL
+ (
+ob¡ack_´štf
+)
+
+106 
+	$__LDBL_REDIR_DECL
+ (
+ob¡ack_v´štf
+)
+
+109 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+110 
+	$__LDBL_REDIR2_DECL
+ (
+¥rštf_chk
+)
+
+111 
+	$__LDBL_REDIR2_DECL
+ (
+v¥rštf_chk
+)
+
+112 #ià
+defšed
+ 
+__USE_ISOC99
+ || defšed 
+__USE_UNIX98
+
+
+113 
+	$__LDBL_REDIR2_DECL
+ (
+¢´štf_chk
+)
+
+114 
+	$__LDBL_REDIR2_DECL
+ (
+v¢´štf_chk
+)
+
+116 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+117 
+	$__LDBL_REDIR2_DECL
+ (
+årštf_chk
+)
+
+118 
+	$__LDBL_REDIR2_DECL
+ (
+´štf_chk
+)
+
+119 
+	$__LDBL_REDIR2_DECL
+ (
+vårštf_chk
+)
+
+120 
+	$__LDBL_REDIR2_DECL
+ (
+v´štf_chk
+)
+
+121 #ifdeà
+__USE_XOPEN2K8
+
+
+122 
+	$__LDBL_REDIR2_DECL
+ (
+d´štf_chk
+)
+
+123 
+	$__LDBL_REDIR2_DECL
+ (
+vd´štf_chk
+)
+
+125 #ifdeà
+__USE_GNU
+
+
+126 
+	$__LDBL_REDIR2_DECL
+ (
+a¥rštf_chk
+)
+
+127 
+	$__LDBL_REDIR2_DECL
+ (
+va¥rštf_chk
+)
+
+128 
+	$__LDBL_REDIR2_DECL
+ (
+ob¡ack_´štf_chk
+)
+
+129 
+	$__LDBL_REDIR2_DECL
+ (
+ob¡ack_v´štf_chk
+)
+
+	@/usr/include/bits/stdio.h
+
+19 #iâdeà
+_BITS_STDIO_H
+
+
+20 
+	#_BITS_STDIO_H
+ 1
+
+	)
+
+22 #iâdeà
+_STDIO_H
+
+
+26 #iâdeà
+__ex‹º_šlše
+
+
+27 
+	#__STDIO_INLINE
+ 
+šlše
+
+
+	)
+
+29 
+	#__STDIO_INLINE
+ 
+__ex‹º_šlše
+
+
+	)
+
+33 #ifdeà
+__USE_EXTERN_INLINES
+
+
+36 #ià!(
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+)
+
+38 
+__STDIO_INLINE
+ 
+
+39 
+	$v´štf
+ (cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+41  
+	`vårštf
+ (
+¡dout
+, 
+__fmt
+, 
+__¬g
+);
+
+42 
+	}
+}
+
+46 
+__STDIO_INLINE
+ 
+
+47 
+	$g‘ch¬
+ ()
+
+49  
+	`g‘c
+ (
+¡dš
+);
+
+50 
+	}
+}
+
+53 #ifdeà
+__USE_MISC
+
+
+55 
+__STDIO_INLINE
+ 
+
+56 
+	$fg‘c_uÆocked
+ (
+FILE
+ *
+__å
+)
+
+58  
+	`__g‘c_uÆocked_body
+ (
+__å
+);
+
+59 
+	}
+}
+
+63 #ifdeà
+__USE_POSIX199506
+
+
+65 
+__STDIO_INLINE
+ 
+
+66 
+	$g‘c_uÆocked
+ (
+FILE
+ *
+__å
+)
+
+68  
+	`__g‘c_uÆocked_body
+ (
+__å
+);
+
+69 
+	}
+}
+
+72 
+__STDIO_INLINE
+ 
+
+73 
+	$g‘ch¬_uÆocked
+ ()
+
+75  
+	`__g‘c_uÆocked_body
+ (
+¡dš
+);
+
+76 
+	}
+}
+
+81 
+__STDIO_INLINE
+ 
+
+82 
+	$putch¬
+ (
+__c
+)
+
+84  
+	`putc
+ (
+__c
+, 
+¡dout
+);
+
+85 
+	}
+}
+
+88 #ifdeà
+__USE_MISC
+
+
+90 
+__STDIO_INLINE
+ 
+
+91 
+	$åutc_uÆocked
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+)
+
+93  
+	`__putc_uÆocked_body
+ (
+__c
+, 
+__¡»am
+);
+
+94 
+	}
+}
+
+98 #ifdeà
+__USE_POSIX199506
+
+
+100 
+__STDIO_INLINE
+ 
+
+101 
+	$putc_uÆocked
+ (
+__c
+, 
+FILE
+ *
+__¡»am
+)
+
+103  
+	`__putc_uÆocked_body
+ (
+__c
+, 
+__¡»am
+);
+
+104 
+	}
+}
+
+107 
+__STDIO_INLINE
+ 
+
+108 
+	$putch¬_uÆocked
+ (
+__c
+)
+
+110  
+	`__putc_uÆocked_body
+ (
+__c
+, 
+¡dout
+);
+
+111 
+	}
+}
+
+115 #ifdef 
+__USE_GNU
+
+
+117 
+__STDIO_INLINE
+ 
+__ssize_t
+
+
+118 
+	$g‘lše
+ (**
+__lš•Œ
+, 
+size_t
+ *
+__n
+, 
+FILE
+ *
+__¡»am
+)
+
+120  
+	`__g‘d–im
+ (
+__lš•Œ
+, 
+__n
+, '\n', 
+__¡»am
+);
+
+121 
+	}
+}
+
+125 #ifdeà
+__USE_MISC
+
+
+127 
+__STDIO_INLINE
+ 
+
+128 
+__NTH
+ (
+	$ãof_uÆocked
+ (
+FILE
+ *
+__¡»am
+))
+
+130  
+	`__ãof_uÆocked_body
+ (
+__¡»am
+);
+
+131 
+	}
+}
+
+134 
+__STDIO_INLINE
+ 
+
+135 
+__NTH
+ (
+	$ã¼Ü_uÆocked
+ (
+FILE
+ *
+__¡»am
+))
+
+137  
+	`__ã¼Ü_uÆocked_body
+ (
+__¡»am
+);
+
+138 
+	}
+}
+
+144 #ià
+defšed
+ 
+__USE_MISC
+ && defšed 
+__GNUC__
+ && defšed 
+__OPTIMIZE__
+ \
+
+145 && !
+defšed
+ 
+	g__ýlu¥lus
+
+
+147 
+	#ä—d_uÆocked
+(
+±r
+, 
+size
+, 
+n
+, 
+¡»am
+) \
+
+148 (
+	`__ex‹nsiÚ__
+ ((
+	`__bužtš_cÚ¡ªt_p
+ (
+size
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+149 && (
+size_t
+è(
+size
+è* (size_tè(
+n
+) <= 8 \
+
+150 && (
+size_t
+è(
+size
+) != 0) \
+
+151 ? ({ *
+__±r
+ = (*è(
+±r
+); \
+
+152 
+FILE
+ *
+__¡»am
+ = (
+¡»am
+); \
+
+153 
+size_t
+ 
+__út
+; \
+
+154 
+__út
+ = (
+size_t
+è(
+size
+è* (size_tè(
+n
+); \
+
+155 
+__út
+ > 0; --__cnt) \
+
+157 
+__c
+ = 
+	`g‘c_uÆocked
+ (
+__¡»am
+); \
+
+158 ià(
+__c
+ =ð
+EOF
+) \
+
+160 *
+__±r
+++ = 
+__c
+; \
+
+162 ((
+size_t
+è(
+size
+è* (size_tè(
+n
+è- 
+__út
+) \
+
+163 / (
+size_t
+è(
+size
+); }) \
+
+164 : (((
+	`__bužtš_cÚ¡ªt_p
+ (
+size
+è&& (
+size_t
+) (size) == 0) \
+
+165 || (
+	`__bužtš_cÚ¡ªt_p
+ (
+n
+è&& (
+size_t
+) (n) == 0)) \
+
+167 ? ((è(
+±r
+), (è(
+¡»am
+), (è(
+size
+), \
+
+168 (è(
+n
+), (
+size_t
+) 0) \
+
+169 : 
+	`ä—d_uÆocked
+ (
+±r
+, 
+size
+, 
+n
+, 
+¡»am
+))))
+
+	)
+
+171 
+	#fwr™e_uÆocked
+(
+±r
+, 
+size
+, 
+n
+, 
+¡»am
+) \
+
+172 (
+	`__ex‹nsiÚ__
+ ((
+	`__bužtš_cÚ¡ªt_p
+ (
+size
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+173 && (
+size_t
+è(
+size
+è* (size_tè(
+n
+) <= 8 \
+
+174 && (
+size_t
+è(
+size
+) != 0) \
+
+175 ? ({ cÚ¡ *
+__±r
+ = (cÚ¡ *è(
+±r
+); \
+
+176 
+FILE
+ *
+__¡»am
+ = (
+¡»am
+); \
+
+177 
+size_t
+ 
+__út
+; \
+
+178 
+__út
+ = (
+size_t
+è(
+size
+è* (size_tè(
+n
+); \
+
+179 
+__út
+ > 0; --__cnt) \
+
+180 ià(
+	`putc_uÆocked
+ (*
+__±r
+++, 
+__¡»am
+è=ð
+EOF
+) \
+
+182 ((
+size_t
+è(
+size
+è* (size_tè(
+n
+è- 
+__út
+) \
+
+183 / (
+size_t
+è(
+size
+); }) \
+
+184 : (((
+	`__bužtš_cÚ¡ªt_p
+ (
+size
+è&& (
+size_t
+) (size) == 0) \
+
+185 || (
+	`__bužtš_cÚ¡ªt_p
+ (
+n
+è&& (
+size_t
+) (n) == 0)) \
+
+187 ? ((è(
+±r
+), (è(
+¡»am
+), (è(
+size
+), \
+
+188 (è(
+n
+), (
+size_t
+) 0) \
+
+189 : 
+	`fwr™e_uÆocked
+ (
+±r
+, 
+size
+, 
+n
+, 
+¡»am
+))))
+
+	)
+
+193 #undeà
+__STDIO_INLINE
+
+
+	@/usr/include/bits/stdio2-decl.h
+
+19 #iâdeà
+_BITS_STDIO2_DEC_H
+
+
+20 
+	#_BITS_STDIO2_DEC_H
+ 1
+
+	)
+
+22 #iâdeà
+_STDIO_H
+
+
+26 

+	$__¥rštf_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+__æag
+, 
+size_t
+ 
+__¦’
+,
+
+27 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...è
+__THROW
+
+
+28 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+29 

+	$__v¥rštf_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+__æag
+, 
+size_t
+ 
+__¦’
+,
+
+30 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+31 
+__gnuc_va_li¡
+ 
+__­
+è
+__THROW
+
+
+32 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+34 #ià
+defšed
+ 
+__USE_ISOC99
+ || defšed 
+__USE_UNIX98
+
+
+36 

+	$__¢´štf_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+, 
+__æag
+,
+
+37 
+size_t
+ 
+__¦’
+, cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+38 ...è
+__THROW
+
+
+39 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+40 

+	$__v¢´štf_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+, 
+__æag
+,
+
+41 
+size_t
+ 
+__¦’
+, cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+42 
+__gnuc_va_li¡
+ 
+__­
+è
+__THROW
+
+
+43 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+47 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+49 

+	`__årštf_chk
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, 
+__æag
+,
+
+50 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...);
+
+51 

+	`__´štf_chk
+ (
+__æag
+, cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, ...);
+
+52 

+	`__vårštf_chk
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, 
+__æag
+,
+
+53 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+, 
+__gnuc_va_li¡
+ 
+__­
+);
+
+54 

+	`__v´štf_chk
+ (
+__æag
+, cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+55 
+__gnuc_va_li¡
+ 
+__­
+);
+
+57 #ifdeà
+__USE_XOPEN2K8
+
+
+58 

+	$__d´štf_chk
+ (
+__fd
+, 
+__æag
+, cÚ¡ *
+__»¡riù
+ 
+__fmt
+,
+
+59 ...è
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+60 

+	$__vd´štf_chk
+ (
+__fd
+, 
+__æag
+,
+
+61 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+62 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+65 #ifdeà
+__USE_GNU
+
+
+67 

+	$__a¥rštf_chk
+ (**
+__»¡riù
+ 
+__±r
+, 
+__æag
+,
+
+68 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+69 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 3, 4))è
+__wur
+;
+
+70 

+	$__va¥rštf_chk
+ (**
+__»¡riù
+ 
+__±r
+, 
+__æag
+,
+
+71 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__¬g
+)
+
+72 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+	$__fÜm©__
+ (
+__´štf__
+, 3, 0))è
+__wur
+;
+
+73 

+	$__ob¡ack_´štf_chk
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+74 
+__æag
+, cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+76 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+77 

+	$__ob¡ack_v´štf_chk
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+78 
+__æag
+,
+
+79 cÚ¡ *
+__»¡riù
+ 
+__fÜm©
+,
+
+80 
+__gnuc_va_li¡
+ 
+__¬gs
+)
+
+81 
+__THROW
+ 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+86 #ià
+	`__GLIBC_USE
+ (
+DEPRECATED_GETS
+)
+
+87 
*
+	`__REDIRECT
+ (
+__g‘s_w¬n
+, (*
+__¡r
+), 
+g‘s
+)
+
+88 
+__wur
+ 
+	`__w¬Ç‰r
+ ("please use fgets or getline instead, gets can't "
+
+91 
*
+	$__g‘s_chk
+ (*
+__¡r
+, 
+size_t
+è
+__wur
+;
+
+94 
*
+	`__REDIRECT
+ (
+__fg‘s_®Ÿs
+,
+
+95 (*
+__»¡riù
+ 
+__s
+, 
+__n
+,
+
+96 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+), 
+fg‘s
+)
+
+97 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+98 
*
+	`__REDIRECT
+ (
+__fg‘s_chk_w¬n
+,
+
+99 (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__size
+, 
+__n
+,
+
+100 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+), 
+__fg‘s_chk
+)
+
+101 
+__wur
+ 
+	`__w¬Ç‰r
+ ("fgets called with bigger size�han†ength "
+
+104 
*
+	$__fg‘s_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__size
+, 
+__n
+,
+
+105 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+)
+
+106 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+108 
+size_t
+ 
+	`__REDIRECT
+ (
+__ä—d_®Ÿs
+,
+
+109 (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+,
+
+110 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+),
+
+111 
+ä—d
+è
+__wur
+;
+
+112 
+size_t
+ 
+	`__REDIRECT
+ (
+__ä—d_chk_w¬n
+,
+
+113 (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__±¾’
+,
+
+114 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+115 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+),
+
+116 
+__ä—d_chk
+)
+
+117 
+__wur
+ 
+	`__w¬Ç‰r
+ ("fread called with bigger size *‚memb�han†ength "
+
+120 
+size_t
+ 
+	$__ä—d_chk
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__±¾’
+,
+
+121 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+122 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+124 #ifdeà
+__USE_GNU
+
+
+125 
*
+	`__REDIRECT_FORTIFY
+ (
+__fg‘s_uÆocked_®Ÿs
+,
+
+126 (*
+__»¡riù
+ 
+__s
+, 
+__n
+,
+
+127 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+), 
+fg‘s_uÆocked
+)
+
+128 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+129 
*
+	`__REDIRECT
+ (
+__fg‘s_uÆocked_chk_w¬n
+,
+
+130 (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__size
+, 
+__n
+,
+
+131 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+), 
+__fg‘s_uÆocked_chk
+)
+
+132 
+__wur
+ 
+	`__w¬Ç‰r
+ ("fgets_unlocked called with bigger size�han†ength "
+
+136 
*
+	$__fg‘s_uÆocked_chk
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__size
+,
+
+137 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+)
+
+138 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3));
+
+141 #ifdeà
+__USE_MISC
+
+
+142 #undeà
+ä—d_uÆocked
+
+
+143 
+size_t
+ 
+	`__REDIRECT
+ (
+__ä—d_uÆocked_®Ÿs
+,
+
+144 (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+,
+
+145 
+size_t
+ 
+__n
+, 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+),
+
+146 
+ä—d_uÆocked
+è
+__wur
+;
+
+147 
+size_t
+ 
+	`__REDIRECT
+ (
+__ä—d_uÆocked_chk_w¬n
+,
+
+148 (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__±¾’
+,
+
+149 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+150 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+),
+
+151 
+__ä—d_uÆocked_chk
+)
+
+152 
+__wur
+ 
+	`__w¬Ç‰r
+ ("fread_unlocked called with bigger size *‚memb�han "
+
+155 
+size_t
+ 
+	$__ä—d_uÆocked_chk
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__±¾’
+,
+
+156 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+157 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+è
+__wur
+;
+
+	@/usr/include/bits/stdio2.h
+
+19 #iâdeà
+_BITS_STDIO2_H
+
+
+20 
+	#_BITS_STDIO2_H
+ 1
+
+	)
+
+22 #iâdeà
+_STDIO_H
+
+
+26 #ifdeà
+__va_¬g_·ck
+
+
+27 
+__fÜtify_funùiÚ
+ 
+
+28 
+__NTH
+ (
+	$¥rštf
+ (*
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__fmt
+, ...))
+
+30  
+	`__bužtš___¥rštf_chk
+ (
+__s
+, 
+__USE_FORTIFY_LEVEL
+ - 1,
+
+31 
+	`__glibc_objsize
+ (
+__s
+), 
+__fmt
+,
+
+32 
+	`__va_¬g_·ck
+ ());
+
+33 
+	}
+}
+
+34 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+35 
+	#¥rštf
+(
+¡r
+, ...) \
+
+36 
+	`__bužtš___¥rštf_chk
+ (
+¡r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, \
+
+37 
+	`__glibc_objsize
+ (
+¡r
+), 
+__VA_ARGS__
+)
+
+	)
+
+40 
+__fÜtify_funùiÚ
+ 
+
+41 
+__NTH
+ (
+	$v¥rštf
+ (*
+__»¡riù
+ 
+__s
+, cÚ¡ *__»¡riù 
+__fmt
+,
+
+42 
+__gnuc_va_li¡
+ 
+__­
+))
+
+44  
+	`__bužtš___v¥rštf_chk
+ (
+__s
+, 
+__USE_FORTIFY_LEVEL
+ - 1,
+
+45 
+	`__glibc_objsize
+ (
+__s
+), 
+__fmt
+, 
+__­
+);
+
+46 
+	}
+}
+
+48 #ià
+defšed
+ 
+__USE_ISOC99
+ || defšed 
+__USE_UNIX98
+
+
+49 #ifdeà
+__va_¬g_·ck
+
+
+50 
+__fÜtify_funùiÚ
+ 
+
+51 
+__NTH
+ (
+	$¢´štf
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+,
+
+52 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...))
+
+54  
+	`__bužtš___¢´štf_chk
+ (
+__s
+, 
+__n
+, 
+__USE_FORTIFY_LEVEL
+ - 1,
+
+55 
+	`__glibc_objsize
+ (
+__s
+), 
+__fmt
+,
+
+56 
+	`__va_¬g_·ck
+ ());
+
+57 
+	}
+}
+
+58 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+59 
+	#¢´štf
+(
+¡r
+, 
+Ën
+, ...) \
+
+60 
+	`__bužtš___¢´štf_chk
+ (
+¡r
+, 
+Ën
+, 
+__USE_FORTIFY_LEVEL
+ - 1, \
+
+61 
+	`__glibc_objsize
+ (
+¡r
+), 
+__VA_ARGS__
+)
+
+	)
+
+64 
+__fÜtify_funùiÚ
+ 
+
+65 
+__NTH
+ (
+	$v¢´štf
+ (*
+__»¡riù
+ 
+__s
+, 
+size_t
+ 
+__n
+,
+
+66 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+))
+
+68  
+	`__bužtš___v¢´štf_chk
+ (
+__s
+, 
+__n
+, 
+__USE_FORTIFY_LEVEL
+ - 1,
+
+69 
+	`__glibc_objsize
+ (
+__s
+), 
+__fmt
+, 
+__­
+);
+
+70 
+	}
+}
+
+74 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+75 #ifdeà
+__va_¬g_·ck
+
+
+76 
+__fÜtify_funùiÚ
+ 
+
+77 
+	$årštf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+, cÚ¡ *__»¡riù 
+__fmt
+, ...)
+
+79  
+	`__årštf_chk
+ (
+__¡»am
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+80 
+	`__va_¬g_·ck
+ ());
+
+81 
+	}
+}
+
+83 
+__fÜtify_funùiÚ
+ 
+
+84 
+	$´štf
+ (cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+86  
+	`__´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+	`__va_¬g_·ck
+ ());
+
+87 
+	}
+}
+
+88 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+89 
+	#´štf
+(...) \
+
+90 
+	`__´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+91 
+	#årštf
+(
+¡»am
+, ...) \
+
+92 
+	`__årštf_chk
+ (
+¡»am
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+95 
+__fÜtify_funùiÚ
+ 
+
+96 
+	$v´štf
+ (cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+)
+
+98 #ifdeà
+__USE_EXTERN_INLINES
+
+
+99  
+	`__vårštf_chk
+ (
+¡dout
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+101  
+	`__v´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+103 
+	}
+}
+
+105 
+__fÜtify_funùiÚ
+ 
+
+106 
+	$vårštf
+ (
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+,
+
+107 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+)
+
+109  
+	`__vårštf_chk
+ (
+__¡»am
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+110 
+	}
+}
+
+112 #ifdeà
+__USE_XOPEN2K8
+
+
+113 #ifdeà
+__va_¬g_·ck
+
+
+114 
+__fÜtify_funùiÚ
+ 
+
+115 
+	$d´štf
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...)
+
+117  
+	`__d´štf_chk
+ (
+__fd
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+118 
+	`__va_¬g_·ck
+ ());
+
+119 
+	}
+}
+
+120 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+121 
+	#d´štf
+(
+fd
+, ...) \
+
+122 
+	`__d´štf_chk
+ (
+fd
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+125 
+__fÜtify_funùiÚ
+ 
+
+126 
+	$vd´štf
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+)
+
+128  
+	`__vd´štf_chk
+ (
+__fd
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+129 
+	}
+}
+
+132 #ifdeà
+__USE_GNU
+
+
+133 #ifdeà
+__va_¬g_·ck
+
+
+134 
+__fÜtify_funùiÚ
+ 
+
+135 
+__NTH
+ (
+	$a¥rštf
+ (**
+__»¡riù
+ 
+__±r
+, cÚ¡ *__»¡riù 
+__fmt
+, ...))
+
+137  
+	`__a¥rštf_chk
+ (
+__±r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+138 
+	`__va_¬g_·ck
+ ());
+
+139 
+	}
+}
+
+141 
+__fÜtify_funùiÚ
+ 
+
+142 
+__NTH
+ (
+	$__a¥rštf
+ (**
+__»¡riù
+ 
+__±r
+, cÚ¡ *__»¡riù 
+__fmt
+,
+
+145  
+	`__a¥rštf_chk
+ (
+__±r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+146 
+	`__va_¬g_·ck
+ ());
+
+147 
+	}
+}
+
+149 
+__fÜtify_funùiÚ
+ 
+
+150 
+__NTH
+ (
+	$ob¡ack_´štf
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+151 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, ...))
+
+153  
+	`__ob¡ack_´štf_chk
+ (
+__ob¡ack
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+154 
+	`__va_¬g_·ck
+ ());
+
+155 
+	}
+}
+
+156 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+157 
+	#a¥rštf
+(
+±r
+, ...) \
+
+158 
+	`__a¥rštf_chk
+ (
+±r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+159 
+	#__a¥rštf
+(
+±r
+, ...) \
+
+160 
+	`__a¥rštf_chk
+ (
+±r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+161 
+	#ob¡ack_´štf
+(
+ob¡ack
+, ...) \
+
+162 
+	`__ob¡ack_´štf_chk
+ (
+ob¡ack
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+165 
+__fÜtify_funùiÚ
+ 
+
+166 
+__NTH
+ (
+	$va¥rštf
+ (**
+__»¡riù
+ 
+__±r
+, cÚ¡ *__»¡riù 
+__fmt
+,
+
+167 
+__gnuc_va_li¡
+ 
+__­
+))
+
+169  
+	`__va¥rštf_chk
+ (
+__±r
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+170 
+	}
+}
+
+172 
+__fÜtify_funùiÚ
+ 
+
+173 
+__NTH
+ (
+	$ob¡ack_v´štf
+ (
+ob¡ack
+ *
+__»¡riù
+ 
+__ob¡ack
+,
+
+174 cÚ¡ *
+__»¡riù
+ 
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+))
+
+176  
+	`__ob¡ack_v´štf_chk
+ (
+__ob¡ack
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+,
+
+177 
+__­
+);
+
+178 
+	}
+}
+
+184 #ià
+__GLIBC_USE
+ (
+DEPRECATED_GETS
+)
+
+185 
+__fÜtify_funùiÚ
+ 
+__wur
+ *
+
+186 
+	$g‘s
+ (*
+__¡r
+)
+
+188 ià(
+	`__glibc_objsize
+ (
+__¡r
+è!ð(
+size_t
+) -1)
+
+189  
+	`__g‘s_chk
+ (
+__¡r
+, 
+	`__glibc_objsize
+ (__str));
+
+190  
+	`__g‘s_w¬n
+ (
+__¡r
+);
+
+191 
+	}
+}
+
+194 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2) *
+
+195 
+	$fg‘s
+ (*
+__»¡riù
+ 
+__s
+, 
+__n
+, 
+FILE
+ *__»¡riù 
+__¡»am
+)
+
+197 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize
+ (
+__s
+);
+
+198 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+199  
+	`__fg‘s_®Ÿs
+ (
+__s
+, 
+__n
+, 
+__¡»am
+);
+
+200 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+201  
+	`__fg‘s_chk_w¬n
+ (
+__s
+, 
+sz
+, 
+__n
+, 
+__¡»am
+);
+
+202  
+	`__fg‘s_chk
+ (
+__s
+, 
+sz
+, 
+__n
+, 
+__¡»am
+);
+
+203 
+	}
+}
+
+205 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+size_t
+
+
+206 
+	$ä—d
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+207 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+)
+
+209 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize0
+ (
+__±r
+);
+
+210 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+, 
+__size
+, 
+sz
+))
+
+211  
+	`__ä—d_®Ÿs
+ (
+__±r
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+212 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+, 
+__size
+, 
+sz
+))
+
+213  
+	`__ä—d_chk_w¬n
+ (
+__±r
+, 
+sz
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+214  
+	`__ä—d_chk
+ (
+__±r
+, 
+sz
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+215 
+	}
+}
+
+217 #ifdeà
+__USE_GNU
+
+
+218 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2) *
+
+219 
+	$fg‘s_uÆocked
+ (*
+__»¡riù
+ 
+__s
+, 
+__n
+, 
+FILE
+ *__»¡riù 
+__¡»am
+)
+
+221 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize
+ (
+__s
+);
+
+222 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+223  
+	`__fg‘s_uÆocked_®Ÿs
+ (
+__s
+, 
+__n
+, 
+__¡»am
+);
+
+224 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+,  (), 
+sz
+))
+
+225  
+	`__fg‘s_uÆocked_chk_w¬n
+ (
+__s
+, 
+sz
+, 
+__n
+, 
+__¡»am
+);
+
+226  
+	`__fg‘s_uÆocked_chk
+ (
+__s
+, 
+sz
+, 
+__n
+, 
+__¡»am
+);
+
+227 
+	}
+}
+
+230 #ifdeà
+__USE_MISC
+
+
+231 #undeà
+ä—d_uÆocked
+
+
+232 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+size_t
+
+
+233 
+	$ä—d_uÆocked
+ (*
+__»¡riù
+ 
+__±r
+, 
+size_t
+ 
+__size
+, size_ˆ
+__n
+,
+
+234 
+FILE
+ *
+__»¡riù
+ 
+__¡»am
+)
+
+236 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize0
+ (
+__±r
+);
+
+237 ià(
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__n
+, 
+__size
+, 
+sz
+))
+
+239 #ifdeà
+__USE_EXTERN_INLINES
+
+
+240 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__size
+)
+
+241 && 
+	`__bužtš_cÚ¡ªt_p
+ (
+__n
+)
+
+242 && (
+__size
+ | 
+__n
+è< (((
+size_t
+) 1) << (8 *  (size_t) / 2))
+
+243 && 
+__size
+ * 
+__n
+ <= 8)
+
+245 
+size_t
+ 
+__út
+ = 
+__size
+ * 
+__n
+;
+
+246 *
+__ýŒ
+ = (*è
+__±r
+;
+
+247 ià(
+__út
+ == 0)
+
+250 ; 
+__út
+ > 0; --__cnt)
+
+252 
+__c
+ = 
+	`g‘c_uÆocked
+ (
+__¡»am
+);
+
+253 ià(
+__c
+ =ð
+EOF
+)
+
+255 *
+__ýŒ
+++ = 
+__c
+;
+
+257  (
+__ýŒ
+ - (*è
+__±r
+è/ 
+__size
+;
+
+260  
+	`__ä—d_uÆocked_®Ÿs
+ (
+__±r
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+262 ià(
+	`__glibc_un§ã_Ën
+ (
+__n
+, 
+__size
+, 
+sz
+))
+
+263  
+	`__ä—d_uÆocked_chk_w¬n
+ (
+__±r
+, 
+sz
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+264  
+	`__ä—d_uÆocked_chk
+ (
+__±r
+, 
+sz
+, 
+__size
+, 
+__n
+, 
+__¡»am
+);
+
+266 
+	}
+}
+
+	@/usr/include/bits/stdio_lim.h
+
+19 #iâdeà
+_BITS_STDIO_LIM_H
+
+
+20 
+	#_BITS_STDIO_LIM_H
+ 1
+
+	)
+
+22 #iâdeà
+_STDIO_H
+
+
+26 
+	#FILENAME_MAX
+ 4096
+
+	)
+
+	@/usr/include/bits/stdlib-bsearch.h
+
+19 
+__ex‹º_šlše
+ *
+
+20 
+	$b£¬ch
+ (cÚ¡ *
+__key
+, cÚ¡ *
+__ba£
+, 
+size_t
+ 
+__nmemb
+, size_ˆ
+__size
+,
+
+21 
+__com·r_â_t
+ 
+__com·r
+)
+
+23 
+size_t
+ 
+__l
+, 
+__u
+, 
+__idx
+;
+
+24 cÚ¡ *
+__p
+;
+
+25 
+__com·risÚ
+;
+
+27 
+__l
+ = 0;
+
+28 
+__u
+ = 
+__nmemb
+;
+
+29 
+__l
+ < 
+__u
+)
+
+31 
+__idx
+ = (
+__l
+ + 
+__u
+) / 2;
+
+32 
+__p
+ = (cÚ¡ *è(((cÚ¡ *è
+__ba£
+è+ (
+__idx
+ * 
+__size
+));
+
+33 
+__com·risÚ
+ = (*
+__com·r
+è(
+__key
+, 
+__p
+);
+
+34 ià(
+__com·risÚ
+ < 0)
+
+35 
+__u
+ = 
+__idx
+;
+
+36 ià(
+__com·risÚ
+ > 0)
+
+37 
+__l
+ = 
+__idx
+ + 1;
+
+40 #ià
+	`__GNUC_PREREQ
+(4, 6)
+
+41 #´agm¨
+GCC
+ 
+dŸgno¡ic
+ 
+push
+
+
+42 #´agm¨
+GCC
+ 
+dŸgno¡ic
+ 
+ignÜed
+ "-Wcast-qual"
+
+44  (*è
+__p
+;
+
+45 #ià
+	`__GNUC_PREREQ
+(4, 6)
+
+46 #´agm¨
+GCC
+ 
+dŸgno¡ic
+ 
+pÝ
+
+
+51  
+NULL
+;
+
+52 
+	}
+}
+
+	@/usr/include/bits/stdlib-float.h
+
+19 #iâdeà
+_STDLIB_H
+
+
+23 #ifdeà
+__USE_EXTERN_INLINES
+
+
+24 
+__ex‹º_šlše
+ 
+
+25 
+__NTH
+ (
+	$©of
+ (cÚ¡ *
+__ÅŒ
+))
+
+27  
+	`¡¹od
+ (
+__ÅŒ
+, (**è
+NULL
+);
+
+28 
+	}
+}
+
+	@/usr/include/bits/stdlib-ldbl.h
+
+19 #iâdeà
+_STDLIB_H
+
+
+23 #ifdef 
+__USE_ISOC99
+
+
+24 #ifdeà
+__LDBL_COMPAT
+
+
+25 
+	$__LDBL_REDIR1_DECL
+ (
+¡¹Þd
+, 
+¡¹od
+)
+
+27 
+	$__LDBL_REDIR1_DECL
+ (
+¡¹Þd
+, 
+__¡¹o›“128
+)
+
+31 #ifdeà
+__USE_GNU
+
+
+32 #ifdeà
+__LDBL_COMPAT
+
+
+33 
+	$__LDBL_REDIR1_DECL
+ (
+¡¹Þd_l
+, 
+¡¹od_l
+)
+
+35 
+	$__LDBL_REDIR1_DECL
+ (
+¡¹Þd_l
+, 
+__¡¹o›“128_l
+)
+
+39 #ià
+	`__GLIBC_USE
+ (
+IEC_60559_BFP_EXT_C2X
+)
+
+40 #ifdeà
+__LDBL_COMPAT
+
+
+41 
+	$__LDBL_REDIR1_DECL
+ (
+¡räoml
+, 
+¡räomd
+)
+
+43 
+	$__LDBL_REDIR1_DECL
+ (
+¡räoml
+, 
+__¡räom›“128
+)
+
+47 #ifdeà
+__USE_MISC
+
+
+48 #ià
+defšed
+ 
+__LDBL_COMPAT
+
+
+49 
+	$__LDBL_REDIR1_DECL
+ (
+qecvt
+, 
+ecvt
+)
+
+50 
+	$__LDBL_REDIR1_DECL
+ (
+qfcvt
+, 
+fcvt
+)
+
+51 
+	$__LDBL_REDIR1_DECL
+ (
+qgcvt
+, 
+gcvt
+)
+
+52 
+	$__LDBL_REDIR1_DECL
+ (
+qecvt_r
+, 
+ecvt_r
+)
+
+53 
+	$__LDBL_REDIR1_DECL
+ (
+qfcvt_r
+, 
+fcvt_r
+)
+
+54 #–ià
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+55 
+	$__LDBL_REDIR1_DECL
+ (
+qecvt
+, 
+__qecvt›“128
+)
+
+56 
+	$__LDBL_REDIR1_DECL
+ (
+qfcvt
+, 
+__qfcvt›“128
+)
+
+57 
+	$__LDBL_REDIR1_DECL
+ (
+qgcvt
+, 
+__qgcvt›“128
+)
+
+58 
+	$__LDBL_REDIR1_DECL
+ (
+qecvt_r
+, 
+__qecvt›“128_r
+)
+
+59 
+	$__LDBL_REDIR1_DECL
+ (
+qfcvt_r
+, 
+__qfcvt›“128_r
+)
+
+61 #”rÜ 
+b™s
+/
+¡dlib
+-
+ldbl
+.
+h
+ 
+šþuded
+ 
+wh’
+ 
+no
+†dbÈ
+»dœeùiÚs
+ 
+¬e
+ 
+»quœed
+.
+
+	@/usr/include/bits/stdlib.h
+
+19 #iâdeà
+_STDLIB_H
+
+
+23 
*
+	$__»®·th_chk
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+24 *
+__»¡riù
+ 
+__»sÞved
+,
+
+25 
+size_t
+ 
+__»sÞvedËn
+è
+__THROW
+ 
+__wur
+;
+
+26 
*
+	`__REDIRECT_NTH
+ (
+__»®·th_®Ÿs
+,
+
+27 (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+28 *
+__»¡riù
+ 
+__»sÞved
+), 
+»®·th
+è
+__wur
+;
+
+29 
*
+	`__REDIRECT_NTH
+ (
+__»®·th_chk_w¬n
+,
+
+30 (cÚ¡ *
+__»¡riù
+ 
+__Çme
+,
+
+31 *
+__»¡riù
+ 
+__»sÞved
+,
+
+32 
+size_t
+ 
+__»sÞvedËn
+), 
+__»®·th_chk
+è
+__wur
+
+
+33 
+	`__w¬Ç‰r
+ ("second‡rgument of„ealpath must beƒither NULL or‡t "
+
+36 
+__fÜtify_funùiÚ
+ 
+__wur
+ *
+
+37 
+	`__NTH
+ (
+	$»®·th
+ (cÚ¡ *
+__»¡riù
+ 
+__Çme
+, *__»¡riù 
+__»sÞved
+))
+
+39 
+size_t
+ 
+sz
+ = 
+	`__glibc_objsize
+ (
+__»sÞved
+);
+
+41 ià(
+sz
+ =ð(
+size_t
+) -1)
+
+42  
+	`__»®·th_®Ÿs
+ (
+__Çme
+, 
+__»sÞved
+);
+
+44 #ià
+defšed
+ 
+_LIBC_LIMITS_H_
+ && defšed 
+PATH_MAX
+
+
+45 ià(
+	`__glibc_un§ã_Ën
+ (
+PATH_MAX
+,  (), 
+sz
+))
+
+46  
+	`__»®·th_chk_w¬n
+ (
+__Çme
+, 
+__»sÞved
+, 
+sz
+);
+
+48  
+	`__»®·th_chk
+ (
+__Çme
+, 
+__»sÞved
+, 
+sz
+);
+
+49 
+	}
+}
+
+52 

+	$__±¢ame_r_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+53 
+size_t
+ 
+__Ä—l
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2))
+
+54 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+55 

+	`__REDIRECT_NTH
+ (
+__±¢ame_r_®Ÿs
+, (
+__fd
+, *
+__buf
+,
+
+56 
+size_t
+ 
+__buæ’
+), 
+±¢ame_r
+)
+
+57 
+	`__nÚnuÎ
+ ((2)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+58 

+	`__REDIRECT_NTH
+ (
+__±¢ame_r_chk_w¬n
+,
+
+59 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+60 
+size_t
+ 
+__Ä—l
+), 
+__±¢ame_r_chk
+)
+
+61 
+	`__nÚnuÎ
+ ((2)è
+	`__w¬Ç‰r
+ ("ptsname_r called with buflen bigger�han "
+
+64 
+__fÜtify_funùiÚ
+ 
+
+65 
+	`__NTH
+ (
+	$±¢ame_r
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+))
+
+67  
+	`__glibc_fÜtify
+ (
+±¢ame_r
+, 
+__buæ’
+,  (),
+
+68 
+	`__glibc_objsize
+ (
+__buf
+),
+
+69 
+__fd
+, 
+__buf
+, 
+__buæ’
+);
+
+70 
+	}
+}
+
+73 

+	$__wùomb_chk
+ (*
+__s
+, 
+wch¬_t
+ 
+__wch¬
+, 
+size_t
+ 
+__buæ’
+)
+
+74 
+__THROW
+ 
+__wur
+;
+
+75 

+	`__REDIRECT_NTH
+ (
+__wùomb_®Ÿs
+, (*
+__s
+, 
+wch¬_t
+ 
+__wch¬
+),
+
+76 
+wùomb
+è
+__wur
+;
+
+78 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+
+79 
+	`__NTH
+ (
+	$wùomb
+ (*
+__s
+, 
+wch¬_t
+ 
+__wch¬
+))
+
+84 
+	#__STDLIB_MB_LEN_MAX
+ 16
+
+	)
+
+85 #ià
+defšed
+ 
+MB_LEN_MAX
+ && MB_LEN_MAX !ð
+__STDLIB_MB_LEN_MAX
+
+
+88 ià(
+	`__glibc_objsize
+ (
+__s
+è!ð(
+size_t
+) -1
+
+89 && 
+__STDLIB_MB_LEN_MAX
+ > 
+	`__glibc_objsize
+ (
+__s
+))
+
+90  
+	`__wùomb_chk
+ (
+__s
+, 
+__wch¬
+, 
+	`__glibc_objsize
+ (__s));
+
+91  
+	`__wùomb_®Ÿs
+ (
+__s
+, 
+__wch¬
+);
+
+92 
+	}
+}
+
+95 
+size_t
+ 
+	$__mb¡owcs_chk
+ (
+wch¬_t
+ *
+__»¡riù
+ 
+__d¡
+,
+
+96 cÚ¡ *
+__»¡riù
+ 
+__¤c
+,
+
+97 
+size_t
+ 
+__Ën
+, size_ˆ
+__d¡Ën
+è
+__THROW
+
+
+98 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3)è__©Œ_acûs ((
+__»ad_Úly__
+, 2));
+
+99 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__mb¡owcs_nuÎd¡
+,
+
+100 (
+wch¬_t
+ *
+__»¡riù
+ 
+__d¡
+,
+
+101 cÚ¡ *
+__»¡riù
+ 
+__¤c
+,
+
+102 
+size_t
+ 
+__Ën
+), 
+mb¡owcs
+)
+
+103 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2));
+
+104 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__mb¡owcs_®Ÿs
+,
+
+105 (
+wch¬_t
+ *
+__»¡riù
+ 
+__d¡
+,
+
+106 cÚ¡ *
+__»¡riù
+ 
+__¤c
+,
+
+107 
+size_t
+ 
+__Ën
+), 
+mb¡owcs
+)
+
+108 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3)è__©Œ_acûs ((
+__»ad_Úly__
+, 2));
+
+109 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__mb¡owcs_chk_w¬n
+,
+
+110 (
+wch¬_t
+ *
+__»¡riù
+ 
+__d¡
+,
+
+111 cÚ¡ *
+__»¡riù
+ 
+__¤c
+,
+
+112 
+size_t
+ 
+__Ën
+, size_ˆ
+__d¡Ën
+), 
+__mb¡owcs_chk
+)
+
+113 
+	`__w¬Ç‰r
+ ("mbstowcs called with dst buffer smaller�han†en "
+
+116 
+__fÜtify_funùiÚ
+ 
+size_t
+
+
+117 
+	`__NTH
+ (
+	$mb¡owcs
+ (
+wch¬_t
+ *
+__»¡riù
+ 
+__d¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+118 
+size_t
+ 
+__Ën
+))
+
+120 ià(
+	`__bužtš_cÚ¡ªt_p
+ (
+__d¡
+ =ð
+NULL
+) && __dst == NULL)
+
+121  
+	`__mb¡owcs_nuÎd¡
+ (
+__d¡
+, 
+__¤c
+, 
+__Ën
+);
+
+123  
+	`__glibc_fÜtify_n
+ (
+mb¡owcs
+, 
+__Ën
+,  (
+wch¬_t
+),
+
+124 
+	`__glibc_objsize
+ (
+__d¡
+), __d¡, 
+__¤c
+, 
+__Ën
+);
+
+125 
+	}
+}
+
+127 
+size_t
+ 
+	$__wc¡ombs_chk
+ (*
+__»¡riù
+ 
+__d¡
+,
+
+128 cÚ¡ 
+wch¬_t
+ *
+__»¡riù
+ 
+__¤c
+,
+
+129 
+size_t
+ 
+__Ën
+, size_ˆ
+__d¡Ën
+è
+__THROW
+
+
+130 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3)è__©Œ_acûs ((
+__»ad_Úly__
+, 2));
+
+131 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__wc¡ombs_®Ÿs
+,
+
+132 (*
+__»¡riù
+ 
+__d¡
+,
+
+133 cÚ¡ 
+wch¬_t
+ *
+__»¡riù
+ 
+__¤c
+,
+
+134 
+size_t
+ 
+__Ën
+), 
+wc¡ombs
+)
+
+135 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 3)è__©Œ_acûs ((
+__»ad_Úly__
+, 2));
+
+136 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__wc¡ombs_chk_w¬n
+,
+
+137 (*
+__»¡riù
+ 
+__d¡
+,
+
+138 cÚ¡ 
+wch¬_t
+ *
+__»¡riù
+ 
+__¤c
+,
+
+139 
+size_t
+ 
+__Ën
+, size_ˆ
+__d¡Ën
+), 
+__wc¡ombs_chk
+)
+
+140 
+	`__w¬Ç‰r
+ ("wcstombs called with dst buffer smaller�han†en");
+
+142 
+__fÜtify_funùiÚ
+ 
+size_t
+
+
+143 
+	`__NTH
+ (
+	$wc¡ombs
+ (*
+__»¡riù
+ 
+__d¡
+, cÚ¡ 
+wch¬_t
+ *__»¡riù 
+__¤c
+,
+
+144 
+size_t
+ 
+__Ën
+))
+
+146  
+	`__glibc_fÜtify
+ (
+wc¡ombs
+, 
+__Ën
+,  (),
+
+147 
+	`__glibc_objsize
+ (
+__d¡
+),
+
+148 
+__d¡
+, 
+__¤c
+, 
+__Ën
+);
+
+149 
+	}
+}
+
+	@/usr/include/bits/string_fortified.h
+
+18 #iâdeà
+_BITS_STRING_FORTIFIED_H
+
+
+19 
+	#_BITS_STRING_FORTIFIED_H
+ 1
+
+	)
+
+21 #iâdeà
+_STRING_H
+
+
+25 
+__fÜtify_funùiÚ
+ *
+
+26 
+__NTH
+ (
+	$memýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+27 
+size_t
+ 
+__Ën
+))
+
+29  
+	`__bužtš___memýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+30 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+31 
+	}
+}
+
+33 
+__fÜtify_funùiÚ
+ *
+
+34 
+__NTH
+ (
+	$memmove
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__Ën
+))
+
+36  
+	`__bužtš___memmove_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+37 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+38 
+	}
+}
+
+40 #ifdeà
+__USE_GNU
+
+
+41 
+__fÜtify_funùiÚ
+ *
+
+42 
+__NTH
+ (
+	$mempýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+43 
+size_t
+ 
+__Ën
+))
+
+45  
+	`__bužtš___mempýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+46 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+47 
+	}
+}
+
+56 
+__fÜtify_funùiÚ
+ *
+
+57 
+__NTH
+ (
+	$mem£t
+ (*
+__de¡
+, 
+__ch
+, 
+size_t
+ 
+__Ën
+))
+
+59  
+	`__bužtš___mem£t_chk
+ (
+__de¡
+, 
+__ch
+, 
+__Ën
+,
+
+60 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+61 
+	}
+}
+
+63 #ifdeà
+__USE_MISC
+
+
+64 
+	~<b™s/¡ršgs_fÜtif›d.h
+>
+
+66 
+	$__ex¶ic™_bz”o_chk
+ (*
+__de¡
+, 
+size_t
+ 
+__Ën
+, size_ˆ
+__de¡Ën
+)
+
+67 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+	`__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 2);
+
+69 
+__fÜtify_funùiÚ
+ 
+
+70 
+	`__NTH
+ (
+	$ex¶ic™_bz”o
+ (*
+__de¡
+, 
+size_t
+ 
+__Ën
+))
+
+72 
+	`__ex¶ic™_bz”o_chk
+ (
+__de¡
+, 
+__Ën
+, 
+	`__glibc_objsize0
+ (__dest));
+
+73 
+	}
+}
+
+76 
+__fÜtify_funùiÚ
+ *
+
+77 
+__NTH
+ (
+	$¡rýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+))
+
+79  
+	`__bužtš___¡rýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+	`__glibc_objsize
+ (__dest));
+
+80 
+	}
+}
+
+82 #ifdeà
+__USE_XOPEN2K8
+
+
+83 
+__fÜtify_funùiÚ
+ *
+
+84 
+__NTH
+ (
+	$¡pýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+))
+
+86  
+	`__bužtš___¡pýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+	`__glibc_objsize
+ (__dest));
+
+87 
+	}
+}
+
+91 
+__fÜtify_funùiÚ
+ *
+
+92 
+__NTH
+ (
+	$¡ºýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+93 
+size_t
+ 
+__Ën
+))
+
+95  
+	`__bužtš___¡ºýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+96 
+	`__glibc_objsize
+ (
+__de¡
+));
+
+97 
+	}
+}
+
+99 #ifdeà
+__USE_XOPEN2K8
+
+
+100 #ià
+__GNUC_PREREQ
+ (4, 7è|| 
+__glibc_þªg_´”eq
+ (2, 6)
+
+101 
+__fÜtify_funùiÚ
+ *
+
+102 
+__NTH
+ (
+	$¡²ýy
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+))
+
+104  
+	`__bužtš___¡²ýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+,
+
+105 
+	`__glibc_objsize
+ (
+__de¡
+));
+
+106 
+	}
+}
+
+108 
*
+	$__¡²ýy_chk
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+,
+
+109 
+size_t
+ 
+__de¡Ën
+è
+__THROW
+
+
+110 
+	$__fÜtif›d_©Œ_acûss
+ (
+__wr™e_Úly__
+, 1, 3)
+
+111 
+	`__©Œ_acûss
+ ((
+__»ad_Úly__
+, 2));
+
+112 
*
+	`__REDIRECT_NTH
+ (
+__¡²ýy_®Ÿs
+, (*
+__de¡
+, cÚ¡ *
+__¤c
+,
+
+113 
+size_t
+ 
+__n
+), 
+¡²ýy
+);
+
+115 
+__fÜtify_funùiÚ
+ *
+
+116 
+	`__NTH
+ (
+	$¡²ýy
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+))
+
+118 ià(
+	`__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1
+
+119 && (!
+	`__bužtš_cÚ¡ªt_p
+ (
+__n
+è|| __À> 
+	`__bos
+ (
+__de¡
+)))
+
+120  
+	`__¡²ýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+, 
+	`__bos
+ (__dest));
+
+121  
+	`__¡²ýy_®Ÿs
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+);
+
+122 
+	}
+}
+
+127 
+__fÜtify_funùiÚ
+ *
+
+128 
+__NTH
+ (
+	$¡rÿt
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+))
+
+130  
+	`__bužtš___¡rÿt_chk
+ (
+__de¡
+, 
+__¤c
+, 
+	`__glibc_objsize
+ (__dest));
+
+131 
+	}
+}
+
+134 
+__fÜtify_funùiÚ
+ *
+
+135 
+__NTH
+ (
+	$¡ºÿt
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+136 
+size_t
+ 
+__Ën
+))
+
+138  
+	`__bužtš___¡ºÿt_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+139 
+	`__glibc_objsize
+ (
+__de¡
+));
+
+140 
+	}
+}
+
+142 #ifdeà
+__USE_MISC
+
+
+143 
+size_t
+ 
+	$__¡¾ýy_chk
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+,
+
+144 
+size_t
+ 
+__de¡Ën
+è
+__THROW
+;
+
+145 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__¡¾ýy_®Ÿs
+,
+
+146 (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+),
+
+147 
+¡¾ýy
+);
+
+149 
+__fÜtify_funùiÚ
+ 
+size_t
+
+
+150 
+	`__NTH
+ (
+	$¡¾ýy
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+151 
+size_t
+ 
+__n
+))
+
+153 ià(
+	`__glibc_objsize
+ (
+__de¡
+è!ð(
+size_t
+) -1
+
+154 && (!
+	`__bužtš_cÚ¡ªt_p
+ (
+__n
+ > 
+	`__glibc_objsize
+ (
+__de¡
+))
+
+155 || 
+__n
+ > 
+	`__glibc_objsize
+ (
+__de¡
+)))
+
+156  
+	`__¡¾ýy_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+, 
+	`__glibc_objsize
+ (__dest));
+
+157  
+	`__¡¾ýy_®Ÿs
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+);
+
+158 
+	}
+}
+
+160 
+size_t
+ 
+	$__¡¾ÿt_chk
+ (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+,
+
+161 
+size_t
+ 
+__de¡Ën
+è
+__THROW
+;
+
+162 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__¡¾ÿt_®Ÿs
+,
+
+163 (*
+__de¡
+, cÚ¡ *
+__¤c
+, 
+size_t
+ 
+__n
+),
+
+164 
+¡¾ÿt
+);
+
+166 
+__fÜtify_funùiÚ
+ 
+size_t
+
+
+167 
+	`__NTH
+ (
+	$¡¾ÿt
+ (*
+__»¡riù
+ 
+__de¡
+, cÚ¡ *__»¡riù 
+__¤c
+,
+
+168 
+size_t
+ 
+__n
+))
+
+170 ià(
+	`__glibc_objsize
+ (
+__de¡
+è!ð(
+size_t
+) -1
+
+171 && (!
+	`__bužtš_cÚ¡ªt_p
+ (
+__n
+ > 
+	`__glibc_objsize
+ (
+__de¡
+))
+
+172 || 
+__n
+ > 
+	`__glibc_objsize
+ (
+__de¡
+)))
+
+173  
+	`__¡¾ÿt_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+, 
+	`__glibc_objsize
+ (__dest));
+
+174  
+	`__¡¾ÿt_®Ÿs
+ (
+__de¡
+, 
+__¤c
+, 
+__n
+);
+
+175 
+	}
+}
+
+	@/usr/include/bits/strings_fortified.h
+
+19 #iâdeà
+__STRINGS_FORTIFIED
+
+
+20 
+	#__STRINGS_FORTIFIED
+ 1
+
+	)
+
+22 
+__fÜtify_funùiÚ
+ 
+
+23 
+__NTH
+ (
+	$bcÝy
+ (cÚ¡ *
+__¤c
+, *
+__de¡
+, 
+size_t
+ 
+__Ën
+))
+
+25 (è
+	`__bužtš___memmove_chk
+ (
+__de¡
+, 
+__¤c
+, 
+__Ën
+,
+
+26 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+27 
+	}
+}
+
+29 
+__fÜtify_funùiÚ
+ 
+
+30 
+__NTH
+ (
+	$bz”o
+ (*
+__de¡
+, 
+size_t
+ 
+__Ën
+))
+
+32 (è
+	`__bužtš___mem£t_chk
+ (
+__de¡
+, '\0', 
+__Ën
+,
+
+33 
+	`__glibc_objsize0
+ (
+__de¡
+));
+
+34 
+	}
+}
+
+	@/usr/include/bits/time.h
+
+23 #iâdeà
+_BITS_TIME_H
+
+
+24 
+	#_BITS_TIME_H
+ 1
+
+	)
+
+26 
+	~<b™s/ty³s.h
+>
+
+34 
+	#CLOCKS_PER_SEC
+ ((
+__þock_t
+è1000000)
+
+	)
+
+36 #ià(!
+defšed
+ 
+__STRICT_ANSI__
+ || defšed 
+__USE_POSIX
+) \
+
+37 && !
+defšed
+ 
+__USE_XOPEN2K
+
+
+40 

+__syscÚf
+ ();
+
+41 
+	#CLK_TCK
+ ((
+__þock_t
+è
+	`__syscÚf
+ (2)è
+
+	)
+
+44 #ifdeà
+__USE_POSIX199309
+
+
+46 
+	#CLOCK_REALTIME
+ 0
+
+	)
+
+48 
+	#CLOCK_MONOTONIC
+ 1
+
+	)
+
+50 
+	#CLOCK_PROCESS_CPUTIME_ID
+ 2
+
+	)
+
+52 
+	#CLOCK_THREAD_CPUTIME_ID
+ 3
+
+	)
+
+54 
+	#CLOCK_MONOTONIC_RAW
+ 4
+
+	)
+
+56 
+	#CLOCK_REALTIME_COARSE
+ 5
+
+	)
+
+58 
+	#CLOCK_MONOTONIC_COARSE
+ 6
+
+	)
+
+60 
+	#CLOCK_BOOTTIME
+ 7
+
+	)
+
+62 
+	#CLOCK_REALTIME_ALARM
+ 8
+
+	)
+
+64 
+	#CLOCK_BOOTTIME_ALARM
+ 9
+
+	)
+
+66 
+	#CLOCK_TAI
+ 11
+
+	)
+
+69 
+	#TIMER_ABSTIME
+ 1
+
+	)
+
+72 #ifdeà
+__USE_GNU
+
+
+73 
+	~<b™s/timex.h
+>
+
+75 
+__BEGIN_DECLS
+
+
+78 

+	$þock_adjtime
+ (
+__þockid_t
+ 
+__þock_id
+, 
+timex
+ *
+__utx
+è
+__THROW
+ 
+	`__nÚnuÎ
+((2));
+
+80 #ifdeà
+__USE_TIME_BITS64
+
+
+81 #ià
+	`defšed
+(
+__REDIRECT_NTH
+)
+
+82 

+	`__REDIRECT_NTH
+ (
+þock_adjtime
+, (
+__þockid_t
+ 
+__þock_id
+,
+
+83 
+timex
+ *
+__utx
+),
+
+84 
+__þock_adjtime64
+è
+	`__nÚnuÎ
+((2));
+
+86 
+	#þock_adjtime
+ 
+__þock_adjtime64
+
+
+	)
+
+90 
+__END_DECLS
+
+
+	@/usr/include/bits/types.h
+
+23 #iâdef 
+_BITS_TYPES_H
+
+
+24 
+	#_BITS_TYPES_H
+ 1
+
+	)
+
+26 
+	~<ã©u»s.h
+>
+
+27 
+	~<b™s/wÜdsize.h
+>
+
+28 
+	~<b™s/timesize.h
+>
+
+31 
+	t__u_ch¬
+;
+
+32 
+	t__u_shÜt
+;
+
+33 
+	t__u_št
+;
+
+34 
+	t__u_lÚg
+;
+
+37 sigÃd 
+	t__št8_t
+;
+
+38 
+	t__ušt8_t
+;
+
+39 sigÃd 
+	t__št16_t
+;
+
+40 
+	t__ušt16_t
+;
+
+41 sigÃd 
+	t__št32_t
+;
+
+42 
+	t__ušt32_t
+;
+
+43 #ià
+__WORDSIZE
+ == 64
+
+44 sigÃd 
+	t__št64_t
+;
+
+45 
+	t__ušt64_t
+;
+
+47 
+__ex‹nsiÚ__
+ sigÃd 
+	t__št64_t
+;
+
+48 
+__ex‹nsiÚ__
+ 
+	t__ušt64_t
+;
+
+52 
+__št8_t
+ 
+	t__št_Ëa¡8_t
+;
+
+53 
+__ušt8_t
+ 
+	t__ušt_Ëa¡8_t
+;
+
+54 
+__št16_t
+ 
+	t__št_Ëa¡16_t
+;
+
+55 
+__ušt16_t
+ 
+	t__ušt_Ëa¡16_t
+;
+
+56 
+__št32_t
+ 
+	t__št_Ëa¡32_t
+;
+
+57 
+__ušt32_t
+ 
+	t__ušt_Ëa¡32_t
+;
+
+58 
+__št64_t
+ 
+	t__št_Ëa¡64_t
+;
+
+59 
+__ušt64_t
+ 
+	t__ušt_Ëa¡64_t
+;
+
+62 #ià
+__WORDSIZE
+ == 64
+
+63 
+	t__quad_t
+;
+
+64 
+	t__u_quad_t
+;
+
+66 
+__ex‹nsiÚ__
+ 
+	t__quad_t
+;
+
+67 
+__ex‹nsiÚ__
+ 
+	t__u_quad_t
+;
+
+71 #ià
+__WORDSIZE
+ == 64
+
+72 
+	t__štmax_t
+;
+
+73 
+	t__uštmax_t
+;
+
+75 
+__ex‹nsiÚ__
+ 
+	t__štmax_t
+;
+
+76 
+__ex‹nsiÚ__
+ 
+	t__uštmax_t
+;
+
+109 
+	#__S16_TYPE
+ 
+
+	)
+
+110 
+	#__U16_TYPE
+ 
+
+	)
+
+111 
+	#__S32_TYPE
+ 
+
+	)
+
+112 
+	#__U32_TYPE
+ 
+
+	)
+
+113 
+	#__SLONGWORD_TYPE
+ 
+
+	)
+
+114 
+	#__ULONGWORD_TYPE
+ 
+
+	)
+
+115 #ià
+__WORDSIZE
+ == 32
+
+116 
+	#__SQUAD_TYPE
+ 
+__št64_t
+
+
+	)
+
+117 
+	#__UQUAD_TYPE
+ 
+__ušt64_t
+
+
+	)
+
+118 
+	#__SWORD_TYPE
+ 
+
+	)
+
+119 
+	#__UWORD_TYPE
+ 
+
+	)
+
+120 
+	#__SLONG32_TYPE
+ 
+
+	)
+
+121 
+	#__ULONG32_TYPE
+ 
+
+	)
+
+122 
+	#__S64_TYPE
+ 
+__št64_t
+
+
+	)
+
+123 
+	#__U64_TYPE
+ 
+__ušt64_t
+
+
+	)
+
+126 
+	#__STD_TYPE
+ 
+__ex‹nsiÚ__
+ 
+
+	)
+
+127 #–ià
+__WORDSIZE
+ == 64
+
+128 
+	t__SQUAD_TYPE
+ 
+
+	)
+
+129 
+	t__UQUAD_TYPE
+ 
+
+	)
+
+130 
+	t__SWORD_TYPE
+ 
+
+	)
+
+131 
+	t__UWORD_TYPE
+ 
+
+	)
+
+132 
+	t__SLONG32_TYPE
+ 
+
+	)
+
+133 
+	t__ULONG32_TYPE
+ 
+
+	)
+
+134 
+	t__S64_TYPE
+ 
+
+	)
+
+135 
+	t__U64_TYPE
+ 
+
+	)
+
+137 
+	t__STD_TYPE
+ 
+
+	)
+
+141 
+	~<b™s/ty³sizes.h
+>
+
+142 
+	~<b™s/time64.h
+>
+
+145 
+__STD_TYPE
+ 
+	t__DEV_T_TYPE
+ 
+	t__dev_t
+;
+
+146 
+__STD_TYPE
+ 
+__UID_T_TYPE
+ 
+	g__uid_t
+;
+
+147 
+__STD_TYPE
+ 
+__GID_T_TYPE
+ 
+	g__gid_t
+;
+
+148 
+__STD_TYPE
+ 
+__INO_T_TYPE
+ 
+	g__šo_t
+;
+
+149 
+__STD_TYPE
+ 
+__INO64_T_TYPE
+ 
+	g__šo64_t
+;
+
+150 
+__STD_TYPE
+ 
+__MODE_T_TYPE
+ 
+	g__mode_t
+;
+
+151 
+__STD_TYPE
+ 
+__NLINK_T_TYPE
+ 
+	g__Æšk_t
+;
+
+152 
+__STD_TYPE
+ 
+__OFF_T_TYPE
+ 
+	g__off_t
+;
+
+153 
+__STD_TYPE
+ 
+__OFF64_T_TYPE
+ 
+	g__off64_t
+;
+
+154 
+__STD_TYPE
+ 
+__PID_T_TYPE
+ 
+	g__pid_t
+;
+
+155 
+__STD_TYPE
+ 
+__FSID_T_TYPE
+ 
+	g__fsid_t
+;
+
+156 
+__STD_TYPE
+ 
+__CLOCK_T_TYPE
+ 
+	g__þock_t
+;
+
+157 
+__STD_TYPE
+ 
+__RLIM_T_TYPE
+ 
+	g__¾im_t
+;
+
+158 
+__STD_TYPE
+ 
+__RLIM64_T_TYPE
+ 
+	g__¾im64_t
+;
+
+159 
+__STD_TYPE
+ 
+__ID_T_TYPE
+ 
+	g__id_t
+;
+
+160 
+__STD_TYPE
+ 
+__TIME_T_TYPE
+ 
+	g__time_t
+;
+
+161 
+__STD_TYPE
+ 
+__USECONDS_T_TYPE
+ 
+	g__u£cÚds_t
+;
+
+162 
+__STD_TYPE
+ 
+__SUSECONDS_T_TYPE
+ 
+	g__su£cÚds_t
+;
+
+163 
+__STD_TYPE
+ 
+__SUSECONDS64_T_TYPE
+ 
+	g__su£cÚds64_t
+;
+
+165 
+__STD_TYPE
+ 
+__DADDR_T_TYPE
+ 
+	g__daddr_t
+;
+
+166 
+__STD_TYPE
+ 
+__KEY_T_TYPE
+ 
+	g__key_t
+;
+
+169 
+__STD_TYPE
+ 
+__CLOCKID_T_TYPE
+ 
+	g__þockid_t
+;
+
+172 
+__STD_TYPE
+ 
+__TIMER_T_TYPE
+ 
+	g__tim”_t
+;
+
+175 
+__STD_TYPE
+ 
+__BLKSIZE_T_TYPE
+ 
+	g__blksize_t
+;
+
+180 
+__STD_TYPE
+ 
+__BLKCNT_T_TYPE
+ 
+	g__blkút_t
+;
+
+181 
+__STD_TYPE
+ 
+__BLKCNT64_T_TYPE
+ 
+	g__blkút64_t
+;
+
+184 
+__STD_TYPE
+ 
+__FSBLKCNT_T_TYPE
+ 
+	g__fsblkút_t
+;
+
+185 
+__STD_TYPE
+ 
+__FSBLKCNT64_T_TYPE
+ 
+	g__fsblkút64_t
+;
+
+188 
+__STD_TYPE
+ 
+__FSFILCNT_T_TYPE
+ 
+	g__fsfžút_t
+;
+
+189 
+__STD_TYPE
+ 
+__FSFILCNT64_T_TYPE
+ 
+	g__fsfžút64_t
+;
+
+192 
+__STD_TYPE
+ 
+__FSWORD_T_TYPE
+ 
+	g__fswÜd_t
+;
+
+194 
+__STD_TYPE
+ 
+__SSIZE_T_TYPE
+ 
+	g__ssize_t
+;
+
+197 
+__STD_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+ 
+	g__sysÿÎ_¦Úg_t
+;
+
+199 
+__STD_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+ 
+	g__sysÿÎ_ulÚg_t
+;
+
+203 
+__off64_t
+ 
+	t__loff_t
+;
+
+204 *
+	t__ÿddr_t
+;
+
+207 
+__STD_TYPE
+ 
+__SWORD_TYPE
+ 
+	g__š�Œ_t
+;
+
+210 
+__STD_TYPE
+ 
+__U32_TYPE
+ 
+	g__sockËn_t
+;
+
+215 
+	t__sig_©omic_t
+;
+
+220 #ià
+__TIMESIZE
+ =ð64 && 
+defšed
+ 
+__LIBC
+
+
+221 
+	#__time64_t
+ 
+__time_t
+
+
+	)
+
+222 #–ià
+__TIMESIZE
+ != 64
+
+223 
+__STD_TYPE
+ 
+__TIME64_T_TYPE
+ 
+	g__time64_t
+;
+
+226 #undeà
+__STD_TYPE
+
+
+	@/usr/include/bits/types/FILE.h
+
+1 #iâdeà
+__FILE_defšed
+
+
+2 
+	#__FILE_defšed
+ 1
+
+	)
+
+4 
+	g_IO_FILE
+;
+
+7 
+_IO_FILE
+ 
+	tFILE
+;
+
+	@/usr/include/bits/types/__FILE.h
+
+1 #iâdeà
+____FILE_defšed
+
+
+2 
+	#____FILE_defšed
+ 1
+
+	)
+
+4 
+	g_IO_FILE
+;
+
+5 
+_IO_FILE
+ 
+	t__FILE
+;
+
+	@/usr/include/bits/types/__fpos64_t.h
+
+1 #iâdeà
+_____åos64_t_defšed
+
+
+2 
+	#_____åos64_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+5 
+	~<b™s/ty³s/__mb¡©e_t.h
+>
+
+10 
+	s_G_åos64_t
+
+
+12 
+__off64_t
+ 
+	m__pos
+;
+
+13 
+__mb¡©e_t
+ 
+	m__¡©e
+;
+
+14 } 
+	t__åos64_t
+;
+
+	@/usr/include/bits/types/__fpos_t.h
+
+1 #iâdeà
+_____åos_t_defšed
+
+
+2 
+	#_____åos_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+5 
+	~<b™s/ty³s/__mb¡©e_t.h
+>
+
+10 
+	s_G_åos_t
+
+
+12 
+__off_t
+ 
+	m__pos
+;
+
+13 
+__mb¡©e_t
+ 
+	m__¡©e
+;
+
+14 } 
+	t__åos_t
+;
+
+	@/usr/include/bits/types/__sigset_t.h
+
+1 #iâdeà
+____sig£t_t_defšed
+
+
+2 
+	#____sig£t_t_defšed
+
+
+	)
+
+4 
+	#_SIGSET_NWORDS
+ (1024 / (8 *  ()))
+
+	)
+
+7 
+	m__v®
+[
+_SIGSET_NWORDS
+];
+
+8 } 
+	t__sig£t_t
+;
+
+	@/usr/include/bits/types/clock_t.h
+
+1 #iâdeà
+__þock_t_defšed
+
+
+2 
+	#__þock_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+7 
+__þock_t
+ 
+	tþock_t
+;
+
+	@/usr/include/bits/types/clockid_t.h
+
+1 #iâdeà
+__þockid_t_defšed
+
+
+2 
+	#__þockid_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+7 
+__þockid_t
+ 
+	tþockid_t
+;
+
+	@/usr/include/bits/types/cookie_io_functions_t.h
+
+18 #iâdeà
+__cook›_io_funùiÚs_t_defšed
+
+
+19 
+	#__cook›_io_funùiÚs_t_defšed
+ 1
+
+	)
+
+21 
+	~<b™s/ty³s.h
+>
+
+27 
+__ssize_t
+ 
+	tcook›_»ad_funùiÚ_t
+ (*
+	t__cook›
+, *
+	t__buf
+,
+
+28 
+	tsize_t
+ 
+	t__nby‹s
+);
+
+36 
+__ssize_t
+ 
+	tcook›_wr™e_funùiÚ_t
+ (*
+	t__cook›
+, cÚ¡ *
+	t__buf
+,
+
+37 
+	tsize_t
+ 
+	t__nby‹s
+);
+
+45 
+	tcook›_£ek_funùiÚ_t
+ (*
+	t__cook›
+, 
+	t__off64_t
+ *
+	t__pos
+, 
+	t__w
+);
+
+48 
+	tcook›_þo£_funùiÚ_t
+ (*
+	t__cook›
+);
+
+55 
+	s_IO_cook›_io_funùiÚs_t
+
+
+57 
+cook›_»ad_funùiÚ_t
+ *
+	m»ad
+;
+
+58 
+cook›_wr™e_funùiÚ_t
+ *
+	mwr™e
+;
+
+59 
+cook›_£ek_funùiÚ_t
+ *
+	m£ek
+;
+
+60 
+cook›_þo£_funùiÚ_t
+ *
+	mþo£
+;
+
+61 } 
+	tcook›_io_funùiÚs_t
+;
+
+	@/usr/include/bits/types/error_t.h
+
+19 #iâdeà
+__”rÜ_t_defšed
+
+
+20 
+	#__”rÜ_t_defšed
+ 1
+
+	)
+
+22 
+	t”rÜ_t
+;
+
+	@/usr/include/bits/types/idtype_t.h
+
+1 #iâdeà
+__idty³_t_defšed
+
+
+2 
+	#__idty³_t_defšed
+
+
+	)
+
+7 
+	mP_ALL
+,
+
+8 
+	mP_PID
+,
+
+9 
+	mP_PGID
+,
+
+10 
+	mP_PIDFD
+,
+
+12 } 
+	tidty³_t
+;
+
+	@/usr/include/bits/types/locale_t.h
+
+19 #iâdeà
+_BITS_TYPES_LOCALE_T_H
+
+
+20 
+	#_BITS_TYPES_LOCALE_T_H
+ 1
+
+	)
+
+22 
+	~<b™s/ty³s/__loÿË_t.h
+>
+
+24 
+__loÿË_t
+ 
+	tloÿË_t
+;
+
+	@/usr/include/bits/types/res_state.h
+
+1 #iâdeà
+__»s_¡©e_defšed
+
+
+2 
+	#__»s_¡©e_defšed
+ 1
+
+	)
+
+4 
+	~<sys/ty³s.h
+>
+
+5 
+	~<Ãtš‘/š.h
+>
+
+8 
+	#MAXNS
+ 3
+
+	)
+
+9 
+	#MAXDFLSRCH
+ 3
+
+	)
+
+10 
+	#MAXDNSRCH
+ 6
+
+	)
+
+11 
+	#MAXRESOLVSORT
+ 10
+
+	)
+
+13 
+	s__»s_¡©e
+ {
+
+14 
+	m»Œªs
+;
+
+15 
+	m»Œy
+;
+
+16 
+	mÝtiÚs
+;
+
+17 
+	mnscouÁ
+;
+
+18 
+sockaddr_š
+
+
+19 
+	mn§ddr_li¡
+[
+MAXNS
+];
+
+20 
+	mid
+;
+
+22 *
+	mdn¤ch
+[
+MAXDNSRCH
++1];
+
+23 
+	mdefdÇme
+[256];
+
+24 
+	mpfcode
+;
+
+25 
+	mndÙs
+:4;
+
+26 
+	mnsÜt
+:4;
+
+27 
+	m�v6_uÇvaž
+:1;
+
+28 
+	munu£d
+:23;
+
+30 
+š_addr
+ 
+	maddr
+;
+
+31 
+ušt32_t
+ 
+	mmask
+;
+
+32 } 
+	msÜt_li¡
+[
+MAXRESOLVSORT
+];
+
+34 * 
+	m__glibc_unu£d_qhook
+;
+
+35 * 
+	m__glibc_unu£d_rhook
+;
+
+36 
+	m»s_h_”ºo
+;
+
+37 
+	m_vcsock
+;
+
+38 
+	m_æags
+;
+
+41 
+	m·d
+[52];
+
+43 
+ušt16_t
+ 
+	mnscouÁ
+;
+
+44 
+ušt16_t
+ 
+	mnsm­
+[
+MAXNS
+];
+
+45 
+	mnssocks
+[
+MAXNS
+];
+
+46 
+ušt16_t
+ 
+	mnscouÁ6
+;
+
+47 
+ušt16_t
+ 
+	mnsš™
+;
+
+48 
+sockaddr_š6
+ *
+	mn§ddrs
+[
+MAXNS
+];
+
+49 #ifdeà
+_LIBC
+
+
+50 
+__glibc_ex‹nsiÚ_šdex
+
+
+51 
+__©Œibu‹__
+((
+·cked
+));
+
+53 
+	m__glibc_»£rved
+[2];
+
+55 } 
+	m_ext
+;
+
+56 } 
+	m_u
+;
+
+59 
+__»s_¡©e
+ *
+	t»s_¡©e
+;
+
+	@/usr/include/bits/types/sig_atomic_t.h
+
+1 #iâdeà
+__sig_©omic_t_defšed
+
+
+2 
+	#__sig_©omic_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+8 
+__sig_©omic_t
+ 
+	tsig_©omic_t
+;
+
+	@/usr/include/bits/types/sigevent_t.h
+
+1 #iâdeà
+__sigev’t_t_defšed
+
+
+2 
+	#__sigev’t_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/wÜdsize.h
+>
+
+5 
+	~<b™s/ty³s.h
+>
+
+6 
+	~<b™s/ty³s/__sigv®_t.h
+>
+
+8 
+	#__SIGEV_MAX_SIZE
+ 64
+
+	)
+
+9 #ià
+__WORDSIZE
+ == 64
+
+10 
+	#__SIGEV_PAD_SIZE
+ ((
+__SIGEV_MAX_SIZE
+ /  ()è- 4)
+
+	)
+
+12 
+	#__SIGEV_PAD_SIZE
+ ((
+__SIGEV_MAX_SIZE
+ /  ()è- 3)
+
+	)
+
+16 #iâdeà
+__have_±h»ad_©Œ_t
+
+
+17 
+±h»ad_©Œ_t
+ 
+	t±h»ad_©Œ_t
+;
+
+18 
+	#__have_±h»ad_©Œ_t
+ 1
+
+	)
+
+22 
+	ssigev’t
+
+
+24 
+__sigv®_t
+ 
+	msigev_v®ue
+;
+
+25 
+	msigev_signo
+;
+
+26 
+	msigev_nÙify
+;
+
+30 
+	m_·d
+[
+__SIGEV_PAD_SIZE
+];
+
+34 
+__pid_t
+ 
+	m_tid
+;
+
+38 (*
+	m_funùiÚ
+è(
+	m__sigv®_t
+);
+
+39 
+±h»ad_©Œ_t
+ *
+	m_©Œibu‹
+;
+
+40 } 
+	m_sigev_th»ad
+;
+
+41 } 
+	m_sigev_un
+;
+
+42 } 
+	tsigev’t_t
+;
+
+45 
+	#sigev_nÙify_funùiÚ
+ 
+_sigev_un
+.
+_sigev_th»ad
+.
+_funùiÚ
+
+
+	)
+
+46 
+	#sigev_nÙify_©Œibu‹s
+ 
+_sigev_un
+.
+_sigev_th»ad
+.
+_©Œibu‹
+
+
+	)
+
+	@/usr/include/bits/types/siginfo_t.h
+
+1 #iâdeà
+__sigšfo_t_defšed
+
+
+2 
+	#__sigšfo_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/wÜdsize.h
+>
+
+5 
+	~<b™s/ty³s.h
+>
+
+6 
+	~<b™s/ty³s/__sigv®_t.h
+>
+
+8 
+	#__SI_MAX_SIZE
+ 128
+
+	)
+
+9 #ià
+__WORDSIZE
+ == 64
+
+10 
+	#__SI_PAD_SIZE
+ ((
+__SI_MAX_SIZE
+ /  ()è- 4)
+
+	)
+
+12 
+	#__SI_PAD_SIZE
+ ((
+__SI_MAX_SIZE
+ /  ()è- 3)
+
+	)
+
+16 
+	~<b™s/sigšfo-¬ch.h
+>
+
+17 #iâdeà
+__SI_ALIGNMENT
+
+
+18 
+	#__SI_ALIGNMENT
+
+
+	)
+
+20 #iâdeà
+__SI_BAND_TYPE
+
+
+21 
+	#__SI_BAND_TYPE
+ 
+
+	)
+
+23 #iâdeà
+__SI_CLOCK_T
+
+
+24 
+	#__SI_CLOCK_T
+ 
+__þock_t
+
+
+	)
+
+26 #iâdeà
+__SI_ERRNO_THEN_CODE
+
+
+27 
+	#__SI_ERRNO_THEN_CODE
+ 1
+
+	)
+
+29 #iâdeà
+__SI_HAVE_SIGSYS
+
+
+30 
+	#__SI_HAVE_SIGSYS
+ 1
+
+	)
+
+32 #iâdeà
+__SI_SIGFAULT_ADDL
+
+
+33 
+	#__SI_SIGFAULT_ADDL
+
+
+	)
+
+38 
+	msi_signo
+;
+
+39 #ià
+__SI_ERRNO_THEN_CODE
+
+
+40 
+	msi_”ºo
+;
+
+42 
+	msi_code
+;
+
+44 
+	msi_code
+;
+
+45 
+	msi_”ºo
+;
+
+47 #ià
+__WORDSIZE
+ == 64
+
+48 
+	m__·d0
+;
+
+53 
+	m_·d
+[
+__SI_PAD_SIZE
+];
+
+58 
+__pid_t
+ 
+	msi_pid
+;
+
+59 
+__uid_t
+ 
+	msi_uid
+;
+
+60 } 
+	m_kžl
+;
+
+65 
+	msi_tid
+;
+
+66 
+	msi_ov”run
+;
+
+67 
+__sigv®_t
+ 
+	msi_sigv®
+;
+
+68 } 
+	m_tim”
+;
+
+73 
+__pid_t
+ 
+	msi_pid
+;
+
+74 
+__uid_t
+ 
+	msi_uid
+;
+
+75 
+__sigv®_t
+ 
+	msi_sigv®
+;
+
+76 } 
+	m_¹
+;
+
+81 
+__pid_t
+ 
+	msi_pid
+;
+
+82 
+__uid_t
+ 
+	msi_uid
+;
+
+83 
+	msi_¡©us
+;
+
+84 
+__SI_CLOCK_T
+ 
+	msi_utime
+;
+
+85 
+__SI_CLOCK_T
+ 
+	msi_¡ime
+;
+
+86 } 
+	m_sigchld
+;
+
+91 *
+	msi_addr
+;
+
+92 
+__SI_SIGFAULT_ADDL
+
+
+93 
+	msi_addr_lsb
+;
+
+99 *
+	m_low”
+;
+
+100 *
+	m_uµ”
+;
+
+101 } 
+	m_addr_bnd
+;
+
+103 
+__ušt32_t
+ 
+	m_pkey
+;
+
+104 } 
+	m_bounds
+;
+
+105 } 
+	m_sigçuÉ
+;
+
+110 
+__SI_BAND_TYPE
+ 
+	msi_bªd
+;
+
+111 
+	msi_fd
+;
+
+112 } 
+	m_sigpÞl
+;
+
+115 #ià
+__SI_HAVE_SIGSYS
+
+
+118 *
+	m_ÿÎ_addr
+;
+
+119 
+	m_sysÿÎ
+;
+
+120 
+	m_¬ch
+;
+
+121 } 
+	m_sigsys
+;
+
+123 } 
+	m_sif›lds
+;
+
+124 } 
+	tsigšfo_t
+ 
+	t__SI_ALIGNMENT
+;
+
+128 
+	#si_pid
+ 
+_sif›lds
+.
+_kžl
+.
+si_pid
+
+
+	)
+
+129 
+	#si_uid
+ 
+_sif›lds
+.
+_kžl
+.
+si_uid
+
+
+	)
+
+130 
+	#si_tim”id
+ 
+_sif›lds
+.
+_tim”
+.
+si_tid
+
+
+	)
+
+131 
+	#si_ov”run
+ 
+_sif›lds
+.
+_tim”
+.
+si_ov”run
+
+
+	)
+
+132 
+	#si_¡©us
+ 
+_sif›lds
+.
+_sigchld
+.
+si_¡©us
+
+
+	)
+
+133 
+	#si_utime
+ 
+_sif›lds
+.
+_sigchld
+.
+si_utime
+
+
+	)
+
+134 
+	#si_¡ime
+ 
+_sif›lds
+.
+_sigchld
+.
+si_¡ime
+
+
+	)
+
+135 
+	#si_v®ue
+ 
+_sif›lds
+.
+_¹
+.
+si_sigv®
+
+
+	)
+
+136 
+	#si_št
+ 
+_sif›lds
+.
+_¹
+.
+si_sigv®
+.
+siv®_št
+
+
+	)
+
+137 
+	#si_±r
+ 
+_sif›lds
+.
+_¹
+.
+si_sigv®
+.
+siv®_±r
+
+
+	)
+
+138 
+	#si_addr
+ 
+_sif›lds
+.
+_sigçuÉ
+.
+si_addr
+
+
+	)
+
+139 
+	#si_addr_lsb
+ 
+_sif›lds
+.
+_sigçuÉ
+.
+si_addr_lsb
+
+
+	)
+
+140 
+	#si_low”
+ 
+_sif›lds
+.
+_sigçuÉ
+.
+_bounds
+.
+_addr_bnd
+.
+_low”
+
+
+	)
+
+141 
+	#si_uµ”
+ 
+_sif›lds
+.
+_sigçuÉ
+.
+_bounds
+.
+_addr_bnd
+.
+_uµ”
+
+
+	)
+
+142 
+	#si_pkey
+ 
+_sif›lds
+.
+_sigçuÉ
+.
+_bounds
+.
+_pkey
+
+
+	)
+
+143 
+	#si_bªd
+ 
+_sif›lds
+.
+_sigpÞl
+.
+si_bªd
+
+
+	)
+
+144 
+	#si_fd
+ 
+_sif›lds
+.
+_sigpÞl
+.
+si_fd
+
+
+	)
+
+145 #ià
+__SI_HAVE_SIGSYS
+
+
+146 
+	#si_ÿÎ_addr
+ 
+_sif›lds
+.
+_sigsys
+.
+_ÿÎ_addr
+
+
+	)
+
+147 
+	#si_sysÿÎ
+ 
+_sif›lds
+.
+_sigsys
+.
+_sysÿÎ
+
+
+	)
+
+148 
+	#si_¬ch
+ 
+_sif›lds
+.
+_sigsys
+.
+_¬ch
+
+
+	)
+
+	@/usr/include/bits/types/sigset_t.h
+
+1 #iâdeà
+__sig£t_t_defšed
+
+
+2 
+	#__sig£t_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s/__sig£t_t.h
+>
+
+7 
+__sig£t_t
+ 
+	tsig£t_t
+;
+
+	@/usr/include/bits/types/sigval_t.h
+
+1 #iâdeà
+__sigv®_t_defšed
+
+
+2 
+	#__sigv®_t_defšed
+
+
+	)
+
+4 
+	~<b™s/ty³s/__sigv®_t.h
+>
+
+12 #iâdeà
+__USE_POSIX199309
+
+
+16 
+__sigv®_t
+ 
+	tsigv®_t
+;
+
+	@/usr/include/bits/types/stack_t.h
+
+19 #iâdeà
+__¡ack_t_defšed
+
+
+20 
+	#__¡ack_t_defšed
+ 1
+
+	)
+
+22 
+	#__Ãed_size_t
+
+
+	)
+
+23 
+	~<¡ddef.h
+>
+
+28 *
+	mss_¥
+;
+
+29 
+	mss_æags
+;
+
+30 
+size_t
+ 
+	mss_size
+;
+
+31 } 
+	t¡ack_t
+;
+
+	@/usr/include/bits/types/struct_FILE.h
+
+18 #iâdeà
+__¡ruù_FILE_defšed
+
+
+19 
+	#__¡ruù_FILE_defšed
+ 1
+
+	)
+
+25 #ià
+defšed
+ 
+_IO_USE_OLD_IO_FILE
+ && !defšed 
+_LIBC
+
+
+29 #ià
+defšed
+ 
+_IO_lock_t_defšed
+ && !defšed 
+_LIBC
+
+
+33 
+	~<b™s/ty³s.h
+>
+
+35 
+	g_IO_FILE
+;
+
+36 
+	g_IO_m¬k”
+;
+
+37 
+	g_IO_codecvt
+;
+
+38 
+	g_IO_wide_d©a
+;
+
+42 #iâdeà
+_IO_lock_t_defšed
+
+
+43 
+	t_IO_lock_t
+;
+
+49 
+	s_IO_FILE
+
+
+51 
+	m_æags
+;
+
+54 *
+	m_IO_»ad_±r
+;
+
+55 *
+	m_IO_»ad_’d
+;
+
+56 *
+	m_IO_»ad_ba£
+;
+
+57 *
+	m_IO_wr™e_ba£
+;
+
+58 *
+	m_IO_wr™e_±r
+;
+
+59 *
+	m_IO_wr™e_’d
+;
+
+60 *
+	m_IO_buf_ba£
+;
+
+61 *
+	m_IO_buf_’d
+;
+
+64 *
+	m_IO_§ve_ba£
+;
+
+65 *
+	m_IO_backup_ba£
+;
+
+66 *
+	m_IO_§ve_’d
+;
+
+68 
+_IO_m¬k”
+ *
+	m_m¬k”s
+;
+
+70 
+_IO_FILE
+ *
+	m_chaš
+;
+
+72 
+	m_fž’o
+;
+
+73 
+	m_æags2
+;
+
+74 
+__off_t
+ 
+	m_Þd_off£t
+;
+
+77 
+	m_cur_cÞumn
+;
+
+78 sigÃd 
+	m_v�bË_off£t
+;
+
+79 
+	m_shÜtbuf
+[1];
+
+81 
+_IO_lock_t
+ *
+	m_lock
+;
+
+82 #ifdeà
+_IO_USE_OLD_IO_FILE
+
+
+85 
+	s_IO_FILE_com¶‘e
+
+
+87 
+_IO_FILE
+ 
+	m_fže
+;
+
+89 
+__off64_t
+ 
+	m_off£t
+;
+
+91 
+_IO_codecvt
+ *
+	m_codecvt
+;
+
+92 
+_IO_wide_d©a
+ *
+	m_wide_d©a
+;
+
+93 
+_IO_FILE
+ *
+	m_ä“»s_li¡
+;
+
+94 *
+	m_ä“»s_buf
+;
+
+95 
+size_t
+ 
+	m__·d5
+;
+
+96 
+	m_mode
+;
+
+98 
+	m_unu£d2
+[15 *  (è- 4 *  (*è-  (
+size_t
+)];
+
+102 
+	#__g‘c_uÆocked_body
+(
+_å
+) \
+
+103 (
+	`__glibc_uÆik–y
+ ((
+_å
+)->
+_IO_»ad_±r
+ >ð(_å)->
+_IO_»ad_’d
+) \
+
+104 ? 
+	`__uæow
+ (
+_å
+è: *(*è(_å)->
+_IO_»ad_±r
+++)
+
+	)
+
+106 
+	#__putc_uÆocked_body
+(
+_ch
+, 
+_å
+) \
+
+107 (
+	`__glibc_uÆik–y
+ ((
+_å
+)->
+_IO_wr™e_±r
+ >ð(_å)->
+_IO_wr™e_’d
+) \
+
+108 ? 
+	`__ov”æow
+ (
+_å
+, (è(
+_ch
+)) \
+
+109 : (è(*(
+_å
+)->
+_IO_wr™e_±r
+++ = (
+_ch
+)))
+
+	)
+
+111 
+	#_IO_EOF_SEEN
+ 0x0010
+
+	)
+
+112 
+	#__ãof_uÆocked_body
+(
+_å
+è(((_å)->
+_æags
+ & 
+_IO_EOF_SEEN
+è!ð0)
+
+	)
+
+114 
+	#_IO_ERR_SEEN
+ 0x0020
+
+	)
+
+115 
+	#__ã¼Ü_uÆocked_body
+(
+_å
+è(((_å)->
+_æags
+ & 
+_IO_ERR_SEEN
+è!ð0)
+
+	)
+
+117 
+	#_IO_USER_LOCK
+ 0x8000
+
+	)
+
+	@/usr/include/bits/types/struct_iovec.h
+
+19 #iâdeà
+__iovec_defšed
+
+
+20 
+	#__iovec_defšed
+ 1
+
+	)
+
+22 
+	#__Ãed_size_t
+
+
+	)
+
+23 
+	~<¡ddef.h
+>
+
+26 
+	siovec
+
+
+28 *
+	miov_ba£
+;
+
+29 
+size_t
+ 
+	miov_Ën
+;
+
+	@/usr/include/bits/types/struct_itimerspec.h
+
+1 #iâdeà
+__™im”¥ec_defšed
+
+
+2 
+	#__™im”¥ec_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+5 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+8 
+	s™im”¥ec
+
+
+10 
+time¥ec
+ 
+	m™_š‹rv®
+;
+
+11 
+time¥ec
+ 
+	m™_v®ue
+;
+
+	@/usr/include/bits/types/struct_osockaddr.h
+
+1 #iâdeà
+__osockaddr_defšed
+
+
+2 
+	#__osockaddr_defšed
+ 1
+
+	)
+
+6 
+	sosockaddr
+
+
+8 
+	m§_çmžy
+;
+
+9 
+	m§_d©a
+[14];
+
+	@/usr/include/bits/types/struct_rusage.h
+
+19 #iâdeà
+__ru§ge_defšed
+
+
+20 
+	#__ru§ge_defšed
+ 1
+
+	)
+
+22 
+	~<b™s/ty³s.h
+>
+
+23 
+	~<b™s/ty³s/¡ruù_timev®.h
+>
+
+33 
+	sru§ge
+
+
+36 
+timev®
+ 
+	mru_utime
+;
+
+38 
+timev®
+ 
+	mru_¡ime
+;
+
+40 
+__ex‹nsiÚ__
+ union
+
+42 
+	mru_maxrss
+;
+
+43 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_maxrss_wÜd
+;
+
+47 
+__ex‹nsiÚ__
+ union
+
+49 
+	mru_ixrss
+;
+
+50 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_ixrss_wÜd
+;
+
+53 
+__ex‹nsiÚ__
+ union
+
+55 
+	mru_idrss
+;
+
+56 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_idrss_wÜd
+;
+
+59 
+__ex‹nsiÚ__
+ union
+
+61 
+	mru_i¤ss
+;
+
+62 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_i¤ss_wÜd
+;
+
+66 
+__ex‹nsiÚ__
+ union
+
+68 
+	mru_mšæt
+;
+
+69 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_mšæt_wÜd
+;
+
+72 
+__ex‹nsiÚ__
+ union
+
+74 
+	mru_majæt
+;
+
+75 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_majæt_wÜd
+;
+
+78 
+__ex‹nsiÚ__
+ union
+
+80 
+	mru_nsw­
+;
+
+81 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_nsw­_wÜd
+;
+
+85 
+__ex‹nsiÚ__
+ union
+
+87 
+	mru_šblock
+;
+
+88 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_šblock_wÜd
+;
+
+91 
+__ex‹nsiÚ__
+ union
+
+93 
+	mru_oublock
+;
+
+94 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_oublock_wÜd
+;
+
+97 
+__ex‹nsiÚ__
+ union
+
+99 
+	mru_msg¢d
+;
+
+100 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_msg¢d_wÜd
+;
+
+103 
+__ex‹nsiÚ__
+ union
+
+105 
+	mru_msgrcv
+;
+
+106 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_msgrcv_wÜd
+;
+
+109 
+__ex‹nsiÚ__
+ union
+
+111 
+	mru_nsigÇls
+;
+
+112 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_nsigÇls_wÜd
+;
+
+117 
+__ex‹nsiÚ__
+ union
+
+119 
+	mru_nvcsw
+;
+
+120 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_nvcsw_wÜd
+;
+
+124 
+__ex‹nsiÚ__
+ union
+
+126 
+	mru_nivcsw
+;
+
+127 
+__sysÿÎ_¦Úg_t
+ 
+	m__ru_nivcsw_wÜd
+;
+
+	@/usr/include/bits/types/struct_sigstack.h
+
+19 #iâdeà
+__sig¡ack_defšed
+
+
+20 
+	#__sig¡ack_defšed
+ 1
+
+	)
+
+23 
+	ssig¡ack
+
+
+25 *
+	mss_¥
+;
+
+26 
+	mss_Ú¡ack
+;
+
+	@/usr/include/bits/types/struct_timespec.h
+
+2 #iâdeà
+_STRUCT_TIMESPEC
+
+
+3 
+	#_STRUCT_TIMESPEC
+ 1
+
+	)
+
+5 
+	~<b™s/ty³s.h
+>
+
+6 
+	~<b™s/’dŸn.h
+>
+
+7 
+	~<b™s/ty³s/time_t.h
+>
+
+11 
+	stime¥ec
+
+
+13 #ifdeà
+__USE_TIME_BITS64
+
+
+14 
+__time64_t
+ 
+	mtv_£c
+;
+
+16 
+__time_t
+ 
+	mtv_£c
+;
+
+18 #ià
+__WORDSIZE
+ == 64 \
+
+19 || (
+defšed
+ 
+	m__SYSCALL_WORDSIZE
+ && __SYSCALL_WORDSIZE == 64) \
+
+20 || (
+__TIMESIZE
+ =ð32 && !
+defšed
+ 
+__USE_TIME_BITS64
+)
+
+21 
+__sysÿÎ_¦Úg_t
+ 
+tv_n£c
+;
+
+23 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+25 
+	mtv_n£c
+;
+
+27 
+	mtv_n£c
+;
+
+	@/usr/include/bits/types/struct_timeval.h
+
+1 #iâdeà
+__timev®_defšed
+
+
+2 
+	#__timev®_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+8 
+	stimev®
+
+
+10 #ifdeà
+__USE_TIME_BITS64
+
+
+11 
+__time64_t
+ 
+	mtv_£c
+;
+
+12 
+__su£cÚds64_t
+ 
+	mtv_u£c
+;
+
+14 
+__time_t
+ 
+	mtv_£c
+;
+
+15 
+__su£cÚds_t
+ 
+	mtv_u£c
+;
+
+	@/usr/include/bits/types/struct_tm.h
+
+1 #iâdeà
+__¡ruù_tm_defšed
+
+
+2 
+	#__¡ruù_tm_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+7 
+	stm
+
+
+9 
+	mtm_£c
+;
+
+10 
+	mtm_mš
+;
+
+11 
+	mtm_hour
+;
+
+12 
+	mtm_mday
+;
+
+13 
+	mtm_mÚ
+;
+
+14 
+	mtm_y—r
+;
+
+15 
+	mtm_wday
+;
+
+16 
+	mtm_yday
+;
+
+17 
+	mtm_isd¡
+;
+
+19 #ifdef 
+__USE_MISC
+
+
+20 
+	mtm_gmtoff
+;
+
+21 cÚ¡ *
+	mtm_zÚe
+;
+
+23 
+	m__tm_gmtoff
+;
+
+24 cÚ¡ *
+	m__tm_zÚe
+;
+
+	@/usr/include/bits/types/time_t.h
+
+1 #iâdeà
+__time_t_defšed
+
+
+2 
+	#__time_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+7 #ifdeà
+__USE_TIME_BITS64
+
+
+8 
+__time64_t
+ 
+	ttime_t
+;
+
+10 
+__time_t
+ 
+	ttime_t
+;
+
+	@/usr/include/bits/types/timer_t.h
+
+1 #iâdeà
+__tim”_t_defšed
+
+
+2 
+	#__tim”_t_defšed
+ 1
+
+	)
+
+4 
+	~<b™s/ty³s.h
+>
+
+7 
+__tim”_t
+ 
+	ttim”_t
+;
+
+	@/usr/include/bits/uintn-identity.h
+
+19 #ià!
+defšed
+ 
+_NETINET_IN_H
+ && !defšed 
+_ENDIAN_H
+
+
+23 #iâdeà
+_BITS_UINTN_IDENTITY_H
+
+
+24 
+	#_BITS_UINTN_IDENTITY_H
+ 1
+
+	)
+
+26 
+	~<b™s/ty³s.h
+>
+
+32 
+__šlše
+ 
+__ušt16_t
+
+
+33 
+	$__ušt16_id’t™y
+ (
+__ušt16_t
+ 
+__x
+)
+
+35  
+__x
+;
+
+36 
+	}
+}
+
+38 
+__šlše
+ 
+__ušt32_t
+
+
+39 
+	$__ušt32_id’t™y
+ (
+__ušt32_t
+ 
+__x
+)
+
+41  
+__x
+;
+
+42 
+	}
+}
+
+44 
+__šlše
+ 
+__ušt64_t
+
+
+45 
+	$__ušt64_id’t™y
+ (
+__ušt64_t
+ 
+__x
+)
+
+47  
+__x
+;
+
+48 
+	}
+}
+
+	@/usr/include/bits/uio-ext.h
+
+19 #iâdeà
+_BITS_UIO_EXT_H
+
+
+20 
+	#_BITS_UIO_EXT_H
+ 1
+
+	)
+
+22 #iâdeà
+_SYS_UIO_H
+
+
+26 
+__BEGIN_DECLS
+
+
+29 
+ssize_t
+ 
+	$´oûss_vm_»adv
+ (
+pid_t
+ 
+__pid
+, cÚ¡ 
+iovec
+ *
+__lvec
+,
+
+30 
+__liovút
+,
+
+31 cÚ¡ 
+iovec
+ *
+__rvec
+,
+
+32 
+__riovút
+,
+
+33 
+__æags
+)
+
+34 
+__THROW
+;
+
+37 
+ssize_t
+ 
+	$´oûss_vm_wr™ev
+ (
+pid_t
+ 
+__pid
+, cÚ¡ 
+iovec
+ *
+__lvec
+,
+
+38 
+__liovút
+,
+
+39 cÚ¡ 
+iovec
+ *
+__rvec
+,
+
+40 
+__riovút
+,
+
+41 
+__æags
+)
+
+42 
+__THROW
+;
+
+45 
+	#RWF_HIPRI
+ 0x00000001
+
+	)
+
+46 
+	#RWF_DSYNC
+ 0x00000002
+
+	)
+
+47 
+	#RWF_SYNC
+ 0x00000004
+
+	)
+
+48 
+	#RWF_NOWAIT
+ 0x00000008
+
+	)
+
+49 
+	#RWF_APPEND
+ 0x00000010
+
+	)
+
+51 
+__END_DECLS
+
+
+	@/usr/include/bits/uio_lim.h
+
+19 #iâdeà
+_BITS_UIO_LIM_H
+
+
+20 
+	#_BITS_UIO_LIM_H
+ 1
+
+	)
+
+30 
+	#__IOV_MAX
+ 1024
+
+	)
+
+	@/usr/include/bits/unistd.h
+
+19 #iâdeà
+_UNISTD_H
+
+
+23 
+	~<b™s/uni¡d-deþ.h
+>
+
+25 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+ssize_t
+
+
+26 
+	$»ad
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+)
+
+28  
+	`__glibc_fÜtify
+ (
+»ad
+, 
+__nby‹s
+,  (),
+
+29 
+	`__glibc_objsize0
+ (
+__buf
+),
+
+30 
+__fd
+, 
+__buf
+, 
+__nby‹s
+);
+
+31 
+	}
+}
+
+33 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+
+
+34 #iâdeà
+__USE_FILE_OFFSET64
+
+
+35 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+ssize_t
+
+
+36 
+	$´—d
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+, 
+__off_t
+ 
+__off£t
+)
+
+38  
+	`__glibc_fÜtify
+ (
+´—d
+, 
+__nby‹s
+,  (),
+
+39 
+	`__glibc_objsize0
+ (
+__buf
+),
+
+40 
+__fd
+, 
+__buf
+, 
+__nby‹s
+, 
+__off£t
+);
+
+41 
+	}
+}
+
+43 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+ssize_t
+
+
+44 
+	$´—d
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+, 
+__off64_t
+ 
+__off£t
+)
+
+46  
+	`__glibc_fÜtify
+ (
+´—d64
+, 
+__nby‹s
+,  (),
+
+47 
+	`__glibc_objsize0
+ (
+__buf
+),
+
+48 
+__fd
+, 
+__buf
+, 
+__nby‹s
+, 
+__off£t
+);
+
+49 
+	}
+}
+
+52 #ifdeà
+__USE_LARGEFILE64
+
+
+53 
+__fÜtify_funùiÚ
+ 
+__wur
+ 
+ssize_t
+
+
+54 
+	$´—d64
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+, 
+__off64_t
+ 
+__off£t
+)
+
+56  
+	`__glibc_fÜtify
+ (
+´—d64
+, 
+__nby‹s
+,  (),
+
+57 
+	`__glibc_objsize0
+ (
+__buf
+),
+
+58 
+__fd
+, 
+__buf
+, 
+__nby‹s
+, 
+__off£t
+);
+
+59 
+	}
+}
+
+63 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+64 
+__fÜtify_funùiÚ
+ 
+__nÚnuÎ
+ ((1, 2)è
+__wur
+ 
+ssize_t
+
+
+65 
+__NTH
+ (
+	$»adlšk
+ (cÚ¡ *
+__»¡riù
+ 
+__·th
+, *__»¡riù 
+__buf
+,
+
+66 
+size_t
+ 
+__Ën
+))
+
+68  
+	`__glibc_fÜtify
+ (
+»adlšk
+, 
+__Ën
+,  (),
+
+69 
+	`__glibc_objsize
+ (
+__buf
+),
+
+70 
+__·th
+, 
+__buf
+, 
+__Ën
+);
+
+71 
+	}
+}
+
+74 #ifdeà
+__USE_ATFILE
+
+
+75 
+__fÜtify_funùiÚ
+ 
+__nÚnuÎ
+ ((2, 3)è
+__wur
+ 
+ssize_t
+
+
+76 
+__NTH
+ (
+	$»adlšk©
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+77 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+))
+
+79  
+	`__glibc_fÜtify
+ (
+»adlšk©
+, 
+__Ën
+,  (),
+
+80 
+	`__glibc_objsize
+ (
+__buf
+),
+
+81 
+__fd
+, 
+__·th
+, 
+__buf
+, 
+__Ën
+);
+
+82 
+	}
+}
+
+85 
+__fÜtify_funùiÚ
+ 
+__wur
+ *
+
+86 
+__NTH
+ (
+	$g‘cwd
+ (*
+__buf
+, 
+size_t
+ 
+__size
+))
+
+88  
+	`__glibc_fÜtify
+ (
+g‘cwd
+, 
+__size
+,  (),
+
+89 
+	`__glibc_objsize
+ (
+__buf
+),
+
+90 
+__buf
+, 
+__size
+);
+
+91 
+	}
+}
+
+93 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+94 
+__fÜtify_funùiÚ
+ 
+__nÚnuÎ
+ ((1)è
+__©Œibu‹_d•»ÿ‹d__
+ 
+__wur
+ *
+
+95 
+__NTH
+ (
+	$g‘wd
+ (*
+__buf
+))
+
+97 ià(
+	`__glibc_objsize
+ (
+__buf
+è!ð(
+size_t
+) -1)
+
+98  
+	`__g‘wd_chk
+ (
+__buf
+, 
+	`__glibc_objsize
+ (__buf));
+
+99  
+	`__g‘wd_w¬n
+ (
+__buf
+);
+
+100 
+	}
+}
+
+103 
+__fÜtify_funùiÚ
+ 
+size_t
+
+
+104 
+__NTH
+ (
+	$cÚf¡r
+ (
+__Çme
+, *
+__buf
+, 
+size_t
+ 
+__Ën
+))
+
+106  
+	`__glibc_fÜtify
+ (
+cÚf¡r
+, 
+__Ën
+,  (),
+
+107 
+	`__glibc_objsize
+ (
+__buf
+),
+
+108 
+__Çme
+, 
+__buf
+, 
+__Ën
+);
+
+109 
+	}
+}
+
+112 
+__fÜtify_funùiÚ
+ 
+
+113 
+__NTH
+ (
+	$g‘groups
+ (
+__size
+, 
+__gid_t
+ 
+__li¡
+[]))
+
+115  
+	`__glibc_fÜtify
+ (
+g‘groups
+, 
+__size
+,  (
+__gid_t
+),
+
+116 
+	`__glibc_objsize
+ (
+__li¡
+),
+
+117 
+__size
+, 
+__li¡
+);
+
+118 
+	}
+}
+
+121 
+__fÜtify_funùiÚ
+ 
+
+122 
+__NTH
+ (
+	$‰yÇme_r
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+))
+
+124  
+	`__glibc_fÜtify
+ (
+‰yÇme_r
+, 
+__buæ’
+,  (),
+
+125 
+	`__glibc_objsize
+ (
+__buf
+),
+
+126 
+__fd
+, 
+__buf
+, 
+__buæ’
+);
+
+127 
+	}
+}
+
+130 #ifdeà
+__USE_POSIX199506
+
+
+131 
+__fÜtify_funùiÚ
+ 
+
+132 
+	$g‘logš_r
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+)
+
+134  
+	`__glibc_fÜtify
+ (
+g‘logš_r
+, 
+__buæ’
+,  (),
+
+135 
+	`__glibc_objsize
+ (
+__buf
+),
+
+136 
+__buf
+, 
+__buæ’
+);
+
+137 
+	}
+}
+
+141 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_UNIX98
+
+
+142 
+__fÜtify_funùiÚ
+ 
+
+143 
+__NTH
+ (
+	$g‘ho¡Çme
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+))
+
+145  
+	`__glibc_fÜtify
+ (
+g‘ho¡Çme
+, 
+__buæ’
+,  (),
+
+146 
+	`__glibc_objsize
+ (
+__buf
+),
+
+147 
+__buf
+, 
+__buæ’
+);
+
+148 
+	}
+}
+
+152 #ià
+defšed
+ 
+__USE_MISC
+ || (defšed 
+__USE_XOPEN
+ && !defšed 
+__USE_UNIX98
+)
+
+153 
+__fÜtify_funùiÚ
+ 
+
+154 
+__NTH
+ (
+	$g‘domašÇme
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+))
+
+156  
+	`__glibc_fÜtify
+ (
+g‘domašÇme
+, 
+__buæ’
+,  (),
+
+157 
+	`__glibc_objsize
+ (
+__buf
+),
+
+158 
+__buf
+, 
+__buæ’
+);
+
+159 
+	}
+}
+
+	@/usr/include/bits/unistd_ext.h
+
+19 #iâdeà
+_UNISTD_H
+
+
+23 #ifdeà
+__USE_GNU
+
+
+34 
+__pid_t
+ 
+	$g‘tid
+ (è
+__THROW
+;
+
+36 #ifdeà
+__has_šþude
+
+
+37 #ià
+	`__has_šþude
+ ("linux/close_range.h")
+
+38 
+	~"lšux/þo£_¿nge.h
+"
+
+42 #iâdeà
+CLOSE_RANGE_UNSHARE
+
+
+43 
+	#CLOSE_RANGE_UNSHARE
+ (1U << 1)
+
+	)
+
+46 #iâdeà
+CLOSE_RANGE_CLOEXEC
+
+
+47 
+	#CLOSE_RANGE_CLOEXEC
+ (1U << 2)
+
+	)
+
+	@/usr/include/bits/waitflags.h
+
+19 #ià!
+defšed
+ 
+_SYS_WAIT_H
+ && !defšed 
+_STDLIB_H
+
+
+25 
+	#WNOHANG
+ 1
+
+	)
+
+26 
+	#WUNTRACED
+ 2
+
+	)
+
+29 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K8
+
+
+30 
+	#WSTOPPED
+ 2
+
+	)
+
+31 
+	#WEXITED
+ 4
+
+	)
+
+32 
+	#WCONTINUED
+ 8
+
+	)
+
+33 
+	#WNOWAIT
+ 0x01000000
+
+	)
+
+36 
+	#__WNOTHREAD
+ 0x20000000
+
+	)
+
+38 
+	#__WALL
+ 0x40000000
+
+	)
+
+39 
+	#__WCLONE
+ 0x80000000
+
+	)
+
+	@/usr/include/bits/waitstatus.h
+
+19 #ià!
+defšed
+ 
+_SYS_WAIT_H
+ && !defšed 
+_STDLIB_H
+
+
+28 
+	#__WEXITSTATUS
+(
+¡©us
+è(((¡©usè& 0xff00è>> 8)
+
+	)
+
+31 
+	#__WTERMSIG
+(
+¡©us
+è((¡©usè& 0x7f)
+
+	)
+
+34 
+	#__WSTOPSIG
+(
+¡©us
+è
+	`__WEXITSTATUS
+(¡©us)
+
+	)
+
+37 
+	#__WIFEXITED
+(
+¡©us
+è(
+	`__WTERMSIG
+(¡©usè=ð0)
+
+	)
+
+40 
+	#__WIFSIGNALED
+(
+¡©us
+) \
+
+41 (((sigÃd è(((
+¡©us
+è& 0x7fè+ 1è>> 1è> 0)
+
+	)
+
+44 
+	#__WIFSTOPPED
+(
+¡©us
+è(((¡©usè& 0xffè=ð0x7f)
+
+	)
+
+48 #ifdeà
+WCONTINUED
+
+
+49 
+	#__WIFCONTINUED
+(
+¡©us
+è((¡©usè=ð
+__W_CONTINUED
+)
+
+	)
+
+53 
+	#__WCOREDUMP
+(
+¡©us
+è((¡©usè& 
+__WCOREFLAG
+)
+
+	)
+
+56 
+	#__W_EXITCODE
+(
+»t
+, 
+sig
+è(Ô‘è<< 8 | (sig))
+
+	)
+
+57 
+	#__W_STOPCODE
+(
+sig
+è((sigè<< 8 | 0x7f)
+
+	)
+
+58 
+	#__W_CONTINUED
+ 0xffff
+
+	)
+
+59 
+	#__WCOREFLAG
+ 0x80
+
+	)
+
+	@/usr/include/bits/wchar.h
+
+19 #iâdeà
+_BITS_WCHAR_H
+
+
+20 
+	#_BITS_WCHAR_H
+ 1
+
+	)
+
+33 #ifdeà
+__WCHAR_MAX__
+
+
+34 
+	#__WCHAR_MAX
+ 
+__WCHAR_MAX__
+
+
+	)
+
+35 #–ià
+L
+'\0' - 1 > 0
+
+36 
+	#__WCHAR_MAX
+ (0xffffffffu + 
+L
+'\0')
+
+	)
+
+38 
+	#__WCHAR_MAX
+ (0x7ffffffà+ 
+L
+'\0')
+
+	)
+
+41 #ifdeà
+__WCHAR_MIN__
+
+
+42 
+	#__WCHAR_MIN
+ 
+__WCHAR_MIN__
+
+
+	)
+
+43 #–ià
+L
+'\0' - 1 > 0
+
+44 
+	#__WCHAR_MIN
+ (
+L
+'\0' + 0)
+
+	)
+
+46 
+	#__WCHAR_MIN
+ (-
+__WCHAR_MAX
+ - 1)
+
+	)
+
+	@/usr/include/bits/wordsize.h
+
+3 #ià
+defšed
+ 
+__x86_64__
+ && !defšed 
+__ILP32__
+
+
+4 
+	#__WORDSIZE
+ 64
+
+	)
+
+6 
+	#__WORDSIZE
+ 32
+
+	)
+
+7 
+	#__WORDSIZE32_SIZE_ULONG
+ 0
+
+	)
+
+8 
+	#__WORDSIZE32_PTRDIFF_LONG
+ 0
+
+	)
+
+11 #ifdeà
+__x86_64__
+
+
+12 
+	#__WORDSIZE_TIME64_COMPAT32
+ 1
+
+	)
+
+14 
+	#__SYSCALL_WORDSIZE
+ 64
+
+	)
+
+16 
+	#__WORDSIZE_TIME64_COMPAT32
+ 0
+
+	)
+
+	@/usr/include/bits/xopen_lim.h
+
+29 #iâdeà
+_XOPEN_LIM_H
+
+
+30 
+	#_XOPEN_LIM_H
+ 1
+
+	)
+
+62 
+	#_XOPEN_IOV_MAX
+ 
+_POSIX_UIO_MAXIOV
+
+
+	)
+
+64 
+	~<b™s/uio_lim.h
+>
+
+65 #ifdeà
+__IOV_MAX
+
+
+66 
+	#IOV_MAX
+ 
+__IOV_MAX
+
+
+	)
+
+68 #undeà
+IOV_MAX
+
+
+73 
+	#NL_ARGMAX
+ 
+_POSIX_ARG_MAX
+
+
+	)
+
+76 
+	#NL_LANGMAX
+ 
+_POSIX2_LINE_MAX
+
+
+	)
+
+79 
+	#NL_MSGMAX
+ 
+INT_MAX
+
+
+	)
+
+83 #ià
+defšed
+ 
+__USE_GNU
+ || !defšed 
+__USE_XOPEN2K8
+
+
+84 
+	#NL_NMAX
+ 
+INT_MAX
+
+
+	)
+
+88 
+	#NL_SETMAX
+ 
+INT_MAX
+
+
+	)
+
+91 
+	#NL_TEXTMAX
+ 
+INT_MAX
+
+
+	)
+
+94 
+	#NZERO
+ 20
+
+	)
+
+98 #ifdeà
+INT_MAX
+
+
+99 #ià
+INT_MAX
+ == 32767
+
+100 
+	#WORD_BIT
+ 16
+
+	)
+
+102 #ià
+INT_MAX
+ == 2147483647
+
+103 
+	#WORD_BIT
+ 32
+
+	)
+
+106 
+	#WORD_BIT
+ 64
+
+	)
+
+109 #–ià
+defšed
+ 
+__INT_MAX__
+
+
+110 #ià
+__INT_MAX__
+ == 32767
+
+111 
+	#WORD_BIT
+ 16
+
+	)
+
+113 #ià
+__INT_MAX__
+ == 2147483647
+
+114 
+	#WORD_BIT
+ 32
+
+	)
+
+117 
+	#WORD_BIT
+ 64
+
+	)
+
+121 
+	#WORD_BIT
+ 32
+
+	)
+
+125 #ifdeà
+LONG_MAX
+
+
+126 #ià
+LONG_MAX
+ == 2147483647
+
+127 
+	#LONG_BIT
+ 32
+
+	)
+
+130 
+	#LONG_BIT
+ 64
+
+	)
+
+132 #–ià
+defšed
+ 
+__LONG_MAX__
+
+
+133 #ià
+__LONG_MAX__
+ == 2147483647
+
+134 
+	#LONG_BIT
+ 32
+
+	)
+
+137 
+	#LONG_BIT
+ 64
+
+	)
+
+140 
+	~<b™s/wÜdsize.h
+>
+
+141 #ià
+__WORDSIZE
+ == 64
+
+142 
+	#LONG_BIT
+ 64
+
+	)
+
+144 
+	#LONG_BIT
+ 32
+
+	)
+
+	@/usr/include/endian.h
+
+18 #iâdef 
+_ENDIAN_H
+
+
+19 
+	#_ENDIAN_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+24 
+	~<b™s/’dŸn.h
+>
+
+26 #ifdeà
+__USE_MISC
+
+
+27 
+	#LITTLE_ENDIAN
+ 
+__LITTLE_ENDIAN
+
+
+	)
+
+28 
+	#BIG_ENDIAN
+ 
+__BIG_ENDIAN
+
+
+	)
+
+29 
+	#PDP_ENDIAN
+ 
+__PDP_ENDIAN
+
+
+	)
+
+30 
+	#BYTE_ORDER
+ 
+__BYTE_ORDER
+
+
+	)
+
+33 #ià
+defšed
+ 
+__USE_MISC
+ && !defšed 
+__ASSEMBLER__
+
+
+35 
+	~<b™s/by‹sw­.h
+>
+
+36 
+	~<b™s/ušŠ-id’t™y.h
+>
+
+38 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+39 
+	#htobe16
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+40 
+	#htÞe16
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+41 
+	#be16toh
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+42 
+	#Ë16toh
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+44 
+	#htobe32
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+45 
+	#htÞe32
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+46 
+	#be32toh
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+47 
+	#Ë32toh
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+49 
+	#htobe64
+(
+x
+è
+	`__bsw­_64
+ (x)
+
+	)
+
+50 
+	#htÞe64
+(
+x
+è
+	`__ušt64_id’t™y
+ (x)
+
+	)
+
+51 
+	#be64toh
+(
+x
+è
+	`__bsw­_64
+ (x)
+
+	)
+
+52 
+	#Ë64toh
+(
+x
+è
+	`__ušt64_id’t™y
+ (x)
+
+	)
+
+55 
+	#htobe16
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+56 
+	#htÞe16
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+57 
+	#be16toh
+(
+x
+è
+	`__ušt16_id’t™y
+ (x)
+
+	)
+
+58 
+	#Ë16toh
+(
+x
+è
+	`__bsw­_16
+ (x)
+
+	)
+
+60 
+	#htobe32
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+61 
+	#htÞe32
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+62 
+	#be32toh
+(
+x
+è
+	`__ušt32_id’t™y
+ (x)
+
+	)
+
+63 
+	#Ë32toh
+(
+x
+è
+	`__bsw­_32
+ (x)
+
+	)
+
+65 
+	#htobe64
+(
+x
+è
+	`__ušt64_id’t™y
+ (x)
+
+	)
+
+66 
+	#htÞe64
+(
+x
+è
+	`__bsw­_64
+ (x)
+
+	)
+
+67 
+	#be64toh
+(
+x
+è
+	`__ušt64_id’t™y
+ (x)
+
+	)
+
+68 
+	#Ë64toh
+(
+x
+è
+	`__bsw­_64
+ (x)
+
+	)
+
+	@/usr/include/features.h
+
+18 #iâdef 
+_FEATURES_H
+
+
+19 
+	#_FEATURES_H
+ 1
+
+	)
+
+127 #undeà
+__USE_ISOC11
+
+
+128 #undeà
+__USE_ISOC99
+
+
+129 #undeà
+__USE_ISOC95
+
+
+130 #undeà
+__USE_ISOCXX11
+
+
+131 #undeà
+__USE_POSIX
+
+
+132 #undeà
+__USE_POSIX2
+
+
+133 #undeà
+__USE_POSIX199309
+
+
+134 #undeà
+__USE_POSIX199506
+
+
+135 #undeà
+__USE_XOPEN
+
+
+136 #undeà
+__USE_XOPEN_EXTENDED
+
+
+137 #undeà
+__USE_UNIX98
+
+
+138 #undeà
+__USE_XOPEN2K
+
+
+139 #undeà
+__USE_XOPEN2KXSI
+
+
+140 #undeà
+__USE_XOPEN2K8
+
+
+141 #undeà
+__USE_XOPEN2K8XSI
+
+
+142 #undeà
+__USE_LARGEFILE
+
+
+143 #undeà
+__USE_LARGEFILE64
+
+
+144 #undeà
+__USE_FILE_OFFSET64
+
+
+145 #undeà
+__USE_MISC
+
+
+146 #undeà
+__USE_ATFILE
+
+
+147 #undeà
+__USE_DYNAMIC_STACK_SIZE
+
+
+148 #undeà
+__USE_GNU
+
+
+149 #undeà
+__USE_FORTIFY_LEVEL
+
+
+150 #undeà
+__KERNEL_STRICT_NAMES
+
+
+151 #undeà
+__GLIBC_USE_ISOC2X
+
+
+152 #undeà
+__GLIBC_USE_DEPRECATED_GETS
+
+
+153 #undeà
+__GLIBC_USE_DEPRECATED_SCANF
+
+
+154 #undeà
+__GLIBC_USE_C2X_STRTOL
+
+
+158 #iâdeà
+_LOOSE_KERNEL_NAMES
+
+
+159 
+	#__KERNEL_STRICT_NAMES
+
+
+	)
+
+169 #ià
+defšed
+ 
+__GNUC__
+ && defšed 
+__GNUC_MINOR__
+
+
+170 
+	#__GNUC_PREREQ
+(
+maj
+, 
+mš
+) \
+
+171 ((
+__GNUC__
+ << 16è+ 
+__GNUC_MINOR__
+ >ð((
+maj
+è<< 16è+ (
+mš
+))
+
+	)
+
+173 
+	#__GNUC_PREREQ
+(
+maj
+, 
+mš
+è0
+
+	)
+
+180 #ià
+defšed
+ 
+__þªg_majÜ__
+ && defšed 
+__þªg_mšÜ__
+
+
+181 
+	#__glibc_þªg_´”eq
+(
+maj
+, 
+mš
+) \
+
+182 ((
+__þªg_majÜ__
+ << 16è+ 
+__þªg_mšÜ__
+ >ð((
+maj
+è<< 16è+ (
+mš
+))
+
+	)
+
+184 
+	#__glibc_þªg_´”eq
+(
+maj
+, 
+mš
+è0
+
+	)
+
+188 
+	#__GLIBC_USE
+(
+F
+è
+__GLIBC_USE_
+ ## 
+	)
+F
+
+194 #ià(
+defšed
+ 
+_BSD_SOURCE
+ || defšed 
+_SVID_SOURCE
+) \
+
+195 && !
+defšed
+ 
+	g_DEFAULT_SOURCE
+
+
+197 #undeà
+_DEFAULT_SOURCE
+
+
+198 
+	#_DEFAULT_SOURCE
+ 1
+
+	)
+
+202 #ifdeà
+_GNU_SOURCE
+
+
+203 #undeà
+_ISOC95_SOURCE
+
+
+204 
+	#_ISOC95_SOURCE
+ 1
+
+	)
+
+205 #undeà
+_ISOC99_SOURCE
+
+
+206 
+	#_ISOC99_SOURCE
+ 1
+
+	)
+
+207 #undeà
+_ISOC11_SOURCE
+
+
+208 
+	#_ISOC11_SOURCE
+ 1
+
+	)
+
+209 #undeà
+_ISOC2X_SOURCE
+
+
+210 
+	#_ISOC2X_SOURCE
+ 1
+
+	)
+
+211 #undeà
+_POSIX_SOURCE
+
+
+212 
+	#_POSIX_SOURCE
+ 1
+
+	)
+
+213 #undeà
+_POSIX_C_SOURCE
+
+
+214 
+	#_POSIX_C_SOURCE
+ 200809L
+
+	)
+
+215 #undeà
+_XOPEN_SOURCE
+
+
+216 
+	#_XOPEN_SOURCE
+ 700
+
+	)
+
+217 #undeà
+_XOPEN_SOURCE_EXTENDED
+
+
+218 
+	#_XOPEN_SOURCE_EXTENDED
+ 1
+
+	)
+
+219 #undeà
+_LARGEFILE64_SOURCE
+
+
+220 
+	#_LARGEFILE64_SOURCE
+ 1
+
+	)
+
+221 #undeà
+_DEFAULT_SOURCE
+
+
+222 
+	#_DEFAULT_SOURCE
+ 1
+
+	)
+
+223 #undeà
+_ATFILE_SOURCE
+
+
+224 
+	#_ATFILE_SOURCE
+ 1
+
+	)
+
+225 #undeà
+_DYNAMIC_STACK_SIZE_SOURCE
+
+
+226 
+	#_DYNAMIC_STACK_SIZE_SOURCE
+ 1
+
+	)
+
+231 #ià(
+defšed
+ 
+_DEFAULT_SOURCE
+ \
+
+232 || (!
+defšed
+ 
+	g__STRICT_ANSI__
+ \
+
+233 && !
+defšed
+ 
+	g_ISOC99_SOURCE
+ && !defšed 
+	g_ISOC11_SOURCE
+ \
+
+234 && !
+defšed
+ 
+	g_ISOC2X_SOURCE
+ \
+
+235 && !
+defšed
+ 
+	g_POSIX_SOURCE
+ && !defšed 
+	g_POSIX_C_SOURCE
+ \
+
+236 && !
+defšed
+ 
+	g_XOPEN_SOURCE
+))
+
+237 #undeà
+_DEFAULT_SOURCE
+
+
+238 
+	#_DEFAULT_SOURCE
+ 1
+
+	)
+
+242 #ià(
+defšed
+ 
+_ISOC2X_SOURCE
+ \
+
+243 || (
+defšed
+ 
+	g__STDC_VERSION__
+ && __STDC_VERSION__ > 201710L))
+
+244 
+	#__GLIBC_USE_ISOC2X
+ 1
+
+	)
+
+246 
+	#__GLIBC_USE_ISOC2X
+ 0
+
+	)
+
+250 #ià(
+defšed
+ 
+_ISOC11_SOURCE
+ || defšed 
+_ISOC2X_SOURCE
+ \
+
+251 || (
+defšed
+ 
+	g__STDC_VERSION__
+ && __STDC_VERSION__ >= 201112L))
+
+252 
+	#__USE_ISOC11
+ 1
+
+	)
+
+256 #ià(
+defšed
+ 
+_ISOC99_SOURCE
+ || defšed 
+_ISOC11_SOURCE
+ \
+
+257 || 
+defšed
+ 
+_ISOC2X_SOURCE
+ \
+
+258 || (
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L))
+
+259 
+	#__USE_ISOC99
+ 1
+
+	)
+
+263 #ià(
+defšed
+ 
+_ISOC99_SOURCE
+ || defšed 
+_ISOC11_SOURCE
+ \
+
+264 || 
+defšed
+ 
+_ISOC2X_SOURCE
+ \
+
+265 || (
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199409L))
+
+266 
+	#__USE_ISOC95
+ 1
+
+	)
+
+269 #ifdeà
+__ýlu¥lus
+
+
+271 #ià
+__ýlu¥lus
+ >= 201703L
+
+272 
+	#__USE_ISOC11
+ 1
+
+	)
+
+276 #ià
+__ýlu¥lus
+ >ð201103L || 
+defšed
+ 
+__GXX_EXPERIMENTAL_CXX0X__
+
+
+277 
+	#__USE_ISOCXX11
+ 1
+
+	)
+
+278 
+	#__USE_ISOC99
+ 1
+
+	)
+
+285 #ifdeà
+_DEFAULT_SOURCE
+
+
+286 #ià!
+defšed
+ 
+_POSIX_SOURCE
+ && !defšed 
+_POSIX_C_SOURCE
+
+
+287 
+	#__USE_POSIX_IMPLICITLY
+ 1
+
+	)
+
+289 #undeà
+_POSIX_SOURCE
+
+
+290 
+	#_POSIX_SOURCE
+ 1
+
+	)
+
+291 #undeà
+_POSIX_C_SOURCE
+
+
+292 
+	#_POSIX_C_SOURCE
+ 200809L
+
+	)
+
+295 #ià((!
+defšed
+ 
+__STRICT_ANSI__
+ \
+
+296 || (
+defšed
+ 
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) >= 500)) \
+
+297 && !
+defšed
+ 
+_POSIX_SOURCE
+ && !defšed 
+_POSIX_C_SOURCE
+)
+
+298 
+	#_POSIX_SOURCE
+ 1
+
+	)
+
+299 #ià
+defšed
+ 
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 500
+
+300 
+	#_POSIX_C_SOURCE
+ 2
+
+	)
+
+301 #–ià
+defšed
+ 
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 600
+
+302 
+	#_POSIX_C_SOURCE
+ 199506L
+
+	)
+
+303 #–ià
+defšed
+ 
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 700
+
+304 
+	#_POSIX_C_SOURCE
+ 200112L
+
+	)
+
+306 
+	#_POSIX_C_SOURCE
+ 200809L
+
+	)
+
+308 
+	#__USE_POSIX_IMPLICITLY
+ 1
+
+	)
+
+317 #ià((!
+defšed
+ 
+_POSIX_C_SOURCE
+ || (_POSIX_C_SOURCE - 0) < 199506L) \
+
+318 && (
+defšed
+ 
+_REENTRANT
+ || defšed 
+_THREAD_SAFE
+))
+
+319 
+	#_POSIX_SOURCE
+ 1
+
+	)
+
+320 #undeà
+_POSIX_C_SOURCE
+
+
+321 
+	#_POSIX_C_SOURCE
+ 199506L
+
+	)
+
+324 #ià(
+defšed
+ 
+_POSIX_SOURCE
+ \
+
+325 || (
+defšed
+ 
+_POSIX_C_SOURCE
+ && _POSIX_C_SOURCE >= 1) \
+
+326 || 
+defšed
+ 
+_XOPEN_SOURCE
+)
+
+327 
+	#__USE_POSIX
+ 1
+
+	)
+
+330 #ià
+defšed
+ 
+_POSIX_C_SOURCE
+ && _POSIX_C_SOURCE >ð2 || defšed 
+_XOPEN_SOURCE
+
+
+331 
+	#__USE_POSIX2
+ 1
+
+	)
+
+334 #ià
+defšed
+ 
+_POSIX_C_SOURCE
+ && (_POSIX_C_SOURCE - 0) >= 199309L
+
+335 
+	#__USE_POSIX199309
+ 1
+
+	)
+
+338 #ià
+defšed
+ 
+_POSIX_C_SOURCE
+ && (_POSIX_C_SOURCE - 0) >= 199506L
+
+339 
+	#__USE_POSIX199506
+ 1
+
+	)
+
+342 #ià
+defšed
+ 
+_POSIX_C_SOURCE
+ && (_POSIX_C_SOURCE - 0) >= 200112L
+
+343 
+	#__USE_XOPEN2K
+ 1
+
+	)
+
+344 #undeà
+__USE_ISOC95
+
+
+345 
+	#__USE_ISOC95
+ 1
+
+	)
+
+346 #undeà
+__USE_ISOC99
+
+
+347 
+	#__USE_ISOC99
+ 1
+
+	)
+
+350 #ià
+defšed
+ 
+_POSIX_C_SOURCE
+ && (_POSIX_C_SOURCE - 0) >= 200809L
+
+351 
+	#__USE_XOPEN2K8
+ 1
+
+	)
+
+352 #undeà
+_ATFILE_SOURCE
+
+
+353 
+	#_ATFILE_SOURCE
+ 1
+
+	)
+
+356 #ifdef 
+_XOPEN_SOURCE
+
+
+357 
+	#__USE_XOPEN
+ 1
+
+	)
+
+358 #ià(
+_XOPEN_SOURCE
+ - 0) >= 500
+
+359 
+	#__USE_XOPEN_EXTENDED
+ 1
+
+	)
+
+360 
+	#__USE_UNIX98
+ 1
+
+	)
+
+361 #undeà
+_LARGEFILE_SOURCE
+
+
+362 
+	#_LARGEFILE_SOURCE
+ 1
+
+	)
+
+363 #ià(
+_XOPEN_SOURCE
+ - 0) >= 600
+
+364 #ià(
+_XOPEN_SOURCE
+ - 0) >= 700
+
+365 
+	#__USE_XOPEN2K8
+ 1
+
+	)
+
+366 
+	#__USE_XOPEN2K8XSI
+ 1
+
+	)
+
+368 
+	#__USE_XOPEN2K
+ 1
+
+	)
+
+369 
+	#__USE_XOPEN2KXSI
+ 1
+
+	)
+
+370 #undeà
+__USE_ISOC95
+
+
+371 
+	#__USE_ISOC95
+ 1
+
+	)
+
+372 #undeà
+__USE_ISOC99
+
+
+373 
+	#__USE_ISOC99
+ 1
+
+	)
+
+376 #ifdeà
+_XOPEN_SOURCE_EXTENDED
+
+
+377 
+	#__USE_XOPEN_EXTENDED
+ 1
+
+	)
+
+382 #ifdeà
+_LARGEFILE_SOURCE
+
+
+383 
+	#__USE_LARGEFILE
+ 1
+
+	)
+
+386 #ifdeà
+_LARGEFILE64_SOURCE
+
+
+387 
+	#__USE_LARGEFILE64
+ 1
+
+	)
+
+390 #ià
+defšed
+ 
+_FILE_OFFSET_BITS
+ && _FILE_OFFSET_BITS == 64
+
+391 
+	#__USE_FILE_OFFSET64
+ 1
+
+	)
+
+394 
+	~<ã©u»s-time64.h
+>
+
+396 #ià
+defšed
+ 
+_DEFAULT_SOURCE
+
+
+397 
+	#__USE_MISC
+ 1
+
+	)
+
+400 #ifdef 
+_ATFILE_SOURCE
+
+
+401 
+	#__USE_ATFILE
+ 1
+
+	)
+
+404 #ifdef 
+_DYNAMIC_STACK_SIZE_SOURCE
+
+
+405 
+	#__USE_DYNAMIC_STACK_SIZE
+ 1
+
+	)
+
+408 #ifdef 
+_GNU_SOURCE
+
+
+409 
+	#__USE_GNU
+ 1
+
+	)
+
+412 #ià
+defšed
+ 
+_FORTIFY_SOURCE
+ && _FORTIFY_SOURCE > 0
+
+413 #ià!
+defšed
+ 
+__OPTIMIZE__
+ || __OPTIMIZE__ <= 0
+
+414 #w¬nšg 
+_FORTIFY_SOURCE
+ 
+»quœes
+ 
+compžšg
+ 
+w™h
+ 
+Ýtimiz©iÚ
+ (-
+O
+)
+
+415 #–ià!
+__GNUC_PREREQ
+ (4, 1)
+
+416 #w¬nšg 
+_FORTIFY_SOURCE
+ 
+»quœes
+ 
+GCC
+ 4.1 
+Ü
+ 
+Ï‹r
+
+
+417 #–ià
+_FORTIFY_SOURCE
+ > 2 && (
+__glibc_þªg_´”eq
+ (9, 0) \
+
+418 || 
+	$__GNUC_PREREQ
+ (12, 0))
+
+420 #ià
+_FORTIFY_SOURCE
+ > 3
+
+421 #w¬nšg 
+_FORTIFY_SOURCE
+ > 3 
+is
+ 
+Œ—‹d
+ 
+like
+ 3 
+Ú
+ 
+this
+ 
+¶©fÜm
+
+
+423 
+	#__USE_FORTIFY_LEVEL
+ 3
+
+	)
+
+424 #–ià
+_FORTIFY_SOURCE
+ > 1
+
+425 #ià
+_FORTIFY_SOURCE
+ > 2
+
+426 #w¬nšg 
+_FORTIFY_SOURCE
+ > 2 
+is
+ 
+Œ—‹d
+ 
+like
+ 2 
+Ú
+ 
+this
+ 
+¶©fÜm
+
+
+428 
+	#__USE_FORTIFY_LEVEL
+ 2
+
+	)
+
+430 
+	#__USE_FORTIFY_LEVEL
+ 1
+
+	)
+
+433 #iâdeà
+__USE_FORTIFY_LEVEL
+
+
+434 
+	#__USE_FORTIFY_LEVEL
+ 0
+
+	)
+
+441 #ià
+defšed
+ 
+__ýlu¥lus
+ ? __ýlu¥lu >ð201402L : defšed 
+__USE_ISOC11
+
+
+442 
+	#__GLIBC_USE_DEPRECATED_GETS
+ 0
+
+	)
+
+444 
+	#__GLIBC_USE_DEPRECATED_GETS
+ 1
+
+	)
+
+459 #ià(
+defšed
+ 
+__USE_GNU
+ \
+
+460 && (
+defšed
+ 
+__ýlu¥lus
+ \
+
+461 ? (
+__ýlu¥lus
+ < 201103L && !
+defšed
+ 
+__GXX_EXPERIMENTAL_CXX0X__
+) \
+
+462 : (!
+defšed
+ 
+__STDC_VERSION__
+ || __STDC_VERSION__ < 199901L)))
+
+463 
+	#__GLIBC_USE_DEPRECATED_SCANF
+ 1
+
+	)
+
+465 
+	#__GLIBC_USE_DEPRECATED_SCANF
+ 0
+
+	)
+
+473 #ià
+	`__GLIBC_USE
+ (
+ISOC2X
+)
+
+474 
+	#__GLIBC_USE_C2X_STRTOL
+ 1
+
+	)
+
+476 
+	#__GLIBC_USE_C2X_STRTOL
+ 0
+
+	)
+
+481 
+	~<¡dc-´edef.h
+>
+
+489 #undeà
+__GNU_LIBRARY__
+
+
+490 
+	#__GNU_LIBRARY__
+ 6
+
+	)
+
+494 
+	#__GLIBC__
+ 2
+
+	)
+
+495 
+	#__GLIBC_MINOR__
+ 38
+
+	)
+
+497 
+	#__GLIBC_PREREQ
+(
+maj
+, 
+mš
+) \
+
+498 ((
+__GLIBC__
+ << 16è+ 
+__GLIBC_MINOR__
+ >ð((
+maj
+è<< 16è+ (
+mš
+))
+
+	)
+
+501 #iâdeà
+__ASSEMBLER__
+
+
+502 #iâdeà
+_SYS_CDEFS_H
+
+
+503 
+	~<sys/cdefs.h
+>
+
+508 #ià
+defšed
+ 
+__USE_FILE_OFFSET64
+ && !defšed 
+__REDIRECT
+
+
+509 
+	#__USE_LARGEFILE
+ 1
+
+	)
+
+510 
+	#__USE_LARGEFILE64
+ 1
+
+	)
+
+516 #ià
+	`__GNUC_PREREQ
+ (2, 7è&& 
+defšed
+ 
+__OPTIMIZE__
+ \
+
+517 && !
+defšed
+ 
+__OPTIMIZE_SIZE__
+ && !defšed 
+__NO_INLINE__
+ \
+
+518 && 
+defšed
+ 
+__ex‹º_šlše
+
+
+519 
+	#__USE_EXTERN_INLINES
+ 1
+
+	)
+
+527 
+	~<gnu/¡ubs.h
+>
+
+	@/usr/include/linux/filter.h
+
+6 #iâdeà
+__LINUX_FILTER_H__
+
+
+7 
+	#__LINUX_FILTER_H__
+
+
+	)
+
+10 
+	~<lšux/ty³s.h
+>
+
+11 
+	~<lšux/bpf_commÚ.h
+>
+
+16 
+	#BPF_MAJOR_VERSION
+ 1
+
+	)
+
+17 
+	#BPF_MINOR_VERSION
+ 1
+
+	)
+
+24 
+	ssock_fž‹r
+ {
+
+25 
+__u16
+ 
+	mcode
+;
+
+26 
+__u8
+ 
+	mjt
+;
+
+27 
+__u8
+ 
+	mjf
+;
+
+28 
+__u32
+ 
+	mk
+;
+
+31 
+	ssock_årog
+ {
+
+32 
+	mËn
+;
+
+33 
+sock_fž‹r
+ *
+	mfž‹r
+;
+
+37 
+	#BPF_RVAL
+(
+code
+è((codeè& 0x18)
+
+	)
+
+38 
+	#BPF_A
+ 0x10
+
+	)
+
+41 
+	#BPF_MISCOP
+(
+code
+è((codeè& 0xf8)
+
+	)
+
+42 
+	#BPF_TAX
+ 0x00
+
+	)
+
+43 
+	#BPF_TXA
+ 0x80
+
+	)
+
+48 #iâdeà
+BPF_STMT
+
+
+49 
+	#BPF_STMT
+(
+code
+, 
+k
+è{ ()(code), 0, 0, k }
+
+	)
+
+51 #iâdeà
+BPF_JUMP
+
+
+52 
+	#BPF_JUMP
+(
+code
+, 
+k
+, 
+jt
+, 
+jf
+è{ ()(code), jt, jf, k }
+
+	)
+
+58 
+	#BPF_MEMWORDS
+ 16
+
+	)
+
+65 
+	#SKF_AD_OFF
+ (-0x1000)
+
+	)
+
+66 
+	#SKF_AD_PROTOCOL
+ 0
+
+	)
+
+67 
+	#SKF_AD_PKTTYPE
+ 4
+
+	)
+
+68 
+	#SKF_AD_IFINDEX
+ 8
+
+	)
+
+69 
+	#SKF_AD_NLATTR
+ 12
+
+	)
+
+70 
+	#SKF_AD_NLATTR_NEST
+ 16
+
+	)
+
+71 
+	#SKF_AD_MARK
+ 20
+
+	)
+
+72 
+	#SKF_AD_QUEUE
+ 24
+
+	)
+
+73 
+	#SKF_AD_HATYPE
+ 28
+
+	)
+
+74 
+	#SKF_AD_RXHASH
+ 32
+
+	)
+
+75 
+	#SKF_AD_CPU
+ 36
+
+	)
+
+76 
+	#SKF_AD_ALU_XOR_X
+ 40
+
+	)
+
+77 
+	#SKF_AD_VLAN_TAG
+ 44
+
+	)
+
+78 
+	#SKF_AD_VLAN_TAG_PRESENT
+ 48
+
+	)
+
+79 
+	#SKF_AD_PAY_OFFSET
+ 52
+
+	)
+
+80 
+	#SKF_AD_RANDOM
+ 56
+
+	)
+
+81 
+	#SKF_AD_VLAN_TPID
+ 60
+
+	)
+
+82 
+	#SKF_AD_MAX
+ 64
+
+	)
+
+84 
+	#SKF_NET_OFF
+ (-0x100000)
+
+	)
+
+85 
+	#SKF_LL_OFF
+ (-0x200000)
+
+	)
+
+87 
+	#BPF_NET_OFF
+ 
+SKF_NET_OFF
+
+
+	)
+
+88 
+	#BPF_LL_OFF
+ 
+SKF_LL_OFF
+
+
+	)
+
+	@/usr/include/linux/if_ether.h
+
+22 #iâdeà
+_LINUX_IF_ETHER_H
+
+
+23 
+	#_LINUX_IF_ETHER_H
+
+
+	)
+
+25 
+	~<lšux/ty³s.h
+>
+
+32 
+	#ETH_ALEN
+ 6
+
+	)
+
+33 
+	#ETH_TLEN
+ 2
+
+	)
+
+34 
+	#ETH_HLEN
+ 14
+
+	)
+
+35 
+	#ETH_ZLEN
+ 60
+
+	)
+
+36 
+	#ETH_DATA_LEN
+ 1500
+
+	)
+
+37 
+	#ETH_FRAME_LEN
+ 1514
+
+	)
+
+38 
+	#ETH_FCS_LEN
+ 4
+
+	)
+
+40 
+	#ETH_MIN_MTU
+ 68
+
+	)
+
+41 
+	#ETH_MAX_MTU
+ 0xFFFFU
+
+	)
+
+47 
+	#ETH_P_LOOP
+ 0x0060
+
+	)
+
+48 
+	#ETH_P_PUP
+ 0x0200
+
+	)
+
+49 
+	#ETH_P_PUPAT
+ 0x0201
+
+	)
+
+50 
+	#ETH_P_TSN
+ 0x22F0
+
+	)
+
+51 
+	#ETH_P_ERSPAN2
+ 0x22EB
+
+	)
+
+52 
+	#ETH_P_IP
+ 0x0800
+
+	)
+
+53 
+	#ETH_P_X25
+ 0x0805
+
+	)
+
+54 
+	#ETH_P_ARP
+ 0x0806
+
+	)
+
+55 
+	#ETH_P_BPQ
+ 0x08FF
+
+	)
+
+56 
+	#ETH_P_IEEEPUP
+ 0x0a00
+
+	)
+
+57 
+	#ETH_P_IEEEPUPAT
+ 0x0a01
+
+	)
+
+58 
+	#ETH_P_BATMAN
+ 0x4305
+
+	)
+
+59 
+	#ETH_P_DEC
+ 0x6000
+
+	)
+
+60 
+	#ETH_P_DNA_DL
+ 0x6001
+
+	)
+
+61 
+	#ETH_P_DNA_RC
+ 0x6002
+
+	)
+
+62 
+	#ETH_P_DNA_RT
+ 0x6003
+
+	)
+
+63 
+	#ETH_P_LAT
+ 0x6004
+
+	)
+
+64 
+	#ETH_P_DIAG
+ 0x6005
+
+	)
+
+65 
+	#ETH_P_CUST
+ 0x6006
+
+	)
+
+66 
+	#ETH_P_SCA
+ 0x6007
+
+	)
+
+67 
+	#ETH_P_TEB
+ 0x6558
+
+	)
+
+68 
+	#ETH_P_RARP
+ 0x8035
+
+	)
+
+69 
+	#ETH_P_ATALK
+ 0x809B
+
+	)
+
+70 
+	#ETH_P_AARP
+ 0x80F3
+
+	)
+
+71 
+	#ETH_P_8021Q
+ 0x8100
+
+	)
+
+72 
+	#ETH_P_ERSPAN
+ 0x88BE
+
+	)
+
+73 
+	#ETH_P_IPX
+ 0x8137
+
+	)
+
+74 
+	#ETH_P_IPV6
+ 0x86DD
+
+	)
+
+75 
+	#ETH_P_PAUSE
+ 0x8808
+
+	)
+
+76 
+	#ETH_P_SLOW
+ 0x8809
+
+	)
+
+77 
+	#ETH_P_WCCP
+ 0x883E
+
+	)
+
+79 
+	#ETH_P_MPLS_UC
+ 0x8847
+
+	)
+
+80 
+	#ETH_P_MPLS_MC
+ 0x8848
+
+	)
+
+81 
+	#ETH_P_ATMMPOA
+ 0x884ø
+
+	)
+
+82 
+	#ETH_P_PPP_DISC
+ 0x8863
+
+	)
+
+83 
+	#ETH_P_PPP_SES
+ 0x8864
+
+	)
+
+84 
+	#ETH_P_LINK_CTL
+ 0x886ø
+
+	)
+
+85 
+	#ETH_P_ATMFATE
+ 0x8884
+
+	)
+
+88 
+	#ETH_P_PAE
+ 0x888E
+
+	)
+
+89 
+	#ETH_P_PROFINET
+ 0x8892
+
+	)
+
+90 
+	#ETH_P_REALTEK
+ 0x8899
+
+	)
+
+91 
+	#ETH_P_AOE
+ 0x88A2
+
+	)
+
+92 
+	#ETH_P_ETHERCAT
+ 0x88A4
+
+	)
+
+93 
+	#ETH_P_8021AD
+ 0x88A8
+
+	)
+
+94 
+	#ETH_P_802_EX1
+ 0x88B5
+
+	)
+
+95 
+	#ETH_P_PREAUTH
+ 0x88C7
+
+	)
+
+96 
+	#ETH_P_TIPC
+ 0x88CA
+
+	)
+
+97 
+	#ETH_P_LLDP
+ 0x88CC
+
+	)
+
+98 
+	#ETH_P_MRP
+ 0x88E3
+
+	)
+
+99 
+	#ETH_P_MACSEC
+ 0x88E5
+
+	)
+
+100 
+	#ETH_P_8021AH
+ 0x88E7
+
+	)
+
+101 
+	#ETH_P_MVRP
+ 0x88F5
+
+	)
+
+102 
+	#ETH_P_1588
+ 0x88F7
+
+	)
+
+103 
+	#ETH_P_NCSI
+ 0x88F8
+
+	)
+
+104 
+	#ETH_P_PRP
+ 0x88FB
+
+	)
+
+105 
+	#ETH_P_CFM
+ 0x8902
+
+	)
+
+106 
+	#ETH_P_FCOE
+ 0x8906
+
+	)
+
+107 
+	#ETH_P_IBOE
+ 0x8915
+
+	)
+
+108 
+	#ETH_P_TDLS
+ 0x890D
+
+	)
+
+109 
+	#ETH_P_FIP
+ 0x8914
+
+	)
+
+110 
+	#ETH_P_80221
+ 0x8917
+
+	)
+
+111 
+	#ETH_P_HSR
+ 0x892F
+
+	)
+
+112 
+	#ETH_P_NSH
+ 0x894F
+
+	)
+
+113 
+	#ETH_P_LOOPBACK
+ 0x9000
+
+	)
+
+114 
+	#ETH_P_QINQ1
+ 0x9100
+
+	)
+
+115 
+	#ETH_P_QINQ2
+ 0x9200
+
+	)
+
+116 
+	#ETH_P_QINQ3
+ 0x9300
+
+	)
+
+117 
+	#ETH_P_EDSA
+ 0xDADA
+
+	)
+
+118 
+	#ETH_P_DSA_8021Q
+ 0xDADB
+
+	)
+
+119 
+	#ETH_P_DSA_A5PSW
+ 0xE001
+
+	)
+
+120 
+	#ETH_P_IFE
+ 0xED3E
+
+	)
+
+121 
+	#ETH_P_AF_IUCV
+ 0xFBFB
+
+	)
+
+123 
+	#ETH_P_802_3_MIN
+ 0x0600
+
+	)
+
+130 
+	#ETH_P_802_3
+ 0x0001
+
+	)
+
+131 
+	#ETH_P_AX25
+ 0x0002
+
+	)
+
+132 
+	#ETH_P_ALL
+ 0x0003
+
+	)
+
+133 
+	#ETH_P_802_2
+ 0x0004
+
+	)
+
+134 
+	#ETH_P_SNAP
+ 0x0005
+
+	)
+
+135 
+	#ETH_P_DDCMP
+ 0x0006
+
+	)
+
+136 
+	#ETH_P_WAN_PPP
+ 0x0007
+
+	)
+
+137 
+	#ETH_P_PPP_MP
+ 0x0008
+
+	)
+
+138 
+	#ETH_P_LOCALTALK
+ 0x0009
+
+	)
+
+139 
+	#ETH_P_CAN
+ 0x000C
+
+	)
+
+140 
+	#ETH_P_CANFD
+ 0x000D
+
+	)
+
+141 
+	#ETH_P_CANXL
+ 0x000E
+
+	)
+
+142 
+	#ETH_P_PPPTALK
+ 0x0010
+
+	)
+
+143 
+	#ETH_P_TR_802_2
+ 0x0011
+
+	)
+
+144 
+	#ETH_P_MOBITEX
+ 0x0015
+
+	)
+
+145 
+	#ETH_P_CONTROL
+ 0x0016
+
+	)
+
+146 
+	#ETH_P_IRDA
+ 0x0017
+
+	)
+
+147 
+	#ETH_P_ECONET
+ 0x0018
+
+	)
+
+148 
+	#ETH_P_HDLC
+ 0x0019
+
+	)
+
+149 
+	#ETH_P_ARCNET
+ 0x001A
+
+	)
+
+150 
+	#ETH_P_DSA
+ 0x001B
+
+	)
+
+151 
+	#ETH_P_TRAILER
+ 0x001C
+
+	)
+
+152 
+	#ETH_P_PHONET
+ 0x00F5
+
+	)
+
+153 
+	#ETH_P_IEEE802154
+ 0x00F6
+
+	)
+
+154 
+	#ETH_P_CAIF
+ 0x00F7
+
+	)
+
+155 
+	#ETH_P_XDSA
+ 0x00F8
+
+	)
+
+156 
+	#ETH_P_MAP
+ 0x00F9
+
+	)
+
+159 
+	#ETH_P_MCTP
+ 0x00FA
+
+	)
+
+168 #iâdeà
+__UAPI_DEF_ETHHDR
+
+
+169 
+	#__UAPI_DEF_ETHHDR
+ 1
+
+	)
+
+172 #ià
+__UAPI_DEF_ETHHDR
+
+
+173 
+	s‘hhdr
+ {
+
+174 
+	mh_de¡
+[
+ETH_ALEN
+];
+
+175 
+	mh_sourû
+[
+ETH_ALEN
+];
+
+176 
+__be16
+ 
+	mh_´Ùo
+;
+
+177 } 
+__©Œibu‹__
+((
+·cked
+));
+
+	@/usr/include/linux/posix_types.h
+
+2 #iâdeà
+_LINUX_POSIX_TYPES_H
+
+
+3 
+	#_LINUX_POSIX_TYPES_H
+
+
+	)
+
+5 
+	~<lšux/¡ddef.h
+>
+
+22 #undeà
+__FD_SETSIZE
+
+
+23 
+	#__FD_SETSIZE
+ 1024
+
+	)
+
+26 
+	mfds_b™s
+[
+__FD_SETSIZE
+ / (8 * ())];
+
+27 } 
+	t__k”Ãl_fd_£t
+;
+
+30 (*
+	t__k”Ãl_sighªdËr_t
+)();
+
+33 
+	t__k”Ãl_key_t
+;
+
+34 
+	t__k”Ãl_mqd_t
+;
+
+36 
+	~<asm/posix_ty³s.h
+>
+
+	@/usr/include/linux/time_types.h
+
+2 #iâdeà
+_LINUX_TIME_TYPES_H
+
+
+3 
+	#_LINUX_TIME_TYPES_H
+
+
+	)
+
+5 
+	~<lšux/ty³s.h
+>
+
+7 
+	s__k”Ãl_time¥ec
+ {
+
+8 
+__k”Ãl_time64_t
+ 
+	mtv_£c
+;
+
+9 
+	mtv_n£c
+;
+
+12 
+	s__k”Ãl_™im”¥ec
+ {
+
+13 
+__k”Ãl_time¥ec
+ 
+	m™_š‹rv®
+;
+
+14 
+__k”Ãl_time¥ec
+ 
+	m™_v®ue
+;
+
+24 #iâdeà
+__k”Ãl_Þd_timev®
+
+
+25 
+	s__k”Ãl_Þd_timev®
+ {
+
+26 
+__k”Ãl_lÚg_t
+ 
+	mtv_£c
+;
+
+27 
+__k”Ãl_lÚg_t
+ 
+	mtv_u£c
+;
+
+31 
+	s__k”Ãl_Þd_time¥ec
+ {
+
+32 
+__k”Ãl_Þd_time_t
+ 
+	mtv_£c
+;
+
+33 
+	mtv_n£c
+;
+
+36 
+	s__k”Ãl_Þd_™im”v®
+ {
+
+37 
+__k”Ãl_Þd_timev®
+ 
+	m™_š‹rv®
+;
+
+38 
+__k”Ãl_Þd_timev®
+ 
+	m™_v®ue
+;
+
+41 
+	s__k”Ãl_sock_timev®
+ {
+
+42 
+__s64
+ 
+	mtv_£c
+;
+
+43 
+__s64
+ 
+	mtv_u£c
+;
+
+	@/usr/include/rpc/netdb.h
+
+36 #iâdeà
+_RPC_NETDB_H
+
+
+37 
+	#_RPC_NETDB_H
+ 1
+
+	)
+
+39 
+	~<ã©u»s.h
+>
+
+41 
+	#__Ãed_size_t
+
+
+	)
+
+42 
+	~<¡ddef.h
+>
+
+44 
+__BEGIN_DECLS
+
+
+46 
+	s½ûÁ
+
+
+48 *
+	mr_Çme
+;
+
+49 **
+	mr_®Ÿ£s
+;
+
+50 
+	mr_numb”
+;
+
+53 

+	$£ŒpûÁ
+ (
+__¡ayÝ’
+è
+__THROW
+;
+
+54 

+	$’d½ûÁ
+ (è
+__THROW
+;
+
+55 

+½ûÁ
+ *
+	$g‘½cbyÇme
+ (cÚ¡ *
+__Çme
+è
+__THROW
+;
+
+56 

+½ûÁ
+ *
+	$g‘½cbynumb”
+ (
+__numb”
+è
+__THROW
+;
+
+57 

+½ûÁ
+ *
+	$g‘½ûÁ
+ (è
+__THROW
+;
+
+59 #ifdeà
+__USE_MISC
+
+
+60 

+	$g‘½cbyÇme_r
+ (cÚ¡ *
+__Çme
+, 
+½ûÁ
+ *
+__»suÉ_buf
+,
+
+61 *
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+62 
+½ûÁ
+ **
+__»suÉ
+è
+__THROW
+;
+
+64 

+	$g‘½cbynumb”_r
+ (
+__numb”
+, 
+½ûÁ
+ *
+__»suÉ_buf
+,
+
+65 *
+__bufãr
+, 
+size_t
+ 
+__buæ’
+,
+
+66 
+½ûÁ
+ **
+__»suÉ
+è
+__THROW
+;
+
+68 

+	$g‘½ûÁ_r
+ (
+½ûÁ
+ *
+__»suÉ_buf
+, *
+__bufãr
+,
+
+69 
+size_t
+ 
+__buæ’
+, 
+½ûÁ
+ **
+__»suÉ
+è
+__THROW
+;
+
+72 
+__END_DECLS
+
+
+	@/usr/include/sys/cdefs.h
+
+19 #iâdef 
+_SYS_CDEFS_H
+
+
+20 
+	#_SYS_CDEFS_H
+ 1
+
+	)
+
+23 #iâdeà
+_FEATURES_H
+
+
+24 
+	~<ã©u»s.h
+>
+
+30 #ià
+defšed
+ 
+__GNUC__
+ && !defšed 
+__STDC__
+ && !defšed 
+__ýlu¥lus
+
+
+35 #undeà
+__P
+
+
+36 #undeà
+__PMT
+
+
+42 #ià(
+defšed
+ 
+__has_©Œibu‹
+ \
+
+43 && (!
+defšed
+ 
+	g__þªg_mšÜ__
+ \
+
+44 || 3 < 
+	g__þªg_majÜ__
+ + (5 <ð
+__þªg_mšÜ__
+)))
+
+45 
+	#__glibc_has_©Œibu‹
+(
+©Œ
+è
+	`__has_©Œibu‹
+ (©Œ)
+
+	)
+
+47 
+	#__glibc_has_©Œibu‹
+(
+©Œ
+è0
+
+	)
+
+49 #ifdeà
+__has_bužtš
+
+
+50 
+	#__glibc_has_bužtš
+(
+Çme
+è
+	`__has_bužtš
+ (Çme)
+
+	)
+
+52 
+	#__glibc_has_bužtš
+(
+Çme
+è0
+
+	)
+
+54 #ifdeà
+__has_ex‹nsiÚ
+
+
+55 
+	#__glibc_has_ex‹nsiÚ
+(
+ext
+è
+	`__has_ex‹nsiÚ
+ (ext)
+
+	)
+
+57 
+	#__glibc_has_ex‹nsiÚ
+(
+ext
+è0
+
+	)
+
+60 #ià
+defšed
+ 
+__GNUC__
+ || defšed 
+__þªg__
+
+
+64 #ià
+__GNUC_PREREQ
+ (4, 6è&& !
+defšed
+ 
+_LIBC
+
+
+65 
+	#__LEAF
+ , 
+__Ëaf__
+
+
+	)
+
+66 
+	#__LEAF_ATTR
+ 
+	`__©Œibu‹__
+ ((
+__Ëaf__
+))
+
+	)
+
+68 
+	#__LEAF
+
+
+	)
+
+69 
+	#__LEAF_ATTR
+
+
+	)
+
+77 #ià!
+defšed
+ 
+__ýlu¥lus
+ \
+
+78 && (
+__GNUC_PREREQ
+ (3, 4è|| 
+	$__glibc_has_©Œibu‹
+ (
+__nÙhrow__
+))
+
+79 
+	#__THROW
+ 
+	`__©Œibu‹__
+ ((
+__nÙhrow__
+ 
+__LEAF
+))
+
+	)
+
+80 
+	#__THROWNL
+ 
+	`__©Œibu‹__
+ ((
+__nÙhrow__
+))
+
+	)
+
+81 
+	#__NTH
+(
+fù
+è
+	`__©Œibu‹__
+ ((
+__nÙhrow__
+ 
+__LEAF
+)è
+	)
+fct
+
+82 
+	#__NTHNL
+(
+fù
+è
+	`__©Œibu‹__
+ ((
+__nÙhrow__
+)è
+	)
+fct
+
+84 #ià
+defšed
+ 
+__ýlu¥lus
+ && (
+	`__GNUC_PREREQ
+ (2,8è|| 
+__þªg_majÜ__
+ >= 4)
+
+85 #ià
+__ýlu¥lus
+ >= 201103L
+
+86 
+	#__THROW
+ 
+	`nÛxû±
+ (
+Œue
+)
+
+	)
+
+88 
+	#__THROW
+ 
+	`throw
+ ()
+
+	)
+
+90 
+	#__THROWNL
+ 
+__THROW
+
+
+	)
+
+91 
+	#__NTH
+(
+fù
+è
+__LEAF_ATTR
+ fù 
+__THROW
+
+
+	)
+
+92 
+	#__NTHNL
+(
+fù
+èfù 
+__THROW
+
+
+	)
+
+94 
+	#__THROW
+
+
+	)
+
+95 
+	#__THROWNL
+
+
+	)
+
+96 
+	#__NTH
+(
+fù
+è
+	)
+fct
+
+97 
+	#__NTHNL
+(
+fù
+è
+	)
+fct
+
+101 #ià
+	`__GNUC_PREREQ
+ (4, 3è|| 
+	`__glibc_has_©Œibu‹
+ (
+__cÞd__
+)
+
+102 
+	#__COLD
+ 
+	`__©Œibu‹__
+ ((
+__cÞd__
+))
+
+	)
+
+104 
+	#__COLD
+
+
+	)
+
+109 #ià(
+defšed
+ 
+__ýlu¥lus
+ \
+
+110 || (
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L))
+
+111 
+	#__šlše
+ 
+šlše
+
+
+	)
+
+113 
+	#__šlše
+
+
+	)
+
+116 
+	#__THROW
+
+
+	)
+
+117 
+	#__THROWNL
+
+
+	)
+
+118 
+	#__NTH
+(
+fù
+è
+	)
+fct
+
+119 
+	#__COLD
+
+
+	)
+
+125 
+	#__P
+(
+¬gs
+è
+	)
+args
+
+126 
+	#__PMT
+(
+¬gs
+è
+	)
+args
+
+131 
+	#__CONCAT
+(
+x
+,
+y
+èx ## 
+	)
+y
+
+132 
+	#__STRING
+(
+x
+è#x
+
+	)
+
+135 
+	#__±r_t
+ *
+
+	)
+
+139 #ifdef 
+__ýlu¥lus
+
+
+140 
+	#__BEGIN_DECLS
+ 
"C" {
+
+	)
+
+141 
+	#__END_DECLS
+ 
+	}
+
+	)
+}
+
+143 
+	#__BEGIN_DECLS
+
+
+	)
+
+144 
+	#__END_DECLS
+
+
+	)
+
+149 
+	#__bos
+(
+±r
+è
+	`__bužtš_objeù_size
+ (±r, 
+__USE_FORTIFY_LEVEL
+ > 1)
+
+	)
+
+150 
+	#__bos0
+(
+±r
+è
+	`__bužtš_objeù_size
+ (±r, 0)
+
+	)
+
+153 #ià
+__USE_FORTIFY_LEVEL
+ =ð3 && (
+__glibc_þªg_´”eq
+ (9, 0) \
+
+154 || 
+	$__GNUC_PREREQ
+ (12, 0))
+
+155 
+	#__glibc_objsize0
+(
+__o
+è
+	`__bužtš_dyÇmic_objeù_size
+ (__o, 0)
+
+	)
+
+156 
+	#__glibc_objsize
+(
+__o
+è
+	`__bužtš_dyÇmic_objeù_size
+ (__o, 1)
+
+	)
+
+158 
+	#__glibc_objsize0
+(
+__o
+è
+	`__bos0
+ (__o)
+
+	)
+
+159 
+	#__glibc_objsize
+(
+__o
+è
+	`__bos
+ (__o)
+
+	)
+
+162 #ià
+__USE_FORTIFY_LEVEL
+ > 0
+
+167 
+	#__glibc_§ã_Ën_cÚd
+(
+__l
+, 
+__s
+, 
+__osz
+è((__lè<ð(__oszè/ (__s))
+
+	)
+
+168 
+	#__glibc_unsigÃd_Ü_pos™ive
+(
+__l
+) \
+
+169 ((
+	`__ty³of
+ (
+__l
+)) 0 < (__typeof (__l)) -1 \
+
+170 || (
+	`__bužtš_cÚ¡ªt_p
+ (
+__l
+è&& (__lè> 0))
+
+	)
+
+174 
+	#__glibc_§ã_Ü_unknown_Ën
+(
+__l
+, 
+__s
+, 
+__osz
+) \
+
+175 ((
+	`__bužtš_cÚ¡ªt_p
+ (
+__osz
+è&& (__oszè=ð(
+__SIZE_TYPE__
+) -1) \
+
+176 || (
+	`__glibc_unsigÃd_Ü_pos™ive
+ (
+__l
+) \
+
+177 && 
+	`__bužtš_cÚ¡ªt_p
+ (
+	`__glibc_§ã_Ën_cÚd
+ ((
+__SIZE_TYPE__
+è(
+__l
+), \
+
+178 (
+__s
+), (
+__osz
+))) \
+
+179 && 
+	`__glibc_§ã_Ën_cÚd
+ ((
+__SIZE_TYPE__
+è(
+__l
+), (
+__s
+), (
+__osz
+))))
+
+	)
+
+184 
+	#__glibc_un§ã_Ën
+(
+__l
+, 
+__s
+, 
+__osz
+) \
+
+185 (
+	`__glibc_unsigÃd_Ü_pos™ive
+ (
+__l
+) \
+
+186 && 
+	`__bužtš_cÚ¡ªt_p
+ (
+	`__glibc_§ã_Ën_cÚd
+ ((
+__SIZE_TYPE__
+è(
+__l
+), \
+
+187 
+__s
+, 
+__osz
+)) \
+
+188 && !
+	`__glibc_§ã_Ën_cÚd
+ ((
+__SIZE_TYPE__
+è(
+__l
+), 
+__s
+, 
+__osz
+))
+
+	)
+
+193 
+	#__glibc_fÜtify
+(
+f
+, 
+__l
+, 
+__s
+, 
+__osz
+, ...) \
+
+194 (
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__l
+, 
+__s
+, 
+__osz
+) \
+
+195 ? 
+__
+ ## 
+f
+ ## 
+	`_®Ÿs
+ (
+__VA_ARGS__
+) \
+
+196 : (
+	`__glibc_un§ã_Ën
+ (
+__l
+, 
+__s
+, 
+__osz
+) \
+
+197 ? 
+__
+ ## 
+f
+ ## 
+	`_chk_w¬n
+ (
+__VA_ARGS__
+, 
+__osz
+) \
+
+198 : 
+__
+ ## 
+f
+ ## 
+	`_chk
+ (
+__VA_ARGS__
+, 
+__osz
+)))
+
+	)
+
+203 
+	#__glibc_fÜtify_n
+(
+f
+, 
+__l
+, 
+__s
+, 
+__osz
+, ...) \
+
+204 (
+	`__glibc_§ã_Ü_unknown_Ën
+ (
+__l
+, 
+__s
+, 
+__osz
+) \
+
+205 ? 
+__
+ ## 
+f
+ ## 
+	`_®Ÿs
+ (
+__VA_ARGS__
+) \
+
+206 : (
+	`__glibc_un§ã_Ën
+ (
+__l
+, 
+__s
+, 
+__osz
+) \
+
+207 ? 
+__
+ ## 
+f
+ ## 
+	`_chk_w¬n
+ (
+__VA_ARGS__
+, (
+__osz
+è/ (
+__s
+)) \
+
+208 : 
+__
+ ## 
+f
+ ## 
+	`_chk
+ (
+__VA_ARGS__
+, (
+__osz
+è/ (
+__s
+))))
+
+	)
+
+211 #ià
+	`__GNUC_PREREQ
+ (4,3)
+
+212 
+	#__w¬Ç‰r
+(
+msg
+è
+	`__©Œibu‹__
+((
+	`__w¬nšg__
+ (msg)))
+
+	)
+
+213 
+	#__”rÜdeþ
+(
+Çme
+, 
+msg
+) \
+
+214 

+	`Çme
+ (è
+	`__©Œibu‹__
+((
+	`__”rÜ__
+ (
+msg
+)))
+
+	)
+
+216 
+	#__w¬Ç‰r
+(
+msg
+)
+
+	)
+
+217 
+	#__”rÜdeþ
+(
+Çme
+, 
+msg
+è

+	`Çme
+ ()
+
+	)
+
+224 #ià
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >ð199901L && !defšed 
+__HP_cc
+
+
+225 
+	#__æex¬r
+ []
+
+	)
+
+226 
+	#__glibc_c99_æex¬r_avažabË
+ 1
+
+	)
+
+227 #–ià
+	`__GNUC_PREREQ
+ (2,97è|| 
+defšed
+ 
+__þªg__
+
+
+230 
+	#__æex¬r
+ []
+
+	)
+
+231 
+	#__glibc_c99_æex¬r_avažabË
+ 1
+
+	)
+
+232 #–ià
+defšed
+ 
+__GNUC__
+
+
+235 
+	#__æex¬r
+ [0]
+
+	)
+
+236 
+	#__glibc_c99_æex¬r_avažabË
+ 1
+
+	)
+
+239 
+	#__æex¬r
+ [1]
+
+	)
+
+240 
+	#__glibc_c99_æex¬r_avažabË
+ 0
+
+	)
+
+254 #ià(
+defšed
+ 
+__GNUC__
+ && __GNUC__ >ð2è|| (
+__þªg_majÜ__
+ >= 4)
+
+256 
+	#__REDIRECT
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+èÇm�´ÙØ
+	`__asm__
+ (
+	`__ASMNAME
+ (#®Ÿs))
+
+	)
+
+257 #ifdeà
+__ýlu¥lus
+
+
+258 
+	#__REDIRECT_NTH
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+259 
+Çme
+ 
+´Ùo
+ 
+__THROW
+ 
+	`__asm__
+ (
+	`__ASMNAME
+ (#®Ÿs))
+
+	)
+
+260 
+	#__REDIRECT_NTHNL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+261 
+Çme
+ 
+´Ùo
+ 
+__THROWNL
+ 
+	`__asm__
+ (
+	`__ASMNAME
+ (#®Ÿs))
+
+	)
+
+263 
+	#__REDIRECT_NTH
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+264 
+Çme
+ 
+´Ùo
+ 
+	`__asm__
+ (
+	`__ASMNAME
+ (#®Ÿs)è
+__THROW
+
+
+	)
+
+265 
+	#__REDIRECT_NTHNL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+266 
+Çme
+ 
+´Ùo
+ 
+	`__asm__
+ (
+	`__ASMNAME
+ (#®Ÿs)è
+__THROWNL
+
+
+	)
+
+268 
+	#__ASMNAME
+(
+úame
+è
+	`__ASMNAME2
+ (
+__USER_LABEL_PREFIX__
+, cÇme)
+
+	)
+
+269 
+	#__ASMNAME2
+(
+´efix
+, 
+úame
+è
+	`__STRING
+ (´efixè
+	)
+cname
+
+271 #iâdeà
+__REDIRECT_FORTIFY
+
+
+272 
+	#__REDIRECT_FORTIFY
+ 
+__REDIRECT
+
+
+	)
+
+275 #iâdeà
+__REDIRECT_FORTIFY_NTH
+
+
+276 
+	#__REDIRECT_FORTIFY_NTH
+ 
+__REDIRECT_NTH
+
+
+	)
+
+290 #ià!(
+defšed
+ 
+__GNUC__
+ || defšed 
+__þªg__
+)
+
+291 
+	#__©Œibu‹__
+(
+xyz
+è
+
+	)
+
+297 #ià
+	`__GNUC_PREREQ
+ (2,96è|| 
+	`__glibc_has_©Œibu‹
+ (
+__m®loc__
+)
+
+298 
+	#__©Œibu‹_m®loc__
+ 
+	`__©Œibu‹__
+ ((
+__m®loc__
+))
+
+	)
+
+300 
+	#__©Œibu‹_m®loc__
+
+
+	)
+
+305 #ià
+	`__GNUC_PREREQ
+ (4, 3)
+
+306 
+	#__©Œibu‹_®loc_size__
+(
+·¿ms
+) \
+
+307 
+	`__©Œibu‹__
+ ((
+__®loc_size__
+ 
+·¿ms
+))
+
+	)
+
+309 
+	#__©Œibu‹_®loc_size__
+(
+·¿ms
+è
+
+	)
+
+314 #ià
+	`__GNUC_PREREQ
+ (4, 9è|| 
+	`__glibc_has_©Œibu‹
+ (
+__®loc_®ign__
+)
+
+315 
+	#__©Œibu‹_®loc_®ign__
+(
+·¿m
+) \
+
+316 
+	`__©Œibu‹__
+ ((
+__®loc_®ign__
+ 
+·¿m
+))
+
+	)
+
+318 
+	#__©Œibu‹_®loc_®ign__
+(
+·¿m
+è
+
+	)
+
+324 #ià
+	`__GNUC_PREREQ
+ (2,96è|| 
+	`__glibc_has_©Œibu‹
+ (
+__pu»__
+)
+
+325 
+	#__©Œibu‹_pu»__
+ 
+	`__©Œibu‹__
+ ((
+__pu»__
+))
+
+	)
+
+327 
+	#__©Œibu‹_pu»__
+
+
+	)
+
+331 #ià
+	`__GNUC_PREREQ
+ (2,5è|| 
+	`__glibc_has_©Œibu‹
+ (
+__cÚ¡__
+)
+
+332 
+	#__©Œibu‹_cÚ¡__
+ 
+	`__©Œibu‹__
+ ((
+__cÚ¡__
+))
+
+	)
+
+334 
+	#__©Œibu‹_cÚ¡__
+
+
+	)
+
+337 #ià
+	`__GNUC_PREREQ
+ (2,7è|| 
+	`__glibc_has_©Œibu‹
+ (
+__unu£d__
+)
+
+338 
+	#__©Œibu‹_maybe_unu£d__
+ 
+	`__©Œibu‹__
+ ((
+__unu£d__
+))
+
+	)
+
+340 
+	#__©Œibu‹_maybe_unu£d__
+
+
+	)
+
+346 #ià
+	`__GNUC_PREREQ
+ (3,1è|| 
+	`__glibc_has_©Œibu‹
+ (
+__u£d__
+)
+
+347 
+	#__©Œibu‹_u£d__
+ 
+	`__©Œibu‹__
+ ((
+__u£d__
+))
+
+	)
+
+348 
+	#__©Œibu‹_nošlše__
+ 
+	`__©Œibu‹__
+ ((
+__nošlše__
+))
+
+	)
+
+350 
+	#__©Œibu‹_u£d__
+ 
+	`__©Œibu‹__
+ ((
+__unu£d__
+))
+
+	)
+
+351 
+	#__©Œibu‹_nošlše__
+
+
+	)
+
+355 #ià
+	`__GNUC_PREREQ
+ (3,2è|| 
+	`__glibc_has_©Œibu‹
+ (
+__d•»ÿ‹d__
+)
+
+356 
+	#__©Œibu‹_d•»ÿ‹d__
+ 
+	`__©Œibu‹__
+ ((
+__d•»ÿ‹d__
+))
+
+	)
+
+358 
+	#__©Œibu‹_d•»ÿ‹d__
+
+
+	)
+
+364 #ià
+	`__GNUC_PREREQ
+ (4,5) \
+
+365 || 
+	$__glibc_has_ex‹nsiÚ
+ (
+__©Œibu‹_d•»ÿ‹d_w™h_mes§ge__
+)
+
+366 
+	#__©Œibu‹_d•»ÿ‹d_msg__
+(
+msg
+) \
+
+367 
+	`__©Œibu‹__
+ ((
+	`__d•»ÿ‹d__
+ (
+msg
+)))
+
+	)
+
+369 
+	#__©Œibu‹_d•»ÿ‹d_msg__
+(
+msg
+è
+__©Œibu‹_d•»ÿ‹d__
+
+
+	)
+
+378 #ià
+	`__GNUC_PREREQ
+ (2,8è|| 
+	`__glibc_has_©Œibu‹
+ (
+__fÜm©_¬g__
+)
+
+379 
+	#__©Œibu‹_fÜm©_¬g__
+(
+x
+è
+	`__©Œibu‹__
+ ((
+	`__fÜm©_¬g__
+ (x)))
+
+	)
+
+381 
+	#__©Œibu‹_fÜm©_¬g__
+(
+x
+è
+
+	)
+
+388 #ià
+	`__GNUC_PREREQ
+ (2,97è|| 
+	`__glibc_has_©Œibu‹
+ (
+__fÜm©__
+)
+
+389 
+	#__©Œibu‹_fÜm©_¡rfmÚ__
+(
+a
+,
+b
+) \
+
+390 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__¡rfmÚ__
+, 
+a
+, 
+b
+)))
+
+	)
+
+392 
+	#__©Œibu‹_fÜm©_¡rfmÚ__
+(
+a
+,
+b
+è
+
+	)
+
+399 #iâdeà
+__©Œibu‹_nÚnuÎ__
+
+
+400 #ià
+	`__GNUC_PREREQ
+ (3,3è|| 
+	`__glibc_has_©Œibu‹
+ (
+__nÚnuÎ__
+)
+
+401 
+	#__©Œibu‹_nÚnuÎ__
+(
+·¿ms
+è
+	`__©Œibu‹__
+ ((
+__nÚnuÎ__
+…¬ams))
+
+	)
+
+403 
+	#__©Œibu‹_nÚnuÎ__
+(
+·¿ms
+)
+
+	)
+
+406 #iâdeà
+__nÚnuÎ
+
+
+407 
+	#__nÚnuÎ
+(
+·¿ms
+è
+	`__©Œibu‹_nÚnuÎ__
+ (·¿ms)
+
+	)
+
+412 #iâdeà
+__»tuºs_nÚnuÎ
+
+
+413 #ià
+	`__GNUC_PREREQ
+ (4, 9è|| 
+	`__glibc_has_©Œibu‹
+ (
+__»tuºs_nÚnuÎ__
+)
+
+414 
+	#__»tuºs_nÚnuÎ
+ 
+	`__©Œibu‹__
+ ((
+__»tuºs_nÚnuÎ__
+))
+
+	)
+
+416 
+	#__»tuºs_nÚnuÎ
+
+
+	)
+
+422 #ià
+	`__GNUC_PREREQ
+ (3,4è|| 
+	`__glibc_has_©Œibu‹
+ (
+__w¬n_unu£d_»suÉ__
+)
+
+423 
+	#__©Œibu‹_w¬n_unu£d_»suÉ__
+ \
+
+424 
+	`__©Œibu‹__
+ ((
+__w¬n_unu£d_»suÉ__
+))
+
+	)
+
+425 #ià
+defšed
+ 
+__USE_FORTIFY_LEVEL
+ && __USE_FORTIFY_LEVEL > 0
+
+426 
+	#__wur
+ 
+__©Œibu‹_w¬n_unu£d_»suÉ__
+
+
+	)
+
+429 
+	#__©Œibu‹_w¬n_unu£d_»suÉ__
+
+
+	)
+
+431 #iâdeà
+__wur
+
+
+432 
+	#__wur
+
+
+	)
+
+436 #ià
+	`__GNUC_PREREQ
+ (3,2è|| 
+	`__glibc_has_©Œibu‹
+ (
+__®ways_šlše__
+)
+
+440 #undeà
+__®ways_šlše
+
+
+441 
+	#__®ways_šlše
+ 
+__šlše
+ 
+	`__©Œibu‹__
+ ((
+__®ways_šlše__
+))
+
+	)
+
+443 #undeà
+__®ways_šlše
+
+
+444 
+	#__®ways_šlše
+ 
+__šlše
+
+
+	)
+
+449 #ià
+	`__GNUC_PREREQ
+ (4,3è|| 
+	`__glibc_has_©Œibu‹
+ (
+__¬tificŸl__
+)
+
+450 
+	#__©Œibu‹_¬tificŸl__
+ 
+	`__©Œibu‹__
+ ((
+__¬tificŸl__
+))
+
+	)
+
+452 
+	#__©Œibu‹_¬tificŸl__
+
+
+	)
+
+464 #ià(!
+defšed
+ 
+__ýlu¥lus
+ || 
+	`__GNUC_PREREQ
+ (4,3) \
+
+465 || (
+defšed
+ 
+__þªg__
+ && (defšed 
+__GNUC_STDC_INLINE__
+ \
+
+466 || 
+defšed
+ 
+__GNUC_GNU_INLINE__
+)))
+
+467 #ià
+defšed
+ 
+__GNUC_STDC_INLINE__
+ || defšed 
+__ýlu¥lus
+
+
+468 
+	#__ex‹º_šlše
+ 
+__šlše
+ 
+	`__©Œibu‹__
+ ((
+__gnu_šlše__
+))
+
+	)
+
+469 
+	#__ex‹º_®ways_šlše
+ \
+
+470 
+__®ways_šlše
+ 
+	`__©Œibu‹__
+ ((
+__gnu_šlše__
+))
+
+	)
+
+472 
+	#__ex‹º_šlše
+ 
+__šlše
+
+
+	)
+
+473 
+	#__ex‹º_®ways_šlše
+ 
+__®ways_šlše
+
+
+	)
+
+477 #ifdeà
+__ex‹º_®ways_šlše
+
+
+478 
+	#__fÜtify_funùiÚ
+ 
+__ex‹º_®ways_šlše
+ 
+__©Œibu‹_¬tificŸl__
+
+
+	)
+
+483 #ià
+	`__GNUC_PREREQ
+ (4,3)
+
+484 
+	#__va_¬g_·ck
+(è
+	`__bužtš_va_¬g_·ck
+ ()
+
+	)
+
+485 
+	#__va_¬g_·ck_Ën
+(è
+	`__bužtš_va_¬g_·ck_Ën
+ ()
+
+	)
+
+492 #ià!(
+	`__GNUC_PREREQ
+ (2,8è|| 
+defšed
+ 
+__þªg__
+)
+
+493 
+	#__ex‹nsiÚ__
+
+
+	)
+
+499 #ià!(
+	`__GNUC_PREREQ
+ (2,92è|| 
+__þªg_majÜ__
+ >= 3)
+
+500 #ià
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L
+
+501 
+	#__»¡riù
+ 
+»¡riù
+
+
+	)
+
+503 
+	#__»¡riù
+
+
+	)
+
+511 #ià(
+	`__GNUC_PREREQ
+ (3,1è|| 
+__þªg_majÜ__
+ >ð3è&& !
+defšed
+ 
+__ýlu¥lus
+
+
+512 
+	#__»¡riù_¬r
+ 
+__»¡riù
+
+
+	)
+
+514 #ifdeà
+__GNUC__
+
+
+515 
+	#__»¡riù_¬r
+
+
+	)
+
+517 #ià
+defšed
+ 
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L
+
+518 
+	#__»¡riù_¬r
+ 
+»¡riù
+
+
+	)
+
+521 
+	#__»¡riù_¬r
+
+
+	)
+
+526 #ià(
+__GNUC__
+ >ð3è|| 
+	`__glibc_has_bužtš
+ (
+__bužtš_ex³ù
+)
+
+527 
+	#__glibc_uÆik–y
+(
+cÚd
+è
+	`__bužtš_ex³ù
+ ((cÚd), 0)
+
+	)
+
+528 
+	#__glibc_lik–y
+(
+cÚd
+è
+	`__bužtš_ex³ù
+ ((cÚd), 1)
+
+	)
+
+530 
+	#__glibc_uÆik–y
+(
+cÚd
+è(cÚd)
+
+	)
+
+531 
+	#__glibc_lik–y
+(
+cÚd
+è(cÚd)
+
+	)
+
+534 #ià(!
+defšed
+ 
+_NÜ‘uº
+ \
+
+535 && (
+defšed
+ 
+__STDC_VERSION__
+ ? __STDC_VERSION__ : 0) < 201112 \
+
+536 && !(
+	`__GNUC_PREREQ
+ (4,7) \
+
+537 || (3 < 
+__þªg_majÜ__
+ + (5 <ð
+__þªg_mšÜ__
+))))
+
+538 #ià
+	`__GNUC_PREREQ
+ (2,8)
+
+539 
+	#_NÜ‘uº
+ 
+	`__©Œibu‹__
+ ((
+__nÜ‘uº__
+))
+
+	)
+
+541 
+	#_NÜ‘uº
+
+
+	)
+
+545 #ià
+	`__GNUC_PREREQ
+ (8, 0)
+
+549 
+	#__©Œibu‹_nÚ¡ršg__
+ 
+	`__©Œibu‹__
+ ((
+__nÚ¡ršg__
+))
+
+	)
+
+551 
+	#__©Œibu‹_nÚ¡ršg__
+
+
+	)
+
+555 #undeà
+__©Œibu‹_cÝy__
+
+
+556 #ià
+	`__GNUC_PREREQ
+ (9, 0)
+
+559 
+	#__©Œibu‹_cÝy__
+(
+¬g
+è
+	`__©Œibu‹__
+ ((
+	`__cÝy__
+ (¬g)))
+
+	)
+
+561 
+	#__©Œibu‹_cÝy__
+(
+¬g
+)
+
+	)
+
+564 #ià(!
+defšed
+ 
+_S�tic_as£¹
+ && !defšed 
+__ýlu¥lus
+ \
+
+565 && (
+defšed
+ 
+__STDC_VERSION__
+ ? __STDC_VERSION__ : 0) < 201112 \
+
+566 && (!(
+	`__GNUC_PREREQ
+ (4, 6è|| 
+__þªg_majÜ__
+ >= 4) \
+
+567 || 
+defšed
+ 
+__STRICT_ANSI__
+))
+
+568 
+	#_S�tic_as£¹
+(
+ex´
+, 
+dŸgno¡ic
+) \
+
+569 
(*
+	`__S�tic_as£¹_funùiÚ
+ ()) \
+
+570 [!! (¡ruù { 
+__”rÜ_if_Ãg©ive
+: (
+ex´
+è? 2 : -1; })]
+
+	)
+
+575 #iâdeà
+__GNULIB_CDEFS
+
+
+576 
+	~<b™s/wÜdsize.h
+>
+
+577 
+	~<b™s/lÚg-doubË.h
+>
+
+580 #ià
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+581 #ifdeà
+__REDIRECT
+
+
+584 
+	#__LDBL_REDIR
+(
+Çme
+, 
+´Ùo
+è... 
+unu£d__ldbl_»dœ
+
+
+	)
+
+585 
+	#__LDBL_REDIR_DECL
+(
+Çme
+) \
+
+586 
+	`__ty³of
+ (
+Çme
+èÇm�
+	`__asm
+ (
+	`__ASMNAME
+ ("__" #Çm�"›“128"));
+
+	)
+
+587 
+	#__REDIRECT_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+588 
+Çme
+ 
+´Ùo
+ 
+	`__asm
+ (
+	`__ASMNAME
+ ("__" #®Ÿ "›“128"))
+
+	)
+
+591 
+	#__LDBL_REDIR2_DECL
+(
+Çme
+) \
+
+592 
+	`__ty³of
+ (
+__
+##
+Çme
+) __##name \
+
+593 
+	`__asm
+ (
+	`__ASMNAME
+ ("__" #Çm�"›“128"));
+
+	)
+
+596 
+	#__LDBL_REDIR1
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+è... 
+unu£d__ldbl_»dœ1
+
+
+	)
+
+597 
+	#__LDBL_REDIR1_DECL
+(
+Çme
+, 
+®Ÿs
+) \
+
+598 
+	`__ty³of
+ (
+Çme
+èÇm�
+	`__asm
+ (
+	`__ASMNAME
+ (#®Ÿs));
+
+	)
+
+600 
+	#__LDBL_REDIR1_NTH
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+601 
+	`__REDIRECT_NTH
+ (
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+)
+
+	)
+
+602 
+	#__REDIRECT_NTH_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+603 
+	`__LDBL_REDIR1_NTH
+ (
+Çme
+, 
+´Ùo
+, 
+__
+##
+®Ÿs
+##
+›“128
+)
+
+	)
+
+606 
+	#__LDBL_REDIR_NTH
+(
+Çme
+, 
+´Ùo
+è... 
+unu£d__ldbl_»dœ_Áh
+
+
+	)
+
+609 
+	`_S�tic_as£¹
+ (0, "IEEE 128-bits†ong double„equires„edirection on�his…latform");
+
+611 #–ià
+defšed
+ 
+__LONG_DOUBLE_MATH_OPTIONAL
+ && defšed 
+__NO_LONG_DOUBLE_MATH
+
+
+612 
+	#__LDBL_COMPAT
+ 1
+
+	)
+
+613 #ifdeà
+__REDIRECT
+
+
+614 
+	#__LDBL_REDIR1
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+è
+	`__REDIRECT
+ (Çme,…rÙo,‡lŸs)
+
+	)
+
+615 
+	#__LDBL_REDIR
+(
+Çme
+, 
+´Ùo
+) \
+
+616 
+	`__LDBL_REDIR1
+ (
+Çme
+, 
+´Ùo
+, 
+__Ædbl_
+##Çme)
+
+	)
+
+617 
+	#__LDBL_REDIR1_NTH
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+è
+	`__REDIRECT_NTH
+ (Çme,…rÙo,‡lŸs)
+
+	)
+
+618 
+	#__LDBL_REDIR_NTH
+(
+Çme
+, 
+´Ùo
+) \
+
+619 
+	`__LDBL_REDIR1_NTH
+ (
+Çme
+, 
+´Ùo
+, 
+__Ædbl_
+##Çme)
+
+	)
+
+620 
+	#__LDBL_REDIR2_DECL
+(
+Çme
+) \
+
+621 
+	`__ty³of
+ (
+__
+##
+Çme
+è__##Çm�
+	`__asm
+ (
+	`__ASMNAME
+ ("__Ædbl___" #Çme));
+
+	)
+
+622 
+	#__LDBL_REDIR1_DECL
+(
+Çme
+, 
+®Ÿs
+) \
+
+623 
+	`__ty³of
+ (
+Çme
+èÇm�
+	`__asm
+ (
+	`__ASMNAME
+ (#®Ÿs));
+
+	)
+
+624 
+	#__LDBL_REDIR_DECL
+(
+Çme
+) \
+
+625 
+	`__ty³of
+ (
+Çme
+èÇm�
+	`__asm
+ (
+	`__ASMNAME
+ ("__Ædbl_" #Çme));
+
+	)
+
+626 
+	#__REDIRECT_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+627 
+	`__LDBL_REDIR1
+ (
+Çme
+, 
+´Ùo
+, 
+__Ædbl_
+##
+®Ÿs
+)
+
+	)
+
+628 
+	#__REDIRECT_NTH_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+629 
+	`__LDBL_REDIR1_NTH
+ (
+Çme
+, 
+´Ùo
+, 
+__Ædbl_
+##
+®Ÿs
+)
+
+	)
+
+632 #ià(!
+defšed
+ 
+__LDBL_COMPAT
+ && 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 0) \
+
+633 || !
+defšed
+ 
+__REDIRECT
+
+
+634 
+	#__LDBL_REDIR1
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+èÇm�
+	)
+proto
+
+635 
+	#__LDBL_REDIR
+(
+Çme
+, 
+´Ùo
+èÇm�
+	)
+proto
+
+636 
+	#__LDBL_REDIR1_NTH
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+èÇm�´ÙØ
+__THROW
+
+
+	)
+
+637 
+	#__LDBL_REDIR_NTH
+(
+Çme
+, 
+´Ùo
+èÇm�´ÙØ
+__THROW
+
+
+	)
+
+638 
+	#__LDBL_REDIR2_DECL
+(
+Çme
+)
+
+	)
+
+639 
+	#__LDBL_REDIR_DECL
+(
+Çme
+)
+
+	)
+
+640 #ifdeà
+__REDIRECT
+
+
+641 
+	#__REDIRECT_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+è
+	`__REDIRECT
+ (Çme,…rÙo,‡lŸs)
+
+	)
+
+642 
+	#__REDIRECT_NTH_LDBL
+(
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+) \
+
+643 
+	`__REDIRECT_NTH
+ (
+Çme
+, 
+´Ùo
+, 
+®Ÿs
+)
+
+	)
+
+652 #ià
+	`__GNUC_PREREQ
+ (4,8è|| 
+	`__glibc_þªg_´”eq
+ (3,5)
+
+653 
+	#__glibc_maüo_w¬nšg1
+(
+mes§ge
+è
+	`_P¿gma
+ (#mes§ge)
+
+	)
+
+654 
+	#__glibc_maüo_w¬nšg
+(
+mes§ge
+) \
+
+655 
+	`__glibc_maüo_w¬nšg1
+ (
+GCC
+ 
+w¬nšg
+ 
+mes§ge
+)
+
+	)
+
+657 
+	#__glibc_maüo_w¬nšg
+(
+msg
+)
+
+	)
+
+667 #ià!
+defšed
+ 
+__ýlu¥lus
+ \
+
+668 && (
+	`__GNUC_PREREQ
+ (4, 9) \
+
+669 || 
+	`__glibc_has_ex‹nsiÚ
+ (
+c_g’”ic_£ËùiÚs
+) \
+
+670 || (!
+defšed
+ 
+__GNUC__
+ && defšed 
+__STDC_VERSION__
+ \
+
+671 && 
+__STDC_VERSION__
+ >= 201112L))
+
+672 
+	#__HAVE_GENERIC_SELECTION
+ 1
+
+	)
+
+674 
+	#__HAVE_GENERIC_SELECTION
+ 0
+
+	)
+
+677 #ià
+	`__GNUC_PREREQ
+ (10, 0)
+
+683 
+	#__©Œ_acûss
+(
+x
+è
+	`__©Œibu‹__
+ ((
+__acûss__
+ x))
+
+	)
+
+688 #ià
+__USE_FORTIFY_LEVEL
+ == 3
+
+689 
+	#__fÜtif›d_©Œ_acûss
+(
+a
+, 
+o
+, 
+s
+è
+	`__©Œibu‹__
+ ((
+	`__acûss__
+ (a, o)))
+
+	)
+
+691 
+	#__fÜtif›d_©Œ_acûss
+(
+a
+, 
+o
+, 
+s
+è
+	`__©Œ_acûss
+ (×, o, s))
+
+	)
+
+693 #ià
+	`__GNUC_PREREQ
+ (11, 0)
+
+694 
+	#__©Œ_acûss_nÚe
+(
+¬gno
+è
+	`__©Œibu‹__
+ ((
+	`__acûss__
+ (
+__nÚe__
+,‡rgno)))
+
+	)
+
+696 
+	#__©Œ_acûss_nÚe
+(
+¬gno
+)
+
+	)
+
+699 
+	#__fÜtif›d_©Œ_acûss
+(
+a
+, 
+o
+, 
+s
+)
+
+	)
+
+700 
+	#__©Œ_acûss
+(
+x
+)
+
+	)
+
+701 
+	#__©Œ_acûss_nÚe
+(
+¬gno
+)
+
+	)
+
+704 #ià
+	`__GNUC_PREREQ
+ (11, 0)
+
+707 
+	#__©Œ_d—Îoc
+(
+d—Îoc
+, 
+¬gno
+) \
+
+708 
+	`__©Œibu‹__
+ ((
+	`__m®loc__
+ (
+d—Îoc
+, 
+¬gno
+)))
+
+	)
+
+709 
+	#__©Œ_d—Îoc_ä“
+ 
+	`__©Œ_d—Îoc
+ (
+__bužtš_ä“
+, 1)
+
+	)
+
+711 
+	#__©Œ_d—Îoc
+(
+d—Îoc
+, 
+¬gno
+)
+
+	)
+
+712 
+	#__©Œ_d—Îoc_ä“
+
+
+	)
+
+717 #ià
+	`__GNUC_PREREQ
+ (4, 1)
+
+718 
+	#__©Œibu‹_»tuºs_twiû__
+ 
+	`__©Œibu‹__
+ ((
+__»tuºs_twiû__
+))
+
+	)
+
+720 
+	#__©Œibu‹_»tuºs_twiû__
+
+
+	)
+
+	@/usr/include/sys/param.h
+
+19 #iâdeà
+_SYS_PARAM_H
+
+
+20 
+	#_SYS_PARAM_H
+ 1
+
+	)
+
+22 
+	#__Ãed_NULL
+
+
+	)
+
+23 
+	~<¡ddef.h
+>
+
+25 
+	~<sys/ty³s.h
+>
+
+26 
+	~<lim™s.h
+>
+
+27 
+	~<’dŸn.h
+>
+
+28 
+	~<sigÇl.h
+>
+
+31 
+	~<b™s/·¿m.h
+>
+
+36 
+	#NBBY
+ 
+CHAR_BIT
+
+
+	)
+
+38 #ià!
+defšed
+ 
+NGROUPS
+ && defšed 
+NGROUPS_MAX
+
+
+39 
+	#NGROUPS
+ 
+NGROUPS_MAX
+
+
+	)
+
+41 #ià!
+defšed
+ 
+MAXSYMLINKS
+ && defšed 
+SYMLOOP_MAX
+
+
+42 
+	#MAXSYMLINKS
+ 
+SYMLOOP_MAX
+
+
+	)
+
+44 #ià!
+defšed
+ 
+CANBSIZ
+ && defšed 
+MAX_CANON
+
+
+45 
+	#CANBSIZ
+ 
+MAX_CANON
+
+
+	)
+
+47 #ià!
+defšed
+ 
+MAXPATHLEN
+ && defšed 
+PATH_MAX
+
+
+48 
+	#MAXPATHLEN
+ 
+PATH_MAX
+
+
+	)
+
+50 #ià!
+defšed
+ 
+NOFILE
+ && defšed 
+OPEN_MAX
+
+
+51 
+	#NOFILE
+ 
+OPEN_MAX
+
+
+	)
+
+53 #ià!
+defšed
+ 
+MAXHOSTNAMELEN
+ && defšed 
+HOST_NAME_MAX
+
+
+54 
+	#MAXHOSTNAMELEN
+ 
+HOST_NAME_MAX
+
+
+	)
+
+56 #iâdeà
+NCARGS
+
+
+57 #ifdeà
+ARG_MAX
+
+
+58 
+	#NCARGS
+ 
+ARG_MAX
+
+
+	)
+
+62 
+	#NCARGS
+ 
+INT_MAX
+
+
+	)
+
+68 #iâdeà
+NOGROUP
+
+
+69 
+	#NOGROUP
+ 65535
+
+	)
+
+71 #iâdeà
+NODEV
+
+
+72 
+	#NODEV
+ ((
+dev_t
+è-1è
+
+	)
+
+77 #iâdeà
+DEV_BSIZE
+
+
+78 
+	#DEV_BSIZE
+ 512
+
+	)
+
+83 
+	#£tb™
+(
+a
+,
+i
+è(×)[(i)/
+NBBY
+] |ð1<<((i)%NBBY))
+
+	)
+
+84 
+	#þrb™
+(
+a
+,
+i
+è(×)[(i)/
+NBBY
+] &ð~(1<<((i)%NBBY)))
+
+	)
+
+85 
+	#is£t
+(
+a
+,
+i
+è(×)[(i)/
+NBBY
+] & (1<<((i)%NBBY)))
+
+	)
+
+86 
+	#isþr
+(
+a
+,
+i
+è((×)[(i)/
+NBBY
+] & (1<<((i)%NBBY))è=ð0)
+
+	)
+
+89 #iâdeà
+howmªy
+
+
+90 
+	#howmªy
+(
+x
+, 
+y
+è(((xè+ ((yè- 1)è/ (y))
+
+	)
+
+92 #ifdeà
+__GNUC__
+
+
+93 
+	#roundup
+(
+x
+, 
+y
+è(
+	`__bužtš_cÚ¡ªt_p
+ (yè&& 
+	`pow”of2
+ (y) \
+
+94 ? (((
+x
+è+ (
+y
+) - 1) & ~((y) - 1)) \
+
+95 : ((((
+x
+è+ ((
+y
+è- 1)è/ (y)è* (y)))
+
+	)
+
+97 
+	#roundup
+(
+x
+, 
+y
+è((((xè+ ((yè- 1)è/ (y)è* (y))
+
+	)
+
+99 
+	#pow”of2
+(
+x
+è((((xè- 1è& (x)è=ð0)
+
+	)
+
+102 
+	#MIN
+(
+a
+,
+b
+è((×)<(b))?×):(b))
+
+	)
+
+103 
+	#MAX
+(
+a
+,
+b
+è((×)>(b))?×):(b))
+
+	)
+
+	@/usr/include/sys/select.h
+
+21 #iâdeà
+_SYS_SELECT_H
+
+
+22 
+	#_SYS_SELECT_H
+ 1
+
+	)
+
+24 
+	~<ã©u»s.h
+>
+
+27 
+	~<b™s/ty³s.h
+>
+
+30 
+	~<b™s/£Ëù.h
+>
+
+33 
+	~<b™s/ty³s/sig£t_t.h
+>
+
+36 
+	~<b™s/ty³s/time_t.h
+>
+
+37 
+	~<b™s/ty³s/¡ruù_timev®.h
+>
+
+38 #ifdeà
+__USE_XOPEN2K
+
+
+39 
+	~<b™s/ty³s/¡ruù_time¥ec.h
+>
+
+42 #iâdeà
+__su£cÚds_t_defšed
+
+
+43 
+__su£cÚds_t
+ 
+	tsu£cÚds_t
+;
+
+44 
+	#__su£cÚds_t_defšed
+
+
+	)
+
+49 
+	t__fd_mask
+;
+
+52 #undeà
+__NFDBITS
+
+
+54 
+	#__NFDBITS
+ (8 * (è (
+__fd_mask
+))
+
+	)
+
+55 
+	#__FD_ELT
+(
+d
+è((dè/ 
+__NFDBITS
+)
+
+	)
+
+56 
+	#__FD_MASK
+(
+d
+è((
+__fd_mask
+è(1UL << ((dè% 
+__NFDBITS
+)))
+
+	)
+
+63 #ifdeà
+__USE_XOPEN
+
+
+64 
+__fd_mask
+ 
+	mfds_b™s
+[
+__FD_SETSIZE
+ / 
+__NFDBITS
+];
+
+65 
+	#__FDS_BITS
+(
+£t
+è((£t)->
+fds_b™s
+)
+
+	)
+
+67 
+__fd_mask
+ 
+	m__fds_b™s
+[
+__FD_SETSIZE
+ / 
+__NFDBITS
+];
+
+68 
+	#__FDS_BITS
+(
+£t
+è((£t)->
+__fds_b™s
+)
+
+	)
+
+70 } 
+	tfd_£t
+;
+
+73 
+	#FD_SETSIZE
+ 
+__FD_SETSIZE
+
+
+	)
+
+75 #ifdeà
+__USE_MISC
+
+
+77 
+__fd_mask
+ 
+	tfd_mask
+;
+
+80 
+	#NFDBITS
+ 
+__NFDBITS
+
+
+	)
+
+85 
+	#FD_SET
+(
+fd
+, 
+fd£�
+è
+	`__FD_SET
+ (fd, fd£�)
+
+	)
+
+86 
+	#FD_CLR
+(
+fd
+, 
+fd£�
+è
+	`__FD_CLR
+ (fd, fd£�)
+
+	)
+
+87 
+	#FD_ISSET
+(
+fd
+, 
+fd£�
+è
+	`__FD_ISSET
+ (fd, fd£�)
+
+	)
+
+88 
+	#FD_ZERO
+(
+fd£�
+è
+	`__FD_ZERO
+ (fd£�)
+
+	)
+
+91 
+	g__BEGIN_DECLS
+
+
+101 #iâdeà
+__USE_TIME_BITS64
+
+
+102 

+£Ëù
+ (
+__nfds
+, 
+fd_£t
+ *
+__»¡riù
+ 
+__»adfds
+,
+
+103 
+fd_£t
+ *
+__»¡riù
+ 
+__wr™efds
+,
+
+104 
+fd_£t
+ *
+__»¡riù
+ 
+__exû±fds
+,
+
+105 
+timev®
+ *
+__»¡riù
+ 
+__timeout
+);
+
+107 #ifdeà
+__REDIRECT
+
+
+108 

+__REDIRECT
+ (
+£Ëù
+,
+
+109 (
+__nfds
+, 
+fd_£t
+ *
+__»¡riù
+ 
+__»adfds
+,
+
+110 
+fd_£t
+ *
+__»¡riù
+ 
+__wr™efds
+,
+
+111 
+fd_£t
+ *
+__»¡riù
+ 
+__exû±fds
+,
+
+112 
+timev®
+ *
+__»¡riù
+ 
+__timeout
+),
+
+113 
+__£Ëù64
+);
+
+115 
+	#£Ëù
+ 
+__£Ëù64
+
+
+	)
+
+119 #ifdeà
+__USE_XOPEN2K
+
+
+126 #iâdeà
+__USE_TIME_BITS64
+
+
+127 

+p£Ëù
+ (
+__nfds
+, 
+fd_£t
+ *
+__»¡riù
+ 
+__»adfds
+,
+
+128 
+fd_£t
+ *
+__»¡riù
+ 
+__wr™efds
+,
+
+129 
+fd_£t
+ *
+__»¡riù
+ 
+__exû±fds
+,
+
+130 cÚ¡ 
+time¥ec
+ *
+__»¡riù
+ 
+__timeout
+,
+
+131 cÚ¡ 
+__sig£t_t
+ *
+__»¡riù
+ 
+__sigmask
+);
+
+133 #ifdeà
+__REDIRECT
+
+
+134 

+__REDIRECT
+ (
+p£Ëù
+,
+
+135 (
+__nfds
+, 
+fd_£t
+ *
+__»¡riù
+ 
+__»adfds
+,
+
+136 
+fd_£t
+ *
+__»¡riù
+ 
+__wr™efds
+,
+
+137 
+fd_£t
+ *
+__»¡riù
+ 
+__exû±fds
+,
+
+138 cÚ¡ 
+time¥ec
+ *
+__»¡riù
+ 
+__timeout
+,
+
+139 cÚ¡ 
+__sig£t_t
+ *
+__»¡riù
+ 
+__sigmask
+),
+
+140 
+__p£Ëù64
+);
+
+142 
+	#p£Ëù
+ 
+__p£Ëù64
+
+
+	)
+
+149 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__GNUC__
+
+
+150 
+	~<b™s/£Ëù2.h
+>
+
+153 
+	g__END_DECLS
+
+
+	@/usr/include/sys/syslog.h
+
+32 #iâdeà
+_SYS_SYSLOG_H
+
+
+33 
+	#_SYS_SYSLOG_H
+ 1
+
+	)
+
+35 
+	~<ã©u»s.h
+>
+
+36 
+	#__Ãed___va_li¡
+
+
+	)
+
+37 
+	~<¡d¬g.h
+>
+
+40 
+	~<b™s/sy¦og-·th.h
+>
+
+51 
+	#LOG_EMERG
+ 0
+
+	)
+
+52 
+	#LOG_ALERT
+ 1
+
+	)
+
+53 
+	#LOG_CRIT
+ 2
+
+	)
+
+54 
+	#LOG_ERR
+ 3
+
+	)
+
+55 
+	#LOG_WARNING
+ 4
+
+	)
+
+56 
+	#LOG_NOTICE
+ 5
+
+	)
+
+57 
+	#LOG_INFO
+ 6
+
+	)
+
+58 
+	#LOG_DEBUG
+ 7
+
+	)
+
+60 
+	#LOG_PRIMASK
+ 0x07
+
+	)
+
+62 
+	#LOG_PRI
+(
+p
+è(Õè& 
+LOG_PRIMASK
+)
+
+	)
+
+63 
+	#LOG_MAKEPRI
+(
+çc
+, 
+´i
+è((çcè| (´i))
+
+	)
+
+65 #ià
+defšed
+ 
+SYSLOG_NAMES
+ && defšed 
+__USE_MISC
+
+
+66 
+	#INTERNAL_NOPRI
+ 0x10
+
+	)
+
+68 
+	#INTERNAL_MARK
+ 
+	`LOG_MAKEPRI
+(
+LOG_NFACILITIES
+ << 3, 0)
+
+	)
+
+69 
+	s_code
+ {
+
+70 *
+	mc_Çme
+;
+
+71 
+	mc_v®
+;
+
+72 } 
+	tCODE
+;
+
+74 
+CODE
+ 
+	g´iÜ™yÇmes
+[] =
+
+76 { "®”t", 
+LOG_ALERT
+ },
+
+77 { "ü™", 
+LOG_CRIT
+ },
+
+78 { "debug", 
+LOG_DEBUG
+ },
+
+79 { "em”g", 
+LOG_EMERG
+ },
+
+80 { "”r", 
+LOG_ERR
+ },
+
+81 { "”rÜ", 
+LOG_ERR
+ },
+
+82 { "šfo", 
+LOG_INFO
+ },
+
+83 { "nÚe", 
+INTERNAL_NOPRI
+ },
+
+84 { "nÙiû", 
+LOG_NOTICE
+ },
+
+85 { "·nic", 
+LOG_EMERG
+ },
+
+86 { "w¬n", 
+LOG_WARNING
+ },
+
+87 { "w¬nšg", 
+LOG_WARNING
+ },
+
+88 { 
+NULL
+, -1 }
+
+93 
+	#LOG_KERN
+ (0<<3è
+
+	)
+
+94 
+	#LOG_USER
+ (1<<3è
+
+	)
+
+95 
+	#LOG_MAIL
+ (2<<3è
+
+	)
+
+96 
+	#LOG_DAEMON
+ (3<<3è
+
+	)
+
+97 
+	#LOG_AUTH
+ (4<<3è
+
+	)
+
+98 
+	#LOG_SYSLOG
+ (5<<3è
+
+	)
+
+99 
+	#LOG_LPR
+ (6<<3è
+
+	)
+
+100 
+	#LOG_NEWS
+ (7<<3è
+
+	)
+
+101 
+	#LOG_UUCP
+ (8<<3è
+
+	)
+
+102 
+	#LOG_CRON
+ (9<<3è
+
+	)
+
+103 
+	#LOG_AUTHPRIV
+ (10<<3è
+
+	)
+
+104 
+	#LOG_FTP
+ (11<<3è
+
+	)
+
+107 
+	#LOG_LOCAL0
+ (16<<3è
+
+	)
+
+108 
+	#LOG_LOCAL1
+ (17<<3è
+
+	)
+
+109 
+	#LOG_LOCAL2
+ (18<<3è
+
+	)
+
+110 
+	#LOG_LOCAL3
+ (19<<3è
+
+	)
+
+111 
+	#LOG_LOCAL4
+ (20<<3è
+
+	)
+
+112 
+	#LOG_LOCAL5
+ (21<<3è
+
+	)
+
+113 
+	#LOG_LOCAL6
+ (22<<3è
+
+	)
+
+114 
+	#LOG_LOCAL7
+ (23<<3è
+
+	)
+
+116 
+	#LOG_NFACILITIES
+ 24
+
+	)
+
+117 
+	#LOG_FACMASK
+ 0x03f8
+
+	)
+
+119 
+	#LOG_FAC
+(
+p
+è((Õè& 
+LOG_FACMASK
+è>> 3)
+
+	)
+
+121 #ià
+defšed
+ 
+SYSLOG_NAMES
+ && defšed 
+__USE_MISC
+
+
+122 
+CODE
+ 
+	gçcž™yÇmes
+[] =
+
+124 { "auth", 
+LOG_AUTH
+ },
+
+125 { "auth´iv", 
+LOG_AUTHPRIV
+ },
+
+126 { "üÚ", 
+LOG_CRON
+ },
+
+127 { "d«mÚ", 
+LOG_DAEMON
+ },
+
+128 { "áp", 
+LOG_FTP
+ },
+
+129 { "k”n", 
+LOG_KERN
+ },
+
+130 { "Ír", 
+LOG_LPR
+ },
+
+131 { "maž", 
+LOG_MAIL
+ },
+
+132 { "m¬k", 
+INTERNAL_MARK
+ },
+
+133 { "Ãws", 
+LOG_NEWS
+ },
+
+134 { "£cur™y", 
+LOG_AUTH
+ },
+
+135 { "sy¦og", 
+LOG_SYSLOG
+ },
+
+136 { "u£r", 
+LOG_USER
+ },
+
+137 { "uuý", 
+LOG_UUCP
+ },
+
+138 { "loÿl0", 
+LOG_LOCAL0
+ },
+
+139 { "loÿl1", 
+LOG_LOCAL1
+ },
+
+140 { "loÿl2", 
+LOG_LOCAL2
+ },
+
+141 { "loÿl3", 
+LOG_LOCAL3
+ },
+
+142 { "loÿl4", 
+LOG_LOCAL4
+ },
+
+143 { "loÿl5", 
+LOG_LOCAL5
+ },
+
+144 { "loÿl6", 
+LOG_LOCAL6
+ },
+
+145 { "loÿl7", 
+LOG_LOCAL7
+ },
+
+146 { 
+NULL
+, -1 }
+
+153 
+	#LOG_MASK
+(
+´i
+è(1 << (´i)è
+
+	)
+
+154 
+	#LOG_UPTO
+(
+´i
+è((1 << (Õri)+1)è- 1è
+
+	)
+
+162 
+	#LOG_PID
+ 0x01
+
+	)
+
+163 
+	#LOG_CONS
+ 0x02
+
+	)
+
+164 
+	#LOG_ODELAY
+ 0x04
+
+	)
+
+165 
+	#LOG_NDELAY
+ 0x08
+
+	)
+
+166 
+	#LOG_NOWAIT
+ 0x10
+
+	)
+
+167 
+	#LOG_PERROR
+ 0x20
+
+	)
+
+169 
+__BEGIN_DECLS
+
+
+175 

+þo£log
+ ();
+
+181 

+Ý’log
+ (cÚ¡ *
+__id’t
+, 
+__ÝtiÚ
+, 
+__çcž™y
+);
+
+184 

+	$£Žogmask
+ (
+__mask
+è
+__THROW
+;
+
+190 

+	$sy¦og
+ (
+__´i
+, cÚ¡ *
+__fmt
+, ...)
+
+191 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 3)));
+
+193 #ifdeà
+__USE_MISC
+
+
+200 

+	$vsy¦og
+ (
+__´i
+, cÚ¡ *
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+)
+
+201 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 2, 0)));
+
+206 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+207 
+	~<b™s/sy¦og.h
+>
+
+209 
+	~<b™s/æßŠ.h
+>
+
+210 #ià
+defšed
+ 
+__LDBL_COMPAT
+ || 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+211 
+	~<b™s/sy¦og-ldbl.h
+>
+
+215 
+__END_DECLS
+
+
+	@/usr/include/sys/ttydefaults.h
+
+40 #iâdeà
+_SYS_TTYDEFAULTS_H_
+
+
+41 
+	#_SYS_TTYDEFAULTS_H_
+
+
+	)
+
+46 
+	#TTYDEF_IFLAG
+ (
+BRKINT
+ | 
+ISTRIP
+ | 
+ICRNL
+ | 
+IMAXBEL
+ | 
+IXON
+ | 
+IXANY
+)
+
+	)
+
+47 
+	#TTYDEF_OFLAG
+ (
+OPOST
+ | 
+ONLCR
+ | 
+XTABS
+)
+
+	)
+
+48 
+	#TTYDEF_LFLAG
+ (
+ECHO
+ | 
+ICANON
+ | 
+ISIG
+ | 
+IEXTEN
+ | 
+ECHOE
+|
+ECHOKE
+|
+ECHOCTL
+)
+
+	)
+
+49 
+	#TTYDEF_CFLAG
+ (
+CREAD
+ | 
+CS7
+ | 
+PARENB
+ | 
+HUPCL
+)
+
+	)
+
+50 
+	#TTYDEF_SPEED
+ (
+B9600
+)
+
+	)
+
+55 
+	#CTRL
+(
+x
+è(x&037)
+
+	)
+
+56 
+	#CEOF
+ 
+	`CTRL
+('d')
+
+	)
+
+57 #ifdeà
+_POSIX_VDISABLE
+
+
+58 
+	#CEOL
+ 
+_POSIX_VDISABLE
+
+
+	)
+
+60 
+	#CEOL
+ '\0'
+
+	)
+
+62 
+	#CERASE
+ 0177
+
+	)
+
+63 
+	#CINTR
+ 
+	`CTRL
+('c')
+
+	)
+
+64 #ifdeà
+_POSIX_VDISABLE
+
+
+65 
+	#CSTATUS
+ 
+_POSIX_VDISABLE
+
+
+	)
+
+67 
+	#CSTATUS
+ '\0'
+
+	)
+
+69 
+	#CKILL
+ 
+	`CTRL
+('u')
+
+	)
+
+70 
+	#CMIN
+ 1
+
+	)
+
+71 
+	#CQUIT
+ 034
+
+	)
+
+72 
+	#CSUSP
+ 
+	`CTRL
+('z')
+
+	)
+
+73 
+	#CTIME
+ 0
+
+	)
+
+74 
+	#CDSUSP
+ 
+	`CTRL
+('y')
+
+	)
+
+75 
+	#CSTART
+ 
+	`CTRL
+('q')
+
+	)
+
+76 
+	#CSTOP
+ 
+	`CTRL
+('s')
+
+	)
+
+77 
+	#CLNEXT
+ 
+	`CTRL
+('v')
+
+	)
+
+78 
+	#CDISCARD
+ 
+	`CTRL
+('o')
+
+	)
+
+79 
+	#CWERASE
+ 
+	`CTRL
+('w')
+
+	)
+
+80 
+	#CREPRINT
+ 
+	`CTRL
+('r')
+
+	)
+
+81 
+	#CEOT
+ 
+CEOF
+
+
+	)
+
+83 
+	#CBRK
+ 
+CEOL
+
+
+	)
+
+84 
+	#CRPRNT
+ 
+CREPRINT
+
+
+	)
+
+85 
+	#CFLUSH
+ 
+CDISCARD
+
+
+	)
+
+93 #ifdeà
+TTYDEFCHARS
+
+
+94 
+cc_t
+ 
+	g‰ydefch¬s
+[
+NCCS
+] = {
+
+95 
+CEOF
+, 
+CEOL
+, CEOL, 
+CERASE
+, 
+CWERASE
+, 
+CKILL
+, 
+CREPRINT
+,
+
+96 
+_POSIX_VDISABLE
+, 
+CINTR
+, 
+CQUIT
+, 
+CSUSP
+, 
+CDSUSP
+, 
+CSTART
+, 
+CSTOP
+, 
+CLNEXT
+,
+
+97 
+CDISCARD
+, 
+CMIN
+, 
+CTIME
+, 
+CSTATUS
+, 
+_POSIX_VDISABLE
+
+
+99 #undeà
+TTYDEFCHARS
+
+
+	@/usr/include/sys/ucontext.h
+
+18 #iâdeà
+_SYS_UCONTEXT_H
+
+
+19 
+	#_SYS_UCONTEXT_H
+ 1
+
+	)
+
+21 
+	~<ã©u»s.h
+>
+
+23 
+	~<b™s/ty³s.h
+>
+
+24 
+	~<b™s/ty³s/sig£t_t.h
+>
+
+25 
+	~<b™s/ty³s/¡ack_t.h
+>
+
+28 #ifdeà
+__USE_MISC
+
+
+29 
+	#__ùx
+(
+æd
+è
+	)
+fld
+
+31 
+	#__ùx
+(
+æd
+è
+__
+ ## 
+	)
+fld
+
+34 #ifdeà
+__x86_64__
+
+
+37 
+__ex‹nsiÚ__
+ 
+	tg»g_t
+;
+
+40 
+	#__NGREG
+ 23
+
+	)
+
+41 #ifdeà
+__USE_MISC
+
+
+42 
+	#NGREG
+ 
+__NGREG
+
+
+	)
+
+46 
+g»g_t
+ 
+	tg»g£t_t
+[
+__NGREG
+];
+
+48 #ifdeà
+__USE_GNU
+
+
+52 
+	mREG_R8
+ = 0,
+
+53 
+	#REG_R8
+ 
+REG_R8
+
+
+	)
+
+54 
+	mREG_R9
+,
+
+55 
+	#REG_R9
+ 
+REG_R9
+
+
+	)
+
+56 
+	mREG_R10
+,
+
+57 
+	#REG_R10
+ 
+REG_R10
+
+
+	)
+
+58 
+	mREG_R11
+,
+
+59 
+	#REG_R11
+ 
+REG_R11
+
+
+	)
+
+60 
+	mREG_R12
+,
+
+61 
+	#REG_R12
+ 
+REG_R12
+
+
+	)
+
+62 
+	mREG_R13
+,
+
+63 
+	#REG_R13
+ 
+REG_R13
+
+
+	)
+
+64 
+	mREG_R14
+,
+
+65 
+	#REG_R14
+ 
+REG_R14
+
+
+	)
+
+66 
+	mREG_R15
+,
+
+67 
+	#REG_R15
+ 
+REG_R15
+
+
+	)
+
+68 
+	mREG_RDI
+,
+
+69 
+	#REG_RDI
+ 
+REG_RDI
+
+
+	)
+
+70 
+	mREG_RSI
+,
+
+71 
+	#REG_RSI
+ 
+REG_RSI
+
+
+	)
+
+72 
+	mREG_RBP
+,
+
+73 
+	#REG_RBP
+ 
+REG_RBP
+
+
+	)
+
+74 
+	mREG_RBX
+,
+
+75 
+	#REG_RBX
+ 
+REG_RBX
+
+
+	)
+
+76 
+	mREG_RDX
+,
+
+77 
+	#REG_RDX
+ 
+REG_RDX
+
+
+	)
+
+78 
+	mREG_RAX
+,
+
+79 
+	#REG_RAX
+ 
+REG_RAX
+
+
+	)
+
+80 
+	mREG_RCX
+,
+
+81 
+	#REG_RCX
+ 
+REG_RCX
+
+
+	)
+
+82 
+	mREG_RSP
+,
+
+83 
+	#REG_RSP
+ 
+REG_RSP
+
+
+	)
+
+84 
+	mREG_RIP
+,
+
+85 
+	#REG_RIP
+ 
+REG_RIP
+
+
+	)
+
+86 
+	mREG_EFL
+,
+
+87 
+	#REG_EFL
+ 
+REG_EFL
+
+
+	)
+
+88 
+	mREG_CSGSFS
+,
+
+89 
+	#REG_CSGSFS
+ 
+REG_CSGSFS
+
+
+	)
+
+90 
+	mREG_ERR
+,
+
+91 
+	#REG_ERR
+ 
+REG_ERR
+
+
+	)
+
+92 
+	mREG_TRAPNO
+,
+
+93 
+	#REG_TRAPNO
+ 
+REG_TRAPNO
+
+
+	)
+
+94 
+	mREG_OLDMASK
+,
+
+95 
+	#REG_OLDMASK
+ 
+REG_OLDMASK
+
+
+	)
+
+96 
+	mREG_CR2
+
+
+97 
+	#REG_CR2
+ 
+REG_CR2
+
+
+	)
+
+101 
+	s_libc_åx»g
+
+
+103 
+__ùx
+(
+signifiÿnd
+)[4];
+
+104 
+__ùx
+(
+expÚ’t
+);
+
+105 
+	m__glibc_»£rved1
+[3];
+
+108 
+	s_libc_xmm»g
+
+
+110 
+__ušt32_t
+ 
+__ùx
+(
+–em’t
+)[4];
+
+113 
+	s_libc_å¡©e
+
+
+116 
+__ušt16_t
+ 
+__ùx
+(
+cwd
+);
+
+117 
+__ušt16_t
+ 
+__ùx
+(
+swd
+);
+
+118 
+__ušt16_t
+ 
+__ùx
+(
+áw
+);
+
+119 
+__ušt16_t
+ 
+__ùx
+(
+fÝ
+);
+
+120 
+__ušt64_t
+ 
+__ùx
+(
+r�
+);
+
+121 
+__ušt64_t
+ 
+__ùx
+(
+rdp
+);
+
+122 
+__ušt32_t
+ 
+__ùx
+(
+mxc¤
+);
+
+123 
+__ušt32_t
+ 
+__ùx
+(
+mxü_mask
+);
+
+124 
+_libc_åx»g
+ 
+	m_¡
+[8];
+
+125 
+_libc_xmm»g
+ 
+	m_xmm
+[16];
+
+126 
+__ušt32_t
+ 
+	m__glibc_»£rved1
+[24];
+
+130 
+_libc_å¡©e
+ *
+	tå»g£t_t
+;
+
+135 
+g»g£t_t
+ 
+__ùx
+(
+g»gs
+);
+
+137 
+å»g£t_t
+ 
+__ùx
+(
+å»gs
+);
+
+138 
+__ex‹nsiÚ__
+ 
+	m__»£rved1
+ [8];
+
+139 } 
+	tmcÚ‹xt_t
+;
+
+142 
+	sucÚ‹xt_t
+
+
+144 
+__ùx
+(
+uc_æags
+);
+
+145 
+ucÚ‹xt_t
+ *
+	muc_lšk
+;
+
+146 
+¡ack_t
+ 
+	muc_¡ack
+;
+
+147 
+mcÚ‹xt_t
+ 
+	muc_mcÚ‹xt
+;
+
+148 
+sig£t_t
+ 
+	muc_sigmask
+;
+
+149 
+_libc_å¡©e
+ 
+	m__å»gs_mem
+;
+
+150 
+__ex‹nsiÚ__
+ 
+	m__s¥
+[4];
+
+151 } 
+	tucÚ‹xt_t
+;
+
+156 
+	tg»g_t
+;
+
+159 
+	#__NGREG
+ 19
+
+	)
+
+160 #ifdeà
+__USE_MISC
+
+
+161 
+	#NGREG
+ 
+__NGREG
+
+
+	)
+
+165 
+g»g_t
+ 
+	tg»g£t_t
+[
+__NGREG
+];
+
+167 #ifdeà
+__USE_GNU
+
+
+171 
+	mREG_GS
+ = 0,
+
+172 
+	#REG_GS
+ 
+REG_GS
+
+
+	)
+
+173 
+	mREG_FS
+,
+
+174 
+	#REG_FS
+ 
+REG_FS
+
+
+	)
+
+175 
+	mREG_ES
+,
+
+176 
+	#REG_ES
+ 
+REG_ES
+
+
+	)
+
+177 
+	mREG_DS
+,
+
+178 
+	#REG_DS
+ 
+REG_DS
+
+
+	)
+
+179 
+	mREG_EDI
+,
+
+180 
+	#REG_EDI
+ 
+REG_EDI
+
+
+	)
+
+181 
+	mREG_ESI
+,
+
+182 
+	#REG_ESI
+ 
+REG_ESI
+
+
+	)
+
+183 
+	mREG_EBP
+,
+
+184 
+	#REG_EBP
+ 
+REG_EBP
+
+
+	)
+
+185 
+	mREG_ESP
+,
+
+186 
+	#REG_ESP
+ 
+REG_ESP
+
+
+	)
+
+187 
+	mREG_EBX
+,
+
+188 
+	#REG_EBX
+ 
+REG_EBX
+
+
+	)
+
+189 
+	mREG_EDX
+,
+
+190 
+	#REG_EDX
+ 
+REG_EDX
+
+
+	)
+
+191 
+	mREG_ECX
+,
+
+192 
+	#REG_ECX
+ 
+REG_ECX
+
+
+	)
+
+193 
+	mREG_EAX
+,
+
+194 
+	#REG_EAX
+ 
+REG_EAX
+
+
+	)
+
+195 
+	mREG_TRAPNO
+,
+
+196 
+	#REG_TRAPNO
+ 
+REG_TRAPNO
+
+
+	)
+
+197 
+	mREG_ERR
+,
+
+198 
+	#REG_ERR
+ 
+REG_ERR
+
+
+	)
+
+199 
+	mREG_EIP
+,
+
+200 
+	#REG_EIP
+ 
+REG_EIP
+
+
+	)
+
+201 
+	mREG_CS
+,
+
+202 
+	#REG_CS
+ 
+REG_CS
+
+
+	)
+
+203 
+	mREG_EFL
+,
+
+204 
+	#REG_EFL
+ 
+REG_EFL
+
+
+	)
+
+205 
+	mREG_UESP
+,
+
+206 
+	#REG_UESP
+ 
+REG_UESP
+
+
+	)
+
+207 
+	mREG_SS
+
+
+208 
+	#REG_SS
+ 
+REG_SS
+
+
+	)
+
+213 
+	s_libc_å»g
+
+
+215 
+__ùx
+(
+signifiÿnd
+)[4];
+
+216 
+__ùx
+(
+expÚ’t
+);
+
+219 
+	s_libc_å¡©e
+
+
+221 
+__ùx
+(
+cw
+);
+
+222 
+__ùx
+(
+sw
+);
+
+223 
+__ùx
+(
+�g
+);
+
+224 
+__ùx
+(
+�off
+);
+
+225 
+__ùx
+(
+cs£l
+);
+
+226 
+__ùx
+(
+d©aoff
+);
+
+227 
+__ùx
+(
+d©a£l
+);
+
+228 
+_libc_å»g
+ 
+	m_¡
+[8];
+
+229 
+__ùx
+(
+¡©us
+);
+
+233 
+_libc_å¡©e
+ *
+	tå»g£t_t
+;
+
+238 
+g»g£t_t
+ 
+__ùx
+(
+g»gs
+);
+
+241 
+å»g£t_t
+ 
+__ùx
+(
+å»gs
+);
+
+242 
+__ùx
+(
+Þdmask
+);
+
+243 
+__ùx
+(
+ü2
+);
+
+244 } 
+	tmcÚ‹xt_t
+;
+
+247 
+	sucÚ‹xt_t
+
+
+249 
+__ùx
+(
+uc_æags
+);
+
+250 
+ucÚ‹xt_t
+ *
+	muc_lšk
+;
+
+251 
+¡ack_t
+ 
+	muc_¡ack
+;
+
+252 
+mcÚ‹xt_t
+ 
+	muc_mcÚ‹xt
+;
+
+253 
+sig£t_t
+ 
+	muc_sigmask
+;
+
+254 
+_libc_å¡©e
+ 
+	m__å»gs_mem
+;
+
+255 
+	m__s¥
+[4];
+
+256 } 
+	tucÚ‹xt_t
+;
+
+260 #undeà
+__ùx
+
+
+	@/usr/include/arpa/nameser_compat.h
+
+29 #iâdeà
+_ARPA_NAMESER_COMPAT_
+
+
+30 
+	#_ARPA_NAMESER_COMPAT_
+
+
+	)
+
+32 
+	~<’dŸn.h
+>
+
+42 
+	mid
+ :16;
+
+43 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+45 
+	mqr
+: 1;
+
+46 
+	mÝcode
+: 4;
+
+47 
+	m¯
+: 1;
+
+48 
+	mtc
+: 1;
+
+49 
+	mrd
+: 1;
+
+51 
+	m¿
+: 1;
+
+52 
+	munu£d
+ :1;
+
+53 
+	mad
+: 1;
+
+54 
+	mcd
+: 1;
+
+55 
+	mrcode
+ :4;
+
+57 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+ || __BYTE_ORDER =ð
+__PDP_ENDIAN
+
+
+59 
+	mrd
+ :1;
+
+60 
+	mtc
+ :1;
+
+61 
+	m¯
+ :1;
+
+62 
+	mÝcode
+ :4;
+
+63 
+	mqr
+ :1;
+
+65 
+	mrcode
+ :4;
+
+66 
+	mcd
+: 1;
+
+67 
+	mad
+: 1;
+
+68 
+	munu£d
+ :1;
+
+69 
+	m¿
+ :1;
+
+72 
+	mqdcouÁ
+ :16;
+
+73 
+	mªcouÁ
+ :16;
+
+74 
+	mnscouÁ
+ :16;
+
+75 
+	m¬couÁ
+ :16;
+
+76 } 
+	tHEADER
+;
+
+78 
+	#PACKETSZ
+ 
+NS_PACKETSZ
+
+
+	)
+
+79 
+	#MAXDNAME
+ 
+NS_MAXDNAME
+
+
+	)
+
+80 
+	#MAXCDNAME
+ 
+NS_MAXCDNAME
+
+
+	)
+
+81 
+	#MAXLABEL
+ 
+NS_MAXLABEL
+
+
+	)
+
+82 
+	#HFIXEDSZ
+ 
+NS_HFIXEDSZ
+
+
+	)
+
+83 
+	#QFIXEDSZ
+ 
+NS_QFIXEDSZ
+
+
+	)
+
+84 
+	#RRFIXEDSZ
+ 
+NS_RRFIXEDSZ
+
+
+	)
+
+85 
+	#INT32SZ
+ 
+NS_INT32SZ
+
+
+	)
+
+86 
+	#INT16SZ
+ 
+NS_INT16SZ
+
+
+	)
+
+87 
+	#INT8SZ
+ 
+NS_INT8SZ
+
+
+	)
+
+88 
+	#INADDRSZ
+ 
+NS_INADDRSZ
+
+
+	)
+
+89 
+	#IN6ADDRSZ
+ 
+NS_IN6ADDRSZ
+
+
+	)
+
+90 
+	#INDIR_MASK
+ 
+NS_CMPRSFLGS
+
+
+	)
+
+91 
+	#NAMESERVER_PORT
+ 
+NS_DEFAULTPORT
+
+
+	)
+
+93 
+	#S_ZONE
+ 
+ns_s_zn
+
+
+	)
+
+94 
+	#S_PREREQ
+ 
+ns_s_´
+
+
+	)
+
+95 
+	#S_UPDATE
+ 
+ns_s_ud
+
+
+	)
+
+96 
+	#S_ADDT
+ 
+ns_s_¬
+
+
+	)
+
+98 
+	#QUERY
+ 
+ns_o_qu”y
+
+
+	)
+
+99 
+	#IQUERY
+ 
+ns_o_iqu”y
+
+
+	)
+
+100 
+	#STATUS
+ 
+ns_o_¡©us
+
+
+	)
+
+101 
+	#NS_NOTIFY_OP
+ 
+ns_o_nÙify
+
+
+	)
+
+102 
+	#NS_UPDATE_OP
+ 
+ns_o_upd©e
+
+
+	)
+
+104 
+	#NOERROR
+ 
+ns_r_nÛ¼Ü
+
+
+	)
+
+105 
+	#FORMERR
+ 
+ns_r_fÜm”r
+
+
+	)
+
+106 
+	#SERVFAIL
+ 
+ns_r_£rvçž
+
+
+	)
+
+107 
+	#NXDOMAIN
+ 
+ns_r_nxdomaš
+
+
+	)
+
+108 
+	#NOTIMP
+ 
+ns_r_nÙim¶
+
+
+	)
+
+109 
+	#REFUSED
+ 
+ns_r_»fu£d
+
+
+	)
+
+110 
+	#YXDOMAIN
+ 
+ns_r_yxdomaš
+
+
+	)
+
+111 
+	#YXRRSET
+ 
+ns_r_yx¼£t
+
+
+	)
+
+112 
+	#NXRRSET
+ 
+ns_r_nx¼£t
+
+
+	)
+
+113 
+	#NOTAUTH
+ 
+ns_r_nÙauth
+
+
+	)
+
+114 
+	#NOTZONE
+ 
+ns_r_nÙzÚe
+
+
+	)
+
+120 
+	#DELETE
+ 
+ns_uÝ_d–‘e
+
+
+	)
+
+121 
+	#ADD
+ 
+ns_uÝ_add
+
+
+	)
+
+123 
+	#T_A
+ 
+ns_t_a
+
+
+	)
+
+124 
+	#T_NS
+ 
+ns_t_ns
+
+
+	)
+
+125 
+	#T_MD
+ 
+ns_t_md
+
+
+	)
+
+126 
+	#T_MF
+ 
+ns_t_mf
+
+
+	)
+
+127 
+	#T_CNAME
+ 
+ns_t_úame
+
+
+	)
+
+128 
+	#T_SOA
+ 
+ns_t_sß
+
+
+	)
+
+129 
+	#T_MB
+ 
+ns_t_mb
+
+
+	)
+
+130 
+	#T_MG
+ 
+ns_t_mg
+
+
+	)
+
+131 
+	#T_MR
+ 
+ns_t_mr
+
+
+	)
+
+132 
+	#T_NULL
+ 
+ns_t_nuÎ
+
+
+	)
+
+133 
+	#T_WKS
+ 
+ns_t_wks
+
+
+	)
+
+134 
+	#T_PTR
+ 
+ns_t_±r
+
+
+	)
+
+135 
+	#T_HINFO
+ 
+ns_t_hšfo
+
+
+	)
+
+136 
+	#T_MINFO
+ 
+ns_t_mšfo
+
+
+	)
+
+137 
+	#T_MX
+ 
+ns_t_mx
+
+
+	)
+
+138 
+	#T_TXT
+ 
+ns_t_txt
+
+
+	)
+
+139 
+	#T_RP
+ 
+ns_t_½
+
+
+	)
+
+140 
+	#T_AFSDB
+ 
+ns_t_afsdb
+
+
+	)
+
+141 
+	#T_X25
+ 
+ns_t_x25
+
+
+	)
+
+142 
+	#T_ISDN
+ 
+ns_t_isdn
+
+
+	)
+
+143 
+	#T_RT
+ 
+ns_t_¹
+
+
+	)
+
+144 
+	#T_NSAP
+ 
+ns_t_n§p
+
+
+	)
+
+145 
+	#T_NSAP_PTR
+ 
+ns_t_n§p_±r
+
+
+	)
+
+146 
+	#T_SIG
+ 
+ns_t_sig
+
+
+	)
+
+147 
+	#T_KEY
+ 
+ns_t_key
+
+
+	)
+
+148 
+	#T_PX
+ 
+ns_t_px
+
+
+	)
+
+149 
+	#T_GPOS
+ 
+ns_t_gpos
+
+
+	)
+
+150 
+	#T_AAAA
+ 
+ns_t_¯¯
+
+
+	)
+
+151 
+	#T_LOC
+ 
+ns_t_loc
+
+
+	)
+
+152 
+	#T_NXT
+ 
+ns_t_nxt
+
+
+	)
+
+153 
+	#T_EID
+ 
+ns_t_eid
+
+
+	)
+
+154 
+	#T_NIMLOC
+ 
+ns_t_nimloc
+
+
+	)
+
+155 
+	#T_SRV
+ 
+ns_t_¤v
+
+
+	)
+
+156 
+	#T_ATMA
+ 
+ns_t_©ma
+
+
+	)
+
+157 
+	#T_NAPTR
+ 
+ns_t_Ç±r
+
+
+	)
+
+158 
+	#T_KX
+ 
+ns_t_kx
+
+
+	)
+
+159 
+	#T_CERT
+ 
+ns_t_û¹
+
+
+	)
+
+160 
+	#T_A6
+ 
+ns_t_a6
+
+
+	)
+
+161 
+	#T_DNAME
+ 
+ns_t_dÇme
+
+
+	)
+
+162 
+	#T_SINK
+ 
+ns_t_sšk
+
+
+	)
+
+163 
+	#T_OPT
+ 
+ns_t_Ýt
+
+
+	)
+
+164 
+	#T_APL
+ 
+ns_t_­l
+
+
+	)
+
+165 
+	#T_DS
+ 
+ns_t_ds
+
+
+	)
+
+166 
+	#T_SSHFP
+ 
+ns_t_sshå
+
+
+	)
+
+167 
+	#T_IPSECKEY
+ 
+ns_t_�£ckey
+
+
+	)
+
+168 
+	#T_RRSIG
+ 
+ns_t_¼sig
+
+
+	)
+
+169 
+	#T_NSEC
+ 
+ns_t_n£c
+
+
+	)
+
+170 
+	#T_DNSKEY
+ 
+ns_t_dnskey
+
+
+	)
+
+171 
+	#T_DHCID
+ 
+ns_t_dhcid
+
+
+	)
+
+172 
+	#T_NSEC3
+ 
+ns_t_n£c3
+
+
+	)
+
+173 
+	#T_NSEC3PARAM
+ 
+ns_t_n£c3·¿m
+
+
+	)
+
+174 
+	#T_TLSA
+ 
+ns_t_Ž§
+
+
+	)
+
+175 
+	#T_SMIMEA
+ 
+ns_t_smim—
+
+
+	)
+
+176 
+	#T_HIP
+ 
+ns_t_h�
+
+
+	)
+
+177 
+	#T_NINFO
+ 
+ns_t_nšfo
+
+
+	)
+
+178 
+	#T_RKEY
+ 
+ns_t_rkey
+
+
+	)
+
+179 
+	#T_TALINK
+ 
+ns_t_�lšk
+
+
+	)
+
+180 
+	#T_CDS
+ 
+ns_t_cds
+
+
+	)
+
+181 
+	#T_CDNSKEY
+ 
+ns_t_cdnskey
+
+
+	)
+
+182 
+	#T_OPENPGPKEY
+ 
+ns_t_Ý’pgpkey
+
+
+	)
+
+183 
+	#T_CSYNC
+ 
+ns_t_csync
+
+
+	)
+
+184 
+	#T_SPF
+ 
+ns_t_¥f
+
+
+	)
+
+185 
+	#T_UINFO
+ 
+ns_t_ušfo
+
+
+	)
+
+186 
+	#T_UID
+ 
+ns_t_uid
+
+
+	)
+
+187 
+	#T_GID
+ 
+ns_t_gid
+
+
+	)
+
+188 
+	#T_UNSPEC
+ 
+ns_t_un¥ec
+
+
+	)
+
+189 
+	#T_NID
+ 
+ns_t_nid
+
+
+	)
+
+190 
+	#T_L32
+ 
+ns_t_l32
+
+
+	)
+
+191 
+	#T_L64
+ 
+ns_t_l64
+
+
+	)
+
+192 
+	#T_LP
+ 
+ns_t_Í
+
+
+	)
+
+193 
+	#T_EUI48
+ 
+ns_t_eui48
+
+
+	)
+
+194 
+	#T_EUI64
+ 
+ns_t_eui64
+
+
+	)
+
+195 
+	#T_TKEY
+ 
+ns_t_tkey
+
+
+	)
+
+196 
+	#T_TSIG
+ 
+ns_t_tsig
+
+
+	)
+
+197 
+	#T_IXFR
+ 
+ns_t_ixä
+
+
+	)
+
+198 
+	#T_AXFR
+ 
+ns_t_axä
+
+
+	)
+
+199 
+	#T_MAILB
+ 
+ns_t_mažb
+
+
+	)
+
+200 
+	#T_MAILA
+ 
+ns_t_maža
+
+
+	)
+
+201 
+	#T_ANY
+ 
+ns_t_ªy
+
+
+	)
+
+202 
+	#T_URI
+ 
+ns_t_uri
+
+
+	)
+
+203 
+	#T_CAA
+ 
+ns_t_ÿa
+
+
+	)
+
+204 
+	#T_AVC
+ 
+ns_t_avc
+
+
+	)
+
+205 
+	#T_TA
+ 
+ns_t_�
+
+
+	)
+
+206 
+	#T_DLV
+ 
+ns_t_dlv
+
+
+	)
+
+208 
+	#C_IN
+ 
+ns_c_š
+
+
+	)
+
+209 
+	#C_CHAOS
+ 
+ns_c_chaos
+
+
+	)
+
+210 
+	#C_HS
+ 
+ns_c_hs
+
+
+	)
+
+212 
+	#C_NONE
+ 
+ns_c_nÚe
+
+
+	)
+
+213 
+	#C_ANY
+ 
+ns_c_ªy
+
+
+	)
+
+215 
+	#GETSHORT
+ 
+NS_GET16
+
+
+	)
+
+216 
+	#GETLONG
+ 
+NS_GET32
+
+
+	)
+
+217 
+	#PUTSHORT
+ 
+NS_PUT16
+
+
+	)
+
+218 
+	#PUTLONG
+ 
+NS_PUT32
+
+
+	)
+
+	@/usr/include/asm-generic/bitsperlong.h
+
+2 #iâdeà
+__ASM_GENERIC_BITS_PER_LONG
+
+
+3 
+	#__ASM_GENERIC_BITS_PER_LONG
+
+
+	)
+
+5 #iâdeà
+__BITS_PER_LONG
+
+
+13 #ià
+defšed
+(
+__CHAR_BIT__
+è&& defšed(
+__SIZEOF_LONG__
+)
+
+14 
+	#__BITS_PER_LONG
+ (
+__CHAR_BIT__
+ * 
+__SIZEOF_LONG__
+)
+
+	)
+
+23 
+	#__BITS_PER_LONG
+ 32
+
+	)
+
+	@/usr/include/asm-generic/sockios.h
+
+2 #iâdeà
+__ASM_GENERIC_SOCKIOS_H
+
+
+3 
+	#__ASM_GENERIC_SOCKIOS_H
+
+
+	)
+
+6 
+	#FIOSETOWN
+ 0x8901
+
+	)
+
+7 
+	#SIOCSPGRP
+ 0x8902
+
+	)
+
+8 
+	#FIOGETOWN
+ 0x8903
+
+	)
+
+9 
+	#SIOCGPGRP
+ 0x8904
+
+	)
+
+10 
+	#SIOCATMARK
+ 0x8905
+
+	)
+
+11 
+	#SIOCGSTAMP_OLD
+ 0x8906
+
+	)
+
+12 
+	#SIOCGSTAMPNS_OLD
+ 0x8907
+
+	)
+
+	@/usr/include/asm-generic/types.h
+
+2 #iâdeà
+_ASM_GENERIC_TYPES_H
+
+
+3 
+	#_ASM_GENERIC_TYPES_H
+
+
+	)
+
+7 
+	~<asm-g’”ic/št-Î64.h
+>
+
+	@/usr/include/asm/ioctls.h
+
+1 
+	~<asm-g’”ic/ioùls.h
+>
+
+	@/usr/include/asm/posix_types.h
+
+2 #ifdeà
+__i386__
+
+
+3 
+	~<asm/posix_ty³s_32.h
+>
+
+4 #–ià
+defšed
+(
+__ILP32__
+)
+
+5 
+	~<asm/posix_ty³s_x32.h
+>
+
+7 
+	~<asm/posix_ty³s_64.h
+>
+
+	@/usr/include/asm/socket.h
+
+1 
+	~<asm-g’”ic/sock‘.h
+>
+
+	@/usr/include/bits/endianness.h
+
+1 #iâdeà
+_BITS_ENDIANNESS_H
+
+
+2 
+	#_BITS_ENDIANNESS_H
+ 1
+
+	)
+
+4 #iâdeà
+_BITS_ENDIAN_H
+
+
+9 
+	#__BYTE_ORDER
+ 
+__LITTLE_ENDIAN
+
+
+	)
+
+	@/usr/include/bits/fcntl-linux.h
+
+19 #iâdef 
+_FCNTL_H
+
+
+37 #ifdeà
+__USE_GNU
+
+
+38 
+	~<b™s/ty³s/¡ruù_iovec.h
+>
+
+42 
+	#O_ACCMODE
+ 0003
+
+	)
+
+43 
+	#O_RDONLY
+ 00
+
+	)
+
+44 
+	#O_WRONLY
+ 01
+
+	)
+
+45 
+	#O_RDWR
+ 02
+
+	)
+
+46 #iâdeà
+O_CREAT
+
+
+47 
+	#O_CREAT
+ 0100
+
+	)
+
+49 #iâdeà
+O_EXCL
+
+
+50 
+	#O_EXCL
+ 0200
+
+	)
+
+52 #iâdeà
+O_NOCTTY
+
+
+53 
+	#O_NOCTTY
+ 0400
+
+	)
+
+55 #iâdeà
+O_TRUNC
+
+
+56 
+	#O_TRUNC
+ 01000
+
+	)
+
+58 #iâdeà
+O_APPEND
+
+
+59 
+	#O_APPEND
+ 02000
+
+	)
+
+61 #iâdeà
+O_NONBLOCK
+
+
+62 
+	#O_NONBLOCK
+ 04000
+
+	)
+
+64 #iâdeà
+O_NDELAY
+
+
+65 
+	#O_NDELAY
+ 
+O_NONBLOCK
+
+
+	)
+
+67 #iâdeà
+O_SYNC
+
+
+68 
+	#O_SYNC
+ 04010000
+
+	)
+
+70 
+	#O_FSYNC
+ 
+O_SYNC
+
+
+	)
+
+71 #iâdeà
+O_ASYNC
+
+
+72 
+	#O_ASYNC
+ 020000
+
+	)
+
+74 #iâdeà
+__O_LARGEFILE
+
+
+75 
+	#__O_LARGEFILE
+ 0100000
+
+	)
+
+78 #iâdeà
+__O_DIRECTORY
+
+
+79 
+	#__O_DIRECTORY
+ 0200000
+
+	)
+
+81 #iâdeà
+__O_NOFOLLOW
+
+
+82 
+	#__O_NOFOLLOW
+ 0400000
+
+	)
+
+84 #iâdeà
+__O_CLOEXEC
+
+
+85 
+	#__O_CLOEXEC
+ 02000000
+
+	)
+
+87 #iâdeà
+__O_DIRECT
+
+
+88 
+	#__O_DIRECT
+ 040000
+
+	)
+
+90 #iâdeà
+__O_NOATIME
+
+
+91 
+	#__O_NOATIME
+ 01000000
+
+	)
+
+93 #iâdeà
+__O_PATH
+
+
+94 
+	#__O_PATH
+ 010000000
+
+	)
+
+96 #iâdeà
+__O_DSYNC
+
+
+97 
+	#__O_DSYNC
+ 010000
+
+	)
+
+99 #iâdeà
+__O_TMPFILE
+
+
+100 
+	#__O_TMPFILE
+ (020000000 | 
+__O_DIRECTORY
+)
+
+	)
+
+103 #iâdeà
+F_GETLK
+
+
+104 #ià!
+defšed
+ 
+__USE_FILE_OFFSET64
+ && 
+__TIMESIZE
+ != 64
+
+105 
+	#F_GETLK
+ 5
+
+	)
+
+106 
+	#F_SETLK
+ 6
+
+	)
+
+107 
+	#F_SETLKW
+ 7
+
+	)
+
+109 
+	#F_GETLK
+ 
+F_GETLK64
+
+
+	)
+
+110 
+	#F_SETLK
+ 
+F_SETLK64
+
+
+	)
+
+111 
+	#F_SETLKW
+ 
+F_SETLKW64
+
+
+	)
+
+114 #iâdeà
+F_GETLK64
+
+
+115 
+	#F_GETLK64
+ 12
+
+	)
+
+116 
+	#F_SETLK64
+ 13
+
+	)
+
+117 
+	#F_SETLKW64
+ 14
+
+	)
+
+131 #ifdeà
+__USE_GNU
+
+
+132 
+	#F_OFD_GETLK
+ 36
+
+	)
+
+133 
+	#F_OFD_SETLK
+ 37
+
+	)
+
+134 
+	#F_OFD_SETLKW
+ 38
+
+	)
+
+137 #ifdeà
+__USE_LARGEFILE64
+
+
+138 
+	#O_LARGEFILE
+ 
+__O_LARGEFILE
+
+
+	)
+
+141 #ifdeà
+__USE_XOPEN2K8
+
+
+142 
+	#O_DIRECTORY
+ 
+__O_DIRECTORY
+
+
+	)
+
+143 
+	#O_NOFOLLOW
+ 
+__O_NOFOLLOW
+
+
+	)
+
+144 
+	#O_CLOEXEC
+ 
+__O_CLOEXEC
+
+
+	)
+
+147 #ifdeà
+__USE_GNU
+
+
+148 
+	#O_DIRECT
+ 
+__O_DIRECT
+
+
+	)
+
+149 
+	#O_NOATIME
+ 
+__O_NOATIME
+
+
+	)
+
+150 
+	#O_PATH
+ 
+__O_PATH
+
+
+	)
+
+151 
+	#O_TMPFILE
+ 
+__O_TMPFILE
+
+
+	)
+
+157 #ià
+defšed
+ 
+__USE_POSIX199309
+ || defšed 
+__USE_UNIX98
+
+
+158 
+	#O_DSYNC
+ 
+__O_DSYNC
+
+
+	)
+
+159 #ià
+defšed
+ 
+__O_RSYNC
+
+
+160 
+	#O_RSYNC
+ 
+__O_RSYNC
+
+
+	)
+
+162 
+	#O_RSYNC
+ 
+O_SYNC
+
+
+	)
+
+167 
+	#F_DUPFD
+ 0
+
+	)
+
+168 
+	#F_GETFD
+ 1
+
+	)
+
+169 
+	#F_SETFD
+ 2
+
+	)
+
+170 
+	#F_GETFL
+ 3
+
+	)
+
+171 
+	#F_SETFL
+ 4
+
+	)
+
+173 #iâdeà
+__F_SETOWN
+
+
+174 
+	#__F_SETOWN
+ 8
+
+	)
+
+175 
+	#__F_GETOWN
+ 9
+
+	)
+
+178 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+
+
+179 
+	#F_SETOWN
+ 
+__F_SETOWN
+
+
+	)
+
+180 
+	#F_GETOWN
+ 
+__F_GETOWN
+
+
+	)
+
+183 #iâdeà
+__F_SETSIG
+
+
+184 
+	#__F_SETSIG
+ 10
+
+	)
+
+185 
+	#__F_GETSIG
+ 11
+
+	)
+
+187 #iâdeà
+__F_SETOWN_EX
+
+
+188 
+	#__F_SETOWN_EX
+ 15
+
+	)
+
+189 
+	#__F_GETOWN_EX
+ 16
+
+	)
+
+192 #ifdeà
+__USE_GNU
+
+
+193 
+	#F_SETSIG
+ 
+__F_SETSIG
+
+
+	)
+
+194 
+	#F_GETSIG
+ 
+__F_GETSIG
+
+
+	)
+
+195 
+	#F_SETOWN_EX
+ 
+__F_SETOWN_EX
+
+
+	)
+
+196 
+	#F_GETOWN_EX
+ 
+__F_GETOWN_EX
+
+
+	)
+
+199 #ifdeà
+__USE_GNU
+
+
+200 
+	#F_SETLEASE
+ 1024
+
+	)
+
+201 
+	#F_GETLEASE
+ 1025
+
+	)
+
+202 
+	#F_NOTIFY
+ 1026
+
+	)
+
+203 
+	#F_SETPIPE_SZ
+ 1031
+
+	)
+
+204 
+	#F_GETPIPE_SZ
+ 1032
+
+	)
+
+205 
+	#F_ADD_SEALS
+ 1033
+
+	)
+
+206 
+	#F_GET_SEALS
+ 1034
+
+	)
+
+208 
+	#F_GET_RW_HINT
+ 1035
+
+	)
+
+209 
+	#F_SET_RW_HINT
+ 1036
+
+	)
+
+210 
+	#F_GET_FILE_RW_HINT
+ 1037
+
+	)
+
+211 
+	#F_SET_FILE_RW_HINT
+ 1038
+
+	)
+
+213 #ifdeà
+__USE_XOPEN2K8
+
+
+214 
+	#F_DUPFD_CLOEXEC
+ 1030
+
+	)
+
+219 
+	#FD_CLOEXEC
+ 1
+
+	)
+
+221 #iâdeà
+F_RDLCK
+
+
+223 
+	#F_RDLCK
+ 0
+
+	)
+
+224 
+	#F_WRLCK
+ 1
+
+	)
+
+225 
+	#F_UNLCK
+ 2
+
+	)
+
+230 #iâdeà
+F_EXLCK
+
+
+231 
+	#F_EXLCK
+ 4
+
+	)
+
+232 
+	#F_SHLCK
+ 8
+
+	)
+
+235 #ifdeà
+__USE_MISC
+
+
+237 
+	#LOCK_SH
+ 1
+
+	)
+
+238 
+	#LOCK_EX
+ 2
+
+	)
+
+239 
+	#LOCK_NB
+ 4
+
+	)
+
+241 
+	#LOCK_UN
+ 8
+
+	)
+
+244 #ifdeà
+__USE_GNU
+
+
+245 
+	#LOCK_MAND
+ 32
+
+	)
+
+246 
+	#LOCK_READ
+ 64
+
+	)
+
+247 
+	#LOCK_WRITE
+ 128
+
+	)
+
+248 
+	#LOCK_RW
+ 192
+
+	)
+
+251 #ifdeà
+__USE_GNU
+
+
+253 
+	#DN_ACCESS
+ 0x00000001
+
+	)
+
+254 
+	#DN_MODIFY
+ 0x00000002
+
+	)
+
+255 
+	#DN_CREATE
+ 0x00000004
+
+	)
+
+256 
+	#DN_DELETE
+ 0x00000008
+
+	)
+
+257 
+	#DN_RENAME
+ 0x00000010
+
+	)
+
+258 
+	#DN_ATTRIB
+ 0x00000020
+
+	)
+
+259 
+	#DN_MULTISHOT
+ 0x80000000
+
+	)
+
+263 #ifdeà
+__USE_GNU
+
+
+265 
+	e__pid_ty³
+
+
+267 
+	mF_OWNER_TID
+ = 0,
+
+268 
+	mF_OWNER_PID
+,
+
+269 
+	mF_OWNER_PGRP
+,
+
+270 
+	mF_OWNER_GID
+ = 
+F_OWNER_PGRP
+
+
+274 
+	sf_owÃr_ex
+
+
+276 
+__pid_ty³
+ 
+	mty³
+;
+
+277 
+__pid_t
+ 
+	mpid
+;
+
+281 #ifdeà
+__USE_GNU
+
+
+283 
+	#F_SEAL_SEAL
+ 0x0001
+
+	)
+
+284 
+	#F_SEAL_SHRINK
+ 0x0002
+
+	)
+
+285 
+	#F_SEAL_GROW
+ 0x0004
+
+	)
+
+286 
+	#F_SEAL_WRITE
+ 0x0008
+
+	)
+
+287 
+	#F_SEAL_FUTURE_WRITE
+ 0x0010
+
+	)
+
+291 #ifdeà
+__USE_GNU
+
+
+293 
+	#RWH_WRITE_LIFE_NOT_SET
+ 0
+
+	)
+
+294 
+	#RWF_WRITE_LIFE_NOT_SET
+ 
+RWH_WRITE_LIFE_NOT_SET
+
+
+	)
+
+295 
+	#RWH_WRITE_LIFE_NONE
+ 1
+
+	)
+
+296 
+	#RWH_WRITE_LIFE_SHORT
+ 2
+
+	)
+
+297 
+	#RWH_WRITE_LIFE_MEDIUM
+ 3
+
+	)
+
+298 
+	#RWH_WRITE_LIFE_LONG
+ 4
+
+	)
+
+299 
+	#RWH_WRITE_LIFE_EXTREME
+ 5
+
+	)
+
+304 #ifdef 
+__USE_MISC
+
+
+305 
+	#FAPPEND
+ 
+O_APPEND
+
+
+	)
+
+306 
+	#FFSYNC
+ 
+O_FSYNC
+
+
+	)
+
+307 
+	#FASYNC
+ 
+O_ASYNC
+
+
+	)
+
+308 
+	#FNONBLOCK
+ 
+O_NONBLOCK
+
+
+	)
+
+309 
+	#FNDELAY
+ 
+O_NDELAY
+
+
+	)
+
+312 #iâdeà
+__POSIX_FADV_DONTNEED
+
+
+313 
+	#__POSIX_FADV_DONTNEED
+ 4
+
+	)
+
+314 
+	#__POSIX_FADV_NOREUSE
+ 5
+
+	)
+
+317 #ifdeà
+__USE_XOPEN2K
+
+
+318 
+	#POSIX_FADV_NORMAL
+ 0
+
+	)
+
+319 
+	#POSIX_FADV_RANDOM
+ 1
+
+	)
+
+320 
+	#POSIX_FADV_SEQUENTIAL
+ 2
+
+	)
+
+321 
+	#POSIX_FADV_WILLNEED
+ 3
+
+	)
+
+322 
+	#POSIX_FADV_DONTNEED
+ 
+__POSIX_FADV_DONTNEED
+
+
+	)
+
+323 
+	#POSIX_FADV_NOREUSE
+ 
+__POSIX_FADV_NOREUSE
+
+
+	)
+
+327 #ifdeà
+__USE_GNU
+
+
+329 
+	#SYNC_FILE_RANGE_WAIT_BEFORE
+ 1
+
+	)
+
+332 
+	#SYNC_FILE_RANGE_WRITE
+ 2
+
+	)
+
+335 
+	#SYNC_FILE_RANGE_WAIT_AFTER
+ 4
+
+	)
+
+340 
+	#SYNC_FILE_RANGE_WRITE_AND_WAIT
+ (
+SYNC_FILE_RANGE_WRITE
+ \
+
+341 | 
+SYNC_FILE_RANGE_WAIT_BEFORE
+ \
+
+342 | 
+SYNC_FILE_RANGE_WAIT_AFTER
+)
+
+	)
+
+345 
+	#SPLICE_F_MOVE
+ 1
+
+	)
+
+346 
+	#SPLICE_F_NONBLOCK
+ 2
+
+	)
+
+349 
+	#SPLICE_F_MORE
+ 4
+
+	)
+
+350 
+	#SPLICE_F_GIFT
+ 8
+
+	)
+
+354 
+	~<lšux/çÎoc.h
+>
+
+358 
+	sfže_hªdË
+
+
+360 
+	mhªdË_by‹s
+;
+
+361 
+	mhªdË_ty³
+;
+
+363 
+	mf_hªdË
+[0];
+
+367 
+	#MAX_HANDLE_SZ
+ 128
+
+	)
+
+370 
+	g__BEGIN_DECLS
+
+
+372 #ifdeà
+__USE_GNU
+
+
+375 
+__ssize_t
+ 
+	$»adah—d
+ (
+__fd
+, 
+__off64_t
+ 
+__off£t
+, 
+size_t
+ 
+__couÁ
+)
+
+376 
+__THROW
+;
+
+383 

+	`sync_fže_¿nge
+ (
+__fd
+, 
+__off64_t
+ 
+__off£t
+, __off64_ˆ
+__couÁ
+,
+
+384 
+__æags
+);
+
+391 
+__ssize_t
+ 
+	`vm¥liû
+ (
+__fdout
+, cÚ¡ 
+iovec
+ *
+__iov
+,
+
+392 
+size_t
+ 
+__couÁ
+, 
+__æags
+);
+
+398 
+__ssize_t
+ 
+	`¥liû
+ (
+__fdš
+, 
+__off64_t
+ *
+__offš
+, 
+__fdout
+,
+
+399 
+__off64_t
+ *
+__offout
+, 
+size_t
+ 
+__Ën
+,
+
+400 
+__æags
+);
+
+406 
+__ssize_t
+ 
+	`‹e
+ (
+__fdš
+, 
+__fdout
+, 
+size_t
+ 
+__Ën
+,
+
+407 
+__æags
+);
+
+413 #iâdeà
+__USE_FILE_OFFSET64
+
+
+414 

+	`çÎoÿ‹
+ (
+__fd
+, 
+__mode
+, 
+__off_t
+ 
+__off£t
+, __off_ˆ
+__Ën
+);
+
+416 #ifdeà
+__REDIRECT
+
+
+417 

+	`__REDIRECT
+ (
+çÎoÿ‹
+, (
+__fd
+, 
+__mode
+, 
+__off64_t
+ 
+__off£t
+,
+
+418 
+__off64_t
+ 
+__Ën
+),
+
+419 
+çÎoÿ‹64
+);
+
+421 
+	#çÎoÿ‹
+ 
+çÎoÿ‹64
+
+
+	)
+
+424 #ifdeà
+__USE_LARGEFILE64
+
+
+425 

+	`çÎoÿ‹64
+ (
+__fd
+, 
+__mode
+, 
+__off64_t
+ 
+__off£t
+,
+
+426 
+__off64_t
+ 
+__Ën
+);
+
+431 

+	$Çme_to_hªdË_©
+ (
+__dfd
+, cÚ¡ *
+__Çme
+,
+
+432 
+fže_hªdË
+ *
+__hªdË
+, *
+__mÁ_id
+,
+
+433 
+__æags
+è
+__THROW
+;
+
+439 

+	`Ý’_by_hªdË_©
+ (
+__mouÁdœfd
+, 
+fže_hªdË
+ *
+__hªdË
+,
+
+440 
+__æags
+);
+
+444 
+__END_DECLS
+
+
+	@/usr/include/bits/floatn-common.h
+
+20 #iâdeà
+_BITS_FLOATN_COMMON_H
+
+
+21 
+	#_BITS_FLOATN_COMMON_H
+
+
+	)
+
+23 
+	~<ã©u»s.h
+>
+
+24 
+	~<b™s/lÚg-doubË.h
+>
+
+34 
+	#__HAVE_FLOAT16
+ 0
+
+	)
+
+35 
+	#__HAVE_FLOAT32
+ 1
+
+	)
+
+36 
+	#__HAVE_FLOAT64
+ 1
+
+	)
+
+37 
+	#__HAVE_FLOAT32X
+ 1
+
+	)
+
+38 
+	#__HAVE_FLOAT128X
+ 0
+
+	)
+
+52 
+	#__HAVE_DISTINCT_FLOAT16
+ 
+__HAVE_FLOAT16
+
+
+	)
+
+53 
+	#__HAVE_DISTINCT_FLOAT32
+ 0
+
+	)
+
+54 
+	#__HAVE_DISTINCT_FLOAT64
+ 0
+
+	)
+
+55 
+	#__HAVE_DISTINCT_FLOAT32X
+ 0
+
+	)
+
+56 
+	#__HAVE_DISTINCT_FLOAT64X
+ 0
+
+	)
+
+57 
+	#__HAVE_DISTINCT_FLOAT128X
+ 
+__HAVE_FLOAT128X
+
+
+	)
+
+63 
+	#__HAVE_FLOAT128_UNLIKE_LDBL
+ (
+__HAVE_DISTINCT_FLOAT128
+ \
+
+64 && 
+__LDBL_MANT_DIG__
+ !ð113)
+
+	)
+
+69 #ià
+__GNUC_PREREQ
+ (7, 0è&& !
+defšed
+ 
+__ýlu¥lus
+
+
+70 
+	#__HAVE_FLOATN_NOT_TYPEDEF
+ 1
+
+	)
+
+72 
+	#__HAVE_FLOATN_NOT_TYPEDEF
+ 0
+
+	)
+
+75 #iâdeà
+__ASSEMBLER__
+
+
+80 #ià
+__HAVE_FLOAT16
+
+
+81 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+83 
+	#__f16
+(
+x
+è((
+_Flßt16
+èx##
+f
+)
+
+	)
+
+85 
+	#__f16
+(
+x
+èx##
+f16
+
+
+	)
+
+89 #ià
+__HAVE_FLOAT32
+
+
+90 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+91 
+	#__f32
+(
+x
+èx##
+f
+
+
+	)
+
+93 
+	#__f32
+(
+x
+èx##
+f32
+
+
+	)
+
+97 #ià
+__HAVE_FLOAT64
+
+
+98 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+99 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+100 
+	#__f64
+(
+x
+èx##
+l
+
+
+	)
+
+102 
+	#__f64
+(
+x
+è
+	)
+x
+
+105 
+	#__f64
+(
+x
+èx##
+f64
+
+
+	)
+
+109 #ià
+__HAVE_FLOAT32X
+
+
+110 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+111 
+	#__f32x
+(
+x
+è
+	)
+x
+
+113 
+	#__f32x
+(
+x
+èx##
+f32x
+
+
+	)
+
+117 #ià
+__HAVE_FLOAT64X
+
+
+118 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+119 #ià
+__HAVE_FLOAT64X_LONG_DOUBLE
+
+
+120 
+	#__f64x
+(
+x
+èx##
+l
+
+
+	)
+
+122 
+	#__f64x
+(
+x
+è
+	`__f128
+ (x)
+
+	)
+
+125 
+	#__f64x
+(
+x
+èx##
+f64x
+
+
+	)
+
+129 #ià
+__HAVE_FLOAT128X
+
+
+130 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+133 
+	#__f128x
+(
+x
+èx##
+f128x
+
+
+	)
+
+138 #ià
+__HAVE_FLOAT16
+
+
+139 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+140 
+_Com¶ex
+ 
+	t__cæßt16
+ 
+	t__©Œibu‹__
+ ((
+	t__mode__
+ (
+	t__HC__
+)));
+
+141 
+	#__CFLOAT16
+ 
+__cæßt16
+
+
+	)
+
+143 
+	#__CFLOAT16
+ 
+_Com¶ex
+ 
+_Flßt16
+
+
+	)
+
+147 #ià
+__HAVE_FLOAT32
+
+
+148 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+149 
+	#__CFLOAT32
+ 
+_Com¶ex
+ 
+
+	)
+
+151 
+	#__CFLOAT32
+ 
+_Com¶ex
+ 
+_Flßt32
+
+
+	)
+
+155 #ià
+__HAVE_FLOAT64
+
+
+156 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+157 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+158 
+	#__CFLOAT64
+ 
+_Com¶ex
+ 
+
+	)
+
+160 
+	#__CFLOAT64
+ 
+_Com¶ex
+ 
+
+	)
+
+163 
+	#__CFLOAT64
+ 
+_Com¶ex
+ 
+_Flßt64
+
+
+	)
+
+167 #ià
+__HAVE_FLOAT32X
+
+
+168 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+169 
+	#__CFLOAT32X
+ 
+_Com¶ex
+ 
+
+	)
+
+171 
+	#__CFLOAT32X
+ 
+_Com¶ex
+ 
+_Flßt32x
+
+
+	)
+
+175 #ià
+__HAVE_FLOAT64X
+
+
+176 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+177 #ià
+__HAVE_FLOAT64X_LONG_DOUBLE
+
+
+178 
+	#__CFLOAT64X
+ 
+_Com¶ex
+ 
+
+	)
+
+180 
+	#__CFLOAT64X
+ 
+__CFLOAT128
+
+
+	)
+
+183 
+	#__CFLOAT64X
+ 
+_Com¶ex
+ 
+_Flßt64x
+
+
+	)
+
+187 #ià
+__HAVE_FLOAT128X
+
+
+188 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+191 
+	#__CFLOAT128X
+ 
+_Com¶ex
+ 
+_Flßt128x
+
+
+	)
+
+196 #ià
+__HAVE_FLOAT16
+
+
+198 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+199 
+	t_Flßt16
+ 
+	t__©Œibu‹__
+ ((
+	t__mode__
+ (
+	t__HF__
+)));
+
+202 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+203 
+	#__bužtš_huge_v®f16
+(è((
+_Flßt16
+è
+	`__bužtš_huge_v®
+ ())
+
+	)
+
+204 
+	#__bužtš_šff16
+(è((
+_Flßt16
+è
+	`__bužtš_šf
+ ())
+
+	)
+
+205 
+	#__bužtš_Çnf16
+(
+x
+è((
+_Flßt16
+è
+	`__bužtš_Çn
+ (x))
+
+	)
+
+206 
+	#__bužtš_Çnsf16
+(
+x
+è((
+_Flßt16
+è
+	`__bužtš_Çns
+ (x))
+
+	)
+
+211 #ià
+__HAVE_FLOAT32
+
+
+213 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+214 
+	t_Flßt32
+;
+
+217 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+218 
+	#__bužtš_huge_v®f32
+(è(
+	`__bužtš_huge_v®f
+ ())
+
+	)
+
+219 
+	#__bužtš_šff32
+(è(
+	`__bužtš_šff
+ ())
+
+	)
+
+220 
+	#__bužtš_Çnf32
+(
+x
+è(
+	`__bužtš_Çnf
+ (x))
+
+	)
+
+221 
+	#__bužtš_Çnsf32
+(
+x
+è(
+	`__bužtš_Çnsf
+ (x))
+
+	)
+
+226 #ià
+__HAVE_FLOAT64
+
+
+235 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+237 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+238 
+	t_Flßt64
+;
+
+241 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+242 
+	#__bužtš_huge_v®f64
+(è(
+	`__bužtš_huge_v®l
+ ())
+
+	)
+
+243 
+	#__bužtš_šff64
+(è(
+	`__bužtš_šæ
+ ())
+
+	)
+
+244 
+	#__bužtš_Çnf64
+(
+x
+è(
+	`__bužtš_ÇÆ
+ (x))
+
+	)
+
+245 
+	#__bužtš_Çnsf64
+(
+x
+è(
+	`__bužtš_Çn¦
+ (x))
+
+	)
+
+250 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+251 
+	t_Flßt64
+;
+
+254 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+255 
+	#__bužtš_huge_v®f64
+(è(
+	`__bužtš_huge_v®
+ ())
+
+	)
+
+256 
+	#__bužtš_šff64
+(è(
+	`__bužtš_šf
+ ())
+
+	)
+
+257 
+	#__bužtš_Çnf64
+(
+x
+è(
+	`__bužtš_Çn
+ (x))
+
+	)
+
+258 
+	#__bužtš_Çnsf64
+(
+x
+è(
+	`__bužtš_Çns
+ (x))
+
+	)
+
+265 #ià
+__HAVE_FLOAT32X
+
+
+267 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+268 
+	t_Flßt32x
+;
+
+271 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+272 
+	#__bužtš_huge_v®f32x
+(è(
+	`__bužtš_huge_v®
+ ())
+
+	)
+
+273 
+	#__bužtš_šff32x
+(è(
+	`__bužtš_šf
+ ())
+
+	)
+
+274 
+	#__bužtš_Çnf32x
+(
+x
+è(
+	`__bužtš_Çn
+ (x))
+
+	)
+
+275 
+	#__bužtš_Çnsf32x
+(
+x
+è(
+	`__bužtš_Çns
+ (x))
+
+	)
+
+280 #ià
+__HAVE_FLOAT64X
+
+
+282 #ià
+__HAVE_FLOAT64X_LONG_DOUBLE
+
+
+284 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+285 
+	t_Flßt64x
+;
+
+288 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+289 
+	#__bužtš_huge_v®f64x
+(è(
+	`__bužtš_huge_v®l
+ ())
+
+	)
+
+290 
+	#__bužtš_šff64x
+(è(
+	`__bužtš_šæ
+ ())
+
+	)
+
+291 
+	#__bužtš_Çnf64x
+(
+x
+è(
+	`__bužtš_ÇÆ
+ (x))
+
+	)
+
+292 
+	#__bužtš_Çnsf64x
+(
+x
+è(
+	`__bužtš_Çn¦
+ (x))
+
+	)
+
+297 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+298 
+_Flßt128
+ 
+	t_Flßt64x
+;
+
+301 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+302 
+	#__bužtš_huge_v®f64x
+(è(
+	`__bužtš_huge_v®f128
+ ())
+
+	)
+
+303 
+	#__bužtš_šff64x
+(è(
+	`__bužtš_šff128
+ ())
+
+	)
+
+304 
+	#__bužtš_Çnf64x
+(
+x
+è(
+	`__bužtš_Çnf128
+ (x))
+
+	)
+
+305 
+	#__bužtš_Çnsf64x
+(
+x
+è(
+	`__bužtš_Çnsf128
+ (x))
+
+	)
+
+312 #ià
+__HAVE_FLOAT128X
+
+
+314 #ià!
+__GNUC_PREREQ
+ (7, 0è|| (
+defšed
+ 
+__ýlu¥lus
+ && !__GNUC_PREREQ (13, 0))
+
+318 #ià!
+__GNUC_PREREQ
+ (7, 0)
+
+319 
+	#__bužtš_huge_v®f128x
+(è((
+_Flßt128x
+è
+	`__bužtš_huge_v®
+ ())
+
+	)
+
+320 
+	#__bužtš_šff128x
+(è((
+_Flßt128x
+è
+	`__bužtš_šf
+ ())
+
+	)
+
+321 
+	#__bužtš_Çnf128x
+(
+x
+è((
+_Flßt128x
+è
+	`__bužtš_Çn
+ (x))
+
+	)
+
+322 
+	#__bužtš_Çnsf128x
+(
+x
+è((
+_Flßt128x
+è
+	`__bužtš_Çns
+ (x))
+
+	)
+
+	@/usr/include/bits/getopt_core.h
+
+20 #iâdeà
+_GETOPT_CORE_H
+
+
+21 
+	#_GETOPT_CORE_H
+ 1
+
+	)
+
+28 
+__BEGIN_DECLS
+
+
+36 
*
+Ý�rg
+;
+
+50 

+Ýtšd
+;
+
+55 

+Ý‹¼
+;
+
+59 

+ÝtÝt
+;
+
+91 

+	$g‘Ýt
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+, cÚ¡ *
+__shÜtÝts
+)
+
+92 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3));
+
+94 
+__END_DECLS
+
+
+	@/usr/include/bits/local_lim.h
+
+24 #iâdeà
+NR_OPEN
+
+
+25 
+	#__undef_NR_OPEN
+
+
+	)
+
+27 #iâdeà
+LINK_MAX
+
+
+28 
+	#__undef_LINK_MAX
+
+
+	)
+
+30 #iâdeà
+OPEN_MAX
+
+
+31 
+	#__undef_OPEN_MAX
+
+
+	)
+
+33 #iâdeà
+ARG_MAX
+
+
+34 
+	#__undef_ARG_MAX
+
+
+	)
+
+38 
+	~<lšux/lim™s.h
+>
+
+41 #ifdeà
+__undef_NR_OPEN
+
+
+42 #undeà
+NR_OPEN
+
+
+43 #undeà
+__undef_NR_OPEN
+
+
+46 #ifdeà
+__undef_LINK_MAX
+
+
+47 #undeà
+LINK_MAX
+
+
+48 #undeà
+__undef_LINK_MAX
+
+
+51 #ifdeà
+__undef_OPEN_MAX
+
+
+52 #undeà
+OPEN_MAX
+
+
+53 #undeà
+__undef_OPEN_MAX
+
+
+56 #ifdeà
+__undef_ARG_MAX
+
+
+57 #undeà
+ARG_MAX
+
+
+58 #undeà
+__undef_ARG_MAX
+
+
+62 
+	#_POSIX_THREAD_KEYS_MAX
+ 128
+
+	)
+
+64 
+	#PTHREAD_KEYS_MAX
+ 1024
+
+	)
+
+67 
+	#_POSIX_THREAD_DESTRUCTOR_ITERATIONS
+ 4
+
+	)
+
+69 
+	#PTHREAD_DESTRUCTOR_ITERATIONS
+ 
+_POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+
+	)
+
+72 
+	#_POSIX_THREAD_THREADS_MAX
+ 64
+
+	)
+
+74 #undeà
+PTHREAD_THREADS_MAX
+
+
+78 
+	#AIO_PRIO_DELTA_MAX
+ 20
+
+	)
+
+81 
+	~<b™s/±h»ad_¡ack_mš-dyÇmic.h
+>
+
+84 
+	#DELAYTIMER_MAX
+ 2147483647
+
+	)
+
+87 
+	#TTY_NAME_MAX
+ 32
+
+	)
+
+90 
+	#LOGIN_NAME_MAX
+ 256
+
+	)
+
+93 
+	#HOST_NAME_MAX
+ 64
+
+	)
+
+96 
+	#MQ_PRIO_MAX
+ 32768
+
+	)
+
+99 
+	#SEM_VALUE_MAX
+ (2147483647)
+
+	)
+
+	@/usr/include/bits/long-double.h
+
+21 
+	#__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ 0
+
+	)
+
+	@/usr/include/bits/mman-linux.h
+
+19 #iâdeà
+_SYS_MMAN_H
+
+
+32 
+	#PROT_READ
+ 0x1
+
+	)
+
+33 
+	#PROT_WRITE
+ 0x2
+
+	)
+
+34 
+	#PROT_EXEC
+ 0x4
+
+	)
+
+35 
+	#PROT_NONE
+ 0x0
+
+	)
+
+36 
+	#PROT_GROWSDOWN
+ 0x01000000
+
+	)
+
+38 
+	#PROT_GROWSUP
+ 0x02000000
+
+	)
+
+42 
+	#MAP_SHARED
+ 0x01
+
+	)
+
+43 
+	#MAP_PRIVATE
+ 0x02
+
+	)
+
+44 
+	#MAP_SHARED_VALIDATE
+ 0x03
+
+	)
+
+46 
+	#MAP_TYPE
+ 0x0à
+
+	)
+
+49 
+	#MAP_FIXED
+ 0x10
+
+	)
+
+50 
+	#MAP_FILE
+ 0
+
+	)
+
+51 #ifdeà
+__MAP_ANONYMOUS
+
+
+52 
+	#MAP_ANONYMOUS
+ 
+__MAP_ANONYMOUS
+
+
+	)
+
+54 
+	#MAP_ANONYMOUS
+ 0x20
+
+	)
+
+56 
+	#MAP_ANON
+ 
+MAP_ANONYMOUS
+
+
+	)
+
+58 
+	#MAP_HUGE_SHIFT
+ 26
+
+	)
+
+59 
+	#MAP_HUGE_MASK
+ 0x3f
+
+	)
+
+62 
+	#MS_ASYNC
+ 1
+
+	)
+
+63 
+	#MS_SYNC
+ 4
+
+	)
+
+64 
+	#MS_INVALIDATE
+ 2
+
+	)
+
+67 #ifdeà
+__USE_MISC
+
+
+68 
+	#MADV_NORMAL
+ 0
+
+	)
+
+69 
+	#MADV_RANDOM
+ 1
+
+	)
+
+70 
+	#MADV_SEQUENTIAL
+ 2
+
+	)
+
+71 
+	#MADV_WILLNEED
+ 3
+
+	)
+
+72 
+	#MADV_DONTNEED
+ 4
+
+	)
+
+73 
+	#MADV_FREE
+ 8
+
+	)
+
+74 
+	#MADV_REMOVE
+ 9
+
+	)
+
+75 
+	#MADV_DONTFORK
+ 10
+
+	)
+
+76 
+	#MADV_DOFORK
+ 11
+
+	)
+
+77 
+	#MADV_MERGEABLE
+ 12
+
+	)
+
+78 
+	#MADV_UNMERGEABLE
+ 13
+
+	)
+
+79 
+	#MADV_HUGEPAGE
+ 14
+
+	)
+
+80 
+	#MADV_NOHUGEPAGE
+ 15
+
+	)
+
+81 
+	#MADV_DONTDUMP
+ 16
+
+	)
+
+83 
+	#MADV_DODUMP
+ 17
+
+	)
+
+84 
+	#MADV_WIPEONFORK
+ 18
+
+	)
+
+85 
+	#MADV_KEEPONFORK
+ 19
+
+	)
+
+86 
+	#MADV_COLD
+ 20
+
+	)
+
+87 
+	#MADV_PAGEOUT
+ 21
+
+	)
+
+88 
+	#MADV_POPULATE_READ
+ 22
+
+	)
+
+90 
+	#MADV_POPULATE_WRITE
+ 23
+
+	)
+
+92 
+	#MADV_DONTNEED_LOCKED
+ 24
+
+	)
+
+94 
+	#MADV_COLLAPSE
+ 25
+
+	)
+
+95 
+	#MADV_HWPOISON
+ 100
+
+	)
+
+99 #ifdeà
+__USE_XOPEN2K
+
+
+100 
+	#POSIX_MADV_NORMAL
+ 0
+
+	)
+
+101 
+	#POSIX_MADV_RANDOM
+ 1
+
+	)
+
+102 
+	#POSIX_MADV_SEQUENTIAL
+ 2
+
+	)
+
+103 
+	#POSIX_MADV_WILLNEED
+ 3
+
+	)
+
+104 
+	#POSIX_MADV_DONTNEED
+ 4
+
+	)
+
+108 #iâdeà
+MCL_CURRENT
+
+
+109 
+	#MCL_CURRENT
+ 1
+
+	)
+
+110 
+	#MCL_FUTURE
+ 2
+
+	)
+
+112 
+	#MCL_ONFAULT
+ 4
+
+	)
+
+116 
+	~<b™s/mmª-sh¬ed.h
+>
+
+	@/usr/include/bits/mman-map-flags-generic.h
+
+19 #iâdeà
+_SYS_MMAN_H
+
+
+28 
+	#MAP_GROWSDOWN
+ 0x00100
+
+	)
+
+29 
+	#MAP_DENYWRITE
+ 0x00800
+
+	)
+
+30 
+	#MAP_EXECUTABLE
+ 0x01000
+
+	)
+
+31 
+	#MAP_LOCKED
+ 0x02000
+
+	)
+
+32 
+	#MAP_NORESERVE
+ 0x04000
+
+	)
+
+33 
+	#MAP_POPULATE
+ 0x08000
+
+	)
+
+34 
+	#MAP_NONBLOCK
+ 0x10000
+
+	)
+
+35 
+	#MAP_STACK
+ 0x20000
+
+	)
+
+36 
+	#MAP_HUGETLB
+ 0x40000
+
+	)
+
+37 
+	#MAP_SYNC
+ 0x80000
+
+	)
+
+39 
+	#MAP_FIXED_NOREPLACE
+ 0x100000
+
+	)
+
+	@/usr/include/bits/param.h
+
+19 #iâdeà
+_SYS_PARAM_H
+
+
+23 #iâdeà
+ARG_MAX
+
+
+24 
+	#__undef_ARG_MAX
+
+
+	)
+
+27 
+	~<lšux/lim™s.h
+>
+
+28 
+	~<lšux/·¿m.h
+>
+
+31 #ifdeà
+__undef_ARG_MAX
+
+
+32 #undeà
+ARG_MAX
+
+
+33 #undeà
+__undef_ARG_MAX
+
+
+36 
+	#MAXSYMLINKS
+ 20
+
+	)
+
+41 
+	#NOFILE
+ 256
+
+	)
+
+42 
+	#NCARGS
+ 131072
+
+	)
+
+	@/usr/include/bits/select.h
+
+18 #iâdeà
+_SYS_SELECT_H
+
+
+25 
+	#__FD_ZERO
+(
+s
+) \
+
+27 
+__i
+; \
+
+28 
+fd_£t
+ *
+__¬r
+ = (
+s
+); \
+
+29 
+__i
+ = 0; __˜<  (
+fd_£t
+è/  (
+__fd_mask
+); ++__i) \
+
+30 
+	`__FDS_BITS
+ (
+__¬r
+)[
+__i
+] = 0; \
+
+31 } 0)
+
+	)
+
+32 
+	#__FD_SET
+(
+d
+, 
+s
+) \
+
+33 ((è(
+	`__FDS_BITS
+ (
+s
+)[
+	`__FD_ELT
+(
+d
+)] |ð
+	`__FD_MASK
+(d)))
+
+	)
+
+34 
+	#__FD_CLR
+(
+d
+, 
+s
+) \
+
+35 ((è(
+	`__FDS_BITS
+ (
+s
+)[
+	`__FD_ELT
+(
+d
+)] &ð~
+	`__FD_MASK
+(d)))
+
+	)
+
+36 
+	#__FD_ISSET
+(
+d
+, 
+s
+) \
+
+37 ((
+	`__FDS_BITS
+ (
+s
+)[
+	`__FD_ELT
+ (
+d
+)] & 
+	`__FD_MASK
+ (d)è!ð0)
+
+	)
+
+	@/usr/include/bits/select2.h
+
+19 #iâdeà
+_SYS_SELECT_H
+
+
+23 
+	~<b™s/£Ëù-deþ.h
+>
+
+25 #undeà
+__FD_ELT
+
+
+26 
+	#__FD_ELT
+(
+d
+) \
+
+27 
+__ex‹nsiÚ__
+ \
+
+28 ({ 
+__d
+ = (
+d
+); \
+
+29 (
+	`__bužtš_cÚ¡ªt_p
+ (
+__d
+) \
+
+30 ? (0 <ð
+__d
+ && __d < 
+__FD_SETSIZE
+ \
+
+31 ? (
+__d
+ / 
+__NFDBITS
+) \
+
+32 : 
+	`__fd–t_w¬n
+ (
+__d
+)) \
+
+33 : 
+	`__fd–t_chk
+ (
+__d
+)); })
+
+	)
+
+	@/usr/include/bits/siginfo-arch.h
+
+2 #iâdeà
+_BITS_SIGINFO_ARCH_H
+
+
+3 
+	#_BITS_SIGINFO_ARCH_H
+ 1
+
+	)
+
+5 #ià
+defšed
+ 
+__x86_64__
+ && 
+__WORDSIZE
+ == 32
+
+12 
+__þock_t
+ 
+	t__©Œibu‹__
+ ((
+	t__®igÃd__
+ (4))è
+	t__sigchld_þock_t
+;
+
+13 
+	#__SI_ALIGNMENT
+ 
+	`__©Œibu‹__
+ ((
+	`__®igÃd__
+ (8)))
+
+	)
+
+14 
+	#__SI_CLOCK_T
+ 
+__sigchld_þock_t
+
+
+	)
+
+	@/usr/include/bits/siginfo-consts-arch.h
+
+2 #iâdeà
+_BITS_SIGINFO_CONSTS_ARCH_H
+
+
+3 
+	#_BITS_SIGINFO_CONSTS_ARCH_H
+ 1
+
+	)
+
+	@/usr/include/bits/signum-arch.h
+
+19 #iâdeà
+_BITS_SIGNUM_ARCH_H
+
+
+20 
+	#_BITS_SIGNUM_ARCH_H
+ 1
+
+	)
+
+22 #iâdeà
+_SIGNAL_H
+
+
+29 
+	#SIGSTKFLT
+ 16
+
+	)
+
+30 
+	#SIGPWR
+ 30
+
+	)
+
+33 
+	#SIGBUS
+ 7
+
+	)
+
+34 
+	#SIGSYS
+ 31
+
+	)
+
+37 
+	#SIGURG
+ 23
+
+	)
+
+38 
+	#SIGSTOP
+ 19
+
+	)
+
+39 
+	#SIGTSTP
+ 20
+
+	)
+
+40 
+	#SIGCONT
+ 18
+
+	)
+
+41 
+	#SIGCHLD
+ 17
+
+	)
+
+42 
+	#SIGTTIN
+ 21
+
+	)
+
+43 
+	#SIGTTOU
+ 22
+
+	)
+
+44 
+	#SIGPOLL
+ 29
+
+	)
+
+45 
+	#SIGXFSZ
+ 25
+
+	)
+
+46 
+	#SIGXCPU
+ 24
+
+	)
+
+47 
+	#SIGVTALRM
+ 26
+
+	)
+
+48 
+	#SIGPROF
+ 27
+
+	)
+
+49 
+	#SIGUSR1
+ 10
+
+	)
+
+50 
+	#SIGUSR2
+ 12
+
+	)
+
+54 
+	#SIGWINCH
+ 28
+
+	)
+
+57 
+	#SIGIO
+ 
+SIGPOLL
+
+
+	)
+
+58 
+	#SIGIOT
+ 
+SIGABRT
+
+
+	)
+
+59 
+	#SIGCLD
+ 
+SIGCHLD
+
+
+	)
+
+61 
+	#__SIGRTMIN
+ 32
+
+	)
+
+62 
+	#__SIGRTMAX
+ 64
+
+	)
+
+	@/usr/include/bits/socket-constants.h
+
+19 #iâdeà
+_SYS_SOCKET_H
+
+
+23 
+	~<b™s/timesize.h
+>
+
+25 
+	#SOL_SOCKET
+ 1
+
+	)
+
+26 
+	#SO_ACCEPTCONN
+ 30
+
+	)
+
+27 
+	#SO_BROADCAST
+ 6
+
+	)
+
+28 
+	#SO_DONTROUTE
+ 5
+
+	)
+
+29 
+	#SO_ERROR
+ 4
+
+	)
+
+30 
+	#SO_KEEPALIVE
+ 9
+
+	)
+
+31 
+	#SO_LINGER
+ 13
+
+	)
+
+32 
+	#SO_OOBINLINE
+ 10
+
+	)
+
+33 
+	#SO_RCVBUF
+ 8
+
+	)
+
+34 
+	#SO_RCVLOWAT
+ 18
+
+	)
+
+35 
+	#SO_REUSEADDR
+ 2
+
+	)
+
+36 
+	#SO_SNDBUF
+ 7
+
+	)
+
+37 
+	#SO_SNDLOWAT
+ 19
+
+	)
+
+38 
+	#SO_TYPE
+ 3
+
+	)
+
+40 #ià(
+__TIMESIZE
+ =ð64 && 
+__WORDSIZE
+ == 32 \
+
+41 && (!
+defšed
+ 
+	g__SYSCALL_WORDSIZE
+ || __SYSCALL_WORDSIZE == 32))
+
+42 
+	#SO_RCVTIMEO
+ 66
+
+	)
+
+43 
+	#SO_SNDTIMEO
+ 67
+
+	)
+
+44 
+	#SO_TIMESTAMP
+ 63
+
+	)
+
+45 
+	#SO_TIMESTAMPNS
+ 64
+
+	)
+
+46 
+	#SO_TIMESTAMPING
+ 65
+
+	)
+
+48 #ià
+__TIMESIZE
+ == 64
+
+49 
+	#SO_RCVTIMEO
+ 20
+
+	)
+
+50 
+	#SO_SNDTIMEO
+ 21
+
+	)
+
+51 
+	#SO_TIMESTAMP
+ 29
+
+	)
+
+52 
+	#SO_TIMESTAMPNS
+ 35
+
+	)
+
+53 
+	#SO_TIMESTAMPING
+ 37
+
+	)
+
+55 
+	#SO_RCVTIMEO_OLD
+ 20
+
+	)
+
+56 
+	#SO_SNDTIMEO_OLD
+ 21
+
+	)
+
+57 
+	#SO_RCVTIMEO_NEW
+ 66
+
+	)
+
+58 
+	#SO_SNDTIMEO_NEW
+ 67
+
+	)
+
+60 
+	#SO_TIMESTAMP_OLD
+ 29
+
+	)
+
+61 
+	#SO_TIMESTAMPNS_OLD
+ 35
+
+	)
+
+62 
+	#SO_TIMESTAMPING_OLD
+ 37
+
+	)
+
+63 
+	#SO_TIMESTAMP_NEW
+ 63
+
+	)
+
+64 
+	#SO_TIMESTAMPNS_NEW
+ 64
+
+	)
+
+65 
+	#SO_TIMESTAMPING_NEW
+ 65
+
+	)
+
+67 #ifdeà
+__USE_TIME_BITS64
+
+
+68 
+	#SO_RCVTIMEO
+ 
+SO_RCVTIMEO_NEW
+
+
+	)
+
+69 
+	#SO_SNDTIMEO
+ 
+SO_SNDTIMEO_NEW
+
+
+	)
+
+70 
+	#SO_TIMESTAMP
+ 
+SO_TIMESTAMP_NEW
+
+
+	)
+
+71 
+	#SO_TIMESTAMPNS
+ 
+SO_TIMESTAMPNS_NEW
+
+
+	)
+
+72 
+	#SO_TIMESTAMPING
+ 
+SO_TIMESTAMPING_NEW
+
+
+	)
+
+74 
+	#SO_RCVTIMEO
+ 
+SO_RCVTIMEO_OLD
+
+
+	)
+
+75 
+	#SO_SNDTIMEO
+ 
+SO_SNDTIMEO_OLD
+
+
+	)
+
+76 
+	#SO_TIMESTAMP
+ 
+SO_TIMESTAMP_OLD
+
+
+	)
+
+77 
+	#SO_TIMESTAMPNS
+ 
+SO_TIMESTAMPNS_OLD
+
+
+	)
+
+78 
+	#SO_TIMESTAMPING
+ 
+SO_TIMESTAMPING_OLD
+
+
+	)
+
+	@/usr/include/bits/socket_type.h
+
+19 #iâdeà
+_SYS_SOCKET_H
+
+
+24 
+	e__sock‘_ty³
+
+
+26 
+	mSOCK_STREAM
+ = 1,
+
+28 
+	#SOCK_STREAM
+ 
+SOCK_STREAM
+
+
+	)
+
+29 
+	mSOCK_DGRAM
+ = 2,
+
+31 
+	#SOCK_DGRAM
+ 
+SOCK_DGRAM
+
+
+	)
+
+32 
+	mSOCK_RAW
+ = 3,
+
+33 
+	#SOCK_RAW
+ 
+SOCK_RAW
+
+
+	)
+
+34 
+	mSOCK_RDM
+ = 4,
+
+35 
+	#SOCK_RDM
+ 
+SOCK_RDM
+
+
+	)
+
+36 
+	mSOCK_SEQPACKET
+ = 5,
+
+38 
+	#SOCK_SEQPACKET
+ 
+SOCK_SEQPACKET
+
+
+	)
+
+39 
+	mSOCK_DCCP
+ = 6,
+
+40 
+	#SOCK_DCCP
+ 
+SOCK_DCCP
+
+
+	)
+
+41 
+	mSOCK_PACKET
+ = 10,
+
+44 
+	#SOCK_PACKET
+ 
+SOCK_PACKET
+
+
+	)
+
+49 
+	mSOCK_CLOEXEC
+ = 02000000,
+
+51 
+	#SOCK_CLOEXEC
+ 
+SOCK_CLOEXEC
+
+
+	)
+
+52 
+	mSOCK_NONBLOCK
+ = 00004000
+
+54 
+	#SOCK_NONBLOCK
+ 
+SOCK_NONBLOCK
+
+
+	)
+
+	@/usr/include/bits/statx-generic.h
+
+21 #iâdeà
+_SYS_STAT_H
+
+
+22 #”rÜ 
+Nev”
+ 
+šþude
+ <
+b™s
+/
+¡©x
+-
+g’”ic
+.
+h
+> 
+dœeùly
+, inþud�<
+sys
+/
+¡©
+.h> 
+š¡—d
+.
+
+25 
+	~<b™s/ty³s/¡ruù_¡©x_time¡amp.h
+>
+
+26 
+	~<b™s/ty³s/¡ruù_¡©x.h
+>
+
+28 #iâdeà
+STATX_TYPE
+
+
+29 
+	#STATX_TYPE
+ 0x0001U
+
+	)
+
+30 
+	#STATX_MODE
+ 0x0002U
+
+	)
+
+31 
+	#STATX_NLINK
+ 0x0004U
+
+	)
+
+32 
+	#STATX_UID
+ 0x0008U
+
+	)
+
+33 
+	#STATX_GID
+ 0x0010U
+
+	)
+
+34 
+	#STATX_ATIME
+ 0x0020U
+
+	)
+
+35 
+	#STATX_MTIME
+ 0x0040U
+
+	)
+
+36 
+	#STATX_CTIME
+ 0x0080U
+
+	)
+
+37 
+	#STATX_INO
+ 0x0100U
+
+	)
+
+38 
+	#STATX_SIZE
+ 0x0200U
+
+	)
+
+39 
+	#STATX_BLOCKS
+ 0x0400U
+
+	)
+
+40 
+	#STATX_BASIC_STATS
+ 0x07ffU
+
+	)
+
+41 
+	#STATX_ALL
+ 0x0fffU
+
+	)
+
+42 
+	#STATX_BTIME
+ 0x0800U
+
+	)
+
+43 
+	#STATX_MNT_ID
+ 0x1000U
+
+	)
+
+44 
+	#STATX_DIOALIGN
+ 0x2000U
+
+	)
+
+45 
+	#STATX__RESERVED
+ 0x80000000U
+
+	)
+
+47 
+	#STATX_ATTR_COMPRESSED
+ 0x0004
+
+	)
+
+48 
+	#STATX_ATTR_IMMUTABLE
+ 0x0010
+
+	)
+
+49 
+	#STATX_ATTR_APPEND
+ 0x0020
+
+	)
+
+50 
+	#STATX_ATTR_NODUMP
+ 0x0040
+
+	)
+
+51 
+	#STATX_ATTR_ENCRYPTED
+ 0x0800
+
+	)
+
+52 
+	#STATX_ATTR_AUTOMOUNT
+ 0x1000
+
+	)
+
+53 
+	#STATX_ATTR_MOUNT_ROOT
+ 0x2000
+
+	)
+
+54 
+	#STATX_ATTR_VERITY
+ 0x100000
+
+	)
+
+55 
+	#STATX_ATTR_DAX
+ 0x200000
+
+	)
+
+58 
+__BEGIN_DECLS
+
+
+61 
+	$¡©x
+ (
+__dœfd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+, 
+__æags
+,
+
+62 
+__mask
+, 
+¡©x
+ *
+__»¡riù
+ 
+__buf
+)
+
+63 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 5));
+
+65 
+__END_DECLS
+
+
+	@/usr/include/bits/struct_stat.h
+
+19 #ià!
+defšed
+ 
+_SYS_STAT_H
+ && !defšed 
+_FCNTL_H
+
+
+23 #iâdeà
+_BITS_STRUCT_STAT_H
+
+
+24 
+	#_BITS_STRUCT_STAT_H
+ 1
+
+	)
+
+26 
+	s¡©
+
+
+28 #ifdeà
+__USE_TIME_BITS64
+
+
+29 
+	~<b™s/¡ruù_¡©_time64_h–³r.h
+>
+
+31 
+__dev_t
+ 
+	m¡_dev
+;
+
+32 #iâdeà
+__x86_64__
+
+
+33 
+	m__·d1
+;
+
+35 #ià
+defšed
+ 
+__x86_64__
+ || !defšed 
+__USE_FILE_OFFSET64
+
+
+36 
+__šo_t
+ 
+	m¡_šo
+;
+
+38 
+__šo_t
+ 
+	m__¡_šo
+;
+
+40 #iâdeà
+__x86_64__
+
+
+41 
+__mode_t
+ 
+	m¡_mode
+;
+
+42 
+__Æšk_t
+ 
+	m¡_Æšk
+;
+
+44 
+__Æšk_t
+ 
+	m¡_Æšk
+;
+
+45 
+__mode_t
+ 
+	m¡_mode
+;
+
+47 
+__uid_t
+ 
+	m¡_uid
+;
+
+48 
+__gid_t
+ 
+	m¡_gid
+;
+
+49 #ifdeà
+__x86_64__
+
+
+50 
+	m__·d0
+;
+
+52 
+__dev_t
+ 
+	m¡_rdev
+;
+
+53 #iâdeà
+__x86_64__
+
+
+54 
+	m__·d2
+;
+
+56 #ià
+defšed
+ 
+__x86_64__
+ || !defšed 
+__USE_FILE_OFFSET64
+
+
+57 
+__off_t
+ 
+	m¡_size
+;
+
+59 
+__off64_t
+ 
+	m¡_size
+;
+
+61 
+__blksize_t
+ 
+	m¡_blksize
+;
+
+62 #ià
+defšed
+ 
+__x86_64__
+ || !defšed 
+__USE_FILE_OFFSET64
+
+
+63 
+__blkút_t
+ 
+	m¡_blocks
+;
+
+65 
+__blkút64_t
+ 
+	m¡_blocks
+;
+
+67 #ifdeà
+__USE_XOPEN2K8
+
+
+74 
+time¥ec
+ 
+	m¡_©im
+;
+
+75 
+time¥ec
+ 
+	m¡_mtim
+;
+
+76 
+time¥ec
+ 
+	m¡_ùim
+;
+
+77 
+	#¡_©ime
+ 
+¡_©im
+.
+tv_£c
+
+
+	)
+
+78 
+	#¡_mtime
+ 
+¡_mtim
+.
+tv_£c
+
+
+	)
+
+79 
+	#¡_ùime
+ 
+¡_ùim
+.
+tv_£c
+
+
+	)
+
+81 
+__time_t
+ 
+	m¡_©ime
+;
+
+82 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_©im’£c
+;
+
+83 
+__time_t
+ 
+	m¡_mtime
+;
+
+84 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_mtim’£c
+;
+
+85 
+__time_t
+ 
+	m¡_ùime
+;
+
+86 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_ùim’£c
+;
+
+88 #ifdeà
+__x86_64__
+
+
+89 
+__sysÿÎ_¦Úg_t
+ 
+	m__glibc_»£rved
+[3];
+
+91 #iâdeà
+__USE_FILE_OFFSET64
+
+
+92 
+	m__glibc_»£rved4
+;
+
+93 
+	m__glibc_»£rved5
+;
+
+95 
+__šo64_t
+ 
+	m¡_šo
+;
+
+101 #ifdeà
+__USE_LARGEFILE64
+
+
+103 
+	s¡©64
+
+
+105 #ifdeà
+__USE_TIME_BITS64
+
+
+106 
+	~<b™s/¡ruù_¡©_time64_h–³r.h
+>
+
+108 
+__dev_t
+ 
+	m¡_dev
+;
+
+109 #ifdeà
+__x86_64__
+
+
+110 
+__šo64_t
+ 
+	m¡_šo
+;
+
+111 
+__Æšk_t
+ 
+	m¡_Æšk
+;
+
+112 
+__mode_t
+ 
+	m¡_mode
+;
+
+114 
+	m__·d1
+;
+
+115 
+__šo_t
+ 
+	m__¡_šo
+;
+
+116 
+__mode_t
+ 
+	m¡_mode
+;
+
+117 
+__Æšk_t
+ 
+	m¡_Æšk
+;
+
+119 
+__uid_t
+ 
+	m¡_uid
+;
+
+120 
+__gid_t
+ 
+	m¡_gid
+;
+
+121 #ifdeà
+__x86_64__
+
+
+122 
+	m__·d0
+;
+
+123 
+__dev_t
+ 
+	m¡_rdev
+;
+
+124 
+__off_t
+ 
+	m¡_size
+;
+
+126 
+__dev_t
+ 
+	m¡_rdev
+;
+
+127 
+	m__·d2
+;
+
+128 
+__off64_t
+ 
+	m¡_size
+;
+
+130 
+__blksize_t
+ 
+	m¡_blksize
+;
+
+131 
+__blkút64_t
+ 
+	m¡_blocks
+;
+
+132 #ifdeà
+__USE_XOPEN2K8
+
+
+139 
+time¥ec
+ 
+	m¡_©im
+;
+
+140 
+time¥ec
+ 
+	m¡_mtim
+;
+
+141 
+time¥ec
+ 
+	m¡_ùim
+;
+
+143 
+__time_t
+ 
+	m¡_©ime
+;
+
+144 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_©im’£c
+;
+
+145 
+__time_t
+ 
+	m¡_mtime
+;
+
+146 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_mtim’£c
+;
+
+147 
+__time_t
+ 
+	m¡_ùime
+;
+
+148 
+__sysÿÎ_ulÚg_t
+ 
+	m¡_ùim’£c
+;
+
+150 #ifdeà
+__x86_64__
+
+
+151 
+__sysÿÎ_¦Úg_t
+ 
+	m__glibc_»£rved
+[3];
+
+153 
+__šo64_t
+ 
+	m¡_šo
+;
+
+160 
+	#_STATBUF_ST_BLKSIZE
+
+
+	)
+
+161 
+	#_STATBUF_ST_RDEV
+
+
+	)
+
+163 
+	#_STATBUF_ST_NSEC
+
+
+	)
+
+	@/usr/include/bits/syslog-ldbl.h
+
+19 #iâdeà
+_SYS_SYSLOG_H
+
+
+23 
+	$__LDBL_REDIR_DECL
+ (
+sy¦og
+)
+
+25 #ifdeà
+__USE_MISC
+
+
+26 
+	$__LDBL_REDIR_DECL
+ (
+vsy¦og
+)
+
+29 #ià
+__USE_FORTIFY_LEVEL
+ > 0 && 
+defšed
+ 
+__fÜtify_funùiÚ
+
+
+30 
+	$__LDBL_REDIR2_DECL
+ (
+sy¦og_chk
+)
+
+32 #ifdeà
+__USE_MISC
+
+
+33 
+	$__LDBL_REDIR2_DECL
+ (
+vsy¦og_chk
+)
+
+	@/usr/include/bits/syslog-path.h
+
+19 #iâdeà
+_SYS_SYSLOG_H
+
+
+23 #iâdeà
+_BITS_SYSLOG_PATH_H
+
+
+24 
+	#_BITS_SYSLOG_PATH_H
+ 1
+
+	)
+
+26 
+	#_PATH_LOG
+ "/dev/log"
+
+	)
+
+	@/usr/include/bits/syslog.h
+
+19 #iâdeà
+_SYS_SYSLOG_H
+
+
+23 
+	~<b™s/sy¦og-deþ.h
+>
+
+25 
+	~<b™s/æßŠ.h
+>
+
+26 #ià
+defšed
+ 
+__LDBL_COMPAT
+ || 
+__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+ == 1
+
+27 
+	~<b™s/sy¦og-ldbl.h
+>
+
+33 #ifdeà
+__va_¬g_·ck
+
+
+34 
+__fÜtify_funùiÚ
+ 
+
+35 
+	$sy¦og
+ (
+__´i
+, cÚ¡ *
+__fmt
+, ...)
+
+37 
+	`__sy¦og_chk
+ (
+__´i
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+	`__va_¬g_·ck
+ ());
+
+38 
+	}
+}
+
+39 #–ià!
+defšed
+ 
+__ýlu¥lus
+
+
+40 
+	#sy¦og
+(
+´i
+, ...) \
+
+41 
+	`__sy¦og_chk
+ (
+´i
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__VA_ARGS__
+)
+
+	)
+
+45 #ifdeà
+__USE_MISC
+
+
+46 
+__fÜtify_funùiÚ
+ 
+
+47 
+	$vsy¦og
+ (
+__´i
+, cÚ¡ *
+__fmt
+, 
+__gnuc_va_li¡
+ 
+__­
+)
+
+49 
+	`__vsy¦og_chk
+ (
+__´i
+, 
+__USE_FORTIFY_LEVEL
+ - 1, 
+__fmt
+, 
+__­
+);
+
+50 
+	}
+}
+
+	@/usr/include/bits/thread-shared-types.h
+
+19 #iâdeà
+_THREAD_SHARED_TYPES_H
+
+
+20 
+	#_THREAD_SHARED_TYPES_H
+ 1
+
+	)
+
+44 
+	~<b™s/±h»adty³s-¬ch.h
+>
+
+46 
+	~<b™s/©omic_wide_couÁ”.h
+>
+
+51 
+	s__±h»ad_š‹º®_li¡
+
+
+53 
+__±h»ad_š‹º®_li¡
+ *
+	m__´ev
+;
+
+54 
+__±h»ad_š‹º®_li¡
+ *
+	m__Ãxt
+;
+
+55 } 
+	t__±h»ad_li¡_t
+;
+
+57 
+	s__±h»ad_š‹º®_¦i¡
+
+
+59 
+__±h»ad_š‹º®_¦i¡
+ *
+	m__Ãxt
+;
+
+60 } 
+	t__±h»ad_¦i¡_t
+;
+
+76 
+	~<b™s/¡ruù_mu‹x.h
+>
+
+89 
+	~<b™s/¡ruù_rwlock.h
+>
+
+94 
+	s__±h»ad_cÚd_s
+
+
+96 
+__©omic_wide_couÁ”
+ 
+	m__w£q
+;
+
+97 
+__©omic_wide_couÁ”
+ 
+	m__g1_¡¬t
+;
+
+98 
+	m__g_»fs
+[2] 
+	m__LOCK_ALIGNMENT
+;
+
+99 
+	m__g_size
+[2];
+
+100 
+	m__g1_Üig_size
+;
+
+101 
+	m__w»fs
+;
+
+102 
+	m__g_sigÇls
+[2];
+
+105 
+	t__tss_t
+;
+
+106 
+	t__thrd_t
+;
+
+110 
+__d©a
+ 
+	m__ONCE_ALIGNMENT
+;
+
+111 } 
+	t__Úû_æag
+;
+
+113 
+	#__ONCE_FLAG_INIT
+ { 0 }
+
+	)
+
+	@/usr/include/bits/time64.h
+
+19 #iâdeà
+_BITS_TYPES_H
+
+
+23 #iâdef 
+_BITS_TIME64_H
+
+
+24 
+	#_BITS_TIME64_H
+ 1
+
+	)
+
+28 #ià
+__TIMESIZE
+ == 64
+
+30 
+	#__TIME64_T_TYPE
+ 
+__TIME_T_TYPE
+
+
+	)
+
+33 
+	#__TIME64_T_TYPE
+ 
+__SQUAD_TYPE
+
+
+	)
+
+	@/usr/include/bits/timesize.h
+
+19 
+	~<b™s/wÜdsize.h
+>
+
+21 #ià
+defšed
+ 
+__x86_64__
+ && defšed 
+__ILP32__
+
+
+23 
+	#__TIMESIZE
+ 64
+
+	)
+
+26 
+	#__TIMESIZE
+ 
+__WORDSIZE
+
+
+	)
+
+	@/usr/include/bits/timex.h
+
+18 #iâdef 
+_BITS_TIMEX_H
+
+
+19 
+	#_BITS_TIMEX_H
+ 1
+
+	)
+
+21 
+	~<b™s/ty³s.h
+>
+
+22 
+	~<b™s/ty³s/¡ruù_timev®.h
+>
+
+26 
+	stimex
+
+
+28 #ià
+defšed
+ 
+__USE_TIME_BITS64
+ || (
+__TIMESIZE
+ =ð64 && 
+__WORDSIZE
+ == 32)
+
+29 
+	mmodes
+;
+
+31 
+	moff£t
+;
+
+32 
+	mäeq
+;
+
+33 
+	mmax”rÜ
+;
+
+34 
+	me¡”rÜ
+;
+
+35 
+	m¡©us
+;
+
+37 
+	mcÚ¡ªt
+;
+
+38 
+	m´ecisiÚ
+;
+
+39 
+	mtÞ”ªû
+;
+
+40 
+timev®
+ 
+	mtime
+;
+
+41 
+	mtick
+;
+
+42 
+	mµsäeq
+;
+
+43 
+	mj™‹r
+;
+
+44 
+	mshiá
+;
+
+46 
+	m¡abž
+;
+
+47 
+	mj™út
+;
+
+48 
+	mÿlút
+;
+
+49 
+	m”rút
+;
+
+50 
+	m¡bút
+;
+
+52 
+	m�i
+;
+
+58 
+	mmodes
+;
+
+59 
+__sysÿÎ_¦Úg_t
+ 
+	moff£t
+;
+
+60 
+__sysÿÎ_¦Úg_t
+ 
+	mäeq
+;
+
+61 
+__sysÿÎ_¦Úg_t
+ 
+	mmax”rÜ
+;
+
+62 
+__sysÿÎ_¦Úg_t
+ 
+	me¡”rÜ
+;
+
+63 
+	m¡©us
+;
+
+64 
+__sysÿÎ_¦Úg_t
+ 
+	mcÚ¡ªt
+;
+
+65 
+__sysÿÎ_¦Úg_t
+ 
+	m´ecisiÚ
+;
+
+66 
+__sysÿÎ_¦Úg_t
+ 
+	mtÞ”ªû
+;
+
+67 
+timev®
+ 
+	mtime
+;
+
+68 
+__sysÿÎ_¦Úg_t
+ 
+	mtick
+;
+
+69 
+__sysÿÎ_¦Úg_t
+ 
+	mµsäeq
+;
+
+70 
+__sysÿÎ_¦Úg_t
+ 
+	mj™‹r
+;
+
+71 
+	mshiá
+;
+
+72 
+__sysÿÎ_¦Úg_t
+ 
+	m¡abž
+;
+
+73 
+__sysÿÎ_¦Úg_t
+ 
+	mj™út
+;
+
+74 
+__sysÿÎ_¦Úg_t
+ 
+	mÿlút
+;
+
+75 
+__sysÿÎ_¦Úg_t
+ 
+	m”rút
+;
+
+76 
+__sysÿÎ_¦Úg_t
+ 
+	m¡bút
+;
+
+78 
+	m�i
+;
+
+88 
+	#ADJ_OFFSET
+ 0x0001
+
+	)
+
+89 
+	#ADJ_FREQUENCY
+ 0x0002
+
+	)
+
+90 
+	#ADJ_MAXERROR
+ 0x0004
+
+	)
+
+91 
+	#ADJ_ESTERROR
+ 0x0008
+
+	)
+
+92 
+	#ADJ_STATUS
+ 0x0010
+
+	)
+
+93 
+	#ADJ_TIMECONST
+ 0x0020
+
+	)
+
+94 
+	#ADJ_TAI
+ 0x0080
+
+	)
+
+95 
+	#ADJ_SETOFFSET
+ 0x0100
+
+	)
+
+96 
+	#ADJ_MICRO
+ 0x1000
+
+	)
+
+97 
+	#ADJ_NANO
+ 0x2000
+
+	)
+
+98 
+	#ADJ_TICK
+ 0x4000
+
+	)
+
+99 
+	#ADJ_OFFSET_SINGLESHOT
+ 0x8001
+
+	)
+
+100 
+	#ADJ_OFFSET_SS_READ
+ 0xa001
+
+	)
+
+103 
+	#MOD_OFFSET
+ 
+ADJ_OFFSET
+
+
+	)
+
+104 
+	#MOD_FREQUENCY
+ 
+ADJ_FREQUENCY
+
+
+	)
+
+105 
+	#MOD_MAXERROR
+ 
+ADJ_MAXERROR
+
+
+	)
+
+106 
+	#MOD_ESTERROR
+ 
+ADJ_ESTERROR
+
+
+	)
+
+107 
+	#MOD_STATUS
+ 
+ADJ_STATUS
+
+
+	)
+
+108 
+	#MOD_TIMECONST
+ 
+ADJ_TIMECONST
+
+
+	)
+
+109 
+	#MOD_CLKB
+ 
+ADJ_TICK
+
+
+	)
+
+110 
+	#MOD_CLKA
+ 
+ADJ_OFFSET_SINGLESHOT
+
+
+	)
+
+111 
+	#MOD_TAI
+ 
+ADJ_TAI
+
+
+	)
+
+112 
+	#MOD_MICRO
+ 
+ADJ_MICRO
+
+
+	)
+
+113 
+	#MOD_NANO
+ 
+ADJ_NANO
+
+
+	)
+
+117 
+	#STA_PLL
+ 0x0001
+
+	)
+
+118 
+	#STA_PPSFREQ
+ 0x0002
+
+	)
+
+119 
+	#STA_PPSTIME
+ 0x0004
+
+	)
+
+120 
+	#STA_FLL
+ 0x0008
+
+	)
+
+122 
+	#STA_INS
+ 0x0010
+
+	)
+
+123 
+	#STA_DEL
+ 0x0020
+
+	)
+
+124 
+	#STA_UNSYNC
+ 0x0040
+
+	)
+
+125 
+	#STA_FREQHOLD
+ 0x0080
+
+	)
+
+127 
+	#STA_PPSSIGNAL
+ 0x0100
+
+	)
+
+128 
+	#STA_PPSJITTER
+ 0x0200
+
+	)
+
+129 
+	#STA_PPSWANDER
+ 0x0400
+
+	)
+
+130 
+	#STA_PPSERROR
+ 0x0800
+
+	)
+
+132 
+	#STA_CLOCKERR
+ 0x1000
+
+	)
+
+133 
+	#STA_NANO
+ 0x2000
+
+	)
+
+134 
+	#STA_MODE
+ 0x4000
+
+	)
+
+135 
+	#STA_CLK
+ 0x8000
+
+	)
+
+138 
+	#STA_RONLY
+ (
+STA_PPSSIGNAL
+ | 
+STA_PPSJITTER
+ | 
+STA_PPSWANDER
+ \
+
+139 | 
+STA_PPSERROR
+ | 
+STA_CLOCKERR
+ | 
+STA_NANO
+ | 
+STA_MODE
+ | 
+STA_CLK
+)
+
+	)
+
+	@/usr/include/bits/types/__locale_t.h
+
+19 #iâdeà
+_BITS_TYPES___LOCALE_T_H
+
+
+20 
+	#_BITS_TYPES___LOCALE_T_H
+ 1
+
+	)
+
+27 
+	s__loÿË_¡ruù
+
+
+30 
+__loÿË_d©a
+ *
+	m__loÿËs
+[13];
+
+33 cÚ¡ *
+	m__ùy³_b
+;
+
+34 cÚ¡ *
+	m__ùy³_tÞow”
+;
+
+35 cÚ¡ *
+	m__ùy³_touµ”
+;
+
+38 cÚ¡ *
+	m__Çmes
+[13];
+
+41 
+__loÿË_¡ruù
+ *
+	t__loÿË_t
+;
+
+	@/usr/include/bits/types/__mbstate_t.h
+
+1 #iâdeà
+____mb¡©e_t_defšed
+
+
+2 
+	#____mb¡©e_t_defšed
+ 1
+
+	)
+
+8 #iâdeà
+__WINT_TYPE__
+
+
+9 
+	#__WINT_TYPE__
+ 
+
+	)
+
+15 
+	m__couÁ
+;
+
+18 
+__WINT_TYPE__
+ 
+	m__wch
+;
+
+19 
+	m__wchb
+[4];
+
+20 } 
+	m__v®ue
+;
+
+21 } 
+	t__mb¡©e_t
+;
+
+	@/usr/include/bits/types/__sigval_t.h
+
+19 #iâdeà
+____sigv®_t_defšed
+
+
+20 
+	#____sigv®_t_defšed
+
+
+	)
+
+23 #ifdeà
+__USE_POSIX199309
+
+
+24 
+	usigv®
+
+
+26 
+	msiv®_št
+;
+
+27 *
+	msiv®_±r
+;
+
+30 
+sigv®
+ 
+	t__sigv®_t
+;
+
+32 
+	u__sigv®
+
+
+34 
+	m__siv®_št
+;
+
+35 *
+	m__siv®_±r
+;
+
+38 
+__sigv®
+ 
+	t__sigv®_t
+;
+
+	@/usr/include/bits/typesizes.h
+
+19 #iâdeà
+_BITS_TYPES_H
+
+
+23 #iâdef 
+_BITS_TYPESIZES_H
+
+
+24 
+	#_BITS_TYPESIZES_H
+ 1
+
+	)
+
+30 #ià
+defšed
+ 
+__x86_64__
+ && defšed 
+__ILP32__
+
+
+31 
+	#__SYSCALL_SLONG_TYPE
+ 
+__SQUAD_TYPE
+
+
+	)
+
+32 
+	#__SYSCALL_ULONG_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+34 
+	#__SYSCALL_SLONG_TYPE
+ 
+__SLONGWORD_TYPE
+
+
+	)
+
+35 
+	#__SYSCALL_ULONG_TYPE
+ 
+__ULONGWORD_TYPE
+
+
+	)
+
+38 
+	#__DEV_T_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+39 
+	#__UID_T_TYPE
+ 
+__U32_TYPE
+
+
+	)
+
+40 
+	#__GID_T_TYPE
+ 
+__U32_TYPE
+
+
+	)
+
+41 
+	#__INO_T_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+42 
+	#__INO64_T_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+43 
+	#__MODE_T_TYPE
+ 
+__U32_TYPE
+
+
+	)
+
+44 #ifdeà
+__x86_64__
+
+
+45 
+	#__NLINK_T_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+46 
+	#__FSWORD_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+48 
+	#__NLINK_T_TYPE
+ 
+__UWORD_TYPE
+
+
+	)
+
+49 
+	#__FSWORD_T_TYPE
+ 
+__SWORD_TYPE
+
+
+	)
+
+51 
+	#__OFF_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+52 
+	#__OFF64_T_TYPE
+ 
+__SQUAD_TYPE
+
+
+	)
+
+53 
+	#__PID_T_TYPE
+ 
+__S32_TYPE
+
+
+	)
+
+54 
+	#__RLIM_T_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+55 
+	#__RLIM64_T_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+56 
+	#__BLKCNT_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+57 
+	#__BLKCNT64_T_TYPE
+ 
+__SQUAD_TYPE
+
+
+	)
+
+58 
+	#__FSBLKCNT_T_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+59 
+	#__FSBLKCNT64_T_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+60 
+	#__FSFILCNT_T_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+61 
+	#__FSFILCNT64_T_TYPE
+ 
+__UQUAD_TYPE
+
+
+	)
+
+62 
+	#__ID_T_TYPE
+ 
+__U32_TYPE
+
+
+	)
+
+63 
+	#__CLOCK_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+64 
+	#__TIME_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+65 
+	#__USECONDS_T_TYPE
+ 
+__U32_TYPE
+
+
+	)
+
+66 
+	#__SUSECONDS_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+67 
+	#__SUSECONDS64_T_TYPE
+ 
+__SQUAD_TYPE
+
+
+	)
+
+68 
+	#__DADDR_T_TYPE
+ 
+__S32_TYPE
+
+
+	)
+
+69 
+	#__KEY_T_TYPE
+ 
+__S32_TYPE
+
+
+	)
+
+70 
+	#__CLOCKID_T_TYPE
+ 
+__S32_TYPE
+
+
+	)
+
+71 
+	#__TIMER_T_TYPE
+ *
+
+	)
+
+72 
+	#__BLKSIZE_T_TYPE
+ 
+__SYSCALL_SLONG_TYPE
+
+
+	)
+
+73 
+	#__FSID_T_TYPE
+ sŒuù { 
+__v®
+[2]; }
+
+	)
+
+74 
+	#__SSIZE_T_TYPE
+ 
+__SWORD_TYPE
+
+
+	)
+
+75 
+	#__CPU_MASK_TYPE
+ 
+__SYSCALL_ULONG_TYPE
+
+
+	)
+
+77 #ifdeà
+__x86_64__
+
+
+81 
+	#__OFF_T_MATCHES_OFF64_T
+ 1
+
+	)
+
+84 
+	#__INO_T_MATCHES_INO64_T
+ 1
+
+	)
+
+87 
+	#__RLIM_T_MATCHES_RLIM64_T
+ 1
+
+	)
+
+90 
+	#__STATFS_MATCHES_STATFS64
+ 1
+
+	)
+
+93 
+	#__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64
+ 1
+
+	)
+
+95 
+	#__RLIM_T_MATCHES_RLIM64_T
+ 0
+
+	)
+
+97 
+	#__STATFS_MATCHES_STATFS64
+ 0
+
+	)
+
+99 
+	#__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64
+ 0
+
+	)
+
+103 
+	#__FD_SETSIZE
+ 1024
+
+	)
+
+	@/usr/include/bits/unistd-decl.h
+
+19 #iâdeà
+_BITS_UNISTD_DECL_H
+
+
+20 
+	#_BITS_UNISTD_DECL_H
+ 1
+
+	)
+
+22 #iâdeà
+_UNISTD_H
+
+
+26 
+ssize_t
+ 
+	$__»ad_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+27 
+size_t
+ 
+__buæ’
+)
+
+28 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+29 
+ssize_t
+ 
+	`__REDIRECT_FORTIFY
+ (
+__»ad_®Ÿs
+, (
+__fd
+, *
+__buf
+,
+
+30 
+size_t
+ 
+__nby‹s
+), 
+»ad
+)
+
+31 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+32 
+ssize_t
+ 
+	`__REDIRECT
+ (
+__»ad_chk_w¬n
+,
+
+33 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+34 
+size_t
+ 
+__buæ’
+), 
+__»ad_chk
+)
+
+35 
+__wur
+ 
+	`__w¬Ç‰r
+ ("read called with bigger†ength�han size of "
+
+38 #ià
+defšed
+ 
+__USE_UNIX98
+ || defšed 
+__USE_XOPEN2K8
+
+
+39 
+ssize_t
+ 
+	$__´—d_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+40 
+__off_t
+ 
+__off£t
+, 
+size_t
+ 
+__bufsize
+)
+
+41 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+42 
+ssize_t
+ 
+	$__´—d64_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+43 
+__off64_t
+ 
+__off£t
+, 
+size_t
+ 
+__bufsize
+)
+
+44 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+45 
+ssize_t
+ 
+	`__REDIRECT
+ (
+__´—d_®Ÿs
+,
+
+46 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+47 
+__off_t
+ 
+__off£t
+), 
+´—d
+)
+
+48 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+49 
+ssize_t
+ 
+	`__REDIRECT
+ (
+__´—d64_®Ÿs
+,
+
+50 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+51 
+__off64_t
+ 
+__off£t
+), 
+´—d64
+)
+
+52 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+53 
+ssize_t
+ 
+	`__REDIRECT
+ (
+__´—d_chk_w¬n
+,
+
+54 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+55 
+__off_t
+ 
+__off£t
+, 
+size_t
+ 
+__bufsize
+), 
+__´—d_chk
+)
+
+56 
+__wur
+ 
+	`__w¬Ç‰r
+ ("pread called with bigger†ength�han size of "
+
+58 
+ssize_t
+ 
+	`__REDIRECT
+ (
+__´—d64_chk_w¬n
+,
+
+59 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__nby‹s
+,
+
+60 
+__off64_t
+ 
+__off£t
+, 
+size_t
+ 
+__bufsize
+),
+
+61 
+__´—d64_chk
+)
+
+62 
+__wur
+ 
+	`__w¬Ç‰r
+ ("pread64 called with bigger†ength�han size of "
+
+66 #ià
+defšed
+ 
+__USE_XOPEN_EXTENDED
+ || defšed 
+__USE_XOPEN2K
+
+
+67 
+ssize_t
+ 
+	$__»adlšk_chk
+ (cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+68 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+69 
+size_t
+ 
+__buæ’
+)
+
+70 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+71 
+ssize_t
+ 
+	`__REDIRECT_NTH
+ (
+__»adlšk_®Ÿs
+,
+
+72 (cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+73 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+), 
+»adlšk
+)
+
+74 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+75 
+ssize_t
+ 
+	`__REDIRECT_NTH
+ (
+__»adlšk_chk_w¬n
+,
+
+76 (cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+77 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+78 
+size_t
+ 
+__buæ’
+), 
+__»adlšk_chk
+)
+
+79 
+	`__nÚnuÎ
+ ((1, 2)è
+__wur
+ 
+	`__w¬Ç‰r
+ ("readlink called with bigger†ength "
+
+83 #ifdeà
+__USE_ATFILE
+
+
+84 
+ssize_t
+ 
+	$__»adlšk©_chk
+ (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+85 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+86 
+size_t
+ 
+__buæ’
+)
+
+87 
+__THROW
+ 
+	`__nÚnuÎ
+ ((2, 3)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+88 
+ssize_t
+ 
+	`__REDIRECT_NTH
+ (
+__»adlšk©_®Ÿs
+,
+
+89 (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+90 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+),
+
+91 
+»adlšk©
+)
+
+92 
+	`__nÚnuÎ
+ ((2, 3)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 3, 4));
+
+93 
+ssize_t
+ 
+	`__REDIRECT_NTH
+ (
+__»adlšk©_chk_w¬n
+,
+
+94 (
+__fd
+, cÚ¡ *
+__»¡riù
+ 
+__·th
+,
+
+95 *
+__»¡riù
+ 
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+96 
+size_t
+ 
+__buæ’
+), 
+__»adlšk©_chk
+)
+
+97 
+	`__nÚnuÎ
+ ((2, 3)è
+__wur
+ 
+	`__w¬Ç‰r
+ ("readlinkat called with bigger "
+
+102 
*
+	$__g‘cwd_chk
+ (*
+__buf
+, 
+size_t
+ 
+__size
+, size_ˆ
+__buæ’
+)
+
+103 
+__THROW
+ 
+__wur
+;
+
+104 
*
+	`__REDIRECT_NTH
+ (
+__g‘cwd_®Ÿs
+,
+
+105 (*
+__buf
+, 
+size_t
+ 
+__size
+), 
+g‘cwd
+è
+__wur
+;
+
+106 
*
+	`__REDIRECT_NTH
+ (
+__g‘cwd_chk_w¬n
+,
+
+107 (*
+__buf
+, 
+size_t
+ 
+__size
+, size_ˆ
+__buæ’
+),
+
+108 
+__g‘cwd_chk
+)
+
+109 
+__wur
+ 
+	`__w¬Ç‰r
+ ("getcwd caller with bigger†ength�han size of "
+
+112 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_XOPEN_EXTENDED
+
+
+113 
*
+	$__g‘wd_chk
+ (*
+__buf
+, 
+size_t
+ 
+buæ’
+)
+
+114 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+115 
*
+	`__REDIRECT_NTH
+ (
+__g‘wd_w¬n
+, (*
+__buf
+), 
+g‘wd
+)
+
+116 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__w¬Ç‰r
+ ("please use getcwd instead,‡s getwd "
+
+120 
+size_t
+ 
+	$__cÚf¡r_chk
+ (
+__Çme
+, *
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+121 
+size_t
+ 
+__buæ’
+è
+__THROW
+
+
+122 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+123 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__cÚf¡r_®Ÿs
+, (
+__Çme
+, *
+__buf
+,
+
+124 
+size_t
+ 
+__Ën
+), 
+cÚf¡r
+)
+
+125 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+126 
+size_t
+ 
+	`__REDIRECT_NTH
+ (
+__cÚf¡r_chk_w¬n
+,
+
+127 (
+__Çme
+, *
+__buf
+, 
+size_t
+ 
+__Ën
+,
+
+128 
+size_t
+ 
+__buæ’
+), 
+__cÚf¡r_chk
+)
+
+129 
+	`__w¬Ç‰r
+ ("confstr called with bigger†ength�han size of destination "
+
+133 

+	$__g‘groups_chk
+ (
+__size
+, 
+__gid_t
+ 
+__li¡
+[], 
+size_t
+ 
+__li¡Ën
+)
+
+134 
+__THROW
+ 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 1));
+
+135 

+	`__REDIRECT_NTH
+ (
+__g‘groups_®Ÿs
+, (
+__size
+, 
+__gid_t
+ 
+__li¡
+[]),
+
+136 
+g‘groups
+è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 1));
+
+137 

+	`__REDIRECT_NTH
+ (
+__g‘groups_chk_w¬n
+,
+
+138 (
+__size
+, 
+__gid_t
+ 
+__li¡
+[], 
+size_t
+ 
+__li¡Ën
+),
+
+139 
+__g‘groups_chk
+)
+
+140 
+__wur
+ 
+	`__w¬Ç‰r
+ ("getgroups called with bigger group count�han what "
+
+144 

+	$__‰yÇme_r_chk
+ (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+145 
+size_t
+ 
+__Ä—l
+è
+__THROW
+ 
+	`__nÚnuÎ
+ ((2))
+
+146 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 2, 3));
+
+147 

+	`__REDIRECT_NTH
+ (
+__‰yÇme_r_®Ÿs
+, (
+__fd
+, *
+__buf
+,
+
+148 
+size_t
+ 
+__buæ’
+), 
+‰yÇme_r
+)
+
+149 
+	`__nÚnuÎ
+ ((2));
+
+150 

+	`__REDIRECT_NTH
+ (
+__‰yÇme_r_chk_w¬n
+,
+
+151 (
+__fd
+, *
+__buf
+, 
+size_t
+ 
+__buæ’
+,
+
+152 
+size_t
+ 
+__Ä—l
+), 
+__‰yÇme_r_chk
+)
+
+153 
+	`__nÚnuÎ
+ ((2)è
+	`__w¬Ç‰r
+ ("ttyname_r called with bigger buflen�han "
+
+157 #ifdeà
+__USE_POSIX199506
+
+
+158 

+	$__g‘logš_r_chk
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+)
+
+159 
+	`__nÚnuÎ
+ ((1)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+160 

+	`__REDIRECT_FORTIFY
+ (
+__g‘logš_r_®Ÿs
+, (*
+__buf
+, 
+size_t
+ 
+__buæ’
+),
+
+161 
+g‘logš_r
+è
+	`__nÚnuÎ
+ ((1));
+
+162 

+	`__REDIRECT
+ (
+__g‘logš_r_chk_w¬n
+,
+
+163 (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+),
+
+164 
+__g‘logš_r_chk
+)
+
+165 
+	`__nÚnuÎ
+ ((1)è
+	`__w¬Ç‰r
+ ("getlogin_r called with bigger buflen�han "
+
+170 #ià
+defšed
+ 
+__USE_MISC
+ || defšed 
+__USE_UNIX98
+
+
+171 

+	$__g‘ho¡Çme_chk
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+)
+
+172 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+173 

+	`__REDIRECT_NTH
+ (
+__g‘ho¡Çme_®Ÿs
+, (*
+__buf
+, 
+size_t
+ 
+__buæ’
+),
+
+174 
+g‘ho¡Çme
+)
+
+175 
+	`__nÚnuÎ
+ ((1)è
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+176 

+	`__REDIRECT_NTH
+ (
+__g‘ho¡Çme_chk_w¬n
+,
+
+177 (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+),
+
+178 
+__g‘ho¡Çme_chk
+)
+
+179 
+	`__nÚnuÎ
+ ((1)è
+	`__w¬Ç‰r
+ ("gethostname called with bigger buflen�han "
+
+184 #ià
+defšed
+ 
+__USE_MISC
+ || (defšed 
+__USE_XOPEN
+ && !defšed 
+__USE_UNIX98
+)
+
+185 

+	$__g‘domašÇme_chk
+ (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+)
+
+186 
+__THROW
+ 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+187 

+	`__REDIRECT_FORTIFY_NTH
+ (
+__g‘domašÇme_®Ÿs
+, (*
+__buf
+,
+
+188 
+size_t
+ 
+__buæ’
+),
+
+189 
+g‘domašÇme
+è
+	`__nÚnuÎ
+ ((1))
+
+190 
+__wur
+ 
+	`__©Œ_acûss
+ ((
+__wr™e_Úly__
+, 1, 2));
+
+191 

+	`__REDIRECT_NTH
+ (
+__g‘domašÇme_chk_w¬n
+,
+
+192 (*
+__buf
+, 
+size_t
+ 
+__buæ’
+, size_ˆ
+__Ä—l
+),
+
+193 
+__g‘domašÇme_chk
+)
+
+194 
+	`__nÚnuÎ
+ ((1)è
+__wur
+ 
+	`__w¬Ç‰r
+ ("getdomainname called with bigger "
+
+	@/usr/include/features-time64.h
+
+20 
+	~<b™s/wÜdsize.h
+>
+
+21 
+	~<b™s/timesize.h
+>
+
+23 #ià
+defšed
+ 
+_TIME_BITS
+
+
+24 #ià
+_TIME_BITS
+ == 64
+
+25 #ià! 
+defšed
+ (
+_FILE_OFFSET_BITS
+) || _FILE_OFFSET_BITS != 64
+
+27 #–ià
+__TIMESIZE
+ == 32
+
+28 
+	#__USE_TIME_BITS64
+ 1
+
+	)
+
+30 #–ià
+_TIME_BITS
+ == 32
+
+31 #ià
+__TIMESIZE
+ > 32
+
+35 #”rÜ 
+Inv®id
+ 
+_TIME_BITS
+ 
+v®ue
+ (
+ÿn
+ 
+Úly
+ 
+be
+ 32 
+Ü
+ 64-
+b™
+)
+
+	@/usr/include/gnu/stubs.h
+
+6 #ià!
+defšed
+ 
+__x86_64__
+
+
+7 
+	~<gnu/¡ubs-32.h
+>
+
+9 #ià
+defšed
+ 
+__x86_64__
+ && defšed 
+__LP64__
+
+
+10 
+	~<gnu/¡ubs-64.h
+>
+
+12 #ià
+defšed
+ 
+__x86_64__
+ && defšed 
+__ILP32__
+
+
+13 
+	~<gnu/¡ubs-x32.h
+>
+
+	@/usr/include/linux/bpf_common.h
+
+2 #iâdeà
+__LINUX_BPF_COMMON_H__
+
+
+3 
+	#__LINUX_BPF_COMMON_H__
+
+
+	)
+
+6 
+	#BPF_CLASS
+(
+code
+è((codeè& 0x07)
+
+	)
+
+7 
+	#BPF_LD
+ 0x00
+
+	)
+
+8 
+	#BPF_LDX
+ 0x01
+
+	)
+
+9 
+	#BPF_ST
+ 0x02
+
+	)
+
+10 
+	#BPF_STX
+ 0x03
+
+	)
+
+11 
+	#BPF_ALU
+ 0x04
+
+	)
+
+12 
+	#BPF_JMP
+ 0x05
+
+	)
+
+13 
+	#BPF_RET
+ 0x06
+
+	)
+
+14 
+	#BPF_MISC
+ 0x07
+
+	)
+
+17 
+	#BPF_SIZE
+(
+code
+è((codeè& 0x18)
+
+	)
+
+18 
+	#BPF_W
+ 0x00
+
+	)
+
+19 
+	#BPF_H
+ 0x08
+
+	)
+
+20 
+	#BPF_B
+ 0x10
+
+	)
+
+22 
+	#BPF_MODE
+(
+code
+è((codeè& 0xe0)
+
+	)
+
+23 
+	#BPF_IMM
+ 0x00
+
+	)
+
+24 
+	#BPF_ABS
+ 0x20
+
+	)
+
+25 
+	#BPF_IND
+ 0x40
+
+	)
+
+26 
+	#BPF_MEM
+ 0x60
+
+	)
+
+27 
+	#BPF_LEN
+ 0x80
+
+	)
+
+28 
+	#BPF_MSH
+ 0xa0
+
+	)
+
+31 
+	#BPF_OP
+(
+code
+è((codeè& 0xf0)
+
+	)
+
+32 
+	#BPF_ADD
+ 0x00
+
+	)
+
+33 
+	#BPF_SUB
+ 0x10
+
+	)
+
+34 
+	#BPF_MUL
+ 0x20
+
+	)
+
+35 
+	#BPF_DIV
+ 0x30
+
+	)
+
+36 
+	#BPF_OR
+ 0x40
+
+	)
+
+37 
+	#BPF_AND
+ 0x50
+
+	)
+
+38 
+	#BPF_LSH
+ 0x60
+
+	)
+
+39 
+	#BPF_RSH
+ 0x70
+
+	)
+
+40 
+	#BPF_NEG
+ 0x80
+
+	)
+
+41 
+	#BPF_MOD
+ 0x90
+
+	)
+
+42 
+	#BPF_XOR
+ 0xa0
+
+	)
+
+44 
+	#BPF_JA
+ 0x00
+
+	)
+
+45 
+	#BPF_JEQ
+ 0x10
+
+	)
+
+46 
+	#BPF_JGT
+ 0x20
+
+	)
+
+47 
+	#BPF_JGE
+ 0x30
+
+	)
+
+48 
+	#BPF_JSET
+ 0x40
+
+	)
+
+49 
+	#BPF_SRC
+(
+code
+è((codeè& 0x08)
+
+	)
+
+50 
+	#BPF_K
+ 0x00
+
+	)
+
+51 
+	#BPF_X
+ 0x08
+
+	)
+
+53 #iâdeà
+BPF_MAXINSNS
+
+
+54 
+	#BPF_MAXINSNS
+ 4096
+
+	)
+
+	@/usr/include/linux/close_range.h
+
+2 #iâdeà
+_LINUX_CLOSE_RANGE_H
+
+
+3 
+	#_LINUX_CLOSE_RANGE_H
+
+
+	)
+
+6 
+	#CLOSE_RANGE_UNSHARE
+ (1U << 1)
+
+	)
+
+9 
+	#CLOSE_RANGE_CLOEXEC
+ (1U << 2)
+
+	)
+
+	@/usr/include/linux/errno.h
+
+1 
+	~<asm/”ºo.h
+>
+
+	@/usr/include/linux/stat.h
+
+2 #iâdeà
+_LINUX_STAT_H
+
+
+3 
+	#_LINUX_STAT_H
+
+
+	)
+
+5 
+	~<lšux/ty³s.h
+>
+
+7 #ià
+defšed
+(
+__KERNEL__
+è|| !defšed(
+__GLIBC__
+) || (__GLIBC__ < 2)
+
+9 
+	#S_IFMT
+ 00170000
+
+	)
+
+10 
+	#S_IFSOCK
+ 0140000
+
+	)
+
+11 
+	#S_IFLNK
+ 0120000
+
+	)
+
+12 
+	#S_IFREG
+ 0100000
+
+	)
+
+13 
+	#S_IFBLK
+ 0060000
+
+	)
+
+14 
+	#S_IFDIR
+ 0040000
+
+	)
+
+15 
+	#S_IFCHR
+ 0020000
+
+	)
+
+16 
+	#S_IFIFO
+ 0010000
+
+	)
+
+17 
+	#S_ISUID
+ 0004000
+
+	)
+
+18 
+	#S_ISGID
+ 0002000
+
+	)
+
+19 
+	#S_ISVTX
+ 0001000
+
+	)
+
+21 
+	#S_ISLNK
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFLNK
+)
+
+	)
+
+22 
+	#S_ISREG
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFREG
+)
+
+	)
+
+23 
+	#S_ISDIR
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFDIR
+)
+
+	)
+
+24 
+	#S_ISCHR
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFCHR
+)
+
+	)
+
+25 
+	#S_ISBLK
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFBLK
+)
+
+	)
+
+26 
+	#S_ISFIFO
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFIFO
+)
+
+	)
+
+27 
+	#S_ISSOCK
+(
+m
+è(((mè& 
+S_IFMT
+è=ð
+S_IFSOCK
+)
+
+	)
+
+29 
+	#S_IRWXU
+ 00700
+
+	)
+
+30 
+	#S_IRUSR
+ 00400
+
+	)
+
+31 
+	#S_IWUSR
+ 00200
+
+	)
+
+32 
+	#S_IXUSR
+ 00100
+
+	)
+
+34 
+	#S_IRWXG
+ 00070
+
+	)
+
+35 
+	#S_IRGRP
+ 00040
+
+	)
+
+36 
+	#S_IWGRP
+ 00020
+
+	)
+
+37 
+	#S_IXGRP
+ 00010
+
+	)
+
+39 
+	#S_IRWXO
+ 00007
+
+	)
+
+40 
+	#S_IROTH
+ 00004
+
+	)
+
+41 
+	#S_IWOTH
+ 00002
+
+	)
+
+42 
+	#S_IXOTH
+ 00001
+
+	)
+
+56 
+	s¡©x_time¡amp
+ {
+
+57 
+__s64
+ 
+	mtv_£c
+;
+
+58 
+__u32
+ 
+	mtv_n£c
+;
+
+59 
+__s32
+ 
+	m__»£rved
+;
+
+99 
+	s¡©x
+ {
+
+101 
+__u32
+ 
+	m¡x_mask
+;
+
+102 
+__u32
+ 
+	m¡x_blksize
+;
+
+103 
+__u64
+ 
+	m¡x_©Œibu‹s
+;
+
+105 
+__u32
+ 
+	m¡x_Æšk
+;
+
+106 
+__u32
+ 
+	m¡x_uid
+;
+
+107 
+__u32
+ 
+	m¡x_gid
+;
+
+108 
+__u16
+ 
+	m¡x_mode
+;
+
+109 
+__u16
+ 
+	m__¥¬e0
+[1];
+
+111 
+__u64
+ 
+	m¡x_šo
+;
+
+112 
+__u64
+ 
+	m¡x_size
+;
+
+113 
+__u64
+ 
+	m¡x_blocks
+;
+
+114 
+__u64
+ 
+	m¡x_©Œibu‹s_mask
+;
+
+116 
+¡©x_time¡amp
+ 
+	m¡x_©ime
+;
+
+117 
+¡©x_time¡amp
+ 
+	m¡x_btime
+;
+
+118 
+¡©x_time¡amp
+ 
+	m¡x_ùime
+;
+
+119 
+¡©x_time¡amp
+ 
+	m¡x_mtime
+;
+
+121 
+__u32
+ 
+	m¡x_rdev_majÜ
+;
+
+122 
+__u32
+ 
+	m¡x_rdev_mšÜ
+;
+
+123 
+__u32
+ 
+	m¡x_dev_majÜ
+;
+
+124 
+__u32
+ 
+	m¡x_dev_mšÜ
+;
+
+126 
+__u64
+ 
+	m¡x_mÁ_id
+;
+
+127 
+__u32
+ 
+	m¡x_dio_mem_®ign
+;
+
+128 
+__u32
+ 
+	m¡x_dio_off£t_®ign
+;
+
+130 
+__u64
+ 
+	m__¥¬e3
+[12];
+
+142 
+	#STATX_TYPE
+ 0x00000001U
+
+	)
+
+143 
+	#STATX_MODE
+ 0x00000002U
+
+	)
+
+144 
+	#STATX_NLINK
+ 0x00000004U
+
+	)
+
+145 
+	#STATX_UID
+ 0x00000008U
+
+	)
+
+146 
+	#STATX_GID
+ 0x00000010U
+
+	)
+
+147 
+	#STATX_ATIME
+ 0x00000020U
+
+	)
+
+148 
+	#STATX_MTIME
+ 0x00000040U
+
+	)
+
+149 
+	#STATX_CTIME
+ 0x00000080U
+
+	)
+
+150 
+	#STATX_INO
+ 0x00000100U
+
+	)
+
+151 
+	#STATX_SIZE
+ 0x00000200U
+
+	)
+
+152 
+	#STATX_BLOCKS
+ 0x00000400U
+
+	)
+
+153 
+	#STATX_BASIC_STATS
+ 0x000007ffU
+
+	)
+
+154 
+	#STATX_BTIME
+ 0x00000800U
+
+	)
+
+155 
+	#STATX_MNT_ID
+ 0x00001000U
+
+	)
+
+156 
+	#STATX_DIOALIGN
+ 0x00002000U
+
+	)
+
+158 
+	#STATX__RESERVED
+ 0x80000000U
+
+	)
+
+165 
+	#STATX_ALL
+ 0x00000fffU
+
+	)
+
+181 
+	#STATX_ATTR_COMPRESSED
+ 0x00000004
+
+	)
+
+182 
+	#STATX_ATTR_IMMUTABLE
+ 0x00000010
+
+	)
+
+183 
+	#STATX_ATTR_APPEND
+ 0x00000020
+
+	)
+
+184 
+	#STATX_ATTR_NODUMP
+ 0x00000040
+
+	)
+
+185 
+	#STATX_ATTR_ENCRYPTED
+ 0x00000800
+
+	)
+
+186 
+	#STATX_ATTR_AUTOMOUNT
+ 0x00001000
+
+	)
+
+187 
+	#STATX_ATTR_MOUNT_ROOT
+ 0x00002000
+
+	)
+
+188 
+	#STATX_ATTR_VERITY
+ 0x00100000
+
+	)
+
+189 
+	#STATX_ATTR_DAX
+ 0x00200000
+
+	)
+
+	@/usr/include/linux/stddef.h
+
+2 #iâdeà
+_LINUX_STDDEF_H
+
+
+3 
+	#_LINUX_STDDEF_H
+
+
+	)
+
+7 #iâdeà
+__®ways_šlše
+
+
+8 
+	#__®ways_šlše
+ 
+__šlše__
+
+
+	)
+
+26 
+	#__¡ruù_group
+(
+TAG
+, 
+NAME
+, 
+ATTRS
+, 
+MEMBERS
+...) \
+
+28 ¡ruù { 
+MEMBERS
+ } 
+ATTRS
+; \
+
+29 
+	sTAG
+ { 
+MEMBERS
+ } 
+ATTRS
+ 
+NAME
+; \
+
+30 }
+
+	)
+
+42 
+	#__DECLARE_FLEX_ARRAY
+(
+TYPE
+, 
+NAME
+) \
+
+44 ¡ruù { } 
+__em±y_
+ ## 
+NAME
+; \
+
+45 
+TYPE
+ 
+NAME
+[]; \
+
+46 }
+
+	)
+
+	@/usr/include/stdc-predef.h
+
+18 #iâdef 
+_STDC_PREDEF_H
+
+
+19 
+	#_STDC_PREDEF_H
+ 1
+
+	)
+
+36 #ifdeà
+__GCC_IEC_559
+
+
+37 #ià
+__GCC_IEC_559
+ > 0
+
+38 
+	#__STDC_IEC_559__
+ 1
+
+	)
+
+39 
+	#__STDC_IEC_60559_BFP__
+ 201404L
+
+	)
+
+42 
+	#__STDC_IEC_559__
+ 1
+
+	)
+
+43 
+	#__STDC_IEC_60559_BFP__
+ 201404L
+
+	)
+
+46 #ifdeà
+__GCC_IEC_559_COMPLEX
+
+
+47 #ià
+__GCC_IEC_559_COMPLEX
+ > 0
+
+48 
+	#__STDC_IEC_559_COMPLEX__
+ 1
+
+	)
+
+49 
+	#__STDC_IEC_60559_COMPLEX__
+ 201404L
+
+	)
+
+52 
+	#__STDC_IEC_559_COMPLEX__
+ 1
+
+	)
+
+53 
+	#__STDC_IEC_60559_COMPLEX__
+ 201404L
+
+	)
+
+62 
+	#__STDC_ISO_10646__
+ 201706L
+
+	)
+
+	@/usr/include/asm-generic/int-ll64.h
+
+9 #iâdeà
+_ASM_GENERIC_INT_LL64_H
+
+
+10 
+	#_ASM_GENERIC_INT_LL64_H
+
+
+	)
+
+12 
+	~<asm/b™¥”lÚg.h
+>
+
+14 #iâdeà
+__ASSEMBLY__
+
+
+20 
+__sigÃd__
+ 
+	t__s8
+;
+
+21 
+	t__u8
+;
+
+23 
+__sigÃd__
+ 
+	t__s16
+;
+
+24 
+	t__u16
+;
+
+26 
+__sigÃd__
+ 
+	t__s32
+;
+
+27 
+	t__u32
+;
+
+29 #ifdeà
+__GNUC__
+
+
+30 
+__ex‹nsiÚ__
+ 
+__sigÃd__
+ 
+	t__s64
+;
+
+31 
+__ex‹nsiÚ__
+ 
+	t__u64
+;
+
+33 
+__sigÃd__
+ 
+	t__s64
+;
+
+34 
+	t__u64
+;
+
+	@/usr/include/asm-generic/ioctls.h
+
+2 #iâdeà
+__ASM_GENERIC_IOCTLS_H
+
+
+3 
+	#__ASM_GENERIC_IOCTLS_H
+
+
+	)
+
+5 
+	~<lšux/ioùl.h
+>
+
+20 
+	#TCGETS
+ 0x5401
+
+	)
+
+21 
+	#TCSETS
+ 0x5402
+
+	)
+
+22 
+	#TCSETSW
+ 0x5403
+
+	)
+
+23 
+	#TCSETSF
+ 0x5404
+
+	)
+
+24 
+	#TCGETA
+ 0x5405
+
+	)
+
+25 
+	#TCSETA
+ 0x5406
+
+	)
+
+26 
+	#TCSETAW
+ 0x5407
+
+	)
+
+27 
+	#TCSETAF
+ 0x5408
+
+	)
+
+28 
+	#TCSBRK
+ 0x5409
+
+	)
+
+29 
+	#TCXONC
+ 0x540A
+
+	)
+
+30 
+	#TCFLSH
+ 0x540B
+
+	)
+
+31 
+	#TIOCEXCL
+ 0x540C
+
+	)
+
+32 
+	#TIOCNXCL
+ 0x540D
+
+	)
+
+33 
+	#TIOCSCTTY
+ 0x540E
+
+	)
+
+34 
+	#TIOCGPGRP
+ 0x540F
+
+	)
+
+35 
+	#TIOCSPGRP
+ 0x5410
+
+	)
+
+36 
+	#TIOCOUTQ
+ 0x5411
+
+	)
+
+37 
+	#TIOCSTI
+ 0x5412
+
+	)
+
+38 
+	#TIOCGWINSZ
+ 0x5413
+
+	)
+
+39 
+	#TIOCSWINSZ
+ 0x5414
+
+	)
+
+40 
+	#TIOCMGET
+ 0x5415
+
+	)
+
+41 
+	#TIOCMBIS
+ 0x5416
+
+	)
+
+42 
+	#TIOCMBIC
+ 0x5417
+
+	)
+
+43 
+	#TIOCMSET
+ 0x5418
+
+	)
+
+44 
+	#TIOCGSOFTCAR
+ 0x5419
+
+	)
+
+45 
+	#TIOCSSOFTCAR
+ 0x541A
+
+	)
+
+46 
+	#FIONREAD
+ 0x541B
+
+	)
+
+47 
+	#TIOCINQ
+ 
+FIONREAD
+
+
+	)
+
+48 
+	#TIOCLINUX
+ 0x541C
+
+	)
+
+49 
+	#TIOCCONS
+ 0x541D
+
+	)
+
+50 
+	#TIOCGSERIAL
+ 0x541E
+
+	)
+
+51 
+	#TIOCSSERIAL
+ 0x541F
+
+	)
+
+52 
+	#TIOCPKT
+ 0x5420
+
+	)
+
+53 
+	#FIONBIO
+ 0x5421
+
+	)
+
+54 
+	#TIOCNOTTY
+ 0x5422
+
+	)
+
+55 
+	#TIOCSETD
+ 0x5423
+
+	)
+
+56 
+	#TIOCGETD
+ 0x5424
+
+	)
+
+57 
+	#TCSBRKP
+ 0x5425
+
+	)
+
+58 
+	#TIOCSBRK
+ 0x5427
+
+	)
+
+59 
+	#TIOCCBRK
+ 0x5428
+
+	)
+
+60 
+	#TIOCGSID
+ 0x5429
+
+	)
+
+61 
+	#TCGETS2
+ 
+	`_IOR
+('T', 0x2A, 
+‹rmios2
+)
+
+	)
+
+62 
+	#TCSETS2
+ 
+	`_IOW
+('T', 0x2B, 
+‹rmios2
+)
+
+	)
+
+63 
+	#TCSETSW2
+ 
+	`_IOW
+('T', 0x2C, 
+‹rmios2
+)
+
+	)
+
+64 
+	#TCSETSF2
+ 
+	`_IOW
+('T', 0x2D, 
+‹rmios2
+)
+
+	)
+
+65 
+	#TIOCGRS485
+ 0x542E
+
+	)
+
+66 #iâdeà
+TIOCSRS485
+
+
+67 
+	#TIOCSRS485
+ 0x542F
+
+	)
+
+69 
+	#TIOCGPTN
+ 
+	`_IOR
+('T', 0x30, è
+
+	)
+
+70 
+	#TIOCSPTLCK
+ 
+	`_IOW
+('T', 0x31, è
+
+	)
+
+71 
+	#TIOCGDEV
+ 
+	`_IOR
+('T', 0x32, è
+
+	)
+
+72 
+	#TCGETX
+ 0x5432
+
+	)
+
+73 
+	#TCSETX
+ 0x5433
+
+	)
+
+74 
+	#TCSETXF
+ 0x5434
+
+	)
+
+75 
+	#TCSETXW
+ 0x5435
+
+	)
+
+76 
+	#TIOCSIG
+ 
+	`_IOW
+('T', 0x36, è
+
+	)
+
+77 
+	#TIOCVHANGUP
+ 0x5437
+
+	)
+
+78 
+	#TIOCGPKT
+ 
+	`_IOR
+('T', 0x38, è
+
+	)
+
+79 
+	#TIOCGPTLCK
+ 
+	`_IOR
+('T', 0x39, è
+
+	)
+
+80 
+	#TIOCGEXCL
+ 
+	`_IOR
+('T', 0x40, è
+
+	)
+
+81 
+	#TIOCGPTPEER
+ 
+	`_IO
+('T', 0x41è
+
+	)
+
+82 
+	#TIOCGISO7816
+ 
+	`_IOR
+('T', 0x42, 
+£rŸl_iso7816
+)
+
+	)
+
+83 
+	#TIOCSISO7816
+ 
+	`_IOWR
+('T', 0x43, 
+£rŸl_iso7816
+)
+
+	)
+
+85 
+	#FIONCLEX
+ 0x5450
+
+	)
+
+86 
+	#FIOCLEX
+ 0x5451
+
+	)
+
+87 
+	#FIOASYNC
+ 0x5452
+
+	)
+
+88 
+	#TIOCSERCONFIG
+ 0x5453
+
+	)
+
+89 
+	#TIOCSERGWILD
+ 0x5454
+
+	)
+
+90 
+	#TIOCSERSWILD
+ 0x5455
+
+	)
+
+91 
+	#TIOCGLCKTRMIOS
+ 0x5456
+
+	)
+
+92 
+	#TIOCSLCKTRMIOS
+ 0x5457
+
+	)
+
+93 
+	#TIOCSERGSTRUCT
+ 0x5458
+
+	)
+
+94 
+	#TIOCSERGETLSR
+ 0x5459
+
+	)
+
+95 
+	#TIOCSERGETMULTI
+ 0x545A
+
+	)
+
+96 
+	#TIOCSERSETMULTI
+ 0x545B
+
+	)
+
+98 
+	#TIOCMIWAIT
+ 0x545C
+
+	)
+
+99 
+	#TIOCGICOUNT
+ 0x545D
+
+	)
+
+105 #iâdeà
+FIOQSIZE
+
+
+106 
+	#FIOQSIZE
+ 0x5460
+
+	)
+
+110 
+	#TIOCPKT_DATA
+ 0
+
+	)
+
+111 
+	#TIOCPKT_FLUSHREAD
+ 1
+
+	)
+
+112 
+	#TIOCPKT_FLUSHWRITE
+ 2
+
+	)
+
+113 
+	#TIOCPKT_STOP
+ 4
+
+	)
+
+114 
+	#TIOCPKT_START
+ 8
+
+	)
+
+115 
+	#TIOCPKT_NOSTOP
+ 16
+
+	)
+
+116 
+	#TIOCPKT_DOSTOP
+ 32
+
+	)
+
+117 
+	#TIOCPKT_IOCTL
+ 64
+
+	)
+
+119 
+	#TIOCSER_TEMT
+ 0x01
+
+	)
+
+	@/usr/include/asm-generic/socket.h
+
+2 #iâdeà
+__ASM_GENERIC_SOCKET_H
+
+
+3 
+	#__ASM_GENERIC_SOCKET_H
+
+
+	)
+
+5 
+	~<lšux/posix_ty³s.h
+>
+
+6 
+	~<asm/sockios.h
+>
+
+9 
+	#SOL_SOCKET
+ 1
+
+	)
+
+11 
+	#SO_DEBUG
+ 1
+
+	)
+
+12 
+	#SO_REUSEADDR
+ 2
+
+	)
+
+13 
+	#SO_TYPE
+ 3
+
+	)
+
+14 
+	#SO_ERROR
+ 4
+
+	)
+
+15 
+	#SO_DONTROUTE
+ 5
+
+	)
+
+16 
+	#SO_BROADCAST
+ 6
+
+	)
+
+17 
+	#SO_SNDBUF
+ 7
+
+	)
+
+18 
+	#SO_RCVBUF
+ 8
+
+	)
+
+19 
+	#SO_SNDBUFFORCE
+ 32
+
+	)
+
+20 
+	#SO_RCVBUFFORCE
+ 33
+
+	)
+
+21 
+	#SO_KEEPALIVE
+ 9
+
+	)
+
+22 
+	#SO_OOBINLINE
+ 10
+
+	)
+
+23 
+	#SO_NO_CHECK
+ 11
+
+	)
+
+24 
+	#SO_PRIORITY
+ 12
+
+	)
+
+25 
+	#SO_LINGER
+ 13
+
+	)
+
+26 
+	#SO_BSDCOMPAT
+ 14
+
+	)
+
+27 
+	#SO_REUSEPORT
+ 15
+
+	)
+
+28 #iâdeà
+SO_PASSCRED
+
+
+29 
+	#SO_PASSCRED
+ 16
+
+	)
+
+30 
+	#SO_PEERCRED
+ 17
+
+	)
+
+31 
+	#SO_RCVLOWAT
+ 18
+
+	)
+
+32 
+	#SO_SNDLOWAT
+ 19
+
+	)
+
+33 
+	#SO_RCVTIMEO_OLD
+ 20
+
+	)
+
+34 
+	#SO_SNDTIMEO_OLD
+ 21
+
+	)
+
+38 
+	#SO_SECURITY_AUTHENTICATION
+ 22
+
+	)
+
+39 
+	#SO_SECURITY_ENCRYPTION_TRANSPORT
+ 23
+
+	)
+
+40 
+	#SO_SECURITY_ENCRYPTION_NETWORK
+ 24
+
+	)
+
+42 
+	#SO_BINDTODEVICE
+ 25
+
+	)
+
+45 
+	#SO_ATTACH_FILTER
+ 26
+
+	)
+
+46 
+	#SO_DETACH_FILTER
+ 27
+
+	)
+
+47 
+	#SO_GET_FILTER
+ 
+SO_ATTACH_FILTER
+
+
+	)
+
+49 
+	#SO_PEERNAME
+ 28
+
+	)
+
+51 
+	#SO_ACCEPTCONN
+ 30
+
+	)
+
+53 
+	#SO_PEERSEC
+ 31
+
+	)
+
+54 
+	#SO_PASSSEC
+ 34
+
+	)
+
+56 
+	#SO_MARK
+ 36
+
+	)
+
+58 
+	#SO_PROTOCOL
+ 38
+
+	)
+
+59 
+	#SO_DOMAIN
+ 39
+
+	)
+
+61 
+	#SO_RXQ_OVFL
+ 40
+
+	)
+
+63 
+	#SO_WIFI_STATUS
+ 41
+
+	)
+
+64 
+	#SCM_WIFI_STATUS
+ 
+SO_WIFI_STATUS
+
+
+	)
+
+65 
+	#SO_PEEK_OFF
+ 42
+
+	)
+
+68 
+	#SO_NOFCS
+ 43
+
+	)
+
+70 
+	#SO_LOCK_FILTER
+ 44
+
+	)
+
+72 
+	#SO_SELECT_ERR_QUEUE
+ 45
+
+	)
+
+74 
+	#SO_BUSY_POLL
+ 46
+
+	)
+
+76 
+	#SO_MAX_PACING_RATE
+ 47
+
+	)
+
+78 
+	#SO_BPF_EXTENSIONS
+ 48
+
+	)
+
+80 
+	#SO_INCOMING_CPU
+ 49
+
+	)
+
+82 
+	#SO_ATTACH_BPF
+ 50
+
+	)
+
+83 
+	#SO_DETACH_BPF
+ 
+SO_DETACH_FILTER
+
+
+	)
+
+85 
+	#SO_ATTACH_REUSEPORT_CBPF
+ 51
+
+	)
+
+86 
+	#SO_ATTACH_REUSEPORT_EBPF
+ 52
+
+	)
+
+88 
+	#SO_CNX_ADVICE
+ 53
+
+	)
+
+90 
+	#SCM_TIMESTAMPING_OPT_STATS
+ 54
+
+	)
+
+92 
+	#SO_MEMINFO
+ 55
+
+	)
+
+94 
+	#SO_INCOMING_NAPI_ID
+ 56
+
+	)
+
+96 
+	#SO_COOKIE
+ 57
+
+	)
+
+98 
+	#SCM_TIMESTAMPING_PKTINFO
+ 58
+
+	)
+
+100 
+	#SO_PEERGROUPS
+ 59
+
+	)
+
+102 
+	#SO_ZEROCOPY
+ 60
+
+	)
+
+104 
+	#SO_TXTIME
+ 61
+
+	)
+
+105 
+	#SCM_TXTIME
+ 
+SO_TXTIME
+
+
+	)
+
+107 
+	#SO_BINDTOIFINDEX
+ 62
+
+	)
+
+109 
+	#SO_TIMESTAMP_OLD
+ 29
+
+	)
+
+110 
+	#SO_TIMESTAMPNS_OLD
+ 35
+
+	)
+
+111 
+	#SO_TIMESTAMPING_OLD
+ 37
+
+	)
+
+113 
+	#SO_TIMESTAMP_NEW
+ 63
+
+	)
+
+114 
+	#SO_TIMESTAMPNS_NEW
+ 64
+
+	)
+
+115 
+	#SO_TIMESTAMPING_NEW
+ 65
+
+	)
+
+117 
+	#SO_RCVTIMEO_NEW
+ 66
+
+	)
+
+118 
+	#SO_SNDTIMEO_NEW
+ 67
+
+	)
+
+120 
+	#SO_DETACH_REUSEPORT_BPF
+ 68
+
+	)
+
+122 
+	#SO_PREFER_BUSY_POLL
+ 69
+
+	)
+
+123 
+	#SO_BUSY_POLL_BUDGET
+ 70
+
+	)
+
+125 
+	#SO_NETNS_COOKIE
+ 71
+
+	)
+
+127 
+	#SO_BUF_LOCK
+ 72
+
+	)
+
+129 
+	#SO_RESERVE_MEM
+ 73
+
+	)
+
+131 
+	#SO_TXREHASH
+ 74
+
+	)
+
+133 
+	#SO_RCVMARK
+ 75
+
+	)
+
+135 
+	#SO_PASSPIDFD
+ 76
+
+	)
+
+136 
+	#SO_PEERPIDFD
+ 77
+
+	)
+
+139 #ià
+__BITS_PER_LONG
+ =ð64 || (
+defšed
+(
+__x86_64__
+è&& defšed(
+__ILP32__
+))
+
+141 
+	#SO_TIMESTAMP
+ 
+SO_TIMESTAMP_OLD
+
+
+	)
+
+142 
+	#SO_TIMESTAMPNS
+ 
+SO_TIMESTAMPNS_OLD
+
+
+	)
+
+143 
+	#SO_TIMESTAMPING
+ 
+SO_TIMESTAMPING_OLD
+
+
+	)
+
+145 
+	#SO_RCVTIMEO
+ 
+SO_RCVTIMEO_OLD
+
+
+	)
+
+146 
+	#SO_SNDTIMEO
+ 
+SO_SNDTIMEO_OLD
+
+
+	)
+
+148 
+	#SO_TIMESTAMP
+ ((
+time_t
+è=ð(
+__k”Ãl_lÚg_t
+è? 
+SO_TIMESTAMP_OLD
+ : 
+SO_TIMESTAMP_NEW
+)
+
+	)
+
+149 
+	#SO_TIMESTAMPNS
+ ((
+time_t
+è=ð(
+__k”Ãl_lÚg_t
+è? 
+SO_TIMESTAMPNS_OLD
+ : 
+SO_TIMESTAMPNS_NEW
+)
+
+	)
+
+150 
+	#SO_TIMESTAMPING
+ ((
+time_t
+è=ð(
+__k”Ãl_lÚg_t
+è? 
+SO_TIMESTAMPING_OLD
+ : 
+SO_TIMESTAMPING_NEW
+)
+
+	)
+
+152 
+	#SO_RCVTIMEO
+ ((
+time_t
+è=ð(
+__k”Ãl_lÚg_t
+è? 
+SO_RCVTIMEO_OLD
+ : 
+SO_RCVTIMEO_NEW
+)
+
+	)
+
+153 
+	#SO_SNDTIMEO
+ ((
+time_t
+è=ð(
+__k”Ãl_lÚg_t
+è? 
+SO_SNDTIMEO_OLD
+ : 
+SO_SNDTIMEO_NEW
+)
+
+	)
+
+156 
+	#SCM_TIMESTAMP
+ 
+SO_TIMESTAMP
+
+
+	)
+
+157 
+	#SCM_TIMESTAMPNS
+ 
+SO_TIMESTAMPNS
+
+
+	)
+
+158 
+	#SCM_TIMESTAMPING
+ 
+SO_TIMESTAMPING
+
+
+	)
+
+	@/usr/include/asm/errno.h
+
+1 
+	~<asm-g’”ic/”ºo.h
+>
+
+	@/usr/include/asm/posix_types_32.h
+
+2 #iâdeà
+_ASM_X86_POSIX_TYPES_32_H
+
+
+3 
+	#_ASM_X86_POSIX_TYPES_32_H
+
+
+	)
+
+11 
+	t__k”Ãl_mode_t
+;
+
+12 
+	#__k”Ãl_mode_t
+ 
+__k”Ãl_mode_t
+
+
+	)
+
+14 
+	t__k”Ãl_�c_pid_t
+;
+
+15 
+	#__k”Ãl_�c_pid_t
+ 
+__k”Ãl_�c_pid_t
+
+
+	)
+
+17 
+	t__k”Ãl_uid_t
+;
+
+18 
+	t__k”Ãl_gid_t
+;
+
+19 
+	#__k”Ãl_uid_t
+ 
+__k”Ãl_uid_t
+
+
+	)
+
+21 
+	t__k”Ãl_Þd_dev_t
+;
+
+22 
+	#__k”Ãl_Þd_dev_t
+ 
+__k”Ãl_Þd_dev_t
+
+
+	)
+
+24 
+	~<asm-g’”ic/posix_ty³s.h
+>
+
+	@/usr/include/asm/posix_types_64.h
+
+2 #iâdeà
+_ASM_X86_POSIX_TYPES_64_H
+
+
+3 
+	#_ASM_X86_POSIX_TYPES_64_H
+
+
+	)
+
+11 
+	t__k”Ãl_Þd_uid_t
+;
+
+12 
+	t__k”Ãl_Þd_gid_t
+;
+
+13 
+	#__k”Ãl_Þd_uid_t
+ 
+__k”Ãl_Þd_uid_t
+
+
+	)
+
+15 
+	t__k”Ãl_Þd_dev_t
+;
+
+16 
+	#__k”Ãl_Þd_dev_t
+ 
+__k”Ãl_Þd_dev_t
+
+
+	)
+
+18 
+	~<asm-g’”ic/posix_ty³s.h
+>
+
+	@/usr/include/asm/posix_types_x32.h
+
+2 #iâdeà
+_ASM_X86_POSIX_TYPES_X32_H
+
+
+3 
+	#_ASM_X86_POSIX_TYPES_X32_H
+
+
+	)
+
+14 
+	t__k”Ãl_lÚg_t
+;
+
+15 
+	t__k”Ãl_ulÚg_t
+;
+
+16 
+	#__k”Ãl_lÚg_t
+ 
+__k”Ãl_lÚg_t
+
+
+	)
+
+18 
+	~<asm/posix_ty³s_64.h
+>
+
+	@/usr/include/bits/atomic_wide_counter.h
+
+19 #iâdeà
+_BITS_ATOMIC_WIDE_COUNTER_H
+
+
+20 
+	#_BITS_ATOMIC_WIDE_COUNTER_H
+
+
+	)
+
+27 
+__ex‹nsiÚ__
+ 
+	m__v®ue64
+;
+
+30 
+	m__low
+;
+
+31 
+	m__high
+;
+
+32 } 
+	m__v®ue32
+;
+
+33 } 
+	t__©omic_wide_couÁ”
+;
+
+	@/usr/include/bits/mman-shared.h
+
+19 #iâdeà
+_SYS_MMAN_H
+
+
+23 #ifdeà
+__USE_GNU
+
+
+25 
+	#MREMAP_MAYMOVE
+ 1
+
+	)
+
+26 
+	#MREMAP_FIXED
+ 2
+
+	)
+
+27 
+	#MREMAP_DONTUNMAP
+ 4
+
+	)
+
+30 #iâdeà
+MFD_CLOEXEC
+
+
+31 
+	#MFD_CLOEXEC
+ 1U
+
+	)
+
+32 
+	#MFD_ALLOW_SEALING
+ 2U
+
+	)
+
+33 
+	#MFD_HUGETLB
+ 4U
+
+	)
+
+35 #iâdeà
+MFD_NOEXEC_SEAL
+
+
+36 
+	#MFD_NOEXEC_SEAL
+ 8U
+
+	)
+
+37 
+	#MFD_EXEC
+ 0x10U
+
+	)
+
+41 #iâdeà
+MLOCK_ONFAULT
+
+
+42 
+	#MLOCK_ONFAULT
+ 1U
+
+	)
+
+46 #iâdeà
+PKEY_DISABLE_ACCESS
+
+
+47 
+	#PKEY_DISABLE_ACCESS
+ 0x1
+
+	)
+
+48 
+	#PKEY_DISABLE_WRITE
+ 0x2
+
+	)
+
+51 
+__BEGIN_DECLS
+
+
+55 
+	$memfd_ü—‹
+ (cÚ¡ *
+__Çme
+, 
+__æags
+è
+__THROW
+;
+
+59 
+	$mlock2
+ (cÚ¡ *
+__addr
+, 
+size_t
+ 
+__Ëngth
+, 
+__æags
+è
+__THROW
+;
+
+65 
+	$pkey_®loc
+ (
+__æags
+, 
+__acûss_rights
+è
+__THROW
+;
+
+69 
+	$pkey_£t
+ (
+__key
+, 
+__acûss_rights
+è
+__THROW
+;
+
+73 
+	$pkey_g‘
+ (
+__key
+è
+__THROW
+;
+
+77 
+	$pkey_ä“
+ (
+__key
+è
+__THROW
+;
+
+81 
+	$pkey_m´Ùeù
+ (*
+__addr
+, 
+size_t
+ 
+__Ën
+, 
+__´Ù
+, 
+__pkey
+è
+__THROW
+;
+
+83 
+__END_DECLS
+
+
+	@/usr/include/bits/pthread_stack_min-dynamic.h
+
+19 #iâdeà
+PTHREAD_STACK_MIN
+
+
+20 #ià
+defšed
+ 
+__USE_DYNAMIC_STACK_SIZE
+ && __USE_DYNAMIC_STACK_SIZE
+
+21 #iâdeà
+__ASSEMBLER__
+
+
+22 
+	#__SC_THREAD_STACK_MIN_VALUE
+ 75
+
+	)
+
+23 
+__BEGIN_DECLS
+
+
+24 

+	$__syscÚf
+ (
+__Çme
+è
+__THROW
+;
+
+25 
+__END_DECLS
+
+
+26 
+	#PTHREAD_STACK_MIN
+ 
+	`__syscÚf
+ (
+__SC_THREAD_STACK_MIN_VALUE
+)
+
+	)
+
+29 
+	~<b™s/±h»ad_¡ack_mš.h
+>
+
+	@/usr/include/bits/pthreadtypes-arch.h
+
+18 #iâdeà
+_BITS_PTHREADTYPES_ARCH_H
+
+
+19 
+	#_BITS_PTHREADTYPES_ARCH_H
+ 1
+
+	)
+
+21 
+	~<b™s/wÜdsize.h
+>
+
+23 #ifdeà
+__x86_64__
+
+
+24 #ià
+__WORDSIZE
+ == 64
+
+25 
+	#__SIZEOF_PTHREAD_MUTEX_T
+ 40
+
+	)
+
+26 
+	#__SIZEOF_PTHREAD_ATTR_T
+ 56
+
+	)
+
+27 
+	#__SIZEOF_PTHREAD_RWLOCK_T
+ 56
+
+	)
+
+28 
+	#__SIZEOF_PTHREAD_BARRIER_T
+ 32
+
+	)
+
+30 
+	#__SIZEOF_PTHREAD_MUTEX_T
+ 32
+
+	)
+
+31 
+	#__SIZEOF_PTHREAD_ATTR_T
+ 32
+
+	)
+
+32 
+	#__SIZEOF_PTHREAD_RWLOCK_T
+ 44
+
+	)
+
+33 
+	#__SIZEOF_PTHREAD_BARRIER_T
+ 20
+
+	)
+
+36 
+	#__SIZEOF_PTHREAD_MUTEX_T
+ 24
+
+	)
+
+37 
+	#__SIZEOF_PTHREAD_ATTR_T
+ 36
+
+	)
+
+38 
+	#__SIZEOF_PTHREAD_RWLOCK_T
+ 32
+
+	)
+
+39 
+	#__SIZEOF_PTHREAD_BARRIER_T
+ 20
+
+	)
+
+41 
+	#__SIZEOF_PTHREAD_MUTEXATTR_T
+ 4
+
+	)
+
+42 
+	#__SIZEOF_PTHREAD_COND_T
+ 48
+
+	)
+
+43 
+	#__SIZEOF_PTHREAD_CONDATTR_T
+ 4
+
+	)
+
+44 
+	#__SIZEOF_PTHREAD_RWLOCKATTR_T
+ 8
+
+	)
+
+45 
+	#__SIZEOF_PTHREAD_BARRIERATTR_T
+ 4
+
+	)
+
+47 
+	#__LOCK_ALIGNMENT
+
+
+	)
+
+48 
+	#__ONCE_ALIGNMENT
+
+
+	)
+
+50 #iâdeà
+__x86_64__
+
+
+52 
+	#__þ—nup_fù_©Œibu‹
+ 
+	`__©Œibu‹__
+ ((
+	`__»g·rm__
+ (1)))
+
+	)
+
+	@/usr/include/bits/select-decl.h
+
+19 #iâdeà
+_BITS_SELECT_DECL_H
+
+
+20 
+	#_BITS_SELECT_DECL_H
+ 1
+
+	)
+
+22 #iâdeà
+_SYS_SELECT_H
+
+
+27 

+__fd–t_chk
+ (
+__d
+);
+
+28 

+	$__fd–t_w¬n
+ (
+__d
+)
+
+29 
+	`__w¬Ç‰r
+ ("bit outside of fd_set selected");
+
+	@/usr/include/bits/struct_mutex.h
+
+19 #iâdeà
+_THREAD_MUTEX_INTERNAL_H
+
+
+20 
+	#_THREAD_MUTEX_INTERNAL_H
+ 1
+
+	)
+
+22 
+	s__±h»ad_mu‹x_s
+
+
+24 
+	m__lock
+;
+
+25 
+	m__couÁ
+;
+
+26 
+	m__owÃr
+;
+
+27 #ifdeà
+__x86_64__
+
+
+28 
+	m__nu£rs
+;
+
+32 
+	m__kšd
+;
+
+33 #ifdeà
+__x86_64__
+
+
+34 
+	m__¥šs
+;
+
+35 
+	m__–isiÚ
+;
+
+36 
+__±h»ad_li¡_t
+ 
+	m__li¡
+;
+
+37 
+	#__PTHREAD_MUTEX_HAVE_PREV
+ 1
+
+	)
+
+39 
+	m__nu£rs
+;
+
+40 
+__ex‹nsiÚ__
+ union
+
+44 
+	m__e¥šs
+;
+
+45 
+	m__“lisiÚ
+;
+
+46 
+	#__¥šs
+ 
+__–isiÚ_d©a
+.
+__e¥šs
+
+
+	)
+
+47 
+	#__–isiÚ
+ 
+__–isiÚ_d©a
+.
+__“lisiÚ
+
+
+	)
+
+48 } 
+	m__–isiÚ_d©a
+;
+
+49 
+__±h»ad_¦i¡_t
+ 
+	m__li¡
+;
+
+51 
+	#__PTHREAD_MUTEX_HAVE_PREV
+ 0
+
+	)
+
+55 #ifdeà
+__x86_64__
+
+
+56 
+	#__PTHREAD_MUTEX_INITIALIZER
+(
+__kšd
+) \
+
+57 0, 0, 0, 0, 
+__kšd
+, 0, 0, { 0, 0 }
+
+	)
+
+59 
+	#__PTHREAD_MUTEX_INITIALIZER
+(
+__kšd
+) \
+
+60 0, 0, 0, 
+__kšd
+, 0, { { 0, 0 } }
+
+	)
+
+	@/usr/include/bits/struct_rwlock.h
+
+20 #iâdeà
+_RWLOCK_INTERNAL_H
+
+
+21 
+	#_RWLOCK_INTERNAL_H
+
+
+	)
+
+23 
+	s__±h»ad_rwlock_¬ch_t
+
+
+25 
+	m__»ad”s
+;
+
+26 
+	m__wr™”s
+;
+
+27 
+	m__w½ha£_fu‹x
+;
+
+28 
+	m__wr™”s_fu‹x
+;
+
+29 
+	m__·d3
+;
+
+30 
+	m__·d4
+;
+
+31 #ifdeà
+__x86_64__
+
+
+32 
+	m__cur_wr™”
+;
+
+33 
+	m__sh¬ed
+;
+
+34 sigÃd 
+	m__rw–isiÚ
+;
+
+35 #ifdeà 
+__ILP32__
+
+
+36 
+	m__·d1
+[3];
+
+37 
+	#__PTHREAD_RWLOCK_ELISION_EXTRA
+ 0, { 0, 0, 0 }
+
+	)
+
+39 
+	m__·d1
+[7];
+
+40 
+	#__PTHREAD_RWLOCK_ELISION_EXTRA
+ 0, { 0, 0, 0, 0, 0, 0, 0 }
+
+	)
+
+42 
+	m__·d2
+;
+
+45 
+	m__æags
+;
+
+49 
+	m__æags
+;
+
+50 
+	m__sh¬ed
+;
+
+51 sigÃd 
+	m__rw–isiÚ
+;
+
+52 
+	m__·d2
+;
+
+53 
+	m__cur_wr™”
+;
+
+57 #ifdeà
+__x86_64__
+
+
+58 
+	#__PTHREAD_RWLOCK_INITIALIZER
+(
+__æags
+) \
+
+59 0, 0, 0, 0, 0, 0, 0, 0, 
+__PTHREAD_RWLOCK_ELISION_EXTRA
+, 0, 
+__æags
+
+
+	)
+
+61 
+	#__PTHREAD_RWLOCK_INITIALIZER
+(
+__æags
+) \
+
+62 0, 0, 0, 0, 0, 0, 
+__æags
+, 0, 0, 0, 0
+
+	)
+
+	@/usr/include/bits/struct_stat_time64_helper.h
+
+20 
+__dev_t
+ 
+	g¡_dev
+;
+
+21 
+__šo64_t
+ 
+	g¡_šo
+;
+
+22 
+__mode_t
+ 
+	g¡_mode
+;
+
+23 
+__Æšk_t
+ 
+	g¡_Æšk
+;
+
+24 
+__uid_t
+ 
+	g¡_uid
+;
+
+25 
+__gid_t
+ 
+	g¡_gid
+;
+
+26 
+__dev_t
+ 
+	g¡_rdev
+;
+
+27 
+__off64_t
+ 
+	g¡_size
+;
+
+28 
+__blksize_t
+ 
+	g¡_blksize
+;
+
+29 
+__blkút64_t
+ 
+	g¡_blocks
+;
+
+30 #ifdeà
+__USE_XOPEN2K8
+
+
+31 #iâdeà
+__¡ruù_time¥ec
+
+
+32 
+	#__¡ruù_time¥ec
+ 
+time¥ec
+
+
+	)
+
+40 
+__¡ruù_time¥ec
+ 
+	g¡_©im
+;
+
+41 
+__¡ruù_time¥ec
+ 
+	g¡_mtim
+;
+
+42 
+__¡ruù_time¥ec
+ 
+	g¡_ùim
+;
+
+43 
+	#¡_©ime
+ 
+¡_©im
+.
+tv_£c
+
+
+	)
+
+44 
+	#¡_mtime
+ 
+¡_mtim
+.
+tv_£c
+
+
+	)
+
+45 
+	#¡_ùime
+ 
+¡_ùim
+.
+tv_£c
+
+
+	)
+
+46 #undeà
+__¡ruù_time¥ec
+
+
+50 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+51 
+	#__f›ldts64
+(
+Çme
+) \
+
+52 
+__time64_t
+ 
+Çme
+; 
+__št32_t
+ :32; __št32_ˆÇm�## 
+n£c
+
+
+	)
+
+54 
+	#__f›ldts64
+(
+Çme
+) \
+
+55 
+__time64_t
+ 
+Çme
+; 
+__št32_t
+‚am�## 
+n£c
+; __št32_ˆ:32
+
+	)
+
+58 
+__f›ldts64
+ (
+¡_©ime
+);
+
+59 
+__f›ldts64
+ (
+¡_mtime
+);
+
+60 
+__f›ldts64
+ (
+¡_ùime
+);
+
+62 
+	g__glibc_»£rved4
+;
+
+63 
+	g__glibc_»£rved5
+;
+
+65 #undeà
+__f›ldts64
+
+
+	@/usr/include/bits/syslog-decl.h
+
+19 #iâdeà
+_BITS_SYSLOG_DECL_H
+
+
+20 
+	#_BITS_SYSLOG_DECL_H
+ 1
+
+	)
+
+22 #iâdeà
+_SYS_SYSLOG_H
+
+
+26 

+	$__sy¦og_chk
+ (
+__´i
+, 
+__æag
+, cÚ¡ *
+__fmt
+, ...)
+
+27 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+29 #ifdeà
+__USE_MISC
+
+
+30 

+	$__vsy¦og_chk
+ (
+__´i
+, 
+__æag
+, cÚ¡ *
+__fmt
+,
+
+31 
+__gnuc_va_li¡
+ 
+__­
+)
+
+32 
+	`__©Œibu‹__
+ ((
+	`__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+	@/usr/include/bits/types/struct_statx.h
+
+19 #iâdeà
+_SYS_STAT_H
+
+
+20 #”rÜ 
+Nev”
+ 
+šþude
+ <
+b™s
+/
+ty³s
+/
+¡ruù_¡©x
+.
+h
+> 
+dœeùly
+, inþud�<
+sys
+/
+¡©
+.h> 
+š¡—d
+.
+
+23 #iâdeà
+__¡©x_defšed
+
+
+24 
+	#__¡©x_defšed
+ 1
+
+	)
+
+30 
+	s¡©x
+
+
+32 
+__ušt32_t
+ 
+	m¡x_mask
+;
+
+33 
+__ušt32_t
+ 
+	m¡x_blksize
+;
+
+34 
+__ušt64_t
+ 
+	m¡x_©Œibu‹s
+;
+
+35 
+__ušt32_t
+ 
+	m¡x_Æšk
+;
+
+36 
+__ušt32_t
+ 
+	m¡x_uid
+;
+
+37 
+__ušt32_t
+ 
+	m¡x_gid
+;
+
+38 
+__ušt16_t
+ 
+	m¡x_mode
+;
+
+39 
+__ušt16_t
+ 
+	m__¡©x_·d1
+[1];
+
+40 
+__ušt64_t
+ 
+	m¡x_šo
+;
+
+41 
+__ušt64_t
+ 
+	m¡x_size
+;
+
+42 
+__ušt64_t
+ 
+	m¡x_blocks
+;
+
+43 
+__ušt64_t
+ 
+	m¡x_©Œibu‹s_mask
+;
+
+44 
+¡©x_time¡amp
+ 
+	m¡x_©ime
+;
+
+45 
+¡©x_time¡amp
+ 
+	m¡x_btime
+;
+
+46 
+¡©x_time¡amp
+ 
+	m¡x_ùime
+;
+
+47 
+¡©x_time¡amp
+ 
+	m¡x_mtime
+;
+
+48 
+__ušt32_t
+ 
+	m¡x_rdev_majÜ
+;
+
+49 
+__ušt32_t
+ 
+	m¡x_rdev_mšÜ
+;
+
+50 
+__ušt32_t
+ 
+	m¡x_dev_majÜ
+;
+
+51 
+__ušt32_t
+ 
+	m¡x_dev_mšÜ
+;
+
+52 
+__ušt64_t
+ 
+	m__¡©x_·d2
+[14];
+
+	@/usr/include/bits/types/struct_statx_timestamp.h
+
+19 #iâdeà
+_SYS_STAT_H
+
+
+20 #”rÜ 
+Nev”
+ 
+šþude
+ <
+b™s
+/
+ty³s
+/
+¡ruù_¡©x_time¡amp
+.
+h
+> 
+dœeùly
+, inþud�<
+sys
+/
+¡©
+.h> 
+š¡—d
+.
+
+23 #iâdeà
+__¡©x_time¡amp_defšed
+
+
+24 
+	#__¡©x_time¡amp_defšed
+ 1
+
+	)
+
+26 
+	s¡©x_time¡amp
+
+
+28 
+__št64_t
+ 
+	mtv_£c
+;
+
+29 
+__ušt32_t
+ 
+	mtv_n£c
+;
+
+30 
+__št32_t
+ 
+	m__¡©x_time¡amp_·d1
+[1];
+
+	@/usr/include/gnu/stubs-64.h
+
+6 #ifdeà
+_LIBC
+
+
+7 #”rÜ 
+AµliÿtiÚs
+ 
+may
+ 
+nÙ
+ 
+defše
+ 
+the
+ 
+maüo
+ 
+_LIBC
+
+
+10 
+	#__¡ub___com·t_bdæush
+
+
+	)
+
+11 
+	#__¡ub_chæags
+
+
+	)
+
+12 
+	#__¡ub_fchæags
+
+
+	)
+
+13 
+	#__¡ub_g‰y
+
+
+	)
+
+14 
+	#__¡ub_»voke
+
+
+	)
+
+15 
+	#__¡ub_£Žogš
+
+
+	)
+
+16 
+	#__¡ub_sig»tuº
+
+
+	)
+
+17 
+	#__¡ub_¡ty
+
+
+	)
+
+	@/usr/include/linux/falloc.h
+
+2 #iâdeà
+_FALLOC_H_
+
+
+3 
+	#_FALLOC_H_
+
+
+	)
+
+5 
+	#FALLOC_FL_KEEP_SIZE
+ 0x01
+
+	)
+
+6 
+	#FALLOC_FL_PUNCH_HOLE
+ 0x02
+
+	)
+
+7 
+	#FALLOC_FL_NO_HIDE_STALE
+ 0x04
+
+	)
+
+29 
+	#FALLOC_FL_COLLAPSE_RANGE
+ 0x08
+
+	)
+
+43 
+	#FALLOC_FL_ZERO_RANGE
+ 0x10
+
+	)
+
+60 
+	#FALLOC_FL_INSERT_RANGE
+ 0x20
+
+	)
+
+78 
+	#FALLOC_FL_UNSHARE_RANGE
+ 0x40
+
+	)
+
+	@/usr/include/linux/limits.h
+
+2 #iâdeà
+_LINUX_LIMITS_H
+
+
+3 
+	#_LINUX_LIMITS_H
+
+
+	)
+
+5 
+	#NR_OPEN
+ 1024
+
+	)
+
+7 
+	#NGROUPS_MAX
+ 65536
+
+	)
+
+8 
+	#ARG_MAX
+ 131072
+
+	)
+
+9 
+	#LINK_MAX
+ 127
+
+	)
+
+10 
+	#MAX_CANON
+ 255
+
+	)
+
+11 
+	#MAX_INPUT
+ 255
+
+	)
+
+12 
+	#NAME_MAX
+ 255
+
+	)
+
+13 
+	#PATH_MAX
+ 4096
+
+	)
+
+14 
+	#PIPE_BUF
+ 4096
+
+	)
+
+15 
+	#XATTR_NAME_MAX
+ 255
+
+	)
+
+16 
+	#XATTR_SIZE_MAX
+ 65536
+
+	)
+
+17 
+	#XATTR_LIST_MAX
+ 65536
+
+	)
+
+19 
+	#RTSIG_MAX
+ 32
+
+	)
+
+	@/usr/include/linux/param.h
+
+2 #iâdeà
+_LINUX_PARAM_H
+
+
+3 
+	#_LINUX_PARAM_H
+
+
+	)
+
+5 
+	~<asm/·¿m.h
+>
+
+	@/usr/include/asm-generic/errno.h
+
+2 #iâdeà
+_ASM_GENERIC_ERRNO_H
+
+
+3 
+	#_ASM_GENERIC_ERRNO_H
+
+
+	)
+
+5 
+	~<asm-g’”ic/”ºo-ba£.h
+>
+
+7 
+	#EDEADLK
+ 35
+
+	)
+
+8 
+	#ENAMETOOLONG
+ 36
+
+	)
+
+9 
+	#ENOLCK
+ 37
+
+	)
+
+18 
+	#ENOSYS
+ 38
+
+	)
+
+20 
+	#ENOTEMPTY
+ 39
+
+	)
+
+21 
+	#ELOOP
+ 40
+
+	)
+
+22 
+	#EWOULDBLOCK
+ 
+EAGAIN
+
+
+	)
+
+23 
+	#ENOMSG
+ 42
+
+	)
+
+24 
+	#EIDRM
+ 43
+
+	)
+
+25 
+	#ECHRNG
+ 44
+
+	)
+
+26 
+	#EL2NSYNC
+ 45
+
+	)
+
+27 
+	#EL3HLT
+ 46
+
+	)
+
+28 
+	#EL3RST
+ 47
+
+	)
+
+29 
+	#ELNRNG
+ 48
+
+	)
+
+30 
+	#EUNATCH
+ 49
+
+	)
+
+31 
+	#ENOCSI
+ 50
+
+	)
+
+32 
+	#EL2HLT
+ 51
+
+	)
+
+33 
+	#EBADE
+ 52
+
+	)
+
+34 
+	#EBADR
+ 53
+
+	)
+
+35 
+	#EXFULL
+ 54
+
+	)
+
+36 
+	#ENOANO
+ 55
+
+	)
+
+37 
+	#EBADRQC
+ 56
+
+	)
+
+38 
+	#EBADSLT
+ 57
+
+	)
+
+40 
+	#EDEADLOCK
+ 
+EDEADLK
+
+
+	)
+
+42 
+	#EBFONT
+ 59
+
+	)
+
+43 
+	#ENOSTR
+ 60
+
+	)
+
+44 
+	#ENODATA
+ 61
+
+	)
+
+45 
+	#ETIME
+ 62
+
+	)
+
+46 
+	#ENOSR
+ 63
+
+	)
+
+47 
+	#ENONET
+ 64
+
+	)
+
+48 
+	#ENOPKG
+ 65
+
+	)
+
+49 
+	#EREMOTE
+ 66
+
+	)
+
+50 
+	#ENOLINK
+ 67
+
+	)
+
+51 
+	#EADV
+ 68
+
+	)
+
+52 
+	#ESRMNT
+ 69
+
+	)
+
+53 
+	#ECOMM
+ 70
+
+	)
+
+54 
+	#EPROTO
+ 71
+
+	)
+
+55 
+	#EMULTIHOP
+ 72
+
+	)
+
+56 
+	#EDOTDOT
+ 73
+
+	)
+
+57 
+	#EBADMSG
+ 74
+
+	)
+
+58 
+	#EOVERFLOW
+ 75
+
+	)
+
+59 
+	#ENOTUNIQ
+ 76
+
+	)
+
+60 
+	#EBADFD
+ 77
+
+	)
+
+61 
+	#EREMCHG
+ 78
+
+	)
+
+62 
+	#ELIBACC
+ 79
+
+	)
+
+63 
+	#ELIBBAD
+ 80
+
+	)
+
+64 
+	#ELIBSCN
+ 81
+
+	)
+
+65 
+	#ELIBMAX
+ 82
+
+	)
+
+66 
+	#ELIBEXEC
+ 83
+
+	)
+
+67 
+	#EILSEQ
+ 84
+
+	)
+
+68 
+	#ERESTART
+ 85
+
+	)
+
+69 
+	#ESTRPIPE
+ 86
+
+	)
+
+70 
+	#EUSERS
+ 87
+
+	)
+
+71 
+	#ENOTSOCK
+ 88
+
+	)
+
+72 
+	#EDESTADDRREQ
+ 89
+
+	)
+
+73 
+	#EMSGSIZE
+ 90
+
+	)
+
+74 
+	#EPROTOTYPE
+ 91
+
+	)
+
+75 
+	#ENOPROTOOPT
+ 92
+
+	)
+
+76 
+	#EPROTONOSUPPORT
+ 93
+
+	)
+
+77 
+	#ESOCKTNOSUPPORT
+ 94
+
+	)
+
+78 
+	#EOPNOTSUPP
+ 95
+
+	)
+
+79 
+	#EPFNOSUPPORT
+ 96
+
+	)
+
+80 
+	#EAFNOSUPPORT
+ 97
+
+	)
+
+81 
+	#EADDRINUSE
+ 98
+
+	)
+
+82 
+	#EADDRNOTAVAIL
+ 99
+
+	)
+
+83 
+	#ENETDOWN
+ 100
+
+	)
+
+84 
+	#ENETUNREACH
+ 101
+
+	)
+
+85 
+	#ENETRESET
+ 102
+
+	)
+
+86 
+	#ECONNABORTED
+ 103
+
+	)
+
+87 
+	#ECONNRESET
+ 104
+
+	)
+
+88 
+	#ENOBUFS
+ 105
+
+	)
+
+89 
+	#EISCONN
+ 106
+
+	)
+
+90 
+	#ENOTCONN
+ 107
+
+	)
+
+91 
+	#ESHUTDOWN
+ 108
+
+	)
+
+92 
+	#ETOOMANYREFS
+ 109
+
+	)
+
+93 
+	#ETIMEDOUT
+ 110
+
+	)
+
+94 
+	#ECONNREFUSED
+ 111
+
+	)
+
+95 
+	#EHOSTDOWN
+ 112
+
+	)
+
+96 
+	#EHOSTUNREACH
+ 113
+
+	)
+
+97 
+	#EALREADY
+ 114
+
+	)
+
+98 
+	#EINPROGRESS
+ 115
+
+	)
+
+99 
+	#ESTALE
+ 116
+
+	)
+
+100 
+	#EUCLEAN
+ 117
+
+	)
+
+101 
+	#ENOTNAM
+ 118
+
+	)
+
+102 
+	#ENAVAIL
+ 119
+
+	)
+
+103 
+	#EISNAM
+ 120
+
+	)
+
+104 
+	#EREMOTEIO
+ 121
+
+	)
+
+105 
+	#EDQUOT
+ 122
+
+	)
+
+107 
+	#ENOMEDIUM
+ 123
+
+	)
+
+108 
+	#EMEDIUMTYPE
+ 124
+
+	)
+
+109 
+	#ECANCELED
+ 125
+
+	)
+
+110 
+	#ENOKEY
+ 126
+
+	)
+
+111 
+	#EKEYEXPIRED
+ 127
+
+	)
+
+112 
+	#EKEYREVOKED
+ 128
+
+	)
+
+113 
+	#EKEYREJECTED
+ 129
+
+	)
+
+116 
+	#EOWNERDEAD
+ 130
+
+	)
+
+117 
+	#ENOTRECOVERABLE
+ 131
+
+	)
+
+119 
+	#ERFKILL
+ 132
+
+	)
+
+121 
+	#EHWPOISON
+ 133
+
+	)
+
+	@/usr/include/asm-generic/posix_types.h
+
+2 #iâdeà
+__ASM_GENERIC_POSIX_TYPES_H
+
+
+3 
+	#__ASM_GENERIC_POSIX_TYPES_H
+
+
+	)
+
+5 
+	~<asm/b™¥”lÚg.h
+>
+
+14 #iâdeà
+__k”Ãl_lÚg_t
+
+
+15 
+	t__k”Ãl_lÚg_t
+;
+
+16 
+	t__k”Ãl_ulÚg_t
+;
+
+19 #iâdeà
+__k”Ãl_šo_t
+
+
+20 
+__k”Ãl_ulÚg_t
+ 
+	t__k”Ãl_šo_t
+;
+
+23 #iâdeà
+__k”Ãl_mode_t
+
+
+24 
+	t__k”Ãl_mode_t
+;
+
+27 #iâdeà
+__k”Ãl_pid_t
+
+
+28 
+	t__k”Ãl_pid_t
+;
+
+31 #iâdeà
+__k”Ãl_�c_pid_t
+
+
+32 
+	t__k”Ãl_�c_pid_t
+;
+
+35 #iâdeà
+__k”Ãl_uid_t
+
+
+36 
+	t__k”Ãl_uid_t
+;
+
+37 
+	t__k”Ãl_gid_t
+;
+
+40 #iâdeà
+__k”Ãl_su£cÚds_t
+
+
+41 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_su£cÚds_t
+;
+
+44 #iâdeà
+__k”Ãl_daddr_t
+
+
+45 
+	t__k”Ãl_daddr_t
+;
+
+48 #iâdeà
+__k”Ãl_uid32_t
+
+
+49 
+	t__k”Ãl_uid32_t
+;
+
+50 
+	t__k”Ãl_gid32_t
+;
+
+53 #iâdeà
+__k”Ãl_Þd_uid_t
+
+
+54 
+__k”Ãl_uid_t
+ 
+	t__k”Ãl_Þd_uid_t
+;
+
+55 
+__k”Ãl_gid_t
+ 
+	t__k”Ãl_Þd_gid_t
+;
+
+58 #iâdeà
+__k”Ãl_Þd_dev_t
+
+
+59 
+	t__k”Ãl_Þd_dev_t
+;
+
+66 #iâdeà
+__k”Ãl_size_t
+
+
+67 #ià
+__BITS_PER_LONG
+ != 64
+
+68 
+	t__k”Ãl_size_t
+;
+
+69 
+	t__k”Ãl_ssize_t
+;
+
+70 
+	t__k”Ãl_±rdiff_t
+;
+
+72 
+__k”Ãl_ulÚg_t
+ 
+	t__k”Ãl_size_t
+;
+
+73 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_ssize_t
+;
+
+74 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_±rdiff_t
+;
+
+78 #iâdeà
+__k”Ãl_fsid_t
+
+
+80 
+	mv®
+[2];
+
+81 } 
+	t__k”Ãl_fsid_t
+;
+
+87 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_off_t
+;
+
+88 
+	t__k”Ãl_loff_t
+;
+
+89 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_Þd_time_t
+;
+
+90 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_time_t
+;
+
+91 
+	t__k”Ãl_time64_t
+;
+
+92 
+__k”Ãl_lÚg_t
+ 
+	t__k”Ãl_þock_t
+;
+
+93 
+	t__k”Ãl_tim”_t
+;
+
+94 
+	t__k”Ãl_þockid_t
+;
+
+95 * 
+	t__k”Ãl_ÿddr_t
+;
+
+96 
+	t__k”Ãl_uid16_t
+;
+
+97 
+	t__k”Ãl_gid16_t
+;
+
+	@/usr/include/asm/param.h
+
+1 
+	~<asm-g’”ic/·¿m.h
+>
+
+	@/usr/include/bits/pthread_stack_min.h
+
+20 
+	#PTHREAD_STACK_MIN
+ 16384
+
+	)
+
+	@/usr/include/linux/ioctl.h
+
+2 #iâdeà
+_LINUX_IOCTL_H
+
+
+3 
+	#_LINUX_IOCTL_H
+
+
+	)
+
+5 
+	~<asm/ioùl.h
+>
+
+	@/usr/include/asm-generic/errno-base.h
+
+2 #iâdeà
+_ASM_GENERIC_ERRNO_BASE_H
+
+
+3 
+	#_ASM_GENERIC_ERRNO_BASE_H
+
+
+	)
+
+5 
+	#EPERM
+ 1
+
+	)
+
+6 
+	#ENOENT
+ 2
+
+	)
+
+7 
+	#ESRCH
+ 3
+
+	)
+
+8 
+	#EINTR
+ 4
+
+	)
+
+9 
+	#EIO
+ 5
+
+	)
+
+10 
+	#ENXIO
+ 6
+
+	)
+
+11 
+	#E2BIG
+ 7
+
+	)
+
+12 
+	#ENOEXEC
+ 8
+
+	)
+
+13 
+	#EBADF
+ 9
+
+	)
+
+14 
+	#ECHILD
+ 10
+
+	)
+
+15 
+	#EAGAIN
+ 11
+
+	)
+
+16 
+	#ENOMEM
+ 12
+
+	)
+
+17 
+	#EACCES
+ 13
+
+	)
+
+18 
+	#EFAULT
+ 14
+
+	)
+
+19 
+	#ENOTBLK
+ 15
+
+	)
+
+20 
+	#EBUSY
+ 16
+
+	)
+
+21 
+	#EEXIST
+ 17
+
+	)
+
+22 
+	#EXDEV
+ 18
+
+	)
+
+23 
+	#ENODEV
+ 19
+
+	)
+
+24 
+	#ENOTDIR
+ 20
+
+	)
+
+25 
+	#EISDIR
+ 21
+
+	)
+
+26 
+	#EINVAL
+ 22
+
+	)
+
+27 
+	#ENFILE
+ 23
+
+	)
+
+28 
+	#EMFILE
+ 24
+
+	)
+
+29 
+	#ENOTTY
+ 25
+
+	)
+
+30 
+	#ETXTBSY
+ 26
+
+	)
+
+31 
+	#EFBIG
+ 27
+
+	)
+
+32 
+	#ENOSPC
+ 28
+
+	)
+
+33 
+	#ESPIPE
+ 29
+
+	)
+
+34 
+	#EROFS
+ 30
+
+	)
+
+35 
+	#EMLINK
+ 31
+
+	)
+
+36 
+	#EPIPE
+ 32
+
+	)
+
+37 
+	#EDOM
+ 33
+
+	)
+
+38 
+	#ERANGE
+ 34
+
+	)
+
+	@/usr/include/asm-generic/param.h
+
+2 #iâdeà
+__ASM_GENERIC_PARAM_H
+
+
+3 
+	#__ASM_GENERIC_PARAM_H
+
+
+	)
+
+5 #iâdeà
+HZ
+
+
+6 
+	#HZ
+ 100
+
+	)
+
+9 #iâdeà
+EXEC_PAGESIZE
+
+
+10 
+	#EXEC_PAGESIZE
+ 4096
+
+	)
+
+13 #iâdeà
+NOGROUP
+
+
+14 
+	#NOGROUP
+ (-1)
+
+	)
+
+17 
+	#MAXHOSTNAMELEN
+ 64
+
+	)
+
+	@/usr/include/asm/ioctl.h
+
+1 
+	~<asm-g’”ic/ioùl.h
+>
+
+	@/usr/include/asm-generic/ioctl.h
+
+2 #iâdeà
+_ASM_GENERIC_IOCTL_H
+
+
+3 
+	#_ASM_GENERIC_IOCTL_H
+
+
+	)
+
+23 
+	#_IOC_NRBITS
+ 8
+
+	)
+
+24 
+	#_IOC_TYPEBITS
+ 8
+
+	)
+
+31 #iâdeà
+_IOC_SIZEBITS
+
+
+32 
+	#_IOC_SIZEBITS
+ 14
+
+	)
+
+35 #iâdeà
+_IOC_DIRBITS
+
+
+36 
+	#_IOC_DIRBITS
+ 2
+
+	)
+
+39 
+	#_IOC_NRMASK
+ ((1 << 
+_IOC_NRBITS
+)-1)
+
+	)
+
+40 
+	#_IOC_TYPEMASK
+ ((1 << 
+_IOC_TYPEBITS
+)-1)
+
+	)
+
+41 
+	#_IOC_SIZEMASK
+ ((1 << 
+_IOC_SIZEBITS
+)-1)
+
+	)
+
+42 
+	#_IOC_DIRMASK
+ ((1 << 
+_IOC_DIRBITS
+)-1)
+
+	)
+
+44 
+	#_IOC_NRSHIFT
+ 0
+
+	)
+
+45 
+	#_IOC_TYPESHIFT
+ (
+_IOC_NRSHIFT
++
+_IOC_NRBITS
+)
+
+	)
+
+46 
+	#_IOC_SIZESHIFT
+ (
+_IOC_TYPESHIFT
++
+_IOC_TYPEBITS
+)
+
+	)
+
+47 
+	#_IOC_DIRSHIFT
+ (
+_IOC_SIZESHIFT
++
+_IOC_SIZEBITS
+)
+
+	)
+
+57 #iâdeà
+_IOC_NONE
+
+
+58 
+	#_IOC_NONE
+ 0U
+
+	)
+
+61 #iâdeà
+_IOC_WRITE
+
+
+62 
+	#_IOC_WRITE
+ 1U
+
+	)
+
+65 #iâdeà
+_IOC_READ
+
+
+66 
+	#_IOC_READ
+ 2U
+
+	)
+
+69 
+	#_IOC
+(
+dœ
+,
+ty³
+,
+Ä
+,
+size
+) \
+
+70 (((
+dœ
+è<< 
+_IOC_DIRSHIFT
+) | \
+
+71 ((
+ty³
+è<< 
+_IOC_TYPESHIFT
+) | \
+
+72 ((
+Ä
+è<< 
+_IOC_NRSHIFT
+) | \
+
+73 ((
+size
+è<< 
+_IOC_SIZESHIFT
+))
+
+	)
+
+75 
+	#_IOC_TYPECHECK
+(
+t
+è(Ñ))
+
+	)
+
+83 
+	#_IO
+(
+ty³
+,
+Ä
+è
+	`_IOC
+(
+_IOC_NONE
+,Ñy³),Òr),0)
+
+	)
+
+84 
+	#_IOR
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_READ
+,Ñy³),Òr),(
+	`_IOC_TYPECHECK
+(size)))
+
+	)
+
+85 
+	#_IOW
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_WRITE
+,Ñy³),Òr),(
+	`_IOC_TYPECHECK
+(size)))
+
+	)
+
+86 
+	#_IOWR
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_READ
+|
+_IOC_WRITE
+,Ñy³),Òr),(
+	`_IOC_TYPECHECK
+(size)))
+
+	)
+
+87 
+	#_IOR_BAD
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_READ
+,Ñy³),Òr),(size))
+
+	)
+
+88 
+	#_IOW_BAD
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_WRITE
+,Ñy³),Òr),(size))
+
+	)
+
+89 
+	#_IOWR_BAD
+(
+ty³
+,
+Ä
+,
+size
+è
+	`_IOC
+(
+_IOC_READ
+|
+_IOC_WRITE
+,Ñy³),Òr),(size))
+
+	)
+
+92 
+	#_IOC_DIR
+(
+Ä
+è((Òrè>> 
+_IOC_DIRSHIFT
+è& 
+_IOC_DIRMASK
+)
+
+	)
+
+93 
+	#_IOC_TYPE
+(
+Ä
+è((Òrè>> 
+_IOC_TYPESHIFT
+è& 
+_IOC_TYPEMASK
+)
+
+	)
+
+94 
+	#_IOC_NR
+(
+Ä
+è((Òrè>> 
+_IOC_NRSHIFT
+è& 
+_IOC_NRMASK
+)
+
+	)
+
+95 
+	#_IOC_SIZE
+(
+Ä
+è((Òrè>> 
+_IOC_SIZESHIFT
+è& 
+_IOC_SIZEMASK
+)
+
+	)
+
+99 
+	#IOC_IN
+ (
+_IOC_WRITE
+ << 
+_IOC_DIRSHIFT
+)
+
+	)
+
+100 
+	#IOC_OUT
+ (
+_IOC_READ
+ << 
+_IOC_DIRSHIFT
+)
+
+	)
+
+101 
+	#IOC_INOUT
+ ((
+_IOC_WRITE
+|
+_IOC_READ
+è<< 
+_IOC_DIRSHIFT
+)
+
+	)
+
+102 
+	#IOCSIZE_MASK
+ (
+_IOC_SIZEMASK
+ << 
+_IOC_SIZESHIFT
+)
+
+	)
+
+103 
+	#IOCSIZE_SHIFT
+ (
+_IOC_SIZESHIFT
+)
+
+	)
+
+	@
+1
+.
+1
+/usr/include
+386
+8584
+base64.c
+base64.h
+basic.h
+buffer.c
+buffer.h
+circ_list.h
+clinat.c
+clinat.h
+common.h
+console.c
+console.h
+crypto.c
+crypto.h
+crypto_backend.h
+crypto_openssl.c
+crypto_openssl.h
+crypto_polarssl.c
+crypto_polarssl.h
+cryptoapi.c
+cryptoapi.h
+dhcp.c
+dhcp.h
+errlevel.h
+error.c
+error.h
+event.c
+event.h
+fdmisc.c
+fdmisc.h
+forward-inline.h
+forward.c
+forward.h
+fragment.c
+fragment.h
+gremlin.c
+gremlin.h
+helper.c
+helper.h
+httpdigest.c
+httpdigest.h
+init.c
+init.h
+integer.h
+interval.c
+interval.h
+list.c
+list.h
+lladdr.c
+lladdr.h
+lzo.c
+lzo.h
+manage.c
+manage.h
+mbuf.c
+mbuf.h
+memdbg.h
+misc.c
+misc.h
+mroute.c
+mroute.h
+mss.c
+mss.h
+mstats.c
+mstats.h
+mtcp.c
+mtcp.h
+mtu.c
+mtu.h
+mudp.c
+mudp.h
+multi.c
+multi.h
+ntlm.c
+ntlm.h
+occ-inline.h
+occ.c
+occ.h
+openvpn.c
+openvpn.h
+options.c
+options.h
+otime.c
+otime.h
+packet_id.c
+packet_id.h
+perf.c
+perf.h
+pf-inline.h
+pf.c
+pf.h
+ping-inline.h
+ping.c
+ping.h
+pkcs11.c
+pkcs11.h
+pkcs11_backend.h
+pkcs11_openssl.c
+pkcs11_polarssl.c
+platform.c
+platform.h
+plugin.c
+plugin.h
+pool.c
+pool.h
+proto.c
+proto.h
+proxy.c
+proxy.h
+ps.c
+ps.h
+push.c
+push.h
+pushlist.h
+reliable.c
+reliable.h
+route.c
+route.h
+schedule.c
+schedule.h
+session_id.c
+session_id.h
+shaper.c
+shaper.h
+sig.c
+sig.h
+socket.c
+socket.h
+socks.c
+socks.h
+ssl.c
+ssl.h
+ssl_backend.h
+ssl_common.h
+ssl_openssl.c
+ssl_openssl.h
+ssl_polarssl.c
+ssl_polarssl.h
+ssl_verify.c
+ssl_verify.h
+ssl_verify_backend.h
+ssl_verify_openssl.c
+ssl_verify_openssl.h
+ssl_verify_polarssl.c
+ssl_verify_polarssl.h
+status.c
+status.h
+syshead.h
+tun.c
+tun.h
+win32.c
+win32.h
+/usr/include/arpa/inet.h
+/usr/include/assert.h
+/usr/include/ctype.h
+/usr/include/dlfcn.h
+/usr/include/err.h
+/usr/include/errno.h
+/usr/include/fcntl.h
+/usr/include/grp.h
+/usr/include/inttypes.h
+/usr/include/libgen.h
+/usr/include/limits.h
+/usr/include/linux/errqueue.h
+/usr/include/linux/if_tun.h
+/usr/include/linux/sockios.h
+/usr/include/linux/types.h
+/usr/include/net/if.h
+/usr/include/net/route.h
+/usr/include/netdb.h
+/usr/include/netinet/in.h
+/usr/include/netinet/in_systm.h
+/usr/include/netinet/ip.h
+/usr/include/netinet/tcp.h
+/usr/include/pwd.h
+/usr/include/resolv.h
+/usr/include/selinux/selinux.h
+/usr/include/signal.h
+/usr/include/stdint.h
+/usr/include/stdio.h
+/usr/include/stdlib.h
+/usr/include/string.h
+/usr/include/strings.h
+/usr/include/sys/epoll.h
+/usr/include/sys/file.h
+/usr/include/sys/ioctl.h
+/usr/include/sys/mman.h
+/usr/include/sys/poll.h
+/usr/include/sys/socket.h
+/usr/include/sys/stat.h
+/usr/include/sys/time.h
+/usr/include/sys/types.h
+/usr/include/sys/uio.h
+/usr/include/sys/un.h
+/usr/include/sys/wait.h
+/usr/include/syslog.h
+/usr/include/time.h
+/usr/include/unistd.h
+/usr/include/alloca.h
+/usr/include/arpa/nameser.h
+/usr/include/asm/bitsperlong.h
+/usr/include/asm/sockios.h
+/usr/include/asm/types.h
+/usr/include/bits/byteswap.h
+/usr/include/bits/confname.h
+/usr/include/bits/dl_find_object.h
+/usr/include/bits/dlfcn.h
+/usr/include/bits/endian.h
+/usr/include/bits/environments.h
+/usr/include/bits/epoll.h
+/usr/include/bits/err-ldbl.h
+/usr/include/bits/errno.h
+/usr/include/bits/fcntl.h
+/usr/include/bits/fcntl2.h
+/usr/include/bits/floatn.h
+/usr/include/bits/getopt_posix.h
+/usr/include/bits/in.h
+/usr/include/bits/ioctl-types.h
+/usr/include/bits/ioctls.h
+/usr/include/bits/libc-header-start.h
+/usr/include/bits/mman.h
+/usr/include/bits/mman_ext.h
+/usr/include/bits/netdb.h
+/usr/include/bits/poll.h
+/usr/include/bits/poll2.h
+/usr/include/bits/posix1_lim.h
+/usr/include/bits/posix2_lim.h
+/usr/include/bits/posix_opt.h
+/usr/include/bits/pthreadtypes.h
+/usr/include/bits/sigaction.h
+/usr/include/bits/sigcontext.h
+/usr/include/bits/sigevent-consts.h
+/usr/include/bits/siginfo-consts.h
+/usr/include/bits/signal_ext.h
+/usr/include/bits/signum-generic.h
+/usr/include/bits/sigstack.h
+/usr/include/bits/sigstksz.h
+/usr/include/bits/sigthread.h
+/usr/include/bits/sockaddr.h
+/usr/include/bits/socket.h
+/usr/include/bits/socket2.h
+/usr/include/bits/ss_flags.h
+/usr/include/bits/stat.h
+/usr/include/bits/statx.h
+/usr/include/bits/stdint-intn.h
+/usr/include/bits/stdint-uintn.h
+/usr/include/bits/stdio-ldbl.h
+/usr/include/bits/stdio.h
+/usr/include/bits/stdio2-decl.h
+/usr/include/bits/stdio2.h
+/usr/include/bits/stdio_lim.h
+/usr/include/bits/stdlib-bsearch.h
+/usr/include/bits/stdlib-float.h
+/usr/include/bits/stdlib-ldbl.h
+/usr/include/bits/stdlib.h
+/usr/include/bits/string_fortified.h
+/usr/include/bits/strings_fortified.h
+/usr/include/bits/time.h
+/usr/include/bits/types.h
+/usr/include/bits/types/FILE.h
+/usr/include/bits/types/__FILE.h
+/usr/include/bits/types/__fpos64_t.h
+/usr/include/bits/types/__fpos_t.h
+/usr/include/bits/types/__sigset_t.h
+/usr/include/bits/types/clock_t.h
+/usr/include/bits/types/clockid_t.h
+/usr/include/bits/types/cookie_io_functions_t.h
+/usr/include/bits/types/error_t.h
+/usr/include/bits/types/idtype_t.h
+/usr/include/bits/types/locale_t.h
+/usr/include/bits/types/res_state.h
+/usr/include/bits/types/sig_atomic_t.h
+/usr/include/bits/types/sigevent_t.h
+/usr/include/bits/types/siginfo_t.h
+/usr/include/bits/types/sigset_t.h
+/usr/include/bits/types/sigval_t.h
+/usr/include/bits/types/stack_t.h
+/usr/include/bits/types/struct_FILE.h
+/usr/include/bits/types/struct_iovec.h
+/usr/include/bits/types/struct_itimerspec.h
+/usr/include/bits/types/struct_osockaddr.h
+/usr/include/bits/types/struct_rusage.h
+/usr/include/bits/types/struct_sigstack.h
+/usr/include/bits/types/struct_timespec.h
+/usr/include/bits/types/struct_timeval.h
+/usr/include/bits/types/struct_tm.h
+/usr/include/bits/types/time_t.h
+/usr/include/bits/types/timer_t.h
+/usr/include/bits/uintn-identity.h
+/usr/include/bits/uio-ext.h
+/usr/include/bits/uio_lim.h
+/usr/include/bits/unistd.h
+/usr/include/bits/unistd_ext.h
+/usr/include/bits/waitflags.h
+/usr/include/bits/waitstatus.h
+/usr/include/bits/wchar.h
+/usr/include/bits/wordsize.h
+/usr/include/bits/xopen_lim.h
+/usr/include/endian.h
+/usr/include/features.h
+/usr/include/linux/filter.h
+/usr/include/linux/if_ether.h
+/usr/include/linux/posix_types.h
+/usr/include/linux/time_types.h
+/usr/include/rpc/netdb.h
+/usr/include/sys/cdefs.h
+/usr/include/sys/param.h
+/usr/include/sys/select.h
+/usr/include/sys/syslog.h
+/usr/include/sys/ttydefaults.h
+/usr/include/sys/ucontext.h
+/usr/include/arpa/nameser_compat.h
+/usr/include/asm-generic/bitsperlong.h
+/usr/include/asm-generic/sockios.h
+/usr/include/asm-generic/types.h
+/usr/include/asm/ioctls.h
+/usr/include/asm/posix_types.h
+/usr/include/asm/socket.h
+/usr/include/bits/endianness.h
+/usr/include/bits/fcntl-linux.h
+/usr/include/bits/floatn-common.h
+/usr/include/bits/getopt_core.h
+/usr/include/bits/local_lim.h
+/usr/include/bits/long-double.h
+/usr/include/bits/mman-linux.h
+/usr/include/bits/mman-map-flags-generic.h
+/usr/include/bits/param.h
+/usr/include/bits/select.h
+/usr/include/bits/select2.h
+/usr/include/bits/siginfo-arch.h
+/usr/include/bits/siginfo-consts-arch.h
+/usr/include/bits/signum-arch.h
+/usr/include/bits/socket-constants.h
+/usr/include/bits/socket_type.h
+/usr/include/bits/statx-generic.h
+/usr/include/bits/struct_stat.h
+/usr/include/bits/syslog-ldbl.h
+/usr/include/bits/syslog-path.h
+/usr/include/bits/syslog.h
+/usr/include/bits/thread-shared-types.h
+/usr/include/bits/time64.h
+/usr/include/bits/timesize.h
+/usr/include/bits/timex.h
+/usr/include/bits/types/__locale_t.h
+/usr/include/bits/types/__mbstate_t.h
+/usr/include/bits/types/__sigval_t.h
+/usr/include/bits/typesizes.h
+/usr/include/bits/unistd-decl.h
+/usr/include/features-time64.h
+/usr/include/gnu/stubs.h
+/usr/include/linux/bpf_common.h
+/usr/include/linux/close_range.h
+/usr/include/linux/errno.h
+/usr/include/linux/stat.h
+/usr/include/linux/stddef.h
+/usr/include/stdc-predef.h
+/usr/include/asm-generic/int-ll64.h
+/usr/include/asm-generic/ioctls.h
+/usr/include/asm-generic/socket.h
+/usr/include/asm/errno.h
+/usr/include/asm/posix_types_32.h
+/usr/include/asm/posix_types_64.h
+/usr/include/asm/posix_types_x32.h
+/usr/include/bits/atomic_wide_counter.h
+/usr/include/bits/mman-shared.h
+/usr/include/bits/pthread_stack_min-dynamic.h
+/usr/include/bits/pthreadtypes-arch.h
+/usr/include/bits/select-decl.h
+/usr/include/bits/struct_mutex.h
+/usr/include/bits/struct_rwlock.h
+/usr/include/bits/struct_stat_time64_helper.h
+/usr/include/bits/syslog-decl.h
+/usr/include/bits/types/struct_statx.h
+/usr/include/bits/types/struct_statx_timestamp.h
+/usr/include/gnu/stubs-64.h
+/usr/include/linux/falloc.h
+/usr/include/linux/limits.h
+/usr/include/linux/param.h
+/usr/include/asm-generic/errno.h
+/usr/include/asm-generic/posix_types.h
+/usr/include/asm/param.h
+/usr/include/bits/pthread_stack_min.h
+/usr/include/linux/ioctl.h
+/usr/include/asm-generic/errno-base.h
+/usr/include/asm-generic/param.h
+/usr/include/asm/ioctl.h
+/usr/include/asm-generic/ioctl.h
diff -Naurp openvpn-2.3.8.orig/src/openvpn/forward.c openvpn-2.3.8/src/openvpn/forward.c
--- openvpn-2.3.8.orig/src/openvpn/forward.c	2015-07-17 07:43:38.000000000 +0200
+++ openvpn-2.3.8/src/openvpn/forward.c	2024-09-26 10:50:22.019460850 +0200
@@ -341,17 +341,24 @@ check_server_poll_timeout_dowork (struct
 }
 
 /*
- * Schedule a signal n_seconds from now.
+ * Schedule a SIGTERM signal c->options.scheduled_exit_interval seconds from now.
  */
-void
-schedule_exit (struct context *c, const int n_seconds, const int signal)
+bool
+schedule_exit (struct context *c)
 {
-  tls_set_single_session (c->c2.tls_multi);
-  update_time ();
-  reset_coarse_timers (c);
-  event_timeout_init (&c->c2.scheduled_exit, n_seconds, now);
-  c->c2.scheduled_exit_signal = signal;
-  msg (D_SCHED_EXIT, "Delayed exit in %d seconds", n_seconds);
+   const int n_seconds = c->options.scheduled_exit_interval;
+    /* don't reschedule if already scheduled. */
+   if (event_timeout_defined(&c->c2.scheduled_exit))
+   {
+        return false;
+   }
+   tls_set_single_session (c->c2.tls_multi);
+   update_time ();
+   reset_coarse_timers (c);
+   event_timeout_init (&c->c2.scheduled_exit, n_seconds, now);
+   c->c2.scheduled_exit_signal = SIGTERM;
+   msg (D_SCHED_EXIT, "Delayed exit in %d seconds", n_seconds);
+   return true;
 }
 
 /*
diff -Naurp openvpn-2.3.8.orig/src/openvpn/forward.h openvpn-2.3.8/src/openvpn/forward.h
--- openvpn-2.3.8.orig/src/openvpn/forward.h	2015-07-17 07:43:32.000000000 +0200
+++ openvpn-2.3.8/src/openvpn/forward.h	2024-09-26 10:52:16.834574141 +0200
@@ -236,7 +236,7 @@ bool send_control_channel_string (struct
 void process_ip_header (struct context *c, unsigned int flags, struct buffer *buf);
 
 #if P2MP
-void schedule_exit (struct context *c, const int n_seconds, const int signal);
+bool schedule_exit (struct context *c);
 #endif
 
 #endif /* FORWARD_H */
diff -Naurp openvpn-2.3.8.orig/src/openvpn/push.c openvpn-2.3.8/src/openvpn/push.c
--- openvpn-2.3.8.orig/src/openvpn/push.c	2015-07-17 07:43:32.000000000 +0200
+++ openvpn-2.3.8/src/openvpn/push.c	2024-09-26 20:04:15.073534426 +0200
@@ -146,11 +146,15 @@ server_pushed_signal (struct context *c,
 void
 send_auth_failed (struct context *c, const char *client_reason)
 {
+  if(!schedule_exit(c))
+  {
+     msg(D_TLS_DEBUG, "exit already scheduled for context");
+     return;
+  }
   struct gc_arena gc = gc_new ();
   static const char auth_failed[] = "AUTH_FAILED";
   size_t len;
 
-  schedule_exit (c, c->options.scheduled_exit_interval, SIGTERM);
 
   len = (client_reason ? strlen(client_reason)+1 : 0) + sizeof(auth_failed);
   if (len > PUSH_BUNDLE_SIZE)
@@ -173,7 +177,7 @@ send_auth_failed (struct context *c, con
 void
 send_restart (struct context *c, const char *kill_msg)
 {
-  schedule_exit (c, c->options.scheduled_exit_interval, SIGTERM);
+  schedule_exit (c);
   send_control_channel_string (c, kill_msg ? kill_msg : "RESTART", D_PUSH);
 }
 
