summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/net
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/net')
-rw-r--r--vendor/golang.org/x/net/bpf/constants.go30
-rw-r--r--vendor/golang.org/x/net/bpf/setter.go10
-rw-r--r--vendor/golang.org/x/net/bpf/vm_bpf_test.go3
-rw-r--r--vendor/golang.org/x/net/http2/configure_transport.go2
-rw-r--r--vendor/golang.org/x/net/http2/databuffer_test.go8
-rw-r--r--vendor/golang.org/x/net/http2/errors.go13
-rw-r--r--vendor/golang.org/x/net/http2/go18.go2
-rw-r--r--vendor/golang.org/x/net/http2/go19.go16
-rw-r--r--vendor/golang.org/x/net/http2/go19_test.go60
-rw-r--r--vendor/golang.org/x/net/http2/hpack/hpack_test.go4
-rw-r--r--vendor/golang.org/x/net/http2/hpack/tables.go126
-rw-r--r--vendor/golang.org/x/net/http2/http2.go8
-rw-r--r--vendor/golang.org/x/net/http2/not_go18.go2
-rw-r--r--vendor/golang.org/x/net/http2/not_go19.go16
-rw-r--r--vendor/golang.org/x/net/http2/pipe.go16
-rw-r--r--vendor/golang.org/x/net/http2/pipe_test.go21
-rw-r--r--vendor/golang.org/x/net/http2/server.go141
-rw-r--r--vendor/golang.org/x/net/http2/server_test.go63
-rw-r--r--vendor/golang.org/x/net/http2/transport.go11
-rw-r--r--vendor/golang.org/x/net/http2/transport_test.go108
-rw-r--r--vendor/golang.org/x/net/http2/writesched_priority.go2
-rw-r--r--vendor/golang.org/x/net/internal/iana/const.go6
-rw-r--r--vendor/golang.org/x/net/internal/netreflect/socket.go41
-rw-r--r--vendor/golang.org/x/net/internal/netreflect/socket_19.go37
-rw-r--r--vendor/golang.org/x/net/internal/netreflect/socket_posix.go31
-rw-r--r--vendor/golang.org/x/net/internal/netreflect/socket_stub.go12
-rw-r--r--vendor/golang.org/x/net/internal/netreflect/socket_test.go65
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr.go11
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go13
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go14
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go14
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go14
-rw-r--r--vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go17
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_darwin.go44
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_dragonfly.go44
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_freebsd.go44
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_linux.go49
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_netbsd.go47
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_openbsd.go44
-rw-r--r--vendor/golang.org/x/net/internal/socket/defs_solaris.go44
-rw-r--r--vendor/golang.org/x/net/internal/socket/error_unix.go31
-rw-r--r--vendor/golang.org/x/net/internal/socket/error_windows.go26
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_32bit.go15
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_64bit.go15
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go15
-rw-r--r--vendor/golang.org/x/net/internal/socket/iovec_stub.go11
-rw-r--r--vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go21
-rw-r--r--vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go42
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_bsd.go39
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go12
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux.go36
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go20
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go20
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go34
-rw-r--r--vendor/golang.org/x/net/internal/socket/msghdr_stub.go14
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go74
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_msg.go77
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go18
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go18
-rw-r--r--vendor/golang.org/x/net/internal/socket/rawconn_stub.go25
-rw-r--r--vendor/golang.org/x/net/internal/socket/reflect.go62
-rw-r--r--vendor/golang.org/x/net/internal/socket/socket.go285
-rw-r--r--vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go256
-rw-r--r--vendor/golang.org/x/net/internal/socket/socket_test.go46
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys.go33
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_bsd.go17
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_bsdvar.go14
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_darwin.go (renamed from vendor/golang.org/x/net/ipv4/go19_test.go)8
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_dragonfly.go (renamed from vendor/golang.org/x/net/ipv6/go19_test.go)8
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux.go27
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_386.go55
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_386.s (renamed from vendor/golang.org/x/net/ipv6/sys_linux_386.s)3
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_arm.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_mips.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go10
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go55
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s11
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_netbsd.go25
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_posix.go168
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_solaris.go71
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s (renamed from vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s)5
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_stub.go64
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_unix.go33
-rw-r--r--vendor/golang.org/x/net/internal/socket/sys_windows.go70
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go61
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go61
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go61
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_386.go63
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go63
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go63
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go63
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go66
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go65
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go68
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go61
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go59
-rw-r--r--vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go60
-rw-r--r--vendor/golang.org/x/net/ipv4/batch.go191
-rw-r--r--vendor/golang.org/x/net/ipv4/bpfopt_linux.go28
-rw-r--r--vendor/golang.org/x/net/ipv4/bpfopt_stub.go16
-rw-r--r--vendor/golang.org/x/net/ipv4/control.go74
-rw-r--r--vendor/golang.org/x/net/ipv4/control_bsd.go22
-rw-r--r--vendor/golang.org/x/net/ipv4/control_pktinfo.go18
-rw-r--r--vendor/golang.org/x/net/ipv4/control_stub.go18
-rw-r--r--vendor/golang.org/x/net/ipv4/control_test.go21
-rw-r--r--vendor/golang.org/x/net/ipv4/control_unix.go101
-rw-r--r--vendor/golang.org/x/net/ipv4/control_windows.go23
-rw-r--r--vendor/golang.org/x/net/ipv4/defs_linux.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/dgramopt.go (renamed from vendor/golang.org/x/net/ipv4/dgramopt_posix.go)130
-rw-r--r--vendor/golang.org/x/net/ipv4/dgramopt_stub.go106
-rw-r--r--vendor/golang.org/x/net/ipv4/endpoint.go61
-rw-r--r--vendor/golang.org/x/net/ipv4/genericopt.go (renamed from vendor/golang.org/x/net/ipv4/genericopt_posix.go)40
-rw-r--r--vendor/golang.org/x/net/ipv4/genericopt_stub.go29
-rw-r--r--vendor/golang.org/x/net/ipv4/header.go70
-rw-r--r--vendor/golang.org/x/net/ipv4/header_test.go294
-rw-r--r--vendor/golang.org/x/net/ipv4/helper.go14
-rw-r--r--vendor/golang.org/x/net/ipv4/ipv4_test.go22
-rw-r--r--vendor/golang.org/x/net/ipv4/multicastlistener_test.go26
-rw-r--r--vendor/golang.org/x/net/ipv4/packet.go45
-rw-r--r--vendor/golang.org/x/net/ipv4/packet_go1_8.go56
-rw-r--r--vendor/golang.org/x/net/ipv4/packet_go1_9.go67
-rw-r--r--vendor/golang.org/x/net/ipv4/payload.go9
-rw-r--r--vendor/golang.org/x/net/ipv4/payload_cmsg.go51
-rw-r--r--vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go59
-rw-r--r--vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go67
-rw-r--r--vendor/golang.org/x/net/ipv4/payload_nocmsg.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go248
-rw-r--r--vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go388
-rw-r--r--vendor/golang.org/x/net/ipv4/sockopt.go14
-rw-r--r--vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go46
-rw-r--r--vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go21
-rw-r--r--vendor/golang.org/x/net/ipv4/sockopt_posix.go115
-rw-r--r--vendor/golang.org/x/net/ipv4/sockopt_stub.go35
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_asmreq.go (renamed from vendor/golang.org/x/net/ipv4/sockopt_asmreq.go)38
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go25
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_asmreqn.go (renamed from vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go)18
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go (renamed from vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go)10
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_bpf.go23
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_bpf_stub.go16
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_bsd.go29
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_darwin.go52
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_dragonfly.go35
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_freebsd.go37
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_linux.go36
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_linux_386.s8
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_openbsd.go32
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_solaris.go33
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s8
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_ssmreq.go (renamed from vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go)29
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go (renamed from vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go)10
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_stub.go4
-rw-r--r--vendor/golang.org/x/net/ipv4/sys_windows.go23
-rw-r--r--vendor/golang.org/x/net/ipv4/syscall_linux_386.go31
-rw-r--r--vendor/golang.org/x/net/ipv4/syscall_solaris.go38
-rw-r--r--vendor/golang.org/x/net/ipv4/syscall_unix.go26
-rw-r--r--vendor/golang.org/x/net/ipv4/syscall_windows.go18
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_386.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_arm.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_mips.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go2
-rw-r--r--vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/batch.go119
-rw-r--r--vendor/golang.org/x/net/ipv6/bpfopt_linux.go28
-rw-r--r--vendor/golang.org/x/net/ipv6/bpfopt_stub.go16
-rw-r--r--vendor/golang.org/x/net/ipv6/control.go102
-rw-r--r--vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go33
-rw-r--r--vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go63
-rw-r--r--vendor/golang.org/x/net/ipv6/control_stub.go18
-rw-r--r--vendor/golang.org/x/net/ipv6/control_test.go21
-rw-r--r--vendor/golang.org/x/net/ipv6/control_unix.go118
-rw-r--r--vendor/golang.org/x/net/ipv6/control_windows.go23
-rw-r--r--vendor/golang.org/x/net/ipv6/defs_linux.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/dgramopt.go (renamed from vendor/golang.org/x/net/ipv6/dgramopt_posix.go)146
-rw-r--r--vendor/golang.org/x/net/ipv6/dgramopt_stub.go119
-rw-r--r--vendor/golang.org/x/net/ipv6/endpoint.go34
-rw-r--r--vendor/golang.org/x/net/ipv6/genericopt.go (renamed from vendor/golang.org/x/net/ipv6/genericopt_posix.go)40
-rw-r--r--vendor/golang.org/x/net/ipv6/genericopt_stub.go30
-rw-r--r--vendor/golang.org/x/net/ipv6/icmp_stub.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/ipv6_test.go22
-rw-r--r--vendor/golang.org/x/net/ipv6/multicastlistener_test.go29
-rw-r--r--vendor/golang.org/x/net/ipv6/payload.go9
-rw-r--r--vendor/golang.org/x/net/ipv6/payload_cmsg.go39
-rw-r--r--vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go55
-rw-r--r--vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go57
-rw-r--r--vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go242
-rw-r--r--vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go373
-rw-r--r--vendor/golang.org/x/net/ipv6/sockopt.go15
-rw-r--r--vendor/golang.org/x/net/ipv6/sockopt_posix.go113
-rw-r--r--vendor/golang.org/x/net/ipv6/sockopt_stub.go39
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_asmreq.go (renamed from vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go)8
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go17
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_bpf.go23
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_bpf_stub.go16
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_bsd.go31
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_darwin.go47
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_freebsd.go39
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_linux.go40
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_solaris.go39
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_ssmreq.go (renamed from vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go)29
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go (renamed from vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go)10
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_stub.go4
-rw-r--r--vendor/golang.org/x/net/ipv6/sys_windows.go15
-rw-r--r--vendor/golang.org/x/net/ipv6/syscall_linux_386.go31
-rw-r--r--vendor/golang.org/x/net/ipv6/syscall_solaris.go38
-rw-r--r--vendor/golang.org/x/net/ipv6/syscall_unix.go26
-rw-r--r--vendor/golang.org/x/net/ipv6/syscall_windows.go18
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_386.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_arm.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_mips.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go2
-rw-r--r--vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go2
-rw-r--r--vendor/golang.org/x/net/nettest/conntest.go4
-rw-r--r--vendor/golang.org/x/net/publicsuffix/list_test.go14
-rw-r--r--vendor/golang.org/x/net/publicsuffix/table.go18072
-rw-r--r--vendor/golang.org/x/net/publicsuffix/table_test.go382
-rw-r--r--vendor/golang.org/x/net/trace/events.go6
-rw-r--r--vendor/golang.org/x/net/trace/trace.go58
251 files changed, 17407 insertions, 11485 deletions
diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go
index ccf6adafb..b89ca3523 100644
--- a/vendor/golang.org/x/net/bpf/constants.go
+++ b/vendor/golang.org/x/net/bpf/constants.go
@@ -76,54 +76,54 @@ const (
// ExtLen returns the length of the packet.
ExtLen Extension = 1
// ExtProto returns the packet's L3 protocol type.
- ExtProto = 0
+ ExtProto Extension = 0
// ExtType returns the packet's type (skb->pkt_type in the kernel)
//
// TODO: better documentation. How nice an API do we want to
// provide for these esoteric extensions?
- ExtType = 4
+ ExtType Extension = 4
// ExtPayloadOffset returns the offset of the packet payload, or
// the first protocol header that the kernel does not know how to
// parse.
- ExtPayloadOffset = 52
+ ExtPayloadOffset Extension = 52
// ExtInterfaceIndex returns the index of the interface on which
// the packet was received.
- ExtInterfaceIndex = 8
+ ExtInterfaceIndex Extension = 8
// ExtNetlinkAttr returns the netlink attribute of type X at
// offset A.
- ExtNetlinkAttr = 12
+ ExtNetlinkAttr Extension = 12
// ExtNetlinkAttrNested returns the nested netlink attribute of
// type X at offset A.
- ExtNetlinkAttrNested = 16
+ ExtNetlinkAttrNested Extension = 16
// ExtMark returns the packet's mark value.
- ExtMark = 20
+ ExtMark Extension = 20
// ExtQueue returns the packet's assigned hardware queue.
- ExtQueue = 24
+ ExtQueue Extension = 24
// ExtLinkLayerType returns the packet's hardware address type
// (e.g. Ethernet, Infiniband).
- ExtLinkLayerType = 28
+ ExtLinkLayerType Extension = 28
// ExtRXHash returns the packets receive hash.
//
// TODO: figure out what this rxhash actually is.
- ExtRXHash = 32
+ ExtRXHash Extension = 32
// ExtCPUID returns the ID of the CPU processing the current
// packet.
- ExtCPUID = 36
+ ExtCPUID Extension = 36
// ExtVLANTag returns the packet's VLAN tag.
- ExtVLANTag = 44
+ ExtVLANTag Extension = 44
// ExtVLANTagPresent returns non-zero if the packet has a VLAN
// tag.
//
// TODO: I think this might be a lie: it reads bit 0x1000 of the
// VLAN header, which changed meaning in recent revisions of the
// spec - this extension may now return meaningless information.
- ExtVLANTagPresent = 48
+ ExtVLANTagPresent Extension = 48
// ExtVLANProto returns 0x8100 if the frame has a VLAN header,
// 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some
// other value if no VLAN information is present.
- ExtVLANProto = 60
+ ExtVLANProto Extension = 60
// ExtRand returns a uniformly random uint32.
- ExtRand = 56
+ ExtRand Extension = 56
)
// The following gives names to various bit patterns used in opcode construction.
diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go
new file mode 100644
index 000000000..43e35f0ac
--- /dev/null
+++ b/vendor/golang.org/x/net/bpf/setter.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package bpf
+
+// A Setter is a type which can attach a compiled BPF filter to itself.
+type Setter interface {
+ SetBPF(filter []RawInstruction) error
+}
diff --git a/vendor/golang.org/x/net/bpf/vm_bpf_test.go b/vendor/golang.org/x/net/bpf/vm_bpf_test.go
index 76dd970e6..77fa8fe4a 100644
--- a/vendor/golang.org/x/net/bpf/vm_bpf_test.go
+++ b/vendor/golang.org/x/net/bpf/vm_bpf_test.go
@@ -149,9 +149,6 @@ func testOSVM(t *testing.T, filter []bpf.Instruction) (virtualMachine, func()) {
p := ipv4.NewPacketConn(l)
if err = p.SetBPF(prog); err != nil {
- if err.Error() == "operation not supported" { // TODO: gross. remove once 19051 fixed.
- t.Skip("Skipping until Issue 19051 is fixed.")
- }
t.Fatalf("failed to attach BPF program to listener: %v", err)
}
diff --git a/vendor/golang.org/x/net/http2/configure_transport.go b/vendor/golang.org/x/net/http2/configure_transport.go
index 4f720f530..b65fc6d42 100644
--- a/vendor/golang.org/x/net/http2/configure_transport.go
+++ b/vendor/golang.org/x/net/http2/configure_transport.go
@@ -56,7 +56,7 @@ func configureTransport(t1 *http.Transport) (*Transport, error) {
}
// registerHTTPSProtocol calls Transport.RegisterProtocol but
-// convering panics into errors.
+// converting panics into errors.
func registerHTTPSProtocol(t *http.Transport, rt http.RoundTripper) (err error) {
defer func() {
if e := recover(); e != nil {
diff --git a/vendor/golang.org/x/net/http2/databuffer_test.go b/vendor/golang.org/x/net/http2/databuffer_test.go
index 0018130b9..028e12e52 100644
--- a/vendor/golang.org/x/net/http2/databuffer_test.go
+++ b/vendor/golang.org/x/net/http2/databuffer_test.go
@@ -71,13 +71,13 @@ func testDataBuffer(t *testing.T, wantBytes []byte, setup func(t *testing.T) *da
func TestDataBufferAllocation(t *testing.T) {
writes := [][]byte{
bytes.Repeat([]byte("a"), 1*1024-1),
- []byte{'a'},
+ []byte("a"),
bytes.Repeat([]byte("b"), 4*1024-1),
- []byte{'b'},
+ []byte("b"),
bytes.Repeat([]byte("c"), 8*1024-1),
- []byte{'c'},
+ []byte("c"),
bytes.Repeat([]byte("d"), 16*1024-1),
- []byte{'d'},
+ []byte("d"),
bytes.Repeat([]byte("e"), 32*1024),
}
var wantRead bytes.Buffer
diff --git a/vendor/golang.org/x/net/http2/errors.go b/vendor/golang.org/x/net/http2/errors.go
index 20fd7626a..71f2c4631 100644
--- a/vendor/golang.org/x/net/http2/errors.go
+++ b/vendor/golang.org/x/net/http2/errors.go
@@ -87,13 +87,16 @@ type goAwayFlowError struct{}
func (goAwayFlowError) Error() string { return "connection exceeded flow control window size" }
-// connErrorReason wraps a ConnectionError with an informative error about why it occurs.
-
+// connError represents an HTTP/2 ConnectionError error code, along
+// with a string (for debugging) explaining why.
+//
// Errors of this type are only returned by the frame parser functions
-// and converted into ConnectionError(ErrCodeProtocol).
+// and converted into ConnectionError(Code), after stashing away
+// the Reason into the Framer's errDetail field, accessible via
+// the (*Framer).ErrorDetail method.
type connError struct {
- Code ErrCode
- Reason string
+ Code ErrCode // the ConnectionError error code
+ Reason string // additional reason
}
func (e connError) Error() string {
diff --git a/vendor/golang.org/x/net/http2/go18.go b/vendor/golang.org/x/net/http2/go18.go
index 73cc2381f..4f30d228a 100644
--- a/vendor/golang.org/x/net/http2/go18.go
+++ b/vendor/golang.org/x/net/http2/go18.go
@@ -52,3 +52,5 @@ func reqGetBody(req *http.Request) func() (io.ReadCloser, error) {
func reqBodyIsNoBody(body io.ReadCloser) bool {
return body == http.NoBody
}
+
+func go18httpNoBody() io.ReadCloser { return http.NoBody } // for tests only
diff --git a/vendor/golang.org/x/net/http2/go19.go b/vendor/golang.org/x/net/http2/go19.go
new file mode 100644
index 000000000..38124ba56
--- /dev/null
+++ b/vendor/golang.org/x/net/http2/go19.go
@@ -0,0 +1,16 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package http2
+
+import (
+ "net/http"
+)
+
+func configureServer19(s *http.Server, conf *Server) error {
+ s.RegisterOnShutdown(conf.state.startGracefulShutdown)
+ return nil
+}
diff --git a/vendor/golang.org/x/net/http2/go19_test.go b/vendor/golang.org/x/net/http2/go19_test.go
new file mode 100644
index 000000000..1675d248f
--- /dev/null
+++ b/vendor/golang.org/x/net/http2/go19_test.go
@@ -0,0 +1,60 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package http2
+
+import (
+ "context"
+ "net/http"
+ "reflect"
+ "testing"
+ "time"
+)
+
+func TestServerGracefulShutdown(t *testing.T) {
+ var st *serverTester
+ handlerDone := make(chan struct{})
+ st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
+ defer close(handlerDone)
+ go st.ts.Config.Shutdown(context.Background())
+
+ ga := st.wantGoAway()
+ if ga.ErrCode != ErrCodeNo {
+ t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode)
+ }
+ if ga.LastStreamID != 1 {
+ t.Errorf("GOAWAY LastStreamID = %v; want 1", ga.LastStreamID)
+ }
+
+ w.Header().Set("x-foo", "bar")
+ })
+ defer st.Close()
+
+ st.greet()
+ st.bodylessReq1()
+
+ select {
+ case <-handlerDone:
+ case <-time.After(5 * time.Second):
+ t.Fatalf("server did not shutdown?")
+ }
+ hf := st.wantHeaders()
+ goth := st.decodeHeader(hf.HeaderBlockFragment())
+ wanth := [][2]string{
+ {":status", "200"},
+ {"x-foo", "bar"},
+ {"content-type", "text/plain; charset=utf-8"},
+ {"content-length", "0"},
+ }
+ if !reflect.DeepEqual(goth, wanth) {
+ t.Errorf("Got headers %v; want %v", goth, wanth)
+ }
+
+ n, err := st.cc.Read([]byte{0})
+ if n != 0 || err == nil {
+ t.Errorf("Read = %v, %v; want 0, non-nil", n, err)
+ }
+}
diff --git a/vendor/golang.org/x/net/http2/hpack/hpack_test.go b/vendor/golang.org/x/net/http2/hpack/hpack_test.go
index c2f8fd102..bc7f47678 100644
--- a/vendor/golang.org/x/net/http2/hpack/hpack_test.go
+++ b/vendor/golang.org/x/net/http2/hpack/hpack_test.go
@@ -648,6 +648,10 @@ func TestHuffmanFuzzCrash(t *testing.T) {
}
}
+func pair(name, value string) HeaderField {
+ return HeaderField{Name: name, Value: value}
+}
+
func dehex(s string) []byte {
s = strings.Replace(s, " ", "", -1)
s = strings.Replace(s, "\n", "", -1)
diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go
index 5d7f6359a..a66cfbea6 100644
--- a/vendor/golang.org/x/net/http2/hpack/tables.go
+++ b/vendor/golang.org/x/net/http2/hpack/tables.go
@@ -125,74 +125,70 @@ func (t *headerFieldTable) idToIndex(id uint64) uint64 {
return k + 1
}
-func pair(name, value string) HeaderField {
- return HeaderField{Name: name, Value: value}
-}
-
// http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07#appendix-B
var staticTable = newStaticTable()
var staticTableEntries = [...]HeaderField{
- pair(":authority", ""),
- pair(":method", "GET"),
- pair(":method", "POST"),
- pair(":path", "/"),
- pair(":path", "/index.html"),
- pair(":scheme", "http"),
- pair(":scheme", "https"),
- pair(":status", "200"),
- pair(":status", "204"),
- pair(":status", "206"),
- pair(":status", "304"),
- pair(":status", "400"),
- pair(":status", "404"),
- pair(":status", "500"),
- pair("accept-charset", ""),
- pair("accept-encoding", "gzip, deflate"),
- pair("accept-language", ""),
- pair("accept-ranges", ""),
- pair("accept", ""),
- pair("access-control-allow-origin", ""),
- pair("age", ""),
- pair("allow", ""),
- pair("authorization", ""),
- pair("cache-control", ""),
- pair("content-disposition", ""),
- pair("content-encoding", ""),
- pair("content-language", ""),
- pair("content-length", ""),
- pair("content-location", ""),
- pair("content-range", ""),
- pair("content-type", ""),
- pair("cookie", ""),
- pair("date", ""),
- pair("etag", ""),
- pair("expect", ""),
- pair("expires", ""),
- pair("from", ""),
- pair("host", ""),
- pair("if-match", ""),
- pair("if-modified-since", ""),
- pair("if-none-match", ""),
- pair("if-range", ""),
- pair("if-unmodified-since", ""),
- pair("last-modified", ""),
- pair("link", ""),
- pair("location", ""),
- pair("max-forwards", ""),
- pair("proxy-authenticate", ""),
- pair("proxy-authorization", ""),
- pair("range", ""),
- pair("referer", ""),
- pair("refresh", ""),
- pair("retry-after", ""),
- pair("server", ""),
- pair("set-cookie", ""),
- pair("strict-transport-security", ""),
- pair("transfer-encoding", ""),
- pair("user-agent", ""),
- pair("vary", ""),
- pair("via", ""),
- pair("www-authenticate", ""),
+ {Name: ":authority"},
+ {Name: ":method", Value: "GET"},
+ {Name: ":method", Value: "POST"},
+ {Name: ":path", Value: "/"},
+ {Name: ":path", Value: "/index.html"},
+ {Name: ":scheme", Value: "http"},
+ {Name: ":scheme", Value: "https"},
+ {Name: ":status", Value: "200"},
+ {Name: ":status", Value: "204"},
+ {Name: ":status", Value: "206"},
+ {Name: ":status", Value: "304"},
+ {Name: ":status", Value: "400"},
+ {Name: ":status", Value: "404"},
+ {Name: ":status", Value: "500"},
+ {Name: "accept-charset"},
+ {Name: "accept-encoding", Value: "gzip, deflate"},
+ {Name: "accept-language"},
+ {Name: "accept-ranges"},
+ {Name: "accept"},
+ {Name: "access-control-allow-origin"},
+ {Name: "age"},
+ {Name: "allow"},
+ {Name: "authorization"},
+ {Name: "cache-control"},
+ {Name: "content-disposition"},
+ {Name: "content-encoding"},
+ {Name: "content-language"},
+ {Name: "content-length"},
+ {Name: "content-location"},
+ {Name: "content-range"},
+ {Name: "content-type"},
+ {Name: "cookie"},
+ {Name: "date"},
+ {Name: "etag"},
+ {Name: "expect"},
+ {Name: "expires"},
+ {Name: "from"},
+ {Name: "host"},
+ {Name: "if-match"},
+ {Name: "if-modified-since"},
+ {Name: "if-none-match"},
+ {Name: "if-range"},
+ {Name: "if-unmodified-since"},
+ {Name: "last-modified"},
+ {Name: "link"},
+ {Name: "location"},
+ {Name: "max-forwards"},
+ {Name: "proxy-authenticate"},
+ {Name: "proxy-authorization"},
+ {Name: "range"},
+ {Name: "referer"},
+ {Name: "refresh"},
+ {Name: "retry-after"},
+ {Name: "server"},
+ {Name: "set-cookie"},
+ {Name: "strict-transport-security"},
+ {Name: "transfer-encoding"},
+ {Name: "user-agent"},
+ {Name: "vary"},
+ {Name: "via"},
+ {Name: "www-authenticate"},
}
func newStaticTable() *headerFieldTable {
diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go
index b6b0f9ad1..d565f40e0 100644
--- a/vendor/golang.org/x/net/http2/http2.go
+++ b/vendor/golang.org/x/net/http2/http2.go
@@ -376,12 +376,16 @@ func (s *sorter) SortStrings(ss []string) {
// validPseudoPath reports whether v is a valid :path pseudo-header
// value. It must be either:
//
-// *) a non-empty string starting with '/', but not with with "//",
+// *) a non-empty string starting with '/'
// *) the string '*', for OPTIONS requests.
//
// For now this is only used a quick check for deciding when to clean
// up Opaque URLs before sending requests from the Transport.
// See golang.org/issue/16847
+//
+// We used to enforce that the path also didn't start with "//", but
+// Google's GFE accepts such paths and Chrome sends them, so ignore
+// that part of the spec. See golang.org/issue/19103.
func validPseudoPath(v string) bool {
- return (len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')) || v == "*"
+ return (len(v) > 0 && v[0] == '/') || v == "*"
}
diff --git a/vendor/golang.org/x/net/http2/not_go18.go b/vendor/golang.org/x/net/http2/not_go18.go
index efbf83c32..6f8d3f86f 100644
--- a/vendor/golang.org/x/net/http2/not_go18.go
+++ b/vendor/golang.org/x/net/http2/not_go18.go
@@ -25,3 +25,5 @@ func reqGetBody(req *http.Request) func() (io.ReadCloser, error) {
}
func reqBodyIsNoBody(io.ReadCloser) bool { return false }
+
+func go18httpNoBody() io.ReadCloser { return nil } // for tests only
diff --git a/vendor/golang.org/x/net/http2/not_go19.go b/vendor/golang.org/x/net/http2/not_go19.go
new file mode 100644
index 000000000..5ae07726b
--- /dev/null
+++ b/vendor/golang.org/x/net/http2/not_go19.go
@@ -0,0 +1,16 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package http2
+
+import (
+ "net/http"
+)
+
+func configureServer19(s *http.Server, conf *Server) error {
+ // not supported prior to go1.9
+ return nil
+}
diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go
index 914aaf8a7..a6140099c 100644
--- a/vendor/golang.org/x/net/http2/pipe.go
+++ b/vendor/golang.org/x/net/http2/pipe.go
@@ -15,8 +15,8 @@ import (
// underlying buffer is an interface. (io.Pipe is always unbuffered)
type pipe struct {
mu sync.Mutex
- c sync.Cond // c.L lazily initialized to &p.mu
- b pipeBuffer
+ c sync.Cond // c.L lazily initialized to &p.mu
+ b pipeBuffer // nil when done reading
err error // read error once empty. non-nil means closed.
breakErr error // immediate read error (caller doesn't see rest of b)
donec chan struct{} // closed on error
@@ -32,6 +32,9 @@ type pipeBuffer interface {
func (p *pipe) Len() int {
p.mu.Lock()
defer p.mu.Unlock()
+ if p.b == nil {
+ return 0
+ }
return p.b.Len()
}
@@ -47,7 +50,7 @@ func (p *pipe) Read(d []byte) (n int, err error) {
if p.breakErr != nil {
return 0, p.breakErr
}
- if p.b.Len() > 0 {
+ if p.b != nil && p.b.Len() > 0 {
return p.b.Read(d)
}
if p.err != nil {
@@ -55,6 +58,7 @@ func (p *pipe) Read(d []byte) (n int, err error) {
p.readFn() // e.g. copy trailers
p.readFn = nil // not sticky like p.err
}
+ p.b = nil
return 0, p.err
}
p.c.Wait()
@@ -75,6 +79,9 @@ func (p *pipe) Write(d []byte) (n int, err error) {
if p.err != nil {
return 0, errClosedPipeWrite
}
+ if p.breakErr != nil {
+ return len(d), nil // discard when there is no reader
+ }
return p.b.Write(d)
}
@@ -109,6 +116,9 @@ func (p *pipe) closeWithError(dst *error, err error, fn func()) {
return
}
p.readFn = fn
+ if dst == &p.breakErr {
+ p.b = nil
+ }
*dst = err
p.closeDoneLocked()
}
diff --git a/vendor/golang.org/x/net/http2/pipe_test.go b/vendor/golang.org/x/net/http2/pipe_test.go
index 763229999..1bf351ff6 100644
--- a/vendor/golang.org/x/net/http2/pipe_test.go
+++ b/vendor/golang.org/x/net/http2/pipe_test.go
@@ -92,6 +92,13 @@ func TestPipeCloseWithError(t *testing.T) {
if err != a {
t.Logf("read error = %v, %v", err, a)
}
+ // Read and Write should fail.
+ if n, err := p.Write([]byte("abc")); err != errClosedPipeWrite || n != 0 {
+ t.Errorf("Write(abc) after close\ngot %v, %v\nwant 0, %v", n, err, errClosedPipeWrite)
+ }
+ if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 {
+ t.Errorf("Read() after close\ngot %v, nil\nwant 0, %v", n, errClosedPipeWrite)
+ }
}
func TestPipeBreakWithError(t *testing.T) {
@@ -106,4 +113,18 @@ func TestPipeBreakWithError(t *testing.T) {
if err != a {
t.Logf("read error = %v, %v", err, a)
}
+ if p.b != nil {
+ t.Errorf("buffer should be nil after BreakWithError")
+ }
+ // Write should succeed silently.
+ if n, err := p.Write([]byte("abc")); err != nil || n != 3 {
+ t.Errorf("Write(abc) after break\ngot %v, %v\nwant 0, nil", n, err)
+ }
+ if p.b != nil {
+ t.Errorf("buffer should be nil after Write")
+ }
+ // Read should fail.
+ if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 {
+ t.Errorf("Read() after close\ngot %v, nil\nwant 0, not nil", n)
+ }
}
diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go
index 3175a08c6..eae143ddf 100644
--- a/vendor/golang.org/x/net/http2/server.go
+++ b/vendor/golang.org/x/net/http2/server.go
@@ -126,6 +126,11 @@ type Server struct {
// NewWriteScheduler constructs a write scheduler for a connection.
// If nil, a default scheduler is chosen.
NewWriteScheduler func() WriteScheduler
+
+ // Internal state. This is a pointer (rather than embedded directly)
+ // so that we don't embed a Mutex in this struct, which will make the
+ // struct non-copyable, which might break some callers.
+ state *serverInternalState
}
func (s *Server) initialConnRecvWindowSize() int32 {
@@ -156,6 +161,40 @@ func (s *Server) maxConcurrentStreams() uint32 {
return defaultMaxStreams
}
+type serverInternalState struct {
+ mu sync.Mutex
+ activeConns map[*serverConn]struct{}
+}
+
+func (s *serverInternalState) registerConn(sc *serverConn) {
+ if s == nil {
+ return // if the Server was used without calling ConfigureServer
+ }
+ s.mu.Lock()
+ s.activeConns[sc] = struct{}{}
+ s.mu.Unlock()
+}
+
+func (s *serverInternalState) unregisterConn(sc *serverConn) {
+ if s == nil {
+ return // if the Server was used without calling ConfigureServer
+ }
+ s.mu.Lock()
+ delete(s.activeConns, sc)
+ s.mu.Unlock()
+}
+
+func (s *serverInternalState) startGracefulShutdown() {
+ if s == nil {
+ return // if the Server was used without calling ConfigureServer
+ }
+ s.mu.Lock()
+ for sc := range s.activeConns {
+ sc.startGracefulShutdown()
+ }
+ s.mu.Unlock()
+}
+
// ConfigureServer adds HTTP/2 support to a net/http Server.
//
// The configuration conf may be nil.
@@ -168,9 +207,13 @@ func ConfigureServer(s *http.Server, conf *Server) error {
if conf == nil {
conf = new(Server)
}
+ conf.state = &serverInternalState{activeConns: make(map[*serverConn]struct{})}
if err := configureServer18(s, conf); err != nil {
return err
}
+ if err := configureServer19(s, conf); err != nil {
+ return err
+ }
if s.TLSConfig == nil {
s.TLSConfig = new(tls.Config)
@@ -305,6 +348,9 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
pushEnabled: true,
}
+ s.state.registerConn(sc)
+ defer s.state.unregisterConn(sc)
+
// The net/http package sets the write deadline from the
// http.Server.WriteTimeout during the TLS handshake, but then
// passes the connection off to us with the deadline already set.
@@ -445,6 +491,9 @@ type serverConn struct {
// Owned by the writeFrameAsync goroutine:
headerWriteBuf bytes.Buffer
hpackEncoder *hpack.Encoder
+
+ // Used by startGracefulShutdown.
+ shutdownOnce sync.Once
}
func (sc *serverConn) maxHeaderListSize() uint32 {
@@ -749,15 +798,6 @@ func (sc *serverConn) serve() {
defer sc.idleTimer.Stop()
}
- var gracefulShutdownCh chan struct{}
- if sc.hs != nil {
- ch := h1ServerShutdownChan(sc.hs)
- if ch != nil {
- gracefulShutdownCh = make(chan struct{})
- go sc.awaitGracefulShutdown(ch, gracefulShutdownCh)
- }
- }
-
go sc.readFrames() // closed by defer sc.conn.Close above
settingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer)
@@ -786,14 +826,11 @@ func (sc *serverConn) serve() {
}
case m := <-sc.bodyReadCh:
sc.noteBodyRead(m.st, m.n)
- case <-gracefulShutdownCh:
- gracefulShutdownCh = nil
- sc.startGracefulShutdown()
case msg := <-sc.serveMsgCh:
switch v := msg.(type) {
case func(int):
v(loopNum) // for testing
- case *timerMessage:
+ case *serverMessage:
switch v {
case settingsTimerMsg:
sc.logf("timeout waiting for SETTINGS frames from %v", sc.conn.RemoteAddr())
@@ -804,6 +841,8 @@ func (sc *serverConn) serve() {
case shutdownTimerMsg:
sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr())
return
+ case gracefulShutdownMsg:
+ sc.startGracefulShutdownInternal()
default:
panic("unknown timer")
}
@@ -828,13 +867,14 @@ func (sc *serverConn) awaitGracefulShutdown(sharedCh <-chan struct{}, privateCh
}
}
-type timerMessage int
+type serverMessage int
-// Timeout message values sent to serveMsgCh.
+// Message values sent to serveMsgCh.
var (
- settingsTimerMsg = new(timerMessage)
- idleTimerMsg = new(timerMessage)
- shutdownTimerMsg = new(timerMessage)
+ settingsTimerMsg = new(serverMessage)
+ idleTimerMsg = new(serverMessage)
+ shutdownTimerMsg = new(serverMessage)
+ gracefulShutdownMsg = new(serverMessage)
)
func (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) }
@@ -1166,10 +1206,19 @@ func (sc *serverConn) scheduleFrameWrite() {
sc.inFrameScheduleLoop = false
}
-// startGracefulShutdown sends a GOAWAY with ErrCodeNo to tell the
-// client we're gracefully shutting down. The connection isn't closed
-// until all current streams are done.
+// startGracefulShutdown gracefully shuts down a connection. This
+// sends GOAWAY with ErrCodeNo to tell the client we're gracefully
+// shutting down. The connection isn't closed until all current
+// streams are done.
+//
+// startGracefulShutdown returns immediately; it does not wait until
+// the connection has shut down.
func (sc *serverConn) startGracefulShutdown() {
+ sc.serveG.checkNotOn() // NOT
+ sc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) })
+}
+
+func (sc *serverConn) startGracefulShutdownInternal() {
sc.goAwayIn(ErrCodeNo, 0)
}
@@ -1399,7 +1448,7 @@ func (sc *serverConn) closeStream(st *stream, err error) {
sc.idleTimer.Reset(sc.srv.IdleTimeout)
}
if h1ServerKeepAlivesDisabled(sc.hs) {
- sc.startGracefulShutdown()
+ sc.startGracefulShutdownInternal()
}
}
if p := st.body; p != nil {
@@ -1586,7 +1635,7 @@ func (sc *serverConn) processGoAway(f *GoAwayFrame) error {
} else {
sc.vlogf("http2: received GOAWAY %+v, starting graceful shutdown", f)
}
- sc.startGracefulShutdown()
+ sc.startGracefulShutdownInternal()
// http://tools.ietf.org/html/rfc7540#section-6.8
// We should not create any new streams, which means we should disable push.
sc.pushEnabled = false
@@ -2203,6 +2252,7 @@ type responseWriterState struct {
wroteHeader bool // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet.
sentHeader bool // have we sent the header frame?
handlerDone bool // handler has finished
+ dirty bool // a Write failed; don't reuse this responseWriterState
sentContentLen int64 // non-zero if handler set a Content-Length header
wroteBytes int64
@@ -2284,6 +2334,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {
date: date,
})
if err != nil {
+ rws.dirty = true
return 0, err
}
if endStream {
@@ -2305,6 +2356,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {
if len(p) > 0 || endStream {
// only send a 0 byte DATA frame if we're ending the stream.
if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil {
+ rws.dirty = true
return 0, err
}
}
@@ -2316,6 +2368,9 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) {
trailers: rws.trailers,
endStream: true,
})
+ if err != nil {
+ rws.dirty = true
+ }
return len(p), err
}
return len(p), nil
@@ -2455,7 +2510,7 @@ func cloneHeader(h http.Header) http.Header {
//
// * Handler calls w.Write or w.WriteString ->
// * -> rws.bw (*bufio.Writer) ->
-// * (Handler migth call Flush)
+// * (Handler might call Flush)
// * -> chunkWriter{rws}
// * -> responseWriterState.writeChunk(p []byte)
// * -> responseWriterState.writeChunk (most of the magic; see comment there)
@@ -2494,10 +2549,19 @@ func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int,
func (w *responseWriter) handlerDone() {
rws := w.rws
+ dirty := rws.dirty
rws.handlerDone = true
w.Flush()
w.rws = nil
- responseWriterStatePool.Put(rws)
+ if !dirty {
+ // Only recycle the pool if all prior Write calls to
+ // the serverConn goroutine completed successfully. If
+ // they returned earlier due to resets from the peer
+ // there might still be write goroutines outstanding
+ // from the serverConn referencing the rws memory. See
+ // issue 20704.
+ responseWriterStatePool.Put(rws)
+ }
}
// Push errors.
@@ -2653,7 +2717,7 @@ func (sc *serverConn) startPush(msg *startPushRequest) {
// A server that is unable to establish a new stream identifier can send a GOAWAY
// frame so that the client is forced to open a new connection for new streams.
if sc.maxPushPromiseID+2 >= 1<<31 {
- sc.startGracefulShutdown()
+ sc.startGracefulShutdownInternal()
return 0, ErrPushLimitReached
}
sc.maxPushPromiseID += 2
@@ -2778,31 +2842,6 @@ var badTrailer = map[string]bool{
"Www-Authenticate": true,
}
-// h1ServerShutdownChan returns a channel that will be closed when the
-// provided *http.Server wants to shut down.
-//
-// This is a somewhat hacky way to get at http1 innards. It works
-// when the http2 code is bundled into the net/http package in the
-// standard library. The alternatives ended up making the cmd/go tool
-// depend on http Servers. This is the lightest option for now.
-// This is tested via the TestServeShutdown* tests in net/http.
-func h1ServerShutdownChan(hs *http.Server) <-chan struct{} {
- if fn := testh1ServerShutdownChan; fn != nil {
- return fn(hs)
- }
- var x interface{} = hs
- type I interface {
- getDoneChan() <-chan struct{}
- }
- if hs, ok := x.(I); ok {
- return hs.getDoneChan()
- }
- return nil
-}
-
-// optional test hook for h1ServerShutdownChan.
-var testh1ServerShutdownChan func(hs *http.Server) <-chan struct{}
-
// h1ServerKeepAlivesDisabled reports whether hs has its keep-alives
// disabled. See comments on h1ServerShutdownChan above for why
// the code is written this way.
diff --git a/vendor/golang.org/x/net/http2/server_test.go b/vendor/golang.org/x/net/http2/server_test.go
index 5cb249056..437d1c378 100644
--- a/vendor/golang.org/x/net/http2/server_test.go
+++ b/vendor/golang.org/x/net/http2/server_test.go
@@ -3686,47 +3686,36 @@ func TestRequestBodyReadCloseRace(t *testing.T) {
}
}
-func TestServerGracefulShutdown(t *testing.T) {
- shutdownCh := make(chan struct{})
- defer func() { testh1ServerShutdownChan = nil }()
- testh1ServerShutdownChan = func(*http.Server) <-chan struct{} { return shutdownCh }
-
- var st *serverTester
- handlerDone := make(chan struct{})
- st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
- defer close(handlerDone)
- close(shutdownCh)
+func TestIssue20704Race(t *testing.T) {
+ if testing.Short() && os.Getenv("GO_BUILDER_NAME") == "" {
+ t.Skip("skipping in short mode")
+ }
+ const (
+ itemSize = 1 << 10
+ itemCount = 100
+ )
- ga := st.wantGoAway()
- if ga.ErrCode != ErrCodeNo {
- t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode)
- }
- if ga.LastStreamID != 1 {
- t.Errorf("GOAWAY LastStreamID = %v; want 1", ga.LastStreamID)
+ st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
+ for i := 0; i < itemCount; i++ {
+ _, err := w.Write(make([]byte, itemSize))
+ if err != nil {
+ return
+ }
}
-
- w.Header().Set("x-foo", "bar")
- })
+ }, optOnlyServer)
defer st.Close()
- st.greet()
- st.bodylessReq1()
-
- <-handlerDone
- hf := st.wantHeaders()
- goth := st.decodeHeader(hf.HeaderBlockFragment())
- wanth := [][2]string{
- {":status", "200"},
- {"x-foo", "bar"},
- {"content-type", "text/plain; charset=utf-8"},
- {"content-length", "0"},
- }
- if !reflect.DeepEqual(goth, wanth) {
- t.Errorf("Got headers %v; want %v", goth, wanth)
- }
+ tr := &Transport{TLSClientConfig: tlsConfigInsecure}
+ defer tr.CloseIdleConnections()
+ cl := &http.Client{Transport: tr}
- n, err := st.cc.Read([]byte{0})
- if n != 0 || err == nil {
- t.Errorf("Read = %v, %v; want 0, non-nil", n, err)
+ for i := 0; i < 1000; i++ {
+ resp, err := cl.Get(st.ts.URL)
+ if err != nil {
+ t.Fatal(err)
+ }
+ // Force a RST stream to the server by closing without
+ // reading the body:
+ resp.Body.Close()
}
}
diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go
index 84d042d46..24d0af84c 100644
--- a/vendor/golang.org/x/net/http2/transport.go
+++ b/vendor/golang.org/x/net/http2/transport.go
@@ -694,7 +694,7 @@ func checkConnHeaders(req *http.Request) error {
// req.ContentLength, where 0 actually means zero (not unknown) and -1
// means unknown.
func actualContentLength(req *http.Request) int64 {
- if req.Body == nil {
+ if req.Body == nil || reqBodyIsNoBody(req.Body) {
return 0
}
if req.ContentLength != 0 {
@@ -725,8 +725,8 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) {
}
body := req.Body
- hasBody := body != nil
contentLen := actualContentLength(req)
+ hasBody := contentLen != 0
// TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere?
var requestedGzip bool
@@ -1655,6 +1655,7 @@ func (b transportResponseBody) Close() error {
cc.wmu.Lock()
if !serverSentStreamEnd {
cc.fr.WriteRSTStream(cs.ID, ErrCodeCancel)
+ cs.didReset = true
}
// Return connection-level flow control.
if unread > 0 {
@@ -1702,12 +1703,6 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error {
return nil
}
if f.Length > 0 {
- if len(data) > 0 && cs.bufPipe.b == nil {
- // Data frame after it's already closed?
- cc.logf("http2: Transport received DATA frame for closed stream; closing connection")
- return ConnectionError(ErrCodeProtocol)
- }
-
// Check connection-level flow control.
cc.mu.Lock()
if cs.inflow.available() >= int32(f.Length) {
diff --git a/vendor/golang.org/x/net/http2/transport_test.go b/vendor/golang.org/x/net/http2/transport_test.go
index 1ffa92a7c..bf34fc9dd 100644
--- a/vendor/golang.org/x/net/http2/transport_test.go
+++ b/vendor/golang.org/x/net/http2/transport_test.go
@@ -417,6 +417,11 @@ func TestActualContentLength(t *testing.T) {
req: &http.Request{Body: panicReader{}, ContentLength: 5},
want: 5,
},
+ // http.NoBody means 0, not -1.
+ 3: {
+ req: &http.Request{Body: go18httpNoBody()},
+ want: 0,
+ },
}
for i, tt := range tests {
got := actualContentLength(tt.req)
@@ -2529,7 +2534,7 @@ func TestTransportBodyDoubleEndStream(t *testing.T) {
}
}
-// golangorg/issue/16847
+// golang.org/issue/16847, golang.org/issue/19103
func TestTransportRequestPathPseudo(t *testing.T) {
type result struct {
path string
@@ -2549,9 +2554,9 @@ func TestTransportRequestPathPseudo(t *testing.T) {
},
want: result{path: "/foo"},
},
- // I guess we just don't let users request "//foo" as
- // a path, since it's illegal to start with two
- // slashes....
+ // In Go 1.7, we accepted paths of "//foo".
+ // In Go 1.8, we rejected it (issue 16847).
+ // In Go 1.9, we accepted it again (issue 19103).
1: {
req: &http.Request{
Method: "GET",
@@ -2560,7 +2565,7 @@ func TestTransportRequestPathPseudo(t *testing.T) {
Path: "//foo",
},
},
- want: result{err: `invalid request :path "//foo"`},
+ want: result{path: "//foo"},
},
// Opaque with //$Matching_Hostname/path
@@ -2915,3 +2920,96 @@ func TestAuthorityAddr(t *testing.T) {
}
}
}
+
+// Issue 20448: stop allocating for DATA frames' payload after
+// Response.Body.Close is called.
+func TestTransportAllocationsAfterResponseBodyClose(t *testing.T) {
+ megabyteZero := make([]byte, 1<<20)
+
+ writeErr := make(chan error, 1)
+
+ st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
+ w.(http.Flusher).Flush()
+ var sum int64
+ for i := 0; i < 100; i++ {
+ n, err := w.Write(megabyteZero)
+ sum += int64(n)
+ if err != nil {
+ writeErr <- err
+ return
+ }
+ }
+ t.Logf("wrote all %d bytes", sum)
+ writeErr <- nil
+ }, optOnlyServer)
+ defer st.Close()
+
+ tr := &Transport{TLSClientConfig: tlsConfigInsecure}
+ defer tr.CloseIdleConnections()
+ c := &http.Client{Transport: tr}
+ res, err := c.Get(st.ts.URL)
+ if err != nil {
+ t.Fatal(err)
+ }
+ var buf [1]byte
+ if _, err := res.Body.Read(buf[:]); err != nil {
+ t.Error(err)
+ }
+ if err := res.Body.Close(); err != nil {
+ t.Error(err)
+ }
+
+ trb, ok := res.Body.(transportResponseBody)
+ if !ok {
+ t.Fatalf("res.Body = %T; want transportResponseBody", res.Body)
+ }
+ if trb.cs.bufPipe.b != nil {
+ t.Errorf("response body pipe is still open")
+ }
+
+ gotErr := <-writeErr
+ if gotErr == nil {
+ t.Errorf("Handler unexpectedly managed to write its entire response without getting an error")
+ } else if gotErr != errStreamClosed {
+ t.Errorf("Handler Write err = %v; want errStreamClosed", gotErr)
+ }
+}
+
+// Issue 18891: make sure Request.Body == NoBody means no DATA frame
+// is ever sent, even if empty.
+func TestTransportNoBodyMeansNoDATA(t *testing.T) {
+ ct := newClientTester(t)
+
+ unblockClient := make(chan bool)
+
+ ct.client = func() error {
+ req, _ := http.NewRequest("GET", "https://dummy.tld/", go18httpNoBody())
+ ct.tr.RoundTrip(req)
+ <-unblockClient
+ return nil
+ }
+ ct.server = func() error {
+ defer close(unblockClient)
+ defer ct.cc.(*net.TCPConn).Close()
+ ct.greet()
+
+ for {
+ f, err := ct.fr.ReadFrame()
+ if err != nil {
+ return fmt.Errorf("ReadFrame while waiting for Headers: %v", err)
+ }
+ switch f := f.(type) {
+ default:
+ return fmt.Errorf("Got %T; want HeadersFrame", f)
+ case *WindowUpdateFrame, *SettingsFrame:
+ continue
+ case *HeadersFrame:
+ if !f.StreamEnded() {
+ return fmt.Errorf("got headers frame without END_STREAM")
+ }
+ return nil
+ }
+ }
+ }
+ ct.run()
+}
diff --git a/vendor/golang.org/x/net/http2/writesched_priority.go b/vendor/golang.org/x/net/http2/writesched_priority.go
index 01132721b..848fed6ec 100644
--- a/vendor/golang.org/x/net/http2/writesched_priority.go
+++ b/vendor/golang.org/x/net/http2/writesched_priority.go
@@ -53,7 +53,7 @@ type PriorityWriteSchedulerConfig struct {
}
// NewPriorityWriteScheduler constructs a WriteScheduler that schedules
-// frames by following HTTP/2 priorities as described in RFC 7340 Section 5.3.
+// frames by following HTTP/2 priorities as described in RFC 7540 Section 5.3.
// If cfg is nil, default options are used.
func NewPriorityWriteScheduler(cfg *PriorityWriteSchedulerConfig) WriteScheduler {
if cfg == nil {
diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go
index 3438a27c8..c9df24d95 100644
--- a/vendor/golang.org/x/net/internal/iana/const.go
+++ b/vendor/golang.org/x/net/internal/iana/const.go
@@ -4,7 +4,7 @@
// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).
package iana // import "golang.org/x/net/internal/iana"
-// Differentiated Services Field Codepoints (DSCP), Updated: 2013-06-25
+// Differentiated Services Field Codepoints (DSCP), Updated: 2017-05-12
const (
DiffServCS0 = 0x0 // CS0
DiffServCS1 = 0x20 // CS1
@@ -26,7 +26,7 @@ const (
DiffServAF41 = 0x88 // AF41
DiffServAF42 = 0x90 // AF42
DiffServAF43 = 0x98 // AF43
- DiffServEFPHB = 0xb8 // EF PHB
+ DiffServEF = 0xb8 // EF
DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT
)
@@ -38,7 +38,7 @@ const (
CongestionExperienced = 0x3 // CE (Congestion Experienced)
)
-// Protocol Numbers, Updated: 2015-10-06
+// Protocol Numbers, Updated: 2016-06-22
const (
ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number
ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option
diff --git a/vendor/golang.org/x/net/internal/netreflect/socket.go b/vendor/golang.org/x/net/internal/netreflect/socket.go
deleted file mode 100644
index 1495b65f5..000000000
--- a/vendor/golang.org/x/net/internal/netreflect/socket.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9
-
-// Package netreflect implements run-time reflection for the
-// facilities of net package.
-//
-// This package works only for Go 1.8 or below.
-package netreflect
-
-import (
- "errors"
- "net"
-)
-
-var (
- errInvalidType = errors.New("invalid type")
- errOpNoSupport = errors.New("operation not supported")
-)
-
-// SocketOf returns the socket descriptor of c.
-func SocketOf(c net.Conn) (uintptr, error) {
- switch c.(type) {
- case *net.TCPConn, *net.UDPConn, *net.IPConn, *net.UnixConn:
- return socketOf(c)
- default:
- return 0, errInvalidType
- }
-}
-
-// PacketSocketOf returns the socket descriptor of c.
-func PacketSocketOf(c net.PacketConn) (uintptr, error) {
- switch c.(type) {
- case *net.UDPConn, *net.IPConn, *net.UnixConn:
- return socketOf(c.(net.Conn))
- default:
- return 0, errInvalidType
- }
-}
diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_19.go b/vendor/golang.org/x/net/internal/netreflect/socket_19.go
deleted file mode 100644
index 74df52e1a..000000000
--- a/vendor/golang.org/x/net/internal/netreflect/socket_19.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.9
-
-package netreflect
-
-import (
- "errors"
- "net"
-)
-
-var (
- errInvalidType = errors.New("invalid type")
- errOpNoSupport = errors.New("operation not supported")
-)
-
-// SocketOf returns the socket descriptor of c.
-func SocketOf(c net.Conn) (uintptr, error) {
- switch c.(type) {
- case *net.TCPConn, *net.UDPConn, *net.IPConn, *net.UnixConn:
- return 0, errOpNoSupport
- default:
- return 0, errInvalidType
- }
-}
-
-// PacketSocketOf returns the socket descriptor of c.
-func PacketSocketOf(c net.PacketConn) (uintptr, error) {
- switch c.(type) {
- case *net.UDPConn, *net.IPConn, *net.UnixConn:
- return 0, errOpNoSupport
- default:
- return 0, errInvalidType
- }
-}
diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_posix.go b/vendor/golang.org/x/net/internal/netreflect/socket_posix.go
deleted file mode 100644
index 410c0924d..000000000
--- a/vendor/golang.org/x/net/internal/netreflect/socket_posix.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
-package netreflect
-
-import (
- "net"
- "reflect"
- "runtime"
-)
-
-func socketOf(c net.Conn) (uintptr, error) {
- v := reflect.ValueOf(c)
- switch e := v.Elem(); e.Kind() {
- case reflect.Struct:
- fd := e.FieldByName("conn").FieldByName("fd")
- switch e := fd.Elem(); e.Kind() {
- case reflect.Struct:
- sysfd := e.FieldByName("sysfd")
- if runtime.GOOS == "windows" {
- return uintptr(sysfd.Uint()), nil
- }
- return uintptr(sysfd.Int()), nil
- }
- }
- return 0, errInvalidType
-}
diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_stub.go b/vendor/golang.org/x/net/internal/netreflect/socket_stub.go
deleted file mode 100644
index 17b20c478..000000000
--- a/vendor/golang.org/x/net/internal/netreflect/socket_stub.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9
-// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
-
-package netreflect
-
-import "net"
-
-func socketOf(c net.Conn) (uintptr, error) { return 0, errOpNoSupport }
diff --git a/vendor/golang.org/x/net/internal/netreflect/socket_test.go b/vendor/golang.org/x/net/internal/netreflect/socket_test.go
deleted file mode 100644
index b3aad0d92..000000000
--- a/vendor/golang.org/x/net/internal/netreflect/socket_test.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
-package netreflect_test
-
-import (
- "net"
- "os"
- "testing"
-
- "golang.org/x/net/internal/netreflect"
- "golang.org/x/net/internal/nettest"
-)
-
-func TestSocketOf(t *testing.T) {
- for _, network := range []string{"tcp", "unix", "unixpacket"} {
- if !nettest.TestableNetwork(network) {
- continue
- }
- ln, err := nettest.NewLocalListener(network)
- if err != nil {
- t.Error(err)
- continue
- }
- defer func() {
- path := ln.Addr().String()
- ln.Close()
- if network == "unix" || network == "unixpacket" {
- os.Remove(path)
- }
- }()
- c, err := net.Dial(ln.Addr().Network(), ln.Addr().String())
- if err != nil {
- t.Error(err)
- continue
- }
- defer c.Close()
- if _, err := netreflect.SocketOf(c); err != nil {
- t.Error(err)
- continue
- }
- }
-}
-
-func TestPacketSocketOf(t *testing.T) {
- for _, network := range []string{"udp", "unixgram"} {
- if !nettest.TestableNetwork(network) {
- continue
- }
- c, err := nettest.NewLocalPacketListener(network)
- if err != nil {
- t.Error(err)
- continue
- }
- defer c.Close()
- if _, err := netreflect.PacketSocketOf(c); err != nil {
- t.Error(err)
- continue
- }
- }
-}
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go
new file mode 100644
index 000000000..1eb07d26d
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package socket
+
+func (h *cmsghdr) len() int { return int(h.Len) }
+func (h *cmsghdr) lvl() int { return int(h.Level) }
+func (h *cmsghdr) typ() int { return int(h.Type) }
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go
new file mode 100644
index 000000000..d1d0c2de5
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+package socket
+
+func (h *cmsghdr) set(l, lvl, typ int) {
+ h.Len = uint32(l)
+ h.Level = int32(lvl)
+ h.Type = int32(typ)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go
new file mode 100644
index 000000000..bac66811d
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go
@@ -0,0 +1,14 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm mips mipsle 386
+// +build linux
+
+package socket
+
+func (h *cmsghdr) set(l, lvl, typ int) {
+ h.Len = uint32(l)
+ h.Level = int32(lvl)
+ h.Type = int32(typ)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go
new file mode 100644
index 000000000..63f0534fa
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go
@@ -0,0 +1,14 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x
+// +build linux
+
+package socket
+
+func (h *cmsghdr) set(l, lvl, typ int) {
+ h.Len = uint64(l)
+ h.Level = int32(lvl)
+ h.Type = int32(typ)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go
new file mode 100644
index 000000000..7dedd430e
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go
@@ -0,0 +1,14 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64
+// +build solaris
+
+package socket
+
+func (h *cmsghdr) set(l, lvl, typ int) {
+ h.Len = uint32(l)
+ h.Level = int32(lvl)
+ h.Type = int32(typ)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go
new file mode 100644
index 000000000..a4e71226f
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go
@@ -0,0 +1,17 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris
+
+package socket
+
+type cmsghdr struct{}
+
+const sizeofCmsghdr = 0
+
+func (h *cmsghdr) len() int { return 0 }
+func (h *cmsghdr) lvl() int { return 0 }
+func (h *cmsghdr) typ() int { return 0 }
+
+func (h *cmsghdr) set(l, lvl, typ int) {}
diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go
new file mode 100644
index 000000000..14e28c0b4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_darwin.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go
new file mode 100644
index 000000000..14e28c0b4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go
new file mode 100644
index 000000000..14e28c0b4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go
new file mode 100644
index 000000000..ce9ec2f6d
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_linux.go
@@ -0,0 +1,49 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <linux/in.h>
+#include <linux/in6.h>
+
+#define _GNU_SOURCE
+#include <sys/socket.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type mmsghdr C.struct_mmsghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofMmsghdr = C.sizeof_struct_mmsghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go
new file mode 100644
index 000000000..3f8433569
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go
@@ -0,0 +1,47 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type mmsghdr C.struct_mmsghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofMmsghdr = C.sizeof_struct_mmsghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go
new file mode 100644
index 000000000..14e28c0b4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go
new file mode 100644
index 000000000..14e28c0b4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/defs_solaris.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package socket
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+ sysAF_UNSPEC = C.AF_UNSPEC
+ sysAF_INET = C.AF_INET
+ sysAF_INET6 = C.AF_INET6
+
+ sysSOCK_RAW = C.SOCK_RAW
+)
+
+type iovec C.struct_iovec
+
+type msghdr C.struct_msghdr
+
+type cmsghdr C.struct_cmsghdr
+
+type sockaddrInet C.struct_sockaddr_in
+
+type sockaddrInet6 C.struct_sockaddr_in6
+
+const (
+ sizeofIovec = C.sizeof_struct_iovec
+ sizeofMsghdr = C.sizeof_struct_msghdr
+ sizeofCmsghdr = C.sizeof_struct_cmsghdr
+
+ sizeofSockaddrInet = C.sizeof_struct_sockaddr_in
+ sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go
new file mode 100644
index 000000000..93dff9180
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/error_unix.go
@@ -0,0 +1,31 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package socket
+
+import "syscall"
+
+var (
+ errEAGAIN error = syscall.EAGAIN
+ errEINVAL error = syscall.EINVAL
+ errENOENT error = syscall.ENOENT
+)
+
+// errnoErr returns common boxed Errno values, to prevent allocations
+// at runtime.
+func errnoErr(errno syscall.Errno) error {
+ switch errno {
+ case 0:
+ return nil
+ case syscall.EAGAIN:
+ return errEAGAIN
+ case syscall.EINVAL:
+ return errEINVAL
+ case syscall.ENOENT:
+ return errENOENT
+ }
+ return errno
+}
diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go
new file mode 100644
index 000000000..6a6379a8b
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/error_windows.go
@@ -0,0 +1,26 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import "syscall"
+
+var (
+ errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING
+ errEINVAL error = syscall.EINVAL
+)
+
+// errnoErr returns common boxed Errno values, to prevent allocations
+// at runtime.
+func errnoErr(errno syscall.Errno) error {
+ switch errno {
+ case 0:
+ return nil
+ case syscall.ERROR_IO_PENDING:
+ return errERROR_IO_PENDING
+ case syscall.EINVAL:
+ return errEINVAL
+ }
+ return errno
+}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
new file mode 100644
index 000000000..d6a570c90
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm mips mipsle 386
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package socket
+
+import "unsafe"
+
+func (v *iovec) set(b []byte) {
+ v.Base = (*byte)(unsafe.Pointer(&b[0]))
+ v.Len = uint32(len(b))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go
new file mode 100644
index 000000000..2ae435e64
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package socket
+
+import "unsafe"
+
+func (v *iovec) set(b []byte) {
+ v.Base = (*byte)(unsafe.Pointer(&b[0]))
+ v.Len = uint64(len(b))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go
new file mode 100644
index 000000000..100a62820
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64
+// +build solaris
+
+package socket
+
+import "unsafe"
+
+func (v *iovec) set(b []byte) {
+ v.Base = (*int8)(unsafe.Pointer(&b[0]))
+ v.Len = uint64(len(b))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go
new file mode 100644
index 000000000..c87d2a933
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/iovec_stub.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris
+
+package socket
+
+type iovec struct{}
+
+func (v *iovec) set(b []byte) {}
diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go
new file mode 100644
index 000000000..2e80a9cb7
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go
@@ -0,0 +1,21 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !linux,!netbsd
+
+package socket
+
+import "net"
+
+type mmsghdr struct{}
+
+type mmsghdrs []mmsghdr
+
+func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error {
+ return nil
+}
+
+func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error {
+ return nil
+}
diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
new file mode 100644
index 000000000..3c42ea7ad
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
@@ -0,0 +1,42 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux netbsd
+
+package socket
+
+import "net"
+
+type mmsghdrs []mmsghdr
+
+func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error {
+ for i := range hs {
+ vs := make([]iovec, len(ms[i].Buffers))
+ var sa []byte
+ if parseFn != nil {
+ sa = make([]byte, sizeofSockaddrInet6)
+ }
+ if marshalFn != nil {
+ sa = marshalFn(ms[i].Addr)
+ }
+ hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa)
+ }
+ return nil
+}
+
+func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error {
+ for i := range hs {
+ ms[i].N = int(hs[i].Len)
+ ms[i].NN = hs[i].Hdr.controllen()
+ ms[i].Flags = hs[i].Hdr.flags()
+ if parseFn != nil {
+ var err error
+ ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint)
+ if err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go
new file mode 100644
index 000000000..5567afc88
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go
@@ -0,0 +1,39 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+package socket
+
+import "unsafe"
+
+func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
+ for i := range vs {
+ vs[i].set(bs[i])
+ }
+ h.setIov(vs)
+ if len(oob) > 0 {
+ h.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ h.Controllen = uint32(len(oob))
+ }
+ if sa != nil {
+ h.Name = (*byte)(unsafe.Pointer(&sa[0]))
+ h.Namelen = uint32(len(sa))
+ }
+}
+
+func (h *msghdr) name() []byte {
+ if h.Name != nil && h.Namelen > 0 {
+ return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen]
+ }
+ return nil
+}
+
+func (h *msghdr) controllen() int {
+ return int(h.Controllen)
+}
+
+func (h *msghdr) flags() int {
+ return int(h.Flags)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go
new file mode 100644
index 000000000..3fcb04280
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go
@@ -0,0 +1,12 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd netbsd
+
+package socket
+
+func (h *msghdr) setIov(vs []iovec) {
+ h.Iov = &vs[0]
+ h.Iovlen = int32(len(vs))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
new file mode 100644
index 000000000..5a38798cc
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
@@ -0,0 +1,36 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import "unsafe"
+
+func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
+ for i := range vs {
+ vs[i].set(bs[i])
+ }
+ h.setIov(vs)
+ if len(oob) > 0 {
+ h.setControl(oob)
+ }
+ if sa != nil {
+ h.Name = (*byte)(unsafe.Pointer(&sa[0]))
+ h.Namelen = uint32(len(sa))
+ }
+}
+
+func (h *msghdr) name() []byte {
+ if h.Name != nil && h.Namelen > 0 {
+ return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen]
+ }
+ return nil
+}
+
+func (h *msghdr) controllen() int {
+ return int(h.Controllen)
+}
+
+func (h *msghdr) flags() int {
+ return int(h.Flags)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
new file mode 100644
index 000000000..9f671aec0
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
@@ -0,0 +1,20 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm mips mipsle 386
+// +build linux
+
+package socket
+
+import "unsafe"
+
+func (h *msghdr) setIov(vs []iovec) {
+ h.Iov = &vs[0]
+ h.Iovlen = uint32(len(vs))
+}
+
+func (h *msghdr) setControl(b []byte) {
+ h.Control = (*byte)(unsafe.Pointer(&b[0]))
+ h.Controllen = uint32(len(b))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go
new file mode 100644
index 000000000..9f7870621
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go
@@ -0,0 +1,20 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x
+// +build linux
+
+package socket
+
+import "unsafe"
+
+func (h *msghdr) setIov(vs []iovec) {
+ h.Iov = &vs[0]
+ h.Iovlen = uint64(len(vs))
+}
+
+func (h *msghdr) setControl(b []byte) {
+ h.Control = (*byte)(unsafe.Pointer(&b[0]))
+ h.Controllen = uint64(len(b))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go
new file mode 100644
index 000000000..be354ff84
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+func (h *msghdr) setIov(vs []iovec) {
+ h.Iov = &vs[0]
+ h.Iovlen = uint32(len(vs))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go
new file mode 100644
index 000000000..d1b059397
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go
@@ -0,0 +1,34 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64
+// +build solaris
+
+package socket
+
+import "unsafe"
+
+func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
+ for i := range vs {
+ vs[i].set(bs[i])
+ }
+ h.Iov = &vs[0]
+ h.Iovlen = int32(len(vs))
+ if len(oob) > 0 {
+ h.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
+ h.Accrightslen = int32(len(oob))
+ }
+ if sa != nil {
+ h.Name = (*byte)(unsafe.Pointer(&sa[0]))
+ h.Namelen = uint32(len(sa))
+ }
+}
+
+func (h *msghdr) controllen() int {
+ return int(h.Accrightslen)
+}
+
+func (h *msghdr) flags() int {
+ return int(NativeEndian.Uint32(h.Pad_cgo_2[:]))
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go
new file mode 100644
index 000000000..64e817335
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go
@@ -0,0 +1,14 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris
+
+package socket
+
+type msghdr struct{}
+
+func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {}
+func (h *msghdr) name() []byte { return nil }
+func (h *msghdr) controllen() int { return 0 }
+func (h *msghdr) flags() int { return 0 }
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go
new file mode 100644
index 000000000..d6871d55f
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn.go
@@ -0,0 +1,66 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package socket
+
+import (
+ "errors"
+ "net"
+ "os"
+ "syscall"
+)
+
+// A Conn represents a raw connection.
+type Conn struct {
+ network string
+ c syscall.RawConn
+}
+
+// NewConn returns a new raw connection.
+func NewConn(c net.Conn) (*Conn, error) {
+ var err error
+ var cc Conn
+ switch c := c.(type) {
+ case *net.TCPConn:
+ cc.network = "tcp"
+ cc.c, err = c.SyscallConn()
+ case *net.UDPConn:
+ cc.network = "udp"
+ cc.c, err = c.SyscallConn()
+ case *net.IPConn:
+ cc.network = "ip"
+ cc.c, err = c.SyscallConn()
+ default:
+ return nil, errors.New("unknown connection type")
+ }
+ if err != nil {
+ return nil, err
+ }
+ return &cc, nil
+}
+
+func (o *Option) get(c *Conn, b []byte) (int, error) {
+ var operr error
+ var n int
+ fn := func(s uintptr) {
+ n, operr = getsockopt(s, o.Level, o.Name, b)
+ }
+ if err := c.c.Control(fn); err != nil {
+ return 0, err
+ }
+ return n, os.NewSyscallError("getsockopt", operr)
+}
+
+func (o *Option) set(c *Conn, b []byte) error {
+ var operr error
+ fn := func(s uintptr) {
+ operr = setsockopt(s, o.Level, o.Name, b)
+ }
+ if err := c.c.Control(fn); err != nil {
+ return err
+ }
+ return os.NewSyscallError("setsockopt", operr)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go
new file mode 100644
index 000000000..499164a3f
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go
@@ -0,0 +1,74 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build linux
+
+package socket
+
+import (
+ "net"
+ "os"
+ "syscall"
+)
+
+func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
+ hs := make(mmsghdrs, len(ms))
+ var parseFn func([]byte, string) (net.Addr, error)
+ if c.network != "tcp" {
+ parseFn = parseInetAddr
+ }
+ if err := hs.pack(ms, parseFn, nil); err != nil {
+ return 0, err
+ }
+ var operr error
+ var n int
+ fn := func(s uintptr) bool {
+ n, operr = recvmmsg(s, hs, flags)
+ if operr == syscall.EAGAIN {
+ return false
+ }
+ return true
+ }
+ if err := c.c.Read(fn); err != nil {
+ return n, err
+ }
+ if operr != nil {
+ return n, os.NewSyscallError("recvmmsg", operr)
+ }
+ if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil {
+ return n, err
+ }
+ return n, nil
+}
+
+func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
+ hs := make(mmsghdrs, len(ms))
+ var marshalFn func(net.Addr) []byte
+ if c.network != "tcp" {
+ marshalFn = marshalInetAddr
+ }
+ if err := hs.pack(ms, nil, marshalFn); err != nil {
+ return 0, err
+ }
+ var operr error
+ var n int
+ fn := func(s uintptr) bool {
+ n, operr = sendmmsg(s, hs, flags)
+ if operr == syscall.EAGAIN {
+ return false
+ }
+ return true
+ }
+ if err := c.c.Write(fn); err != nil {
+ return n, err
+ }
+ if operr != nil {
+ return n, os.NewSyscallError("sendmmsg", operr)
+ }
+ if err := hs[:n].unpack(ms[:n], nil, ""); err != nil {
+ return n, err
+ }
+ return n, nil
+}
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
new file mode 100644
index 000000000..b21d2e641
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
@@ -0,0 +1,77 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package socket
+
+import (
+ "os"
+ "syscall"
+)
+
+func (c *Conn) recvMsg(m *Message, flags int) error {
+ var h msghdr
+ vs := make([]iovec, len(m.Buffers))
+ var sa []byte
+ if c.network != "tcp" {
+ sa = make([]byte, sizeofSockaddrInet6)
+ }
+ h.pack(vs, m.Buffers, m.OOB, sa)
+ var operr error
+ var n int
+ fn := func(s uintptr) bool {
+ n, operr = recvmsg(s, &h, flags)
+ if operr == syscall.EAGAIN {
+ return false
+ }
+ return true
+ }
+ if err := c.c.Read(fn); err != nil {
+ return err
+ }
+ if operr != nil {
+ return os.NewSyscallError("recvmsg", operr)
+ }
+ if c.network != "tcp" {
+ var err error
+ m.Addr, err = parseInetAddr(sa[:], c.network)
+ if err != nil {
+ return err
+ }
+ }
+ m.N = n
+ m.NN = h.controllen()
+ m.Flags = h.flags()
+ return nil
+}
+
+func (c *Conn) sendMsg(m *Message, flags int) error {
+ var h msghdr
+ vs := make([]iovec, len(m.Buffers))
+ var sa []byte
+ if m.Addr != nil {
+ sa = marshalInetAddr(m.Addr)
+ }
+ h.pack(vs, m.Buffers, m.OOB, sa)
+ var operr error
+ var n int
+ fn := func(s uintptr) bool {
+ n, operr = sendmsg(s, &h, flags)
+ if operr == syscall.EAGAIN {
+ return false
+ }
+ return true
+ }
+ if err := c.c.Write(fn); err != nil {
+ return err
+ }
+ if operr != nil {
+ return os.NewSyscallError("sendmsg", operr)
+ }
+ m.N = n
+ m.NN = len(m.OOB)
+ return nil
+}
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go
new file mode 100644
index 000000000..f78832aa4
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go
@@ -0,0 +1,18 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build !linux
+
+package socket
+
+import "errors"
+
+func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go
new file mode 100644
index 000000000..96733cbe1
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go
@@ -0,0 +1,18 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
+
+package socket
+
+import "errors"
+
+func (c *Conn) recvMsg(m *Message, flags int) error {
+ return errors.New("not implemented")
+}
+
+func (c *Conn) sendMsg(m *Message, flags int) error {
+ return errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_stub.go b/vendor/golang.org/x/net/internal/socket/rawconn_stub.go
new file mode 100644
index 000000000..d2add1a0a
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_stub.go
@@ -0,0 +1,25 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package socket
+
+import "errors"
+
+func (c *Conn) recvMsg(m *Message, flags int) error {
+ return errors.New("not implemented")
+}
+
+func (c *Conn) sendMsg(m *Message, flags int) error {
+ return errors.New("not implemented")
+}
+
+func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/reflect.go b/vendor/golang.org/x/net/internal/socket/reflect.go
new file mode 100644
index 000000000..bb179f11d
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/reflect.go
@@ -0,0 +1,62 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package socket
+
+import (
+ "errors"
+ "net"
+ "os"
+ "reflect"
+ "runtime"
+)
+
+// A Conn represents a raw connection.
+type Conn struct {
+ c net.Conn
+}
+
+// NewConn returns a new raw connection.
+func NewConn(c net.Conn) (*Conn, error) {
+ return &Conn{c: c}, nil
+}
+
+func (o *Option) get(c *Conn, b []byte) (int, error) {
+ s, err := socketOf(c.c)
+ if err != nil {
+ return 0, err
+ }
+ n, err := getsockopt(s, o.Level, o.Name, b)
+ return n, os.NewSyscallError("getsockopt", err)
+}
+
+func (o *Option) set(c *Conn, b []byte) error {
+ s, err := socketOf(c.c)
+ if err != nil {
+ return err
+ }
+ return os.NewSyscallError("setsockopt", setsockopt(s, o.Level, o.Name, b))
+}
+
+func socketOf(c net.Conn) (uintptr, error) {
+ switch c.(type) {
+ case *net.TCPConn, *net.UDPConn, *net.IPConn:
+ v := reflect.ValueOf(c)
+ switch e := v.Elem(); e.Kind() {
+ case reflect.Struct:
+ fd := e.FieldByName("conn").FieldByName("fd")
+ switch e := fd.Elem(); e.Kind() {
+ case reflect.Struct:
+ sysfd := e.FieldByName("sysfd")
+ if runtime.GOOS == "windows" {
+ return uintptr(sysfd.Uint()), nil
+ }
+ return uintptr(sysfd.Int()), nil
+ }
+ }
+ }
+ return 0, errors.New("invalid type")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go
new file mode 100644
index 000000000..729dea14b
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/socket.go
@@ -0,0 +1,285 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package socket provides a portable interface for socket system
+// calls.
+package socket // import "golang.org/x/net/internal/socket"
+
+import (
+ "errors"
+ "net"
+ "unsafe"
+)
+
+// An Option represents a sticky socket option.
+type Option struct {
+ Level int // level
+ Name int // name; must be equal or greater than 1
+ Len int // length of value in bytes; must be equal or greater than 1
+}
+
+// Get reads a value for the option from the kernel.
+// It returns the number of bytes written into b.
+func (o *Option) Get(c *Conn, b []byte) (int, error) {
+ if o.Name < 1 || o.Len < 1 {
+ return 0, errors.New("invalid option")
+ }
+ if len(b) < o.Len {
+ return 0, errors.New("short buffer")
+ }
+ return o.get(c, b)
+}
+
+// GetInt returns an integer value for the option.
+//
+// The Len field of Option must be either 1 or 4.
+func (o *Option) GetInt(c *Conn) (int, error) {
+ if o.Len != 1 && o.Len != 4 {
+ return 0, errors.New("invalid option")
+ }
+ var b []byte
+ var bb [4]byte
+ if o.Len == 1 {
+ b = bb[:1]
+ } else {
+ b = bb[:4]
+ }
+ n, err := o.get(c, b)
+ if err != nil {
+ return 0, err
+ }
+ if n != o.Len {
+ return 0, errors.New("invalid option length")
+ }
+ if o.Len == 1 {
+ return int(b[0]), nil
+ }
+ return int(NativeEndian.Uint32(b[:4])), nil
+}
+
+// Set writes the option and value to the kernel.
+func (o *Option) Set(c *Conn, b []byte) error {
+ if o.Name < 1 || o.Len < 1 {
+ return errors.New("invalid option")
+ }
+ if len(b) < o.Len {
+ return errors.New("short buffer")
+ }
+ return o.set(c, b)
+}
+
+// SetInt writes the option and value to the kernel.
+//
+// The Len field of Option must be either 1 or 4.
+func (o *Option) SetInt(c *Conn, v int) error {
+ if o.Len != 1 && o.Len != 4 {
+ return errors.New("invalid option")
+ }
+ var b []byte
+ if o.Len == 1 {
+ b = []byte{byte(v)}
+ } else {
+ var bb [4]byte
+ NativeEndian.PutUint32(bb[:o.Len], uint32(v))
+ b = bb[:4]
+ }
+ return o.set(c, b)
+}
+
+func controlHeaderLen() int {
+ return roundup(sizeofCmsghdr)
+}
+
+func controlMessageLen(dataLen int) int {
+ return roundup(sizeofCmsghdr) + dataLen
+}
+
+// ControlMessageSpace returns the whole length of control message.
+func ControlMessageSpace(dataLen int) int {
+ return roundup(sizeofCmsghdr) + roundup(dataLen)
+}
+
+// A ControlMessage represents the head message in a stream of control
+// messages.
+//
+// A control message comprises of a header, data and a few padding
+// fields to conform to the interface to the kernel.
+//
+// See RFC 3542 for further information.
+type ControlMessage []byte
+
+// Data returns the data field of the control message at the head on
+// w.
+func (m ControlMessage) Data(dataLen int) []byte {
+ l := controlHeaderLen()
+ if len(m) < l || len(m) < l+dataLen {
+ return nil
+ }
+ return m[l : l+dataLen]
+}
+
+// Next returns the control message at the next on w.
+//
+// Next works only for standard control messages.
+func (m ControlMessage) Next(dataLen int) ControlMessage {
+ l := ControlMessageSpace(dataLen)
+ if len(m) < l {
+ return nil
+ }
+ return m[l:]
+}
+
+// MarshalHeader marshals the header fields of the control message at
+// the head on w.
+func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error {
+ if len(m) < controlHeaderLen() {
+ return errors.New("short message")
+ }
+ h := (*cmsghdr)(unsafe.Pointer(&m[0]))
+ h.set(controlMessageLen(dataLen), lvl, typ)
+ return nil
+}
+
+// ParseHeader parses and returns the header fields of the control
+// message at the head on w.
+func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) {
+ l := controlHeaderLen()
+ if len(m) < l {
+ return 0, 0, 0, errors.New("short message")
+ }
+ h := (*cmsghdr)(unsafe.Pointer(&m[0]))
+ return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil
+}
+
+// Marshal marshals the control message at the head on w, and returns
+// the next control message.
+func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) {
+ l := len(data)
+ if len(m) < ControlMessageSpace(l) {
+ return nil, errors.New("short message")
+ }
+ h := (*cmsghdr)(unsafe.Pointer(&m[0]))
+ h.set(controlMessageLen(l), lvl, typ)
+ if l > 0 {
+ copy(m.Data(l), data)
+ }
+ return m.Next(l), nil
+}
+
+// Parse parses w as a single or multiple control messages.
+//
+// Parse works for both standard and compatible messages.
+func (m ControlMessage) Parse() ([]ControlMessage, error) {
+ var ms []ControlMessage
+ for len(m) >= controlHeaderLen() {
+ h := (*cmsghdr)(unsafe.Pointer(&m[0]))
+ l := h.len()
+ if l <= 0 {
+ return nil, errors.New("invalid header length")
+ }
+ if uint64(l) < uint64(controlHeaderLen()) {
+ return nil, errors.New("invalid message length")
+ }
+ if uint64(l) > uint64(len(m)) {
+ return nil, errors.New("short buffer")
+ }
+ // On message reception:
+ //
+ // |<- ControlMessageSpace --------------->|
+ // |<- controlMessageLen ---------->| |
+ // |<- controlHeaderLen ->| | |
+ // +---------------+------+---------+------+
+ // | Header | PadH | Data | PadD |
+ // +---------------+------+---------+------+
+ //
+ // On compatible message reception:
+ //
+ // | ... |<- controlMessageLen ----------->|
+ // | ... |<- controlHeaderLen ->| |
+ // +-----+---------------+------+----------+
+ // | ... | Header | PadH | Data |
+ // +-----+---------------+------+----------+
+ ms = append(ms, ControlMessage(m[:l]))
+ ll := l - controlHeaderLen()
+ if len(m) >= ControlMessageSpace(ll) {
+ m = m[ControlMessageSpace(ll):]
+ } else {
+ m = m[controlMessageLen(ll):]
+ }
+ }
+ return ms, nil
+}
+
+// NewControlMessage returns a new stream of control messages.
+func NewControlMessage(dataLen []int) ControlMessage {
+ var l int
+ for i := range dataLen {
+ l += ControlMessageSpace(dataLen[i])
+ }
+ return make([]byte, l)
+}
+
+// A Message represents an IO message.
+type Message struct {
+ // When writing, the Buffers field must contain at least one
+ // byte to write.
+ // When reading, the Buffers field will always contain a byte
+ // to read.
+ Buffers [][]byte
+
+ // OOB contains protocol-specific control or miscellaneous
+ // ancillary data known as out-of-band data.
+ OOB []byte
+
+ // Addr specifies a destination address when writing.
+ // It can be nil when the underlying protocol of the raw
+ // connection uses connection-oriented communication.
+ // After a successful read, it may contain the source address
+ // on the received packet.
+ Addr net.Addr
+
+ N int // # of bytes read or written from/to Buffers
+ NN int // # of bytes read or written from/to OOB
+ Flags int // protocol-specific information on the received message
+}
+
+// RecvMsg wraps recvmsg system call.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_PEEK.
+func (c *Conn) RecvMsg(m *Message, flags int) error {
+ return c.recvMsg(m, flags)
+}
+
+// SendMsg wraps sendmsg system call.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_DONTROUTE.
+func (c *Conn) SendMsg(m *Message, flags int) error {
+ return c.sendMsg(m, flags)
+}
+
+// RecvMsgs wraps recvmmsg system call.
+//
+// It returns the number of processed messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_PEEK.
+//
+// Only Linux supports this.
+func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) {
+ return c.recvMsgs(ms, flags)
+}
+
+// SendMsgs wraps sendmmsg system call.
+//
+// It returns the number of processed messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_DONTROUTE.
+//
+// Only Linux supports this.
+func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) {
+ return c.sendMsgs(ms, flags)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go
new file mode 100644
index 000000000..109fed762
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go
@@ -0,0 +1,256 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package socket_test
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "runtime"
+ "testing"
+
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/internal/socket"
+)
+
+type mockControl struct {
+ Level int
+ Type int
+ Data []byte
+}
+
+func TestControlMessage(t *testing.T) {
+ for _, tt := range []struct {
+ cs []mockControl
+ }{
+ {
+ []mockControl{
+ {Level: 1, Type: 1},
+ },
+ },
+ {
+ []mockControl{
+ {Level: 2, Type: 2, Data: []byte{0xfe}},
+ },
+ },
+ {
+ []mockControl{
+ {Level: 3, Type: 3, Data: []byte{0xfe, 0xff, 0xff, 0xfe}},
+ },
+ },
+ {
+ []mockControl{
+ {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}},
+ },
+ },
+ {
+ []mockControl{
+ {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}},
+ {Level: 2, Type: 2, Data: []byte{0xfe}},
+ },
+ },
+ } {
+ var w []byte
+ var tailPadLen int
+ mm := socket.NewControlMessage([]int{0})
+ for i, c := range tt.cs {
+ m := socket.NewControlMessage([]int{len(c.Data)})
+ l := len(m) - len(mm)
+ if i == len(tt.cs)-1 && l > len(c.Data) {
+ tailPadLen = l - len(c.Data)
+ }
+ w = append(w, m...)
+ }
+
+ var err error
+ ww := make([]byte, len(w))
+ copy(ww, w)
+ m := socket.ControlMessage(ww)
+ for _, c := range tt.cs {
+ if err = m.MarshalHeader(c.Level, c.Type, len(c.Data)); err != nil {
+ t.Fatalf("(%v).MarshalHeader() = %v", tt.cs, err)
+ }
+ copy(m.Data(len(c.Data)), c.Data)
+ m = m.Next(len(c.Data))
+ }
+ m = socket.ControlMessage(w)
+ for _, c := range tt.cs {
+ m, err = m.Marshal(c.Level, c.Type, c.Data)
+ if err != nil {
+ t.Fatalf("(%v).Marshal() = %v", tt.cs, err)
+ }
+ }
+ if !bytes.Equal(ww, w) {
+ t.Fatalf("got %#v; want %#v", ww, w)
+ }
+
+ ws := [][]byte{w}
+ if tailPadLen > 0 {
+ // Test a message with no tail padding.
+ nopad := w[:len(w)-tailPadLen]
+ ws = append(ws, [][]byte{nopad}...)
+ }
+ for _, w := range ws {
+ ms, err := socket.ControlMessage(w).Parse()
+ if err != nil {
+ t.Fatalf("(%v).Parse() = %v", tt.cs, err)
+ }
+ for i, m := range ms {
+ lvl, typ, dataLen, err := m.ParseHeader()
+ if err != nil {
+ t.Fatalf("(%v).ParseHeader() = %v", tt.cs, err)
+ }
+ if lvl != tt.cs[i].Level || typ != tt.cs[i].Type || dataLen != len(tt.cs[i].Data) {
+ t.Fatalf("%v: got %d, %d, %d; want %d, %d, %d", tt.cs[i], lvl, typ, dataLen, tt.cs[i].Level, tt.cs[i].Type, len(tt.cs[i].Data))
+ }
+ }
+ }
+ }
+}
+
+func TestUDP(t *testing.T) {
+ c, err := nettest.NewLocalPacketListener("udp")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+
+ t.Run("Message", func(t *testing.T) {
+ testUDPMessage(t, c.(net.Conn))
+ })
+ switch runtime.GOOS {
+ case "linux":
+ t.Run("Messages", func(t *testing.T) {
+ testUDPMessages(t, c.(net.Conn))
+ })
+ }
+}
+
+func testUDPMessage(t *testing.T, c net.Conn) {
+ cc, err := socket.NewConn(c)
+ if err != nil {
+ t.Fatal(err)
+ }
+ data := []byte("HELLO-R-U-THERE")
+ wm := socket.Message{
+ Buffers: bytes.SplitAfter(data, []byte("-")),
+ Addr: c.LocalAddr(),
+ }
+ if err := cc.SendMsg(&wm, 0); err != nil {
+ t.Fatal(err)
+ }
+ b := make([]byte, 32)
+ rm := socket.Message{
+ Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]},
+ }
+ if err := cc.RecvMsg(&rm, 0); err != nil {
+ t.Fatal(err)
+ }
+ if !bytes.Equal(b[:rm.N], data) {
+ t.Fatalf("got %#v; want %#v", b[:rm.N], data)
+ }
+}
+
+func testUDPMessages(t *testing.T, c net.Conn) {
+ cc, err := socket.NewConn(c)
+ if err != nil {
+ t.Fatal(err)
+ }
+ data := []byte("HELLO-R-U-THERE")
+ wmbs := bytes.SplitAfter(data, []byte("-"))
+ wms := []socket.Message{
+ {Buffers: wmbs[:1], Addr: c.LocalAddr()},
+ {Buffers: wmbs[1:], Addr: c.LocalAddr()},
+ }
+ n, err := cc.SendMsgs(wms, 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if n != len(wms) {
+ t.Fatalf("got %d; want %d", n, len(wms))
+ }
+ b := make([]byte, 32)
+ rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}}
+ rms := []socket.Message{
+ {Buffers: rmbs[0]},
+ {Buffers: rmbs[1]},
+ }
+ n, err = cc.RecvMsgs(rms, 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if n != len(rms) {
+ t.Fatalf("got %d; want %d", n, len(rms))
+ }
+ nn := 0
+ for i := 0; i < n; i++ {
+ nn += rms[i].N
+ }
+ if !bytes.Equal(b[:nn], data) {
+ t.Fatalf("got %#v; want %#v", b[:nn], data)
+ }
+}
+
+func BenchmarkUDP(b *testing.B) {
+ c, err := nettest.NewLocalPacketListener("udp")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ cc, err := socket.NewConn(c.(net.Conn))
+ if err != nil {
+ b.Fatal(err)
+ }
+ data := []byte("HELLO-R-U-THERE")
+ wm := socket.Message{
+ Buffers: [][]byte{data},
+ Addr: c.LocalAddr(),
+ }
+ rm := socket.Message{
+ Buffers: [][]byte{make([]byte, 128)},
+ OOB: make([]byte, 128),
+ }
+
+ for M := 1; M <= 1<<9; M = M << 1 {
+ b.Run(fmt.Sprintf("Iter-%d", M), func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ for j := 0; j < M; j++ {
+ if err := cc.SendMsg(&wm, 0); err != nil {
+ b.Fatal(err)
+ }
+ if err := cc.RecvMsg(&rm, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ }
+ })
+ switch runtime.GOOS {
+ case "linux":
+ wms := make([]socket.Message, M)
+ for i := range wms {
+ wms[i].Buffers = [][]byte{data}
+ wms[i].Addr = c.LocalAddr()
+ }
+ rms := make([]socket.Message, M)
+ for i := range rms {
+ rms[i].Buffers = [][]byte{make([]byte, 128)}
+ rms[i].OOB = make([]byte, 128)
+ }
+ b.Run(fmt.Sprintf("Batch-%d", M), func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := cc.SendMsgs(wms, 0); err != nil {
+ b.Fatal(err)
+ }
+ if _, err := cc.RecvMsgs(rms, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ }
+ }
+}
diff --git a/vendor/golang.org/x/net/internal/socket/socket_test.go b/vendor/golang.org/x/net/internal/socket/socket_test.go
new file mode 100644
index 000000000..bf3751b5e
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/socket_test.go
@@ -0,0 +1,46 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package socket_test
+
+import (
+ "net"
+ "runtime"
+ "syscall"
+ "testing"
+
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/internal/socket"
+)
+
+func TestSocket(t *testing.T) {
+ t.Run("Option", func(t *testing.T) {
+ testSocketOption(t, &socket.Option{Level: syscall.SOL_SOCKET, Name: syscall.SO_RCVBUF, Len: 4})
+ })
+}
+
+func testSocketOption(t *testing.T, so *socket.Option) {
+ c, err := nettest.NewLocalPacketListener("udp")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ cc, err := socket.NewConn(c.(net.Conn))
+ if err != nil {
+ t.Fatal(err)
+ }
+ const N = 2048
+ if err := so.SetInt(cc, N); err != nil {
+ t.Fatal(err)
+ }
+ n, err := so.GetInt(cc)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if n < N {
+ t.Fatalf("got %d; want greater than or equal to %d", n, N)
+ }
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go
new file mode 100644
index 000000000..4f0eead13
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys.go
@@ -0,0 +1,33 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "encoding/binary"
+ "unsafe"
+)
+
+var (
+ // NativeEndian is the machine native endian implementation of
+ // ByteOrder.
+ NativeEndian binary.ByteOrder
+
+ kernelAlign int
+)
+
+func init() {
+ i := uint32(1)
+ b := (*[4]byte)(unsafe.Pointer(&i))
+ if b[0] == 1 {
+ NativeEndian = binary.LittleEndian
+ } else {
+ NativeEndian = binary.BigEndian
+ }
+ kernelAlign = probeProtocolStack()
+}
+
+func roundup(l int) int {
+ return (l + kernelAlign - 1) & ^(kernelAlign - 1)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go
new file mode 100644
index 000000000..f13e14ff3
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_bsd.go
@@ -0,0 +1,17 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd openbsd
+
+package socket
+
+import "errors"
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go
new file mode 100644
index 000000000..f723fa36a
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go
@@ -0,0 +1,14 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build freebsd netbsd openbsd
+
+package socket
+
+import "unsafe"
+
+func probeProtocolStack() int {
+ var p uintptr
+ return int(unsafe.Sizeof(p))
+}
diff --git a/vendor/golang.org/x/net/ipv4/go19_test.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go
index 82a27b113..b17d223bf 100644
--- a/vendor/golang.org/x/net/ipv4/go19_test.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_darwin.go
@@ -2,10 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build go1.9
+package socket
-package ipv4
-
-func init() {
- disableTests = true
-}
+func probeProtocolStack() int { return 4 }
diff --git a/vendor/golang.org/x/net/ipv6/go19_test.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go
index c7cb057d2..b17d223bf 100644
--- a/vendor/golang.org/x/net/ipv6/go19_test.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go
@@ -2,10 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build go1.9
+package socket
-package ipv6
-
-func init() {
- disableTests = true
-}
+func probeProtocolStack() int { return 4 }
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go
new file mode 100644
index 000000000..1559521e0
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux.go
@@ -0,0 +1,27 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,!s390x,!386
+
+package socket
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func probeProtocolStack() int {
+ var p uintptr
+ return int(unsafe.Sizeof(p))
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go
new file mode 100644
index 000000000..235b2cc08
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go
@@ -0,0 +1,55 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func probeProtocolStack() int { return 4 }
+
+const (
+ sysSETSOCKOPT = 0xe
+ sysGETSOCKOPT = 0xf
+ sysSENDMSG = 0x10
+ sysRECVMSG = 0x11
+ sysRECVMMSG = 0x13
+ sysSENDMMSG = 0x14
+)
+
+func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
+func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ l := uint32(len(b))
+ _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0)
+ return int(l), errnoErr(errno)
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0)
+ return errnoErr(errno)
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s
index b85551a5c..93e7d75ec 100644
--- a/vendor/golang.org/x/net/ipv6/sys_linux_386.s
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s
@@ -6,3 +6,6 @@
TEXT ·socketcall(SB),NOSPLIT,$0-36
JMP syscall·socketcall(SB)
+
+TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
+ JMP syscall·rawsocketcall(SB)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go
new file mode 100644
index 000000000..9decee2e5
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x12b
+ sysSENDMMSG = 0x133
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go
new file mode 100644
index 000000000..d753b436d
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x16d
+ sysSENDMMSG = 0x176
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go
new file mode 100644
index 000000000..b67089436
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0xf3
+ sysSENDMMSG = 0x10d
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go
new file mode 100644
index 000000000..9c0d74014
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x10ef
+ sysSENDMMSG = 0x10f7
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go
new file mode 100644
index 000000000..071a4aba8
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x14ae
+ sysSENDMMSG = 0x14b6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go
new file mode 100644
index 000000000..071a4aba8
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x14ae
+ sysSENDMMSG = 0x14b6
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go
new file mode 100644
index 000000000..9c0d74014
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x10ef
+ sysSENDMMSG = 0x10f7
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go
new file mode 100644
index 000000000..21c1e3f00
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x157
+ sysSENDMMSG = 0x15d
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go
new file mode 100644
index 000000000..21c1e3f00
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go
@@ -0,0 +1,10 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x157
+ sysSENDMMSG = 0x15d
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go
new file mode 100644
index 000000000..327979efb
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go
@@ -0,0 +1,55 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func probeProtocolStack() int { return 8 }
+
+const (
+ sysSETSOCKOPT = 0xe
+ sysGETSOCKOPT = 0xf
+ sysSENDMSG = 0x10
+ sysRECVMSG = 0x11
+ sysRECVMMSG = 0x13
+ sysSENDMMSG = 0x14
+)
+
+func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
+func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno)
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ l := uint32(len(b))
+ _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0)
+ return int(l), errnoErr(errno)
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0)
+ return errnoErr(errno)
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s
new file mode 100644
index 000000000..06d75628c
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+TEXT ·socketcall(SB),NOSPLIT,$0-72
+ JMP syscall·socketcall(SB)
+
+TEXT ·rawsocketcall(SB),NOSPLIT,$0-72
+ JMP syscall·rawsocketcall(SB)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go
new file mode 100644
index 000000000..431851c12
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go
@@ -0,0 +1,25 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+const (
+ sysRECVMMSG = 0x1db
+ sysSENDMMSG = 0x1dc
+)
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0)
+ return int(n), errnoErr(errno)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go
new file mode 100644
index 000000000..9a0dbcfb9
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go
@@ -0,0 +1,168 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package socket
+
+import (
+ "encoding/binary"
+ "errors"
+ "net"
+ "runtime"
+ "strconv"
+ "sync"
+ "time"
+)
+
+func marshalInetAddr(a net.Addr) []byte {
+ switch a := a.(type) {
+ case *net.TCPAddr:
+ return marshalSockaddr(a.IP, a.Port, a.Zone)
+ case *net.UDPAddr:
+ return marshalSockaddr(a.IP, a.Port, a.Zone)
+ case *net.IPAddr:
+ return marshalSockaddr(a.IP, 0, a.Zone)
+ default:
+ return nil
+ }
+}
+
+func marshalSockaddr(ip net.IP, port int, zone string) []byte {
+ if ip4 := ip.To4(); ip4 != nil {
+ b := make([]byte, sizeofSockaddrInet)
+ switch runtime.GOOS {
+ case "linux", "solaris", "windows":
+ NativeEndian.PutUint16(b[:2], uint16(sysAF_INET))
+ default:
+ b[0] = sizeofSockaddrInet
+ b[1] = sysAF_INET
+ }
+ binary.BigEndian.PutUint16(b[2:4], uint16(port))
+ copy(b[4:8], ip4)
+ return b
+ }
+ if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil {
+ b := make([]byte, sizeofSockaddrInet6)
+ switch runtime.GOOS {
+ case "linux", "solaris", "windows":
+ NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6))
+ default:
+ b[0] = sizeofSockaddrInet6
+ b[1] = sysAF_INET6
+ }
+ binary.BigEndian.PutUint16(b[2:4], uint16(port))
+ copy(b[8:24], ip6)
+ if zone != "" {
+ NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone)))
+ }
+ return b
+ }
+ return nil
+}
+
+func parseInetAddr(b []byte, network string) (net.Addr, error) {
+ if len(b) < 2 {
+ return nil, errors.New("invalid address")
+ }
+ var af int
+ switch runtime.GOOS {
+ case "linux", "solaris", "windows":
+ af = int(NativeEndian.Uint16(b[:2]))
+ default:
+ af = int(b[1])
+ }
+ var ip net.IP
+ var zone string
+ if af == sysAF_INET {
+ if len(b) < sizeofSockaddrInet {
+ return nil, errors.New("short address")
+ }
+ ip = make(net.IP, net.IPv4len)
+ copy(ip, b[4:8])
+ }
+ if af == sysAF_INET6 {
+ if len(b) < sizeofSockaddrInet6 {
+ return nil, errors.New("short address")
+ }
+ ip = make(net.IP, net.IPv6len)
+ copy(ip, b[8:24])
+ if id := int(NativeEndian.Uint32(b[24:28])); id > 0 {
+ zone = zoneCache.name(id)
+ }
+ }
+ switch network {
+ case "tcp", "tcp4", "tcp6":
+ return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil
+ case "udp", "udp4", "udp6":
+ return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil
+ default:
+ return &net.IPAddr{IP: ip, Zone: zone}, nil
+ }
+}
+
+// An ipv6ZoneCache represents a cache holding partial network
+// interface information. It is used for reducing the cost of IPv6
+// addressing scope zone resolution.
+//
+// Multiple names sharing the index are managed by first-come
+// first-served basis for consistency.
+type ipv6ZoneCache struct {
+ sync.RWMutex // guard the following
+ lastFetched time.Time // last time routing information was fetched
+ toIndex map[string]int // interface name to its index
+ toName map[int]string // interface index to its name
+}
+
+var zoneCache = ipv6ZoneCache{
+ toIndex: make(map[string]int),
+ toName: make(map[int]string),
+}
+
+func (zc *ipv6ZoneCache) update(ift []net.Interface) {
+ zc.Lock()
+ defer zc.Unlock()
+ now := time.Now()
+ if zc.lastFetched.After(now.Add(-60 * time.Second)) {
+ return
+ }
+ zc.lastFetched = now
+ if len(ift) == 0 {
+ var err error
+ if ift, err = net.Interfaces(); err != nil {
+ return
+ }
+ }
+ zc.toIndex = make(map[string]int, len(ift))
+ zc.toName = make(map[int]string, len(ift))
+ for _, ifi := range ift {
+ zc.toIndex[ifi.Name] = ifi.Index
+ if _, ok := zc.toName[ifi.Index]; !ok {
+ zc.toName[ifi.Index] = ifi.Name
+ }
+ }
+}
+
+func (zc *ipv6ZoneCache) name(zone int) string {
+ zoneCache.update(nil)
+ zoneCache.RLock()
+ defer zoneCache.RUnlock()
+ name, ok := zoneCache.toName[zone]
+ if !ok {
+ name = strconv.Itoa(zone)
+ }
+ return name
+}
+
+func (zc *ipv6ZoneCache) index(zone string) int {
+ zoneCache.update(nil)
+ zoneCache.RLock()
+ defer zoneCache.RUnlock()
+ index, ok := zoneCache.toIndex[zone]
+ if !ok {
+ index, _ = strconv.Atoi(zone)
+ }
+ return index
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go
new file mode 100644
index 000000000..cced74e60
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_solaris.go
@@ -0,0 +1,71 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "errors"
+ "runtime"
+ "syscall"
+ "unsafe"
+)
+
+func probeProtocolStack() int {
+ switch runtime.GOARCH {
+ case "amd64":
+ return 4
+ default:
+ var p uintptr
+ return int(unsafe.Sizeof(p))
+ }
+}
+
+//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so"
+//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
+//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so"
+//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so"
+
+//go:linkname procGetsockopt libc___xnet_getsockopt
+//go:linkname procSetsockopt libc_setsockopt
+//go:linkname procRecvmsg libc___xnet_recvmsg
+//go:linkname procSendmsg libc___xnet_sendmsg
+
+var (
+ procGetsockopt uintptr
+ procSetsockopt uintptr
+ procRecvmsg uintptr
+ procSendmsg uintptr
+)
+
+func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
+func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ l := uint32(len(b))
+ _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0)
+ return int(l), errnoErr(errno)
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0)
+ return errnoErr(errno)
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0)
+ return int(n), errnoErr(errno)
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s
index 39d76af79..a18ac5ed7 100644
--- a/vendor/golang.org/x/net/ipv6/sys_solaris_amd64.s
+++ b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s
@@ -4,5 +4,8 @@
#include "textflag.h"
-TEXT ·sysvicall6(SB),NOSPLIT,$0-88
+TEXT ·sysvicall6(SB),NOSPLIT,$0-88
JMP syscall·sysvicall6(SB)
+
+TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88
+ JMP syscall·rawSysvicall6(SB)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go
new file mode 100644
index 000000000..d9f06d00e
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_stub.go
@@ -0,0 +1,64 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
+
+package socket
+
+import (
+ "errors"
+ "net"
+ "runtime"
+ "unsafe"
+)
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+func probeProtocolStack() int {
+ switch runtime.GOARCH {
+ case "amd64p32", "mips64p32":
+ return 4
+ default:
+ var p uintptr
+ return int(unsafe.Sizeof(p))
+ }
+}
+
+func marshalInetAddr(ip net.IP, port int, zone string) []byte {
+ return nil
+}
+
+func parseInetAddr(b []byte, network string) (net.Addr, error) {
+ return nil, errors.New("not implemented")
+}
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ return errors.New("not implemented")
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go
new file mode 100644
index 000000000..18eba3085
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_unix.go
@@ -0,0 +1,33 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux,!s390x,!386 netbsd openbsd
+
+package socket
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ l := uint32(len(b))
+ _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0)
+ return int(l), errnoErr(errno)
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0)
+ return errnoErr(errno)
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags))
+ return int(n), errnoErr(errno)
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags))
+ return int(n), errnoErr(errno)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go
new file mode 100644
index 000000000..54a470ebe
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_windows.go
@@ -0,0 +1,70 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package socket
+
+import (
+ "errors"
+ "syscall"
+ "unsafe"
+)
+
+func probeProtocolStack() int {
+ var p uintptr
+ return int(unsafe.Sizeof(p))
+}
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x17
+
+ sysSOCK_RAW = 0x3
+)
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
+
+func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
+ l := uint32(len(b))
+ err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l)))
+ return int(l), err
+}
+
+func setsockopt(s uintptr, level, name int, b []byte) error {
+ return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b)))
+}
+
+func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
+
+func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
+ return 0, errors.New("not implemented")
+}
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go
new file mode 100644
index 000000000..26f8feff3
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_darwin.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1e
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go
new file mode 100644
index 000000000..e2987f7db
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go
@@ -0,0 +1,61 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_darwin.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1e
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go
new file mode 100644
index 000000000..26f8feff3
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_darwin.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1e
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go
new file mode 100644
index 000000000..c582abd57
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go
@@ -0,0 +1,61 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_dragonfly.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1c
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go
new file mode 100644
index 000000000..04a24886c
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1c
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go
new file mode 100644
index 000000000..35c7cb9c9
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go
@@ -0,0 +1,61 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1c
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go
new file mode 100644
index 000000000..04a24886c
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1c
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go
new file mode 100644
index 000000000..430206930
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go
@@ -0,0 +1,63 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofMmsghdr = 0x20
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go
new file mode 100644
index 000000000..430206930
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go
@@ -0,0 +1,63 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofMmsghdr = 0x20
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go
new file mode 100644
index 000000000..430206930
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go
@@ -0,0 +1,63 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofMmsghdr = 0x20
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go
new file mode 100644
index 000000000..430206930
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go
@@ -0,0 +1,63 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofMmsghdr = 0x20
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go
new file mode 100644
index 000000000..1502f6c55
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go
@@ -0,0 +1,66 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0xa
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ X__pad [8]uint8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x38
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0x10
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go
new file mode 100644
index 000000000..db60491fe
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go
@@ -0,0 +1,65 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_netbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofMmsghdr = 0x20
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go
new file mode 100644
index 000000000..2a1a79985
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go
@@ -0,0 +1,68 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_netbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+ Pad_cgo_0 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofMmsghdr = 0x40
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go
new file mode 100644
index 000000000..206ea2d11
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_netbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go
new file mode 100644
index 000000000..1c836361e
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_openbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go
new file mode 100644
index 000000000..a6c0bf464
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go
@@ -0,0 +1,61 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_openbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen uint32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go
new file mode 100644
index 000000000..1c836361e
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go
@@ -0,0 +1,59 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_openbsd.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x18
+
+ sysSOCK_RAW = 0x3
+)
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go
new file mode 100644
index 000000000..327c63290
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go
@@ -0,0 +1,60 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_solaris.go
+
+package socket
+
+const (
+ sysAF_UNSPEC = 0x0
+ sysAF_INET = 0x2
+ sysAF_INET6 = 0x1a
+
+ sysSOCK_RAW = 0x4
+)
+
+type iovec struct {
+ Base *int8
+ Len uint64
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Accrights *int8
+ Accrightslen int32
+ Pad_cgo_2 [4]byte
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type sockaddrInet struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type sockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+ X__sin6_src_id uint32
+}
+
+const (
+ sizeofIovec = 0x10
+ sizeofMsghdr = 0x30
+ sizeofCmsghdr = 0xc
+
+ sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet6 = 0x20
+)
diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go
new file mode 100644
index 000000000..b44549928
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/batch.go
@@ -0,0 +1,191 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package ipv4
+
+import (
+ "net"
+ "runtime"
+ "syscall"
+
+ "golang.org/x/net/internal/socket"
+)
+
+// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of
+// PacketConn are not implemented.
+
+// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of
+// RawConn are not implemented.
+
+// A Message represents an IO message.
+//
+// type Message struct {
+// Buffers [][]byte
+// OOB []byte
+// Addr net.Addr
+// N int
+// NN int
+// Flags int
+// }
+//
+// The Buffers fields represents a list of contiguous buffers, which
+// can be used for vectored IO, for example, putting a header and a
+// payload in each slice.
+// When writing, the Buffers field must contain at least one byte to
+// write.
+// When reading, the Buffers field will always contain a byte to read.
+//
+// The OOB field contains protocol-specific control or miscellaneous
+// ancillary data known as out-of-band data.
+// It can be nil when not required.
+//
+// The Addr field specifies a destination address when writing.
+// It can be nil when the underlying protocol of the endpoint uses
+// connection-oriented communication.
+// After a successful read, it may contain the source address on the
+// received packet.
+//
+// The N field indicates the number of bytes read or written from/to
+// Buffers.
+//
+// The NN field indicates the number of bytes read or written from/to
+// OOB.
+//
+// The Flags field contains protocol-specific information on the
+// received message.
+type Message = socket.Message
+
+// ReadBatch reads a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_PEEK.
+//
+// On a successful read it returns the number of messages received, up
+// to len(ms).
+//
+// On Linux, a batch read will be optimized.
+// On other platforms, this method will read only a single message.
+//
+// Unlike the ReadFrom method, it doesn't strip the IPv4 header
+// followed by option headers from the received IPv4 datagram when the
+// underlying transport is net.IPConn. Each Buffers field of Message
+// must be large enough to accommodate an IPv4 header and option
+// headers.
+func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.RecvMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.RecvMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
+
+// WriteBatch writes a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_DONTROUTE.
+//
+// It returns the number of messages written on a successful write.
+//
+// On Linux, a batch write will be optimized.
+// On other platforms, this method will write only a single message.
+func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.SendMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.SendMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
+
+// ReadBatch reads a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_PEEK.
+//
+// On a successful read it returns the number of messages received, up
+// to len(ms).
+//
+// On Linux, a batch read will be optimized.
+// On other platforms, this method will read only a single message.
+func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.RecvMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.RecvMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
+
+// WriteBatch writes a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_DONTROUTE.
+//
+// It returns the number of messages written on a successful write.
+//
+// On Linux, a batch write will be optimized.
+// On other platforms, this method will write only a single message.
+func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.SendMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.SendMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_linux.go b/vendor/golang.org/x/net/ipv4/bpfopt_linux.go
deleted file mode 100644
index 2d626d924..000000000
--- a/vendor/golang.org/x/net/ipv4/bpfopt_linux.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "os"
- "unsafe"
-
- "golang.org/x/net/bpf"
- "golang.org/x/net/internal/netreflect"
-)
-
-// SetBPF attaches a BPF program to the connection.
-//
-// Only supported on Linux.
-func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
- }
- prog := sockFProg{
- Len: uint16(len(filter)),
- Filter: (*sockFilter)(unsafe.Pointer(&filter[0])),
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, sysSOL_SOCKET, sysSO_ATTACH_FILTER, unsafe.Pointer(&prog), uint32(unsafe.Sizeof(prog))))
-}
diff --git a/vendor/golang.org/x/net/ipv4/bpfopt_stub.go b/vendor/golang.org/x/net/ipv4/bpfopt_stub.go
deleted file mode 100644
index c4a8481f0..000000000
--- a/vendor/golang.org/x/net/ipv4/bpfopt_stub.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !linux
-
-package ipv4
-
-import "golang.org/x/net/bpf"
-
-// SetBPF attaches a BPF program to the connection.
-//
-// Only supported on Linux.
-func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go
index da4da2dd0..a2b02ca95 100644
--- a/vendor/golang.org/x/net/ipv4/control.go
+++ b/vendor/golang.org/x/net/ipv4/control.go
@@ -8,6 +8,9 @@ import (
"fmt"
"net"
"sync"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
type rawOpt struct {
@@ -51,6 +54,77 @@ func (cm *ControlMessage) String() string {
return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex)
}
+// Marshal returns the binary encoding of cm.
+func (cm *ControlMessage) Marshal() []byte {
+ if cm == nil {
+ return nil
+ }
+ var m socket.ControlMessage
+ if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) {
+ m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length})
+ }
+ if len(m) > 0 {
+ ctlOpts[ctlPacketInfo].marshal(m, cm)
+ }
+ return m
+}
+
+// Parse parses b as a control message and stores the result in cm.
+func (cm *ControlMessage) Parse(b []byte) error {
+ ms, err := socket.ControlMessage(b).Parse()
+ if err != nil {
+ return err
+ }
+ for _, m := range ms {
+ lvl, typ, l, err := m.ParseHeader()
+ if err != nil {
+ return err
+ }
+ if lvl != iana.ProtocolIP {
+ continue
+ }
+ switch {
+ case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length:
+ ctlOpts[ctlTTL].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length:
+ ctlOpts[ctlDst].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length:
+ ctlOpts[ctlInterface].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length:
+ ctlOpts[ctlPacketInfo].parse(cm, m.Data(l))
+ }
+ }
+ return nil
+}
+
+// NewControlMessage returns a new control message.
+//
+// The returned message is large enough for options specified by cf.
+func NewControlMessage(cf ControlFlags) []byte {
+ opt := rawOpt{cflags: cf}
+ var l int
+ if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length)
+ }
+ if ctlOpts[ctlPacketInfo].name > 0 {
+ if opt.isset(FlagSrc | FlagDst | FlagInterface) {
+ l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length)
+ }
+ } else {
+ if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlDst].length)
+ }
+ if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length)
+ }
+ }
+ var b []byte
+ if l > 0 {
+ b = make([]byte, l)
+ }
+ return b
+}
+
// Ancillary data socket options
const (
ctlTTL = iota // header field
diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go
index 3f27f9945..77e7ad5be 100644
--- a/vendor/golang.org/x/net/ipv4/control_bsd.go
+++ b/vendor/golang.org/x/net/ipv4/control_bsd.go
@@ -12,26 +12,26 @@ import (
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
func marshalDst(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIP
- m.Type = sysIP_RECVDSTADDR
- m.SetLen(syscall.CmsgLen(net.IPv4len))
- return b[syscall.CmsgSpace(net.IPv4len):]
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len)
+ return m.Next(net.IPv4len)
}
func parseDst(cm *ControlMessage, b []byte) {
- cm.Dst = b[:net.IPv4len]
+ if len(cm.Dst) < net.IPv4len {
+ cm.Dst = make(net.IP, net.IPv4len)
+ }
+ copy(cm.Dst, b[:net.IPv4len])
}
func marshalInterface(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIP
- m.Type = sysIP_RECVIF
- m.SetLen(syscall.CmsgLen(syscall.SizeofSockaddrDatalink))
- return b[syscall.CmsgSpace(syscall.SizeofSockaddrDatalink):]
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink)
+ return m.Next(syscall.SizeofSockaddrDatalink)
}
func parseInterface(cm *ControlMessage, b []byte) {
diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go
index 9ed977341..425338f35 100644
--- a/vendor/golang.org/x/net/ipv4/control_pktinfo.go
+++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go
@@ -7,19 +7,18 @@
package ipv4
import (
- "syscall"
+ "net"
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIP
- m.Type = sysIP_PKTINFO
- m.SetLen(syscall.CmsgLen(sizeofInetPktinfo))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo)
if cm != nil {
- pi := (*inetPktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+ pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0]))
if ip := cm.Src.To4(); ip != nil {
copy(pi.Spec_dst[:], ip)
}
@@ -27,11 +26,14 @@ func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
pi.setIfindex(cm.IfIndex)
}
}
- return b[syscall.CmsgSpace(sizeofInetPktinfo):]
+ return m.Next(sizeofInetPktinfo)
}
func parsePacketInfo(cm *ControlMessage, b []byte) {
pi := (*inetPktinfo)(unsafe.Pointer(&b[0]))
cm.IfIndex = int(pi.Ifindex)
- cm.Dst = pi.Addr[:]
+ if len(cm.Dst) < net.IPv4len {
+ cm.Dst = make(net.IP, net.IPv4len)
+ }
+ copy(cm.Dst, pi.Addr[:])
}
diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go
index 27e618bc2..5a2f7d8d3 100644
--- a/vendor/golang.org/x/net/ipv4/control_stub.go
+++ b/vendor/golang.org/x/net/ipv4/control_stub.go
@@ -2,22 +2,12 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv4
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
- return errOpNoSupport
-}
-
-func newControlMessage(opt *rawOpt) []byte {
- return nil
-}
+import "golang.org/x/net/internal/socket"
-func parseControlMessage(b []byte) (*ControlMessage, error) {
- return nil, errOpNoSupport
-}
-
-func marshalControlMessage(cm *ControlMessage) []byte {
- return nil
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
+ return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv4/control_test.go b/vendor/golang.org/x/net/ipv4/control_test.go
new file mode 100644
index 000000000..f87fe124b
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/control_test.go
@@ -0,0 +1,21 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ipv4_test
+
+import (
+ "testing"
+
+ "golang.org/x/net/ipv4"
+)
+
+func TestControlMessageParseWithFuzz(t *testing.T) {
+ var cm ipv4.ControlMessage
+ for _, fuzz := range []string{
+ "\f\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00",
+ "\f\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00",
+ } {
+ cm.Parse([]byte(fuzz))
+ }
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go
index 25ef66192..e1ae8167b 100644
--- a/vendor/golang.org/x/net/ipv4/control_unix.go
+++ b/vendor/golang.org/x/net/ipv4/control_unix.go
@@ -7,18 +7,17 @@
package ipv4
import (
- "os"
- "syscall"
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
opt.Lock()
defer opt.Unlock()
- if cf&FlagTTL != 0 && sockOpts[ssoReceiveTTL].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceiveTTL], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -27,9 +26,9 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
opt.clear(FlagTTL)
}
}
- if sockOpts[ssoPacketInfo].name > 0 {
+ if so, ok := sockOpts[ssoPacketInfo]; ok {
if cf&(FlagSrc|FlagDst|FlagInterface) != 0 {
- if err := setInt(s, &sockOpts[ssoPacketInfo], boolint(on)); err != nil {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -39,8 +38,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
}
}
} else {
- if cf&FlagDst != 0 && sockOpts[ssoReceiveDst].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceiveDst], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -49,8 +48,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
opt.clear(FlagDst)
}
}
- if cf&FlagInterface != 0 && sockOpts[ssoReceiveInterface].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceiveInterface], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -63,84 +62,10 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
return nil
}
-func newControlMessage(opt *rawOpt) (oob []byte) {
- opt.RLock()
- var l int
- if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlTTL].length)
- }
- if ctlOpts[ctlPacketInfo].name > 0 {
- if opt.isset(FlagSrc | FlagDst | FlagInterface) {
- l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
- }
- } else {
- if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlDst].length)
- }
- if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlInterface].length)
- }
- }
- if l > 0 {
- oob = make([]byte, l)
- }
- opt.RUnlock()
- return
-}
-
-func parseControlMessage(b []byte) (*ControlMessage, error) {
- if len(b) == 0 {
- return nil, nil
- }
- cmsgs, err := syscall.ParseSocketControlMessage(b)
- if err != nil {
- return nil, os.NewSyscallError("parse socket control message", err)
- }
- cm := &ControlMessage{}
- for _, m := range cmsgs {
- if m.Header.Level != iana.ProtocolIP {
- continue
- }
- switch int(m.Header.Type) {
- case ctlOpts[ctlTTL].name:
- ctlOpts[ctlTTL].parse(cm, m.Data[:])
- case ctlOpts[ctlDst].name:
- ctlOpts[ctlDst].parse(cm, m.Data[:])
- case ctlOpts[ctlInterface].name:
- ctlOpts[ctlInterface].parse(cm, m.Data[:])
- case ctlOpts[ctlPacketInfo].name:
- ctlOpts[ctlPacketInfo].parse(cm, m.Data[:])
- }
- }
- return cm, nil
-}
-
-func marshalControlMessage(cm *ControlMessage) (oob []byte) {
- if cm == nil {
- return nil
- }
- var l int
- pktinfo := false
- if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) {
- pktinfo = true
- l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
- }
- if l > 0 {
- oob = make([]byte, l)
- b := oob
- if pktinfo {
- b = ctlOpts[ctlPacketInfo].marshal(b, cm)
- }
- }
- return
-}
-
func marshalTTL(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIP
- m.Type = sysIP_RECVTTL
- m.SetLen(syscall.CmsgLen(1))
- return b[syscall.CmsgSpace(1):]
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1)
+ return m.Next(1)
}
func parseTTL(cm *ControlMessage, b []byte) {
diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go
index b27407db9..ce55c6644 100644
--- a/vendor/golang.org/x/net/ipv4/control_windows.go
+++ b/vendor/golang.org/x/net/ipv4/control_windows.go
@@ -4,24 +4,13 @@
package ipv4
-import "syscall"
+import (
+ "syscall"
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
- // TODO(mikio): implement this
- return syscall.EWINDOWS
-}
-
-func newControlMessage(opt *rawOpt) []byte {
- // TODO(mikio): implement this
- return nil
-}
+ "golang.org/x/net/internal/socket"
+)
-func parseControlMessage(b []byte) (*ControlMessage, error) {
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
// TODO(mikio): implement this
- return nil, syscall.EWINDOWS
-}
-
-func marshalControlMessage(cm *ControlMessage) []byte {
- // TODO(mikio): implement this
- return nil
+ return syscall.EWINDOWS
}
diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go
index 31dfa093c..beb11071a 100644
--- a/vendor/golang.org/x/net/ipv4/defs_linux.go
+++ b/vendor/golang.org/x/net/ipv4/defs_linux.go
@@ -93,6 +93,8 @@ const (
sizeofGroupSourceReq = C.sizeof_struct_group_source_req
sizeofICMPFilter = C.sizeof_struct_icmp_filter
+
+ sizeofSockFprog = C.sizeof_struct_sock_fprog
)
type kernelSockaddrStorage C.struct___kernel_sockaddr_storage
diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go b/vendor/golang.org/x/net/ipv4/dgramopt.go
index fbc5df198..54d77d5fe 100644
--- a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go
+++ b/vendor/golang.org/x/net/ipv4/dgramopt.go
@@ -2,15 +2,13 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
package ipv4
import (
"net"
"syscall"
- "golang.org/x/net/internal/netreflect"
+ "golang.org/x/net/bpf"
)
// MulticastTTL returns the time-to-live field value for outgoing
@@ -19,11 +17,11 @@ func (c *dgramOpt) MulticastTTL() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoMulticastTTL]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoMulticastTTL])
+ return so.GetInt(c.Conn)
}
// SetMulticastTTL sets the time-to-live field value for future
@@ -32,11 +30,11 @@ func (c *dgramOpt) SetMulticastTTL(ttl int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastTTL]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoMulticastTTL], ttl)
+ return so.SetInt(c.Conn, ttl)
}
// MulticastInterface returns the default interface for multicast
@@ -45,11 +43,11 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
if !c.ok() {
return nil, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return nil, err
+ so, ok := sockOpts[ssoMulticastInterface]
+ if !ok {
+ return nil, errOpNoSupport
}
- return getInterface(s, &sockOpts[ssoMulticastInterface])
+ return so.getMulticastInterface(c.Conn)
}
// SetMulticastInterface sets the default interface for future
@@ -58,11 +56,11 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastInterface]
+ if !ok {
+ return errOpNoSupport
}
- return setInterface(s, &sockOpts[ssoMulticastInterface], ifi)
+ return so.setMulticastInterface(c.Conn, ifi)
}
// MulticastLoopback reports whether transmitted multicast packets
@@ -71,11 +69,11 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) {
if !c.ok() {
return false, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return false, err
+ so, ok := sockOpts[ssoMulticastLoopback]
+ if !ok {
+ return false, errOpNoSupport
}
- on, err := getInt(s, &sockOpts[ssoMulticastLoopback])
+ on, err := so.GetInt(c.Conn)
if err != nil {
return false, err
}
@@ -88,11 +86,11 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastLoopback]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoMulticastLoopback], boolint(on))
+ return so.SetInt(c.Conn, boolint(on))
}
// JoinGroup joins the group address group on the interface ifi.
@@ -108,15 +106,15 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoJoinGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
return errMissingAddress
}
- return setGroup(s, &sockOpts[ssoJoinGroup], ifi, grp)
+ return so.setGroup(c.Conn, ifi, grp)
}
// LeaveGroup leaves the group address group on the interface ifi
@@ -126,15 +124,15 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoLeaveGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
return errMissingAddress
}
- return setGroup(s, &sockOpts[ssoLeaveGroup], ifi, grp)
+ return so.setGroup(c.Conn, ifi, grp)
}
// JoinSourceSpecificGroup joins the source-specific group comprising
@@ -147,9 +145,9 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoJoinSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
@@ -159,7 +157,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoJoinSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// LeaveSourceSpecificGroup leaves the source-specific group on the
@@ -168,9 +166,9 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoLeaveSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
@@ -180,7 +178,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// ExcludeSourceSpecificGroup excludes the source-specific group from
@@ -190,9 +188,9 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoBlockSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
@@ -202,7 +200,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoBlockSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// IncludeSourceSpecificGroup includes the excluded source-specific
@@ -211,9 +209,9 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoUnblockSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP4(group)
if grp == nil {
@@ -223,7 +221,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// ICMPFilter returns an ICMP filter.
@@ -232,11 +230,11 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
if !c.ok() {
return nil, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return nil, err
+ so, ok := sockOpts[ssoICMPFilter]
+ if !ok {
+ return nil, errOpNoSupport
}
- return getICMPFilter(s, &sockOpts[ssoICMPFilter])
+ return so.getICMPFilter(c.Conn)
}
// SetICMPFilter deploys the ICMP filter.
@@ -245,9 +243,23 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoICMPFilter]
+ if !ok {
+ return errOpNoSupport
+ }
+ return so.setICMPFilter(c.Conn, f)
+}
+
+// SetBPF attaches a BPF program to the connection.
+//
+// Only supported on Linux.
+func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
+ if !c.ok() {
+ return syscall.EINVAL
+ }
+ so, ok := sockOpts[ssoAttachFilter]
+ if !ok {
+ return errOpNoSupport
}
- return setICMPFilter(s, &sockOpts[ssoICMPFilter], f)
+ return so.setBPF(c.Conn, filter)
}
diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go b/vendor/golang.org/x/net/ipv4/dgramopt_stub.go
deleted file mode 100644
index f6b867f92..000000000
--- a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build nacl plan9
-
-package ipv4
-
-import "net"
-
-// MulticastTTL returns the time-to-live field value for outgoing
-// multicast packets.
-func (c *dgramOpt) MulticastTTL() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetMulticastTTL sets the time-to-live field value for future
-// outgoing multicast packets.
-func (c *dgramOpt) SetMulticastTTL(ttl int) error {
- return errOpNoSupport
-}
-
-// MulticastInterface returns the default interface for multicast
-// packet transmissions.
-func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
- return nil, errOpNoSupport
-}
-
-// SetMulticastInterface sets the default interface for future
-// multicast packet transmissions.
-func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
- return errOpNoSupport
-}
-
-// MulticastLoopback reports whether transmitted multicast packets
-// should be copied and send back to the originator.
-func (c *dgramOpt) MulticastLoopback() (bool, error) {
- return false, errOpNoSupport
-}
-
-// SetMulticastLoopback sets whether transmitted multicast packets
-// should be copied and send back to the originator.
-func (c *dgramOpt) SetMulticastLoopback(on bool) error {
- return errOpNoSupport
-}
-
-// JoinGroup joins the group address group on the interface ifi.
-// By default all sources that can cast data to group are accepted.
-// It's possible to mute and unmute data transmission from a specific
-// source by using ExcludeSourceSpecificGroup and
-// IncludeSourceSpecificGroup.
-// JoinGroup uses the system assigned multicast interface when ifi is
-// nil, although this is not recommended because the assignment
-// depends on platforms and sometimes it might require routing
-// configuration.
-func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
- return errOpNoSupport
-}
-
-// LeaveGroup leaves the group address group on the interface ifi
-// regardless of whether the group is any-source group or
-// source-specific group.
-func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
- return errOpNoSupport
-}
-
-// JoinSourceSpecificGroup joins the source-specific group comprising
-// group and source on the interface ifi.
-// JoinSourceSpecificGroup uses the system assigned multicast
-// interface when ifi is nil, although this is not recommended because
-// the assignment depends on platforms and sometimes it might require
-// routing configuration.
-func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// LeaveSourceSpecificGroup leaves the source-specific group on the
-// interface ifi.
-func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// ExcludeSourceSpecificGroup excludes the source-specific group from
-// the already joined any-source groups by JoinGroup on the interface
-// ifi.
-func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// IncludeSourceSpecificGroup includes the excluded source-specific
-// group by ExcludeSourceSpecificGroup again on the interface ifi.
-func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// ICMPFilter returns an ICMP filter.
-// Currently only Linux supports this.
-func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
- return nil, errOpNoSupport
-}
-
-// SetICMPFilter deploys the ICMP filter.
-// Currently only Linux supports this.
-func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go
index 8f7e07ac4..2ab877363 100644
--- a/vendor/golang.org/x/net/ipv4/endpoint.go
+++ b/vendor/golang.org/x/net/ipv4/endpoint.go
@@ -9,7 +9,7 @@ import (
"syscall"
"time"
- "golang.org/x/net/internal/netreflect"
+ "golang.org/x/net/internal/socket"
)
// BUG(mikio): On Windows, the JoinSourceSpecificGroup,
@@ -25,15 +25,16 @@ type Conn struct {
}
type genericOpt struct {
- net.Conn
+ *socket.Conn
}
func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
// NewConn returns a new Conn.
func NewConn(c net.Conn) *Conn {
+ cc, _ := socket.NewConn(c)
return &Conn{
- genericOpt: genericOpt{Conn: c},
+ genericOpt: genericOpt{Conn: cc},
}
}
@@ -49,21 +50,17 @@ type PacketConn struct {
}
type dgramOpt struct {
- net.PacketConn
+ *socket.Conn
}
-func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil }
+func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil }
// SetControlMessage sets the per packet IP-level socket options.
func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
if !c.payloadHandler.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn)
- if err != nil {
- return err
- }
- return setControlMessage(s, &c.payloadHandler.rawOpt, cf, on)
+ return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on)
}
// SetDeadline sets the read and write deadlines associated with the
@@ -104,15 +101,11 @@ func (c *PacketConn) Close() error {
// NewPacketConn returns a new PacketConn using c as its underlying
// transport.
func NewPacketConn(c net.PacketConn) *PacketConn {
+ cc, _ := socket.NewConn(c.(net.Conn))
p := &PacketConn{
- genericOpt: genericOpt{Conn: c.(net.Conn)},
- dgramOpt: dgramOpt{PacketConn: c},
- payloadHandler: payloadHandler{PacketConn: c},
- }
- if _, ok := c.(*net.IPConn); ok && sockOpts[ssoStripHeader].name > 0 {
- if s, err := netreflect.PacketSocketOf(c); err == nil {
- setInt(s, &sockOpts[ssoStripHeader], boolint(true))
- }
+ genericOpt: genericOpt{Conn: cc},
+ dgramOpt: dgramOpt{Conn: cc},
+ payloadHandler: payloadHandler{PacketConn: c, Conn: cc},
}
return p
}
@@ -133,11 +126,7 @@ func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error {
if !c.packetHandler.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn)
- if err != nil {
- return err
- }
- return setControlMessage(s, &c.packetHandler.rawOpt, cf, on)
+ return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on)
}
// SetDeadline sets the read and write deadlines associated with the
@@ -146,7 +135,7 @@ func (c *RawConn) SetDeadline(t time.Time) error {
if !c.packetHandler.ok() {
return syscall.EINVAL
}
- return c.packetHandler.c.SetDeadline(t)
+ return c.packetHandler.IPConn.SetDeadline(t)
}
// SetReadDeadline sets the read deadline associated with the
@@ -155,7 +144,7 @@ func (c *RawConn) SetReadDeadline(t time.Time) error {
if !c.packetHandler.ok() {
return syscall.EINVAL
}
- return c.packetHandler.c.SetReadDeadline(t)
+ return c.packetHandler.IPConn.SetReadDeadline(t)
}
// SetWriteDeadline sets the write deadline associated with the
@@ -164,7 +153,7 @@ func (c *RawConn) SetWriteDeadline(t time.Time) error {
if !c.packetHandler.ok() {
return syscall.EINVAL
}
- return c.packetHandler.c.SetWriteDeadline(t)
+ return c.packetHandler.IPConn.SetWriteDeadline(t)
}
// Close closes the endpoint.
@@ -172,22 +161,26 @@ func (c *RawConn) Close() error {
if !c.packetHandler.ok() {
return syscall.EINVAL
}
- return c.packetHandler.c.Close()
+ return c.packetHandler.IPConn.Close()
}
// NewRawConn returns a new RawConn using c as its underlying
// transport.
func NewRawConn(c net.PacketConn) (*RawConn, error) {
- r := &RawConn{
- genericOpt: genericOpt{Conn: c.(net.Conn)},
- dgramOpt: dgramOpt{PacketConn: c},
- packetHandler: packetHandler{c: c.(*net.IPConn)},
- }
- s, err := netreflect.PacketSocketOf(c)
+ cc, err := socket.NewConn(c.(net.Conn))
if err != nil {
return nil, err
}
- if err := setInt(s, &sockOpts[ssoHeaderPrepend], boolint(true)); err != nil {
+ r := &RawConn{
+ genericOpt: genericOpt{Conn: cc},
+ dgramOpt: dgramOpt{Conn: cc},
+ packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc},
+ }
+ so, ok := sockOpts[ssoHeaderPrepend]
+ if !ok {
+ return nil, errOpNoSupport
+ }
+ if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil {
return nil, err
}
return r, nil
diff --git a/vendor/golang.org/x/net/ipv4/genericopt_posix.go b/vendor/golang.org/x/net/ipv4/genericopt.go
index 58168b737..119bf841b 100644
--- a/vendor/golang.org/x/net/ipv4/genericopt_posix.go
+++ b/vendor/golang.org/x/net/ipv4/genericopt.go
@@ -2,26 +2,20 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
package ipv4
-import (
- "syscall"
-
- "golang.org/x/net/internal/netreflect"
-)
+import "syscall"
// TOS returns the type-of-service field value for outgoing packets.
func (c *genericOpt) TOS() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoTOS]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoTOS])
+ return so.GetInt(c.Conn)
}
// SetTOS sets the type-of-service field value for future outgoing
@@ -30,11 +24,11 @@ func (c *genericOpt) SetTOS(tos int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoTOS]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoTOS], tos)
+ return so.SetInt(c.Conn, tos)
}
// TTL returns the time-to-live field value for outgoing packets.
@@ -42,11 +36,11 @@ func (c *genericOpt) TTL() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoTTL]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoTTL])
+ return so.GetInt(c.Conn)
}
// SetTTL sets the time-to-live field value for future outgoing
@@ -55,9 +49,9 @@ func (c *genericOpt) SetTTL(ttl int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoTTL]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoTTL], ttl)
+ return so.SetInt(c.Conn, ttl)
}
diff --git a/vendor/golang.org/x/net/ipv4/genericopt_stub.go b/vendor/golang.org/x/net/ipv4/genericopt_stub.go
deleted file mode 100644
index 661a4d1ab..000000000
--- a/vendor/golang.org/x/net/ipv4/genericopt_stub.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build nacl plan9
-
-package ipv4
-
-// TOS returns the type-of-service field value for outgoing packets.
-func (c *genericOpt) TOS() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetTOS sets the type-of-service field value for future outgoing
-// packets.
-func (c *genericOpt) SetTOS(tos int) error {
- return errOpNoSupport
-}
-
-// TTL returns the time-to-live field value for outgoing packets.
-func (c *genericOpt) TTL() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetTTL sets the time-to-live field value for future outgoing
-// packets.
-func (c *genericOpt) SetTTL(ttl int) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go
index 6dc26d43f..8bb0f0f4d 100644
--- a/vendor/golang.org/x/net/ipv4/header.go
+++ b/vendor/golang.org/x/net/ipv4/header.go
@@ -10,6 +10,8 @@ import (
"net"
"runtime"
"syscall"
+
+ "golang.org/x/net/internal/socket"
)
const (
@@ -49,7 +51,7 @@ func (h *Header) String() string {
return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst)
}
-// Marshal returns the binary encoding of the IPv4 header h.
+// Marshal returns the binary encoding of h.
func (h *Header) Marshal() ([]byte, error) {
if h == nil {
return nil, syscall.EINVAL
@@ -64,12 +66,12 @@ func (h *Header) Marshal() ([]byte, error) {
flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13)
switch runtime.GOOS {
case "darwin", "dragonfly", "netbsd":
- nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen))
- nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
+ socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen))
+ socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
case "freebsd":
if freebsdVersion < 1100000 {
- nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen))
- nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
+ socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen))
+ socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
} else {
binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen))
binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
@@ -96,37 +98,35 @@ func (h *Header) Marshal() ([]byte, error) {
return b, nil
}
-// ParseHeader parses b as an IPv4 header.
-func ParseHeader(b []byte) (*Header, error) {
- if len(b) < HeaderLen {
- return nil, errHeaderTooShort
+// Parse parses b as an IPv4 header and sotres the result in h.
+func (h *Header) Parse(b []byte) error {
+ if h == nil || len(b) < HeaderLen {
+ return errHeaderTooShort
}
hdrlen := int(b[0]&0x0f) << 2
if hdrlen > len(b) {
- return nil, errBufferTooShort
- }
- h := &Header{
- Version: int(b[0] >> 4),
- Len: hdrlen,
- TOS: int(b[1]),
- ID: int(binary.BigEndian.Uint16(b[4:6])),
- TTL: int(b[8]),
- Protocol: int(b[9]),
- Checksum: int(binary.BigEndian.Uint16(b[10:12])),
- Src: net.IPv4(b[12], b[13], b[14], b[15]),
- Dst: net.IPv4(b[16], b[17], b[18], b[19]),
+ return errBufferTooShort
}
+ h.Version = int(b[0] >> 4)
+ h.Len = hdrlen
+ h.TOS = int(b[1])
+ h.ID = int(binary.BigEndian.Uint16(b[4:6]))
+ h.TTL = int(b[8])
+ h.Protocol = int(b[9])
+ h.Checksum = int(binary.BigEndian.Uint16(b[10:12]))
+ h.Src = net.IPv4(b[12], b[13], b[14], b[15])
+ h.Dst = net.IPv4(b[16], b[17], b[18], b[19])
switch runtime.GOOS {
case "darwin", "dragonfly", "netbsd":
- h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + hdrlen
- h.FragOff = int(nativeEndian.Uint16(b[6:8]))
+ h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen
+ h.FragOff = int(socket.NativeEndian.Uint16(b[6:8]))
case "freebsd":
if freebsdVersion < 1100000 {
- h.TotalLen = int(nativeEndian.Uint16(b[2:4]))
+ h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4]))
if freebsdVersion < 1000000 {
h.TotalLen += hdrlen
}
- h.FragOff = int(nativeEndian.Uint16(b[6:8]))
+ h.FragOff = int(socket.NativeEndian.Uint16(b[6:8]))
} else {
h.TotalLen = int(binary.BigEndian.Uint16(b[2:4]))
h.FragOff = int(binary.BigEndian.Uint16(b[6:8]))
@@ -137,9 +137,23 @@ func ParseHeader(b []byte) (*Header, error) {
}
h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13
h.FragOff = h.FragOff & 0x1fff
- if hdrlen-HeaderLen > 0 {
- h.Options = make([]byte, hdrlen-HeaderLen)
- copy(h.Options, b[HeaderLen:])
+ optlen := hdrlen - HeaderLen
+ if optlen > 0 && len(b) >= hdrlen {
+ if cap(h.Options) < optlen {
+ h.Options = make([]byte, optlen)
+ } else {
+ h.Options = h.Options[:optlen]
+ }
+ copy(h.Options, b[HeaderLen:hdrlen])
+ }
+ return nil
+}
+
+// ParseHeader parses b as an IPv4 header.
+func ParseHeader(b []byte) (*Header, error) {
+ h := new(Header)
+ if err := h.Parse(b); err != nil {
+ return nil, err
}
return h, nil
}
diff --git a/vendor/golang.org/x/net/ipv4/header_test.go b/vendor/golang.org/x/net/ipv4/header_test.go
index cdf27fd03..a246aeea1 100644
--- a/vendor/golang.org/x/net/ipv4/header_test.go
+++ b/vendor/golang.org/x/net/ipv4/header_test.go
@@ -12,141 +12,217 @@ import (
"runtime"
"strings"
"testing"
+
+ "golang.org/x/net/internal/socket"
)
type headerTest struct {
- wireHeaderFromKernel [HeaderLen]byte
- wireHeaderToKernel [HeaderLen]byte
- wireHeaderFromTradBSDKernel [HeaderLen]byte
- wireHeaderToTradBSDKernel [HeaderLen]byte
- wireHeaderFromFreeBSD10Kernel [HeaderLen]byte
- wireHeaderToFreeBSD10Kernel [HeaderLen]byte
+ wireHeaderFromKernel []byte
+ wireHeaderToKernel []byte
+ wireHeaderFromTradBSDKernel []byte
+ wireHeaderToTradBSDKernel []byte
+ wireHeaderFromFreeBSD10Kernel []byte
+ wireHeaderToFreeBSD10Kernel []byte
*Header
}
-var headerLittleEndianTest = headerTest{
+var headerLittleEndianTests = []headerTest{
// TODO(mikio): Add platform dependent wire header formats when
// we support new platforms.
- wireHeaderFromKernel: [HeaderLen]byte{
- 0x45, 0x01, 0xbe, 0xef,
- 0xca, 0xfe, 0x45, 0xdc,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
- },
- wireHeaderToKernel: [HeaderLen]byte{
- 0x45, 0x01, 0xbe, 0xef,
- 0xca, 0xfe, 0x45, 0xdc,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
- },
- wireHeaderFromTradBSDKernel: [HeaderLen]byte{
- 0x45, 0x01, 0xdb, 0xbe,
- 0xca, 0xfe, 0xdc, 0x45,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
- },
- wireHeaderToTradBSDKernel: [HeaderLen]byte{
- 0x45, 0x01, 0xef, 0xbe,
- 0xca, 0xfe, 0xdc, 0x45,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
- },
- wireHeaderFromFreeBSD10Kernel: [HeaderLen]byte{
- 0x45, 0x01, 0xef, 0xbe,
- 0xca, 0xfe, 0xdc, 0x45,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
+ {
+ wireHeaderFromKernel: []byte{
+ 0x45, 0x01, 0xbe, 0xef,
+ 0xca, 0xfe, 0x45, 0xdc,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ wireHeaderToKernel: []byte{
+ 0x45, 0x01, 0xbe, 0xef,
+ 0xca, 0xfe, 0x45, 0xdc,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ wireHeaderFromTradBSDKernel: []byte{
+ 0x45, 0x01, 0xdb, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ wireHeaderToTradBSDKernel: []byte{
+ 0x45, 0x01, 0xef, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ wireHeaderFromFreeBSD10Kernel: []byte{
+ 0x45, 0x01, 0xef, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ wireHeaderToFreeBSD10Kernel: []byte{
+ 0x45, 0x01, 0xef, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
+ Header: &Header{
+ Version: Version,
+ Len: HeaderLen,
+ TOS: 1,
+ TotalLen: 0xbeef,
+ ID: 0xcafe,
+ Flags: DontFragment,
+ FragOff: 1500,
+ TTL: 255,
+ Protocol: 1,
+ Checksum: 0xdead,
+ Src: net.IPv4(172, 16, 254, 254),
+ Dst: net.IPv4(192, 168, 0, 1),
+ },
},
- wireHeaderToFreeBSD10Kernel: [HeaderLen]byte{
- 0x45, 0x01, 0xef, 0xbe,
- 0xca, 0xfe, 0xdc, 0x45,
- 0xff, 0x01, 0xde, 0xad,
- 172, 16, 254, 254,
- 192, 168, 0, 1,
- },
- Header: &Header{
- Version: Version,
- Len: HeaderLen,
- TOS: 1,
- TotalLen: 0xbeef,
- ID: 0xcafe,
- Flags: DontFragment,
- FragOff: 1500,
- TTL: 255,
- Protocol: 1,
- Checksum: 0xdead,
- Src: net.IPv4(172, 16, 254, 254),
- Dst: net.IPv4(192, 168, 0, 1),
+
+ // with option headers
+ {
+ wireHeaderFromKernel: []byte{
+ 0x46, 0x01, 0xbe, 0xf3,
+ 0xca, 0xfe, 0x45, 0xdc,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ wireHeaderToKernel: []byte{
+ 0x46, 0x01, 0xbe, 0xf3,
+ 0xca, 0xfe, 0x45, 0xdc,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ wireHeaderFromTradBSDKernel: []byte{
+ 0x46, 0x01, 0xdb, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ wireHeaderToTradBSDKernel: []byte{
+ 0x46, 0x01, 0xf3, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ wireHeaderFromFreeBSD10Kernel: []byte{
+ 0x46, 0x01, 0xf3, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ wireHeaderToFreeBSD10Kernel: []byte{
+ 0x46, 0x01, 0xf3, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ 0xff, 0xfe, 0xfe, 0xff,
+ },
+ Header: &Header{
+ Version: Version,
+ Len: HeaderLen + 4,
+ TOS: 1,
+ TotalLen: 0xbef3,
+ ID: 0xcafe,
+ Flags: DontFragment,
+ FragOff: 1500,
+ TTL: 255,
+ Protocol: 1,
+ Checksum: 0xdead,
+ Src: net.IPv4(172, 16, 254, 254),
+ Dst: net.IPv4(192, 168, 0, 1),
+ Options: []byte{0xff, 0xfe, 0xfe, 0xff},
+ },
},
}
func TestMarshalHeader(t *testing.T) {
- tt := &headerLittleEndianTest
- if nativeEndian != binary.LittleEndian {
+ if socket.NativeEndian != binary.LittleEndian {
t.Skip("no test for non-little endian machine yet")
}
- b, err := tt.Header.Marshal()
- if err != nil {
- t.Fatal(err)
- }
- var wh []byte
- switch runtime.GOOS {
- case "darwin", "dragonfly", "netbsd":
- wh = tt.wireHeaderToTradBSDKernel[:]
- case "freebsd":
- switch {
- case freebsdVersion < 1000000:
- wh = tt.wireHeaderToTradBSDKernel[:]
- case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
- wh = tt.wireHeaderToFreeBSD10Kernel[:]
+ for _, tt := range headerLittleEndianTests {
+ b, err := tt.Header.Marshal()
+ if err != nil {
+ t.Fatal(err)
+ }
+ var wh []byte
+ switch runtime.GOOS {
+ case "darwin", "dragonfly", "netbsd":
+ wh = tt.wireHeaderToTradBSDKernel
+ case "freebsd":
+ switch {
+ case freebsdVersion < 1000000:
+ wh = tt.wireHeaderToTradBSDKernel
+ case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
+ wh = tt.wireHeaderToFreeBSD10Kernel
+ default:
+ wh = tt.wireHeaderToKernel
+ }
default:
- wh = tt.wireHeaderToKernel[:]
+ wh = tt.wireHeaderToKernel
+ }
+ if !bytes.Equal(b, wh) {
+ t.Fatalf("got %#v; want %#v", b, wh)
}
- default:
- wh = tt.wireHeaderToKernel[:]
- }
- if !bytes.Equal(b, wh) {
- t.Fatalf("got %#v; want %#v", b, wh)
}
}
func TestParseHeader(t *testing.T) {
- tt := &headerLittleEndianTest
- if nativeEndian != binary.LittleEndian {
+ if socket.NativeEndian != binary.LittleEndian {
t.Skip("no test for big endian machine yet")
}
- var wh []byte
- switch runtime.GOOS {
- case "darwin", "dragonfly", "netbsd":
- wh = tt.wireHeaderFromTradBSDKernel[:]
- case "freebsd":
- switch {
- case freebsdVersion < 1000000:
- wh = tt.wireHeaderFromTradBSDKernel[:]
- case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
- wh = tt.wireHeaderFromFreeBSD10Kernel[:]
+ for _, tt := range headerLittleEndianTests {
+ var wh []byte
+ switch runtime.GOOS {
+ case "darwin", "dragonfly", "netbsd":
+ wh = tt.wireHeaderFromTradBSDKernel
+ case "freebsd":
+ switch {
+ case freebsdVersion < 1000000:
+ wh = tt.wireHeaderFromTradBSDKernel
+ case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
+ wh = tt.wireHeaderFromFreeBSD10Kernel
+ default:
+ wh = tt.wireHeaderFromKernel
+ }
default:
- wh = tt.wireHeaderFromKernel[:]
+ wh = tt.wireHeaderFromKernel
+ }
+ h, err := ParseHeader(wh)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := h.Parse(wh); err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(h, tt.Header) {
+ t.Fatalf("got %#v; want %#v", h, tt.Header)
+ }
+ s := h.String()
+ if strings.Contains(s, ",") {
+ t.Fatalf("should be space-separated values: %s", s)
}
- default:
- wh = tt.wireHeaderFromKernel[:]
- }
- h, err := ParseHeader(wh)
- if err != nil {
- t.Fatal(err)
- }
- if !reflect.DeepEqual(h, tt.Header) {
- t.Fatalf("got %#v; want %#v", h, tt.Header)
- }
- s := h.String()
- if strings.Contains(s, ",") {
- t.Fatalf("should be space-separated values: %s", s)
}
}
diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go
index 083897995..5f747a443 100644
--- a/vendor/golang.org/x/net/ipv4/helper.go
+++ b/vendor/golang.org/x/net/ipv4/helper.go
@@ -5,10 +5,8 @@
package ipv4
import (
- "encoding/binary"
"errors"
"net"
- "unsafe"
)
var (
@@ -23,20 +21,8 @@ var (
// See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html.
freebsdVersion uint32
-
- nativeEndian binary.ByteOrder
)
-func init() {
- i := uint32(1)
- b := (*[4]byte)(unsafe.Pointer(&i))
- if b[0] == 1 {
- nativeEndian = binary.LittleEndian
- } else {
- nativeEndian = binary.BigEndian
- }
-}
-
func boolint(b bool) int {
if b {
return 1
diff --git a/vendor/golang.org/x/net/ipv4/ipv4_test.go b/vendor/golang.org/x/net/ipv4/ipv4_test.go
deleted file mode 100644
index 917299283..000000000
--- a/vendor/golang.org/x/net/ipv4/ipv4_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "fmt"
- "os"
- "testing"
-)
-
-var disableTests = false
-
-func TestMain(m *testing.M) {
- if disableTests {
- fmt.Fprintf(os.Stderr, "ipv4 tests disabled in Go 1.9 until netreflect is fixed. (Issue 19051)\n")
- os.Exit(0)
- }
- // call flag.Parse() here if TestMain uses flags
- os.Exit(m.Run())
-}
diff --git a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go b/vendor/golang.org/x/net/ipv4/multicastlistener_test.go
index a0c24b55b..e43fbbe08 100644
--- a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go
+++ b/vendor/golang.org/x/net/ipv4/multicastlistener_test.go
@@ -69,13 +69,16 @@ func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) {
}
for _, gaddr := range udpMultipleGroupListenerTests {
- c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") // wildcard address with reusable port
+ c1, err := net.ListenPacket("udp4", "224.0.0.0:0") // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
defer c1.Close()
-
- c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") // wildcard address with reusable port
+ _, port, err := net.SplitHostPort(c1.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ c2, err := net.ListenPacket("udp4", net.JoinHostPort("224.0.0.0", port)) // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
@@ -131,16 +134,29 @@ func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) {
if err != nil {
t.Fatal(err)
}
+ port := "0"
for i, ifi := range ift {
ip, ok := nettest.IsMulticastCapable("ip4", &ifi)
if !ok {
continue
}
- c, err := net.ListenPacket("udp4", ip.String()+":"+"1024") // unicast address with non-reusable port
+ c, err := net.ListenPacket("udp4", net.JoinHostPort(ip.String(), port)) // unicast address with non-reusable port
if err != nil {
- t.Fatal(err)
+ // The listen may fail when the serivce is
+ // already in use, but it's fine because the
+ // purpose of this is not to test the
+ // bookkeeping of IP control block inside the
+ // kernel.
+ t.Log(err)
+ continue
}
defer c.Close()
+ if port == "0" {
+ _, port, err = net.SplitHostPort(c.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ }
p := ipv4.NewPacketConn(c)
if err := p.JoinGroup(&ifi, &gaddr); err != nil {
t.Fatal(err)
diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go
index d43723ca9..f00f5b052 100644
--- a/vendor/golang.org/x/net/ipv4/packet.go
+++ b/vendor/golang.org/x/net/ipv4/packet.go
@@ -7,6 +7,8 @@ package ipv4
import (
"net"
"syscall"
+
+ "golang.org/x/net/internal/socket"
)
// BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn
@@ -14,11 +16,12 @@ import (
// A packetHandler represents the IPv4 datagram handler.
type packetHandler struct {
- c *net.IPConn
+ *net.IPConn
+ *socket.Conn
rawOpt
}
-func (c *packetHandler) ok() bool { return c != nil && c.c != nil }
+func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil }
// ReadFrom reads an IPv4 datagram from the endpoint c, copying the
// datagram into b. It returns the received datagram as the IPv4
@@ -27,25 +30,7 @@ func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMess
if !c.ok() {
return nil, nil, nil, syscall.EINVAL
}
- oob := newControlMessage(&c.rawOpt)
- n, oobn, _, src, err := c.c.ReadMsgIP(b, oob)
- if err != nil {
- return nil, nil, nil, err
- }
- var hs []byte
- if hs, p, err = slicePacket(b[:n]); err != nil {
- return nil, nil, nil, err
- }
- if h, err = ParseHeader(hs); err != nil {
- return nil, nil, nil, err
- }
- if cm, err = parseControlMessage(oob[:oobn]); err != nil {
- return nil, nil, nil, err
- }
- if src != nil && cm != nil {
- cm.Src = src.IP
- }
- return
+ return c.readFrom(b)
}
func slicePacket(b []byte) (h, p []byte, err error) {
@@ -80,21 +65,5 @@ func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error {
if !c.ok() {
return syscall.EINVAL
}
- oob := marshalControlMessage(cm)
- wh, err := h.Marshal()
- if err != nil {
- return err
- }
- dst := &net.IPAddr{}
- if cm != nil {
- if ip := cm.Dst.To4(); ip != nil {
- dst.IP = ip
- }
- }
- if dst.IP == nil {
- dst.IP = h.Dst
- }
- wh = append(wh, p...)
- _, _, err = c.c.WriteMsgIP(wh, oob, dst)
- return err
+ return c.writeTo(h, p, cm)
}
diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_8.go b/vendor/golang.org/x/net/ipv4/packet_go1_8.go
new file mode 100644
index 000000000..b47d18683
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/packet_go1_8.go
@@ -0,0 +1,56 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package ipv4
+
+import "net"
+
+func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) {
+ c.rawOpt.RLock()
+ oob := NewControlMessage(c.rawOpt.cflags)
+ c.rawOpt.RUnlock()
+ n, nn, _, src, err := c.ReadMsgIP(b, oob)
+ if err != nil {
+ return nil, nil, nil, err
+ }
+ var hs []byte
+ if hs, p, err = slicePacket(b[:n]); err != nil {
+ return nil, nil, nil, err
+ }
+ if h, err = ParseHeader(hs); err != nil {
+ return nil, nil, nil, err
+ }
+ if nn > 0 {
+ cm = new(ControlMessage)
+ if err := cm.Parse(oob[:nn]); err != nil {
+ return nil, nil, nil, err
+ }
+ }
+ if src != nil && cm != nil {
+ cm.Src = src.IP
+ }
+ return
+}
+
+func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error {
+ oob := cm.Marshal()
+ wh, err := h.Marshal()
+ if err != nil {
+ return err
+ }
+ dst := new(net.IPAddr)
+ if cm != nil {
+ if ip := cm.Dst.To4(); ip != nil {
+ dst.IP = ip
+ }
+ }
+ if dst.IP == nil {
+ dst.IP = h.Dst
+ }
+ wh = append(wh, p...)
+ _, _, err = c.WriteMsgIP(wh, oob, dst)
+ return err
+}
diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_9.go b/vendor/golang.org/x/net/ipv4/packet_go1_9.go
new file mode 100644
index 000000000..285fdb0ed
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/packet_go1_9.go
@@ -0,0 +1,67 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package ipv4
+
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) {
+ c.rawOpt.RLock()
+ m := socket.Message{
+ Buffers: [][]byte{b},
+ OOB: NewControlMessage(c.rawOpt.cflags),
+ }
+ c.rawOpt.RUnlock()
+ if err := c.RecvMsg(&m, 0); err != nil {
+ return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ var hs []byte
+ if hs, p, err = slicePacket(b[:m.N]); err != nil {
+ return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ if h, err = ParseHeader(hs); err != nil {
+ return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ if m.NN > 0 {
+ cm = new(ControlMessage)
+ if err := cm.Parse(m.OOB[:m.NN]); err != nil {
+ return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ }
+ if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil {
+ cm.Src = src.IP
+ }
+ return
+}
+
+func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error {
+ m := socket.Message{
+ OOB: cm.Marshal(),
+ }
+ wh, err := h.Marshal()
+ if err != nil {
+ return err
+ }
+ m.Buffers = [][]byte{wh, p}
+ dst := new(net.IPAddr)
+ if cm != nil {
+ if ip := cm.Dst.To4(); ip != nil {
+ dst.IP = ip
+ }
+ }
+ if dst.IP == nil {
+ dst.IP = h.Dst
+ }
+ m.Addr = dst
+ if err := c.SendMsg(&m, 0); err != nil {
+ return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err}
+ }
+ return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go
index be130e424..f95f811ac 100644
--- a/vendor/golang.org/x/net/ipv4/payload.go
+++ b/vendor/golang.org/x/net/ipv4/payload.go
@@ -4,7 +4,11 @@
package ipv4
-import "net"
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo
// methods of PacketConn is not implemented.
@@ -12,7 +16,8 @@ import "net"
// A payloadHandler represents the IPv4 datagram payload handler.
type payloadHandler struct {
net.PacketConn
+ *socket.Conn
rawOpt
}
-func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil }
+func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil }
diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go
index 5e6e55c20..3f06d7606 100644
--- a/vendor/golang.org/x/net/ipv4/payload_cmsg.go
+++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build !plan9,!windows
+// +build !nacl,!plan9,!windows
package ipv4
@@ -19,37 +19,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.
if !c.ok() {
return 0, nil, nil, syscall.EINVAL
}
- oob := newControlMessage(&c.rawOpt)
- var oobn int
- switch c := c.PacketConn.(type) {
- case *net.UDPConn:
- if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
- return 0, nil, nil, err
- }
- case *net.IPConn:
- if sockOpts[ssoStripHeader].name > 0 {
- if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil {
- return 0, nil, nil, err
- }
- } else {
- nb := make([]byte, maxHeaderLen+len(b))
- if n, oobn, _, src, err = c.ReadMsgIP(nb, oob); err != nil {
- return 0, nil, nil, err
- }
- hdrlen := int(nb[0]&0x0f) << 2
- copy(b, nb[hdrlen:])
- n -= hdrlen
- }
- default:
- return 0, nil, nil, errInvalidConnType
- }
- if cm, err = parseControlMessage(oob[:oobn]); err != nil {
- return 0, nil, nil, err
- }
- if cm != nil {
- cm.Src = netAddrToIP4(src)
- }
- return
+ return c.readFrom(b)
}
// WriteTo writes a payload of the IPv4 datagram, to the destination
@@ -62,20 +32,5 @@ func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n
if !c.ok() {
return 0, syscall.EINVAL
}
- oob := marshalControlMessage(cm)
- if dst == nil {
- return 0, errMissingAddress
- }
- switch c := c.PacketConn.(type) {
- case *net.UDPConn:
- n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
- case *net.IPConn:
- n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
- default:
- return 0, errInvalidConnType
- }
- if err != nil {
- return 0, err
- }
- return
+ return c.writeTo(b, cm, dst)
}
diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go
new file mode 100644
index 000000000..0a9c33a18
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go
@@ -0,0 +1,59 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+// +build !nacl,!plan9,!windows
+
+package ipv4
+
+import "net"
+
+func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+ c.rawOpt.RLock()
+ oob := NewControlMessage(c.rawOpt.cflags)
+ c.rawOpt.RUnlock()
+ var nn int
+ switch c := c.PacketConn.(type) {
+ case *net.UDPConn:
+ if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
+ return 0, nil, nil, err
+ }
+ case *net.IPConn:
+ nb := make([]byte, maxHeaderLen+len(b))
+ if n, nn, _, src, err = c.ReadMsgIP(nb, oob); err != nil {
+ return 0, nil, nil, err
+ }
+ hdrlen := int(nb[0]&0x0f) << 2
+ copy(b, nb[hdrlen:])
+ n -= hdrlen
+ default:
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType}
+ }
+ if nn > 0 {
+ cm = new(ControlMessage)
+ if err = cm.Parse(oob[:nn]); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ }
+ if cm != nil {
+ cm.Src = netAddrToIP4(src)
+ }
+ return
+}
+
+func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+ oob := cm.Marshal()
+ if dst == nil {
+ return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress}
+ }
+ switch c := c.PacketConn.(type) {
+ case *net.UDPConn:
+ n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
+ case *net.IPConn:
+ n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
+ default:
+ return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType}
+ }
+ return
+}
diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go
new file mode 100644
index 000000000..e697f35f4
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go
@@ -0,0 +1,67 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build !nacl,!plan9,!windows
+
+package ipv4
+
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) {
+ c.rawOpt.RLock()
+ m := socket.Message{
+ OOB: NewControlMessage(c.rawOpt.cflags),
+ }
+ c.rawOpt.RUnlock()
+ switch c.PacketConn.(type) {
+ case *net.UDPConn:
+ m.Buffers = [][]byte{b}
+ if err := c.RecvMsg(&m, 0); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ case *net.IPConn:
+ h := make([]byte, HeaderLen)
+ m.Buffers = [][]byte{h, b}
+ if err := c.RecvMsg(&m, 0); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ hdrlen := int(h[0]&0x0f) << 2
+ if hdrlen > len(h) {
+ d := hdrlen - len(h)
+ copy(b, b[d:])
+ m.N -= d
+ } else {
+ m.N -= hdrlen
+ }
+ default:
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType}
+ }
+ var cm *ControlMessage
+ if m.NN > 0 {
+ cm = new(ControlMessage)
+ if err := cm.Parse(m.OOB[:m.NN]); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ cm.Src = netAddrToIP4(m.Addr)
+ }
+ return m.N, cm, m.Addr, nil
+}
+
+func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) {
+ m := socket.Message{
+ Buffers: [][]byte{b},
+ OOB: cm.Marshal(),
+ Addr: dst,
+ }
+ err := c.SendMsg(&m, 0)
+ if err != nil {
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return m.N, err
+}
diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go
index 6f9d5b0ef..3926de70b 100644
--- a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go
+++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build plan9 windows
+// +build nacl plan9 windows
package ipv4
diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go
new file mode 100644
index 000000000..1cd926e7f
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go
@@ -0,0 +1,248 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package ipv4_test
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/ipv4"
+)
+
+func BenchmarkPacketConnReadWriteUnicast(b *testing.B) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ b.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph, err := (&ipv4.Header{
+ Version: ipv4.Version,
+ Len: ipv4.HeaderLen,
+ TotalLen: ipv4.HeaderLen + len(payload),
+ TTL: 1,
+ Protocol: iana.ProtocolReserved,
+ Src: net.IPv4(192, 0, 2, 1),
+ Dst: net.IPv4(192, 0, 2, 254),
+ }).Marshal()
+ if err != nil {
+ b.Fatal(err)
+ }
+ greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+ bb := make([]byte, 128)
+ cm := ipv4.ControlMessage{
+ Src: net.IPv4(127, 0, 0, 1),
+ }
+ if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+
+ b.Run("UDP", func(b *testing.B) {
+ c, err := nettest.NewLocalPacketListener("udp4")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv4.FlagTTL | ipv4.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(payload, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(payload, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+ b.Run("IP", func(b *testing.B) {
+ switch runtime.GOOS {
+ case "netbsd":
+ b.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ b.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv4.FlagTTL | ipv4.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(datagram, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(datagram, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+}
+
+func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph, err := (&ipv4.Header{
+ Version: ipv4.Version,
+ Len: ipv4.HeaderLen,
+ TotalLen: ipv4.HeaderLen + len(payload),
+ TTL: 1,
+ Protocol: iana.ProtocolReserved,
+ Src: net.IPv4(192, 0, 2, 1),
+ Dst: net.IPv4(192, 0, 2, 254),
+ }).Marshal()
+ if err != nil {
+ t.Fatal(err)
+ }
+ greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+
+ t.Run("UDP", func(t *testing.T) {
+ c, err := nettest.NewLocalPacketListener("udp4")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr())
+ })
+ })
+ t.Run("IP", func(t *testing.T) {
+ switch runtime.GOOS {
+ case "netbsd":
+ t.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ t.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr())
+ })
+ })
+}
+
+func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr) {
+ ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback)
+ cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface
+
+ if err := p.SetControlMessage(cf, true); err != nil { // probe before test
+ if nettest.ProtocolNotSupported(err) {
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+ t.Fatal(err)
+ }
+
+ var wg sync.WaitGroup
+ reader := func() {
+ defer wg.Done()
+ b := make([]byte, 128)
+ n, cm, _, err := p.ReadFrom(b)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if !bytes.Equal(b[:n], data) {
+ t.Errorf("got %#v; want %#v", b[:n], data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ writer := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv4.ControlMessage{
+ Src: net.IPv4(127, 0, 0, 1),
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ n, err := p.WriteTo(data, &cm, dst)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(data) {
+ t.Errorf("got %d; want %d", n, len(data))
+ return
+ }
+ }
+
+ const N = 10
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ go reader()
+ }
+ wg.Add(2 * N)
+ for i := 0; i < 2*N; i++ {
+ go writer(i%2 != 0)
+
+ }
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ go reader()
+ }
+ wg.Wait()
+}
diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go
new file mode 100644
index 000000000..365de022a
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go
@@ -0,0 +1,388 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package ipv4_test
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/ipv4"
+)
+
+func BenchmarkPacketConnReadWriteUnicast(b *testing.B) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ b.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph, err := (&ipv4.Header{
+ Version: ipv4.Version,
+ Len: ipv4.HeaderLen,
+ TotalLen: ipv4.HeaderLen + len(payload),
+ TTL: 1,
+ Protocol: iana.ProtocolReserved,
+ Src: net.IPv4(192, 0, 2, 1),
+ Dst: net.IPv4(192, 0, 2, 254),
+ }).Marshal()
+ if err != nil {
+ b.Fatal(err)
+ }
+ greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+ bb := make([]byte, 128)
+ cm := ipv4.ControlMessage{
+ Src: net.IPv4(127, 0, 0, 1),
+ }
+ if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+
+ b.Run("UDP", func(b *testing.B) {
+ c, err := nettest.NewLocalPacketListener("udp4")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv4.FlagTTL | ipv4.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ wms := []ipv4.Message{
+ {
+ Buffers: [][]byte{payload},
+ Addr: dst,
+ OOB: cm.Marshal(),
+ },
+ }
+ rms := []ipv4.Message{
+ {
+ Buffers: [][]byte{bb},
+ OOB: ipv4.NewControlMessage(cf),
+ },
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(payload, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(payload, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("Batch", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteBatch(wms, 0); err != nil {
+ b.Fatal(err)
+ }
+ if _, err := p.ReadBatch(rms, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+ b.Run("IP", func(b *testing.B) {
+ switch runtime.GOOS {
+ case "netbsd":
+ b.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ b.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv4.FlagTTL | ipv4.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ wms := []ipv4.Message{
+ {
+ Buffers: [][]byte{datagram},
+ Addr: dst,
+ OOB: cm.Marshal(),
+ },
+ }
+ rms := []ipv4.Message{
+ {
+ Buffers: [][]byte{bb},
+ OOB: ipv4.NewControlMessage(cf),
+ },
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(datagram, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(datagram, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("Batch", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteBatch(wms, 0); err != nil {
+ b.Fatal(err)
+ }
+ if _, err := p.ReadBatch(rms, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+}
+
+func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph, err := (&ipv4.Header{
+ Version: ipv4.Version,
+ Len: ipv4.HeaderLen,
+ TotalLen: ipv4.HeaderLen + len(payload),
+ TTL: 1,
+ Protocol: iana.ProtocolReserved,
+ Src: net.IPv4(192, 0, 2, 1),
+ Dst: net.IPv4(192, 0, 2, 254),
+ }).Marshal()
+ if err != nil {
+ t.Fatal(err)
+ }
+ greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+
+ t.Run("UDP", func(t *testing.T) {
+ c, err := nettest.NewLocalPacketListener("udp4")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false)
+ })
+ t.Run("Batch", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true)
+ })
+ })
+ t.Run("IP", func(t *testing.T) {
+ switch runtime.GOOS {
+ case "netbsd":
+ t.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ t.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv4.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false)
+ })
+ t.Run("Batch", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true)
+ })
+ })
+}
+
+func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr, batch bool) {
+ ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback)
+ cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface
+
+ if err := p.SetControlMessage(cf, true); err != nil { // probe before test
+ if nettest.ProtocolNotSupported(err) {
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+ t.Fatal(err)
+ }
+
+ var wg sync.WaitGroup
+ reader := func() {
+ defer wg.Done()
+ b := make([]byte, 128)
+ n, cm, _, err := p.ReadFrom(b)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if !bytes.Equal(b[:n], data) {
+ t.Errorf("got %#v; want %#v", b[:n], data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ batchReader := func() {
+ defer wg.Done()
+ ms := []ipv4.Message{
+ {
+ Buffers: [][]byte{make([]byte, 128)},
+ OOB: ipv4.NewControlMessage(cf),
+ },
+ }
+ n, err := p.ReadBatch(ms, 0)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(ms) {
+ t.Errorf("got %d; want %d", n, len(ms))
+ return
+ }
+ var cm ipv4.ControlMessage
+ if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil {
+ t.Error(err)
+ return
+ }
+ var b []byte
+ if _, ok := dst.(*net.IPAddr); ok {
+ var h ipv4.Header
+ if err := h.Parse(ms[0].Buffers[0][:ms[0].N]); err != nil {
+ t.Error(err)
+ return
+ }
+ b = ms[0].Buffers[0][h.Len:ms[0].N]
+ } else {
+ b = ms[0].Buffers[0][:ms[0].N]
+ }
+ if !bytes.Equal(b, data) {
+ t.Errorf("got %#v; want %#v", b, data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ writer := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv4.ControlMessage{
+ Src: net.IPv4(127, 0, 0, 1),
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ n, err := p.WriteTo(data, &cm, dst)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(data) {
+ t.Errorf("got %d; want %d", n, len(data))
+ return
+ }
+ }
+ batchWriter := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv4.ControlMessage{
+ Src: net.IPv4(127, 0, 0, 1),
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ ms := []ipv4.Message{
+ {
+ Buffers: [][]byte{data},
+ OOB: cm.Marshal(),
+ Addr: dst,
+ },
+ }
+ n, err := p.WriteBatch(ms, 0)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(ms) {
+ t.Errorf("got %d; want %d", n, len(ms))
+ return
+ }
+ if ms[0].N != len(data) {
+ t.Errorf("got %d; want %d", ms[0].N, len(data))
+ return
+ }
+ }
+
+ const N = 10
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ if batch {
+ go batchReader()
+ } else {
+ go reader()
+ }
+ }
+ wg.Add(2 * N)
+ for i := 0; i < 2*N; i++ {
+ if batch {
+ go batchWriter(i%2 != 0)
+ } else {
+ go writer(i%2 != 0)
+ }
+
+ }
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ if batch {
+ go batchReader()
+ } else {
+ go reader()
+ }
+ }
+ wg.Wait()
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go
index ace37d30f..22e90c039 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt.go
+++ b/vendor/golang.org/x/net/ipv4/sockopt.go
@@ -4,6 +4,8 @@
package ipv4
+import "golang.org/x/net/internal/socket"
+
// Sticky socket options
const (
ssoTOS = iota // header field for unicast packet
@@ -24,16 +26,12 @@ const (
ssoLeaveSourceGroup // source-specific multicast
ssoBlockSourceGroup // any-source or source-specific multicast
ssoUnblockSourceGroup // any-source or source-specific multicast
- ssoMax
+ ssoAttachFilter // attach BPF for filtering inbound traffic
)
// Sticky socket option value types
const (
- ssoTypeByte = iota + 1
- ssoTypeInt
- ssoTypeInterface
- ssoTypeICMPFilter
- ssoTypeIPMreq
+ ssoTypeIPMreq = iota + 1
ssoTypeIPMreqn
ssoTypeGroupReq
ssoTypeGroupSourceReq
@@ -41,6 +39,6 @@ const (
// A sockOpt represents a binding for sticky socket option.
type sockOpt struct {
- name int // option name, must be equal or greater than 1
- typ int // option value type, must be equal or greater than 1
+ socket.Option
+ typ int // hint for option value type; optional
}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go
deleted file mode 100644
index 2259a3903..000000000
--- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_posix.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd netbsd openbsd solaris windows
-
-package ipv4
-
-import (
- "net"
- "os"
- "unsafe"
-
- "golang.org/x/net/internal/iana"
-)
-
-func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
- mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}}
- if err := setIPMreqInterface(&mreq, ifi); err != nil {
- return err
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreq), sizeofIPMreq))
-}
-
-func getsockoptInterface(s uintptr, name int) (*net.Interface, error) {
- var b [4]byte
- l := uint32(4)
- if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), &l); err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
- }
- ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3]))
- if err != nil {
- return nil, err
- }
- return ifi, nil
-}
-
-func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error {
- ip, err := netInterfaceToIP4(ifi)
- if err != nil {
- return err
- }
- var b [4]byte
- copy(b[:], ip)
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), uint32(4)))
-}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go
deleted file mode 100644
index e655635ec..000000000
--- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows
-
-package ipv4
-
-import "net"
-
-func setsockoptIPMreq(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
- return errOpNoSupport
-}
-
-func getsockoptInterface(s uintptr, name int) (*net.Interface, error) {
- return nil, errOpNoSupport
-}
-
-func setsockoptInterface(s uintptr, name int, ifi *net.Interface) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go
index d80680373..e96955bc1 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_posix.go
+++ b/vendor/golang.org/x/net/ipv4/sockopt_posix.go
@@ -8,115 +8,64 @@ package ipv4
import (
"net"
- "os"
"unsafe"
- "golang.org/x/net/internal/iana"
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
)
-func getInt(s uintptr, opt *sockOpt) (int, error) {
- if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) {
- return 0, errOpNoSupport
- }
- var i int32
- var b byte
- p := unsafe.Pointer(&i)
- l := uint32(4)
- if opt.typ == ssoTypeByte {
- p = unsafe.Pointer(&b)
- l = 1
- }
- if err := getsockopt(s, iana.ProtocolIP, opt.name, p, &l); err != nil {
- return 0, os.NewSyscallError("getsockopt", err)
- }
- if opt.typ == ssoTypeByte {
- return int(b), nil
- }
- return int(i), nil
-}
-
-func setInt(s uintptr, opt *sockOpt, v int) error {
- if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) {
- return errOpNoSupport
- }
- i := int32(v)
- var b byte
- p := unsafe.Pointer(&i)
- l := uint32(4)
- if opt.typ == ssoTypeByte {
- b = byte(v)
- p = unsafe.Pointer(&b)
- l = 1
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, opt.name, p, l))
-}
-
-func getInterface(s uintptr, opt *sockOpt) (*net.Interface, error) {
- if opt.name < 1 {
- return nil, errOpNoSupport
- }
- switch opt.typ {
- case ssoTypeInterface:
- return getsockoptInterface(s, opt.name)
+func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) {
+ switch so.typ {
case ssoTypeIPMreqn:
- return getsockoptIPMreqn(s, opt.name)
+ return so.getIPMreqn(c)
default:
- return nil, errOpNoSupport
+ return so.getMulticastIf(c)
}
}
-func setInterface(s uintptr, opt *sockOpt, ifi *net.Interface) error {
- if opt.name < 1 {
- return errOpNoSupport
- }
- switch opt.typ {
- case ssoTypeInterface:
- return setsockoptInterface(s, opt.name, ifi)
+func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error {
+ switch so.typ {
case ssoTypeIPMreqn:
- return setsockoptIPMreqn(s, opt.name, ifi, nil)
+ return so.setIPMreqn(c, ifi, nil)
default:
- return errOpNoSupport
+ return so.setMulticastIf(c, ifi)
}
}
-func getICMPFilter(s uintptr, opt *sockOpt) (*ICMPFilter, error) {
- if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
- return nil, errOpNoSupport
+func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) {
+ b := make([]byte, so.Len)
+ n, err := so.Get(c, b)
+ if err != nil {
+ return nil, err
}
- var f ICMPFilter
- l := uint32(sizeofICMPFilter)
- if err := getsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), &l); err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
+ if n != sizeofICMPFilter {
+ return nil, errOpNoSupport
}
- return &f, nil
+ return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil
}
-func setICMPFilter(s uintptr, opt *sockOpt, f *ICMPFilter) error {
- if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
- return errOpNoSupport
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.icmpFilter), sizeofICMPFilter))
+func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error {
+ b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter]
+ return so.Set(c, b)
}
-func setGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
- if opt.name < 1 {
- return errOpNoSupport
- }
- switch opt.typ {
+func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ switch so.typ {
case ssoTypeIPMreq:
- return setsockoptIPMreq(s, opt.name, ifi, grp)
+ return so.setIPMreq(c, ifi, grp)
case ssoTypeIPMreqn:
- return setsockoptIPMreqn(s, opt.name, ifi, grp)
+ return so.setIPMreqn(c, ifi, grp)
case ssoTypeGroupReq:
- return setsockoptGroupReq(s, opt.name, ifi, grp)
+ return so.setGroupReq(c, ifi, grp)
default:
return errOpNoSupport
}
}
-func setSourceGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
- if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq {
- return errOpNoSupport
- }
- return setsockoptGroupSourceReq(s, opt.name, ifi, grp, src)
+func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
+ return so.setGroupSourceReq(c, ifi, grp, src)
+}
+
+func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error {
+ return so.setAttachFilter(c, f)
}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go
index 4ff609917..23249b782 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_stub.go
+++ b/vendor/golang.org/x/net/ipv4/sockopt_stub.go
@@ -2,10 +2,41 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv4
-func setInt(s uintptr, opt *sockOpt, v int) error {
+import (
+ "net"
+
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) {
+ return nil, errOpNoSupport
+}
+
+func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) {
+ return nil, errOpNoSupport
+}
+
+func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error {
return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go
index 8092f1db0..0388cba00 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go
+++ b/vendor/golang.org/x/net/ipv4/sys_asmreq.go
@@ -6,7 +6,43 @@
package ipv4
-import "net"
+import (
+ "net"
+ "unsafe"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}}
+ if err := setIPMreqInterface(&mreq, ifi); err != nil {
+ return err
+ }
+ b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq]
+ return so.Set(c, b)
+}
+
+func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) {
+ var b [4]byte
+ if _, err := so.Get(c, b[:]); err != nil {
+ return nil, err
+ }
+ ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3]))
+ if err != nil {
+ return nil, err
+ }
+ return ifi, nil
+}
+
+func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error {
+ ip, err := netInterfaceToIP4(ifi)
+ if err != nil {
+ return err
+ }
+ var b [4]byte
+ copy(b[:], ip)
+ return so.Set(c, b[:])
+}
func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error {
if ifi == nil {
diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go
new file mode 100644
index 000000000..f3919208b
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go
@@ -0,0 +1,25 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows
+
+package ipv4
+
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) {
+ return nil, errOpNoSupport
+}
+
+func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error {
+ return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go
index 92daffb0d..1f24f69f3 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go
+++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go
@@ -8,18 +8,17 @@ package ipv4
import (
"net"
- "os"
"unsafe"
- "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
-func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) {
- var mreqn ipMreqn
- l := uint32(sizeofIPMreqn)
- if err := getsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), &l); err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
+func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) {
+ b := make([]byte, so.Len)
+ if _, err := so.Get(c, b); err != nil {
+ return nil, err
}
+ mreqn := (*ipMreqn)(unsafe.Pointer(&b[0]))
if mreqn.Ifindex == 0 {
return nil, nil
}
@@ -30,7 +29,7 @@ func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) {
return ifi, nil
}
-func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
+func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
var mreqn ipMreqn
if ifi != nil {
mreqn.Ifindex = int32(ifi.Index)
@@ -38,5 +37,6 @@ func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) erro
if grp != nil {
mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]}
}
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), sizeofIPMreqn))
+ b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn]
+ return so.Set(c, b)
}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go
index 0c7f0f816..0711d3d78 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go
+++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go
@@ -6,12 +6,16 @@
package ipv4
-import "net"
+import (
+ "net"
-func getsockoptIPMreqn(s uintptr, name int) (*net.Interface, error) {
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) {
return nil, errOpNoSupport
}
-func setsockoptIPMreqn(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
+func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go
new file mode 100644
index 000000000..9f30b7308
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/sys_bpf.go
@@ -0,0 +1,23 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+
+package ipv4
+
+import (
+ "unsafe"
+
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error {
+ prog := sockFProg{
+ Len: uint16(len(f)),
+ Filter: (*sockFilter)(unsafe.Pointer(&f[0])),
+ }
+ b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog]
+ return so.Set(c, b)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go
new file mode 100644
index 000000000..9a2132093
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !linux
+
+package ipv4
+
+import (
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error {
+ return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go
index 203033db0..58256dd9d 100644
--- a/vendor/golang.org/x/net/ipv4/sys_bsd.go
+++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go
@@ -2,13 +2,16 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build dragonfly netbsd
+// +build netbsd openbsd
package ipv4
import (
"net"
"syscall"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -18,17 +21,17 @@ var (
ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt},
- ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
- ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go
index abfffca87..e8fb19169 100644
--- a/vendor/golang.org/x/net/ipv4/sys_darwin.go
+++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go
@@ -10,6 +10,9 @@ import (
"strings"
"syscall"
"unsafe"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -19,19 +22,19 @@ var (
ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt},
- ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoStripHeader: {sysIP_STRIPHDR, ssoTypeInt},
- ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
- ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
@@ -57,21 +60,14 @@ func init() {
ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo
ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo
ctlOpts[ctlPacketInfo].parse = parsePacketInfo
- sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO
- sockOpts[ssoPacketInfo].typ = ssoTypeInt
- sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
- sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP
- sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq
- sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP
- sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq
- sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP
- sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq
- sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP
- sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq
- sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE
- sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq
- sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE
- sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq
+ sockOpts[ssoPacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}
+ sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}
+ sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}
+ sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}
+ sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
}
func (pi *inetPktinfo) setIfindex(i int) {
diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go
new file mode 100644
index 000000000..859764f33
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go
@@ -0,0 +1,35 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ipv4
+
+import (
+ "net"
+ "syscall"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
+)
+
+var (
+ ctlOpts = [ctlMax]ctlOpt{
+ ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ }
+
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ }
+)
diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go
index fceffe98e..b80032454 100644
--- a/vendor/golang.org/x/net/ipv4/sys_freebsd.go
+++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go
@@ -10,6 +10,9 @@ import (
"strings"
"syscall"
"unsafe"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -19,29 +22,29 @@ var (
ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt},
- ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
func init() {
freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate")
if freebsdVersion >= 1000000 {
- sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
+ sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}
}
if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" {
archs, _ := syscall.Sysctl("kern.supported_archs")
diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go
index c6c2a5067..60defe132 100644
--- a/vendor/golang.org/x/net/ipv4/sys_linux.go
+++ b/vendor/golang.org/x/net/ipv4/sys_linux.go
@@ -8,6 +8,9 @@ import (
"net"
"syscall"
"unsafe"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -16,22 +19,23 @@ var (
ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeIPMreqn},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoPacketInfo: {sysIP_PKTINFO, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoICMPFilter: {sysICMP_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_linux_386.s b/vendor/golang.org/x/net/ipv4/sys_linux_386.s
deleted file mode 100644
index b85551a5c..000000000
--- a/vendor/golang.org/x/net/ipv4/sys_linux_386.s
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-TEXT ·socketcall(SB),NOSPLIT,$0-36
- JMP syscall·socketcall(SB)
diff --git a/vendor/golang.org/x/net/ipv4/sys_openbsd.go b/vendor/golang.org/x/net/ipv4/sys_openbsd.go
deleted file mode 100644
index d78083a28..000000000
--- a/vendor/golang.org/x/net/ipv4/sys_openbsd.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "net"
- "syscall"
-)
-
-var (
- ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
- }
-
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoReceiveDst: {sysIP_RECVDSTADDR, ssoTypeInt},
- ssoReceiveInterface: {sysIP_RECVIF, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
- ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
- }
-)
diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go
index 879f39e0a..832fef1e2 100644
--- a/vendor/golang.org/x/net/ipv4/sys_solaris.go
+++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go
@@ -8,6 +8,9 @@ import (
"net"
"syscall"
"unsafe"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -16,21 +19,21 @@ var (
ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeByte},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeByte},
- ssoReceiveTTL: {sysIP_RECVTTL, ssoTypeInt},
- ssoPacketInfo: {sysIP_RECVPKTINFO, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoJoinGroup: {sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s b/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s
deleted file mode 100644
index 39d76af79..000000000
--- a/vendor/golang.org/x/net/ipv4/sys_solaris_amd64.s
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-TEXT ·sysvicall6(SB),NOSPLIT,$0-88
- JMP syscall·sysvicall6(SB)
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go
index c9af55b91..ae5704e77 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go
+++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go
@@ -8,54 +8,47 @@ package ipv4
import (
"net"
- "os"
"unsafe"
- "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var freebsd32o64 bool
-func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
+func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
var gr groupReq
if ifi != nil {
gr.Interface = uint32(ifi.Index)
}
gr.setGroup(grp)
- var p unsafe.Pointer
- var l uint32
+ var b []byte
if freebsd32o64 {
var d [sizeofGroupReq + 4]byte
s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))
copy(d[:4], s[:4])
copy(d[8:], s[4:])
- p = unsafe.Pointer(&d[0])
- l = sizeofGroupReq + 4
+ b = d[:]
} else {
- p = unsafe.Pointer(&gr)
- l = sizeofGroupReq
+ b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq]
}
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l))
+ return so.Set(c, b)
}
-func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error {
+func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
var gsr groupSourceReq
if ifi != nil {
gsr.Interface = uint32(ifi.Index)
}
gsr.setSourceGroup(grp, src)
- var p unsafe.Pointer
- var l uint32
+ var b []byte
if freebsd32o64 {
var d [sizeofGroupSourceReq + 4]byte
s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))
copy(d[:4], s[:4])
copy(d[8:], s[4:])
- p = unsafe.Pointer(&d[0])
- l = sizeofGroupSourceReq + 4
+ b = d[:]
} else {
- p = unsafe.Pointer(&gsr)
- l = sizeofGroupSourceReq
+ b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq]
}
- return os.NewSyscallError("setsockopt", setsockopt(s, iana.ProtocolIP, name, p, l))
+ return so.Set(c, b)
}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go
index 02873962e..e6b7623d0 100644
--- a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go
+++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go
@@ -6,12 +6,16 @@
package ipv4
-import "net"
+import (
+ "net"
-func setsockoptGroupReq(s uintptr, name int, ifi *net.Interface, grp net.IP) error {
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
return errOpNoSupport
}
-func setsockoptGroupSourceReq(s uintptr, name int, ifi *net.Interface, grp, src net.IP) error {
+func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go
index d6dd812fd..4f076473b 100644
--- a/vendor/golang.org/x/net/ipv4/sys_stub.go
+++ b/vendor/golang.org/x/net/ipv4/sys_stub.go
@@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv4
var (
ctlOpts = [ctlMax]ctlOpt{}
- sockOpts = [ssoMax]sockOpt{}
+ sockOpts = map[int]*sockOpt{}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go
index fac00bda8..b0913d539 100644
--- a/vendor/golang.org/x/net/ipv4/sys_windows.go
+++ b/vendor/golang.org/x/net/ipv4/sys_windows.go
@@ -4,6 +4,11 @@
package ipv4
+import (
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
+)
+
const (
// See ws2tcpip.h.
sysIP_OPTIONS = 0x1
@@ -45,15 +50,15 @@ type ipMreqSource struct {
var (
ctlOpts = [ctlMax]ctlOpt{}
- sockOpts = [ssoMax]sockOpt{
- ssoTOS: {sysIP_TOS, ssoTypeInt},
- ssoTTL: {sysIP_TTL, ssoTypeInt},
- ssoMulticastTTL: {sysIP_MULTICAST_TTL, ssoTypeInt},
- ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastLoopback: {sysIP_MULTICAST_LOOP, ssoTypeInt},
- ssoHeaderPrepend: {sysIP_HDRINCL, ssoTypeInt},
- ssoJoinGroup: {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
- ssoLeaveGroup: {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go b/vendor/golang.org/x/net/ipv4/syscall_linux_386.go
deleted file mode 100644
index 84f60bfb2..000000000
--- a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "syscall"
- "unsafe"
-)
-
-const (
- sysGETSOCKOPT = 0xf
- sysSETSOCKOPT = 0xe
-)
-
-func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- if _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv4/syscall_solaris.go b/vendor/golang.org/x/net/ipv4/syscall_solaris.go
deleted file mode 100644
index 8b0e1e447..000000000
--- a/vendor/golang.org/x/net/ipv4/syscall_solaris.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "syscall"
- "unsafe"
-)
-
-//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so"
-//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
-
-//go:linkname procGetsockopt libc___xnet_getsockopt
-//go:linkname procSetsockopt libc_setsockopt
-
-var (
- procGetsockopt uintptr
- procSetsockopt uintptr
-)
-
-func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0)
- if errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv4/syscall_unix.go b/vendor/golang.org/x/net/ipv4/syscall_unix.go
deleted file mode 100644
index d952763f5..000000000
--- a/vendor/golang.org/x/net/ipv4/syscall_unix.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux,!386 netbsd openbsd
-
-package ipv4
-
-import (
- "syscall"
- "unsafe"
-)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv4/syscall_windows.go b/vendor/golang.org/x/net/ipv4/syscall_windows.go
deleted file mode 100644
index 0f42d22eb..000000000
--- a/vendor/golang.org/x/net/ipv4/syscall_windows.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv4
-
-import (
- "syscall"
- "unsafe"
-)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- return syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), (*int32)(unsafe.Pointer(l)))
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), int32(l))
-}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
index 4da672013..c0260f0ce 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
index 4da672013..c0260f0ce 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
index 4da672013..c0260f0ce 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
index 4da672013..c0260f0ce 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
index b825a18e9..f65bd9a7a 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
index 65945bbd0..9c967eaa6 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
@@ -70,6 +70,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPFilter = 0x4
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go
new file mode 100644
index 000000000..4f5fe683d
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/batch.go
@@ -0,0 +1,119 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package ipv6
+
+import (
+ "net"
+ "runtime"
+ "syscall"
+
+ "golang.org/x/net/internal/socket"
+)
+
+// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of
+// PacketConn are not implemented.
+
+// A Message represents an IO message.
+//
+// type Message struct {
+// Buffers [][]byte
+// OOB []byte
+// Addr net.Addr
+// N int
+// NN int
+// Flags int
+// }
+//
+// The Buffers fields represents a list of contiguous buffers, which
+// can be used for vectored IO, for example, putting a header and a
+// payload in each slice.
+// When writing, the Buffers field must contain at least one byte to
+// write.
+// When reading, the Buffers field will always contain a byte to read.
+//
+// The OOB field contains protocol-specific control or miscellaneous
+// ancillary data known as out-of-band data.
+// It can be nil when not required.
+//
+// The Addr field specifies a destination address when writing.
+// It can be nil when the underlying protocol of the endpoint uses
+// connection-oriented communication.
+// After a successful read, it may contain the source address on the
+// received packet.
+//
+// The N field indicates the number of bytes read or written from/to
+// Buffers.
+//
+// The NN field indicates the number of bytes read or written from/to
+// OOB.
+//
+// The Flags field contains protocol-specific information on the
+// received message.
+type Message = socket.Message
+
+// ReadBatch reads a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_PEEK.
+//
+// On a successful read it returns the number of messages received, up
+// to len(ms).
+//
+// On Linux, a batch read will be optimized.
+// On other platforms, this method will read only a single message.
+func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.RecvMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.RecvMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
+
+// WriteBatch writes a batch of messages.
+//
+// The provided flags is a set of platform-dependent flags, such as
+// syscall.MSG_DONTROUTE.
+//
+// It returns the number of messages written on a successful write.
+//
+// On Linux, a batch write will be optimized.
+// On other platforms, this method will write only a single message.
+func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) {
+ if !c.ok() {
+ return 0, syscall.EINVAL
+ }
+ switch runtime.GOOS {
+ case "linux":
+ n, err := c.SendMsgs([]socket.Message(ms), flags)
+ if err != nil {
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ default:
+ n := 1
+ err := c.SendMsg(&ms[0], flags)
+ if err != nil {
+ n = 0
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return n, err
+ }
+}
diff --git a/vendor/golang.org/x/net/ipv6/bpfopt_linux.go b/vendor/golang.org/x/net/ipv6/bpfopt_linux.go
deleted file mode 100644
index daf7ea853..000000000
--- a/vendor/golang.org/x/net/ipv6/bpfopt_linux.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv6
-
-import (
- "os"
- "unsafe"
-
- "golang.org/x/net/bpf"
- "golang.org/x/net/internal/netreflect"
-)
-
-// SetBPF attaches a BPF program to the connection.
-//
-// Only supported on Linux.
-func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
- }
- prog := sockFProg{
- Len: uint16(len(filter)),
- Filter: (*sockFilter)(unsafe.Pointer(&filter[0])),
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, sysSOL_SOCKET, sysSO_ATTACH_FILTER, unsafe.Pointer(&prog), uint32(unsafe.Sizeof(prog))))
-}
diff --git a/vendor/golang.org/x/net/ipv6/bpfopt_stub.go b/vendor/golang.org/x/net/ipv6/bpfopt_stub.go
deleted file mode 100644
index 2e4de5f0d..000000000
--- a/vendor/golang.org/x/net/ipv6/bpfopt_stub.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !linux
-
-package ipv6
-
-import "golang.org/x/net/bpf"
-
-// SetBPF attaches a BPF program to the connection.
-//
-// Only supported on Linux.
-func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go
index 674628d3f..2da644413 100644
--- a/vendor/golang.org/x/net/ipv6/control.go
+++ b/vendor/golang.org/x/net/ipv6/control.go
@@ -8,6 +8,9 @@ import (
"fmt"
"net"
"sync"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the
@@ -66,6 +69,105 @@ func (cm *ControlMessage) String() string {
return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU)
}
+// Marshal returns the binary encoding of cm.
+func (cm *ControlMessage) Marshal() []byte {
+ if cm == nil {
+ return nil
+ }
+ var l int
+ tclass := false
+ if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 {
+ tclass = true
+ l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length)
+ }
+ hoplimit := false
+ if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 {
+ hoplimit = true
+ l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length)
+ }
+ pktinfo := false
+ if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) {
+ pktinfo = true
+ l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length)
+ }
+ nexthop := false
+ if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil {
+ nexthop = true
+ l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length)
+ }
+ var b []byte
+ if l > 0 {
+ b = make([]byte, l)
+ bb := b
+ if tclass {
+ bb = ctlOpts[ctlTrafficClass].marshal(bb, cm)
+ }
+ if hoplimit {
+ bb = ctlOpts[ctlHopLimit].marshal(bb, cm)
+ }
+ if pktinfo {
+ bb = ctlOpts[ctlPacketInfo].marshal(bb, cm)
+ }
+ if nexthop {
+ bb = ctlOpts[ctlNextHop].marshal(bb, cm)
+ }
+ }
+ return b
+}
+
+// Parse parses b as a control message and stores the result in cm.
+func (cm *ControlMessage) Parse(b []byte) error {
+ ms, err := socket.ControlMessage(b).Parse()
+ if err != nil {
+ return err
+ }
+ for _, m := range ms {
+ lvl, typ, l, err := m.ParseHeader()
+ if err != nil {
+ return err
+ }
+ if lvl != iana.ProtocolIPv6 {
+ continue
+ }
+ switch {
+ case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length:
+ ctlOpts[ctlTrafficClass].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length:
+ ctlOpts[ctlHopLimit].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length:
+ ctlOpts[ctlPacketInfo].parse(cm, m.Data(l))
+ case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length:
+ ctlOpts[ctlPathMTU].parse(cm, m.Data(l))
+ }
+ }
+ return nil
+}
+
+// NewControlMessage returns a new control message.
+//
+// The returned message is large enough for options specified by cf.
+func NewControlMessage(cf ControlFlags) []byte {
+ opt := rawOpt{cflags: cf}
+ var l int
+ if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length)
+ }
+ if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length)
+ }
+ if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length)
+ }
+ if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 {
+ l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length)
+ }
+ var b []byte
+ if l > 0 {
+ b = make([]byte, l)
+ }
+ return b
+}
+
// Ancillary data socket options
const (
ctlTrafficClass = iota // header field
diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go
index d1693af1f..1cf3901c8 100644
--- a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go
+++ b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go
@@ -7,31 +7,26 @@
package ipv6
import (
- "syscall"
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_2292HOPLIMIT
- m.SetLen(syscall.CmsgLen(4))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4)
if cm != nil {
- data := b[syscall.CmsgLen(0):]
- nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit))
+ nativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit))
}
- return b[syscall.CmsgSpace(4):]
+ return m.Next(4)
}
func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_2292PKTINFO
- m.SetLen(syscall.CmsgLen(sizeofInet6Pktinfo))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo)
if cm != nil {
- pi := (*inet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+ pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0]))
if ip := cm.Src.To16(); ip != nil && ip.To4() == nil {
copy(pi.Addr[:], ip)
}
@@ -39,17 +34,15 @@ func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte {
pi.setIfindex(cm.IfIndex)
}
}
- return b[syscall.CmsgSpace(sizeofInet6Pktinfo):]
+ return m.Next(sizeofInet6Pktinfo)
}
func marshal2292NextHop(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_2292NEXTHOP
- m.SetLen(syscall.CmsgLen(sizeofSockaddrInet6))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6)
if cm != nil {
- sa := (*sockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+ sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0]))
sa.setSockaddr(cm.NextHop, cm.IfIndex)
}
- return b[syscall.CmsgSpace(sizeofSockaddrInet6):]
+ return m.Next(sizeofSockaddrInet6)
}
diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go
index 2800df4bc..62cded610 100644
--- a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go
+++ b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go
@@ -7,22 +7,20 @@
package ipv6
import (
- "syscall"
+ "net"
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
func marshalTrafficClass(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_TCLASS
- m.SetLen(syscall.CmsgLen(4))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4)
if cm != nil {
- data := b[syscall.CmsgLen(0):]
- nativeEndian.PutUint32(data[:4], uint32(cm.TrafficClass))
+ nativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass))
}
- return b[syscall.CmsgSpace(4):]
+ return m.Next(4)
}
func parseTrafficClass(cm *ControlMessage, b []byte) {
@@ -30,15 +28,12 @@ func parseTrafficClass(cm *ControlMessage, b []byte) {
}
func marshalHopLimit(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_HOPLIMIT
- m.SetLen(syscall.CmsgLen(4))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4)
if cm != nil {
- data := b[syscall.CmsgLen(0):]
- nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit))
+ nativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit))
}
- return b[syscall.CmsgSpace(4):]
+ return m.Next(4)
}
func parseHopLimit(cm *ControlMessage, b []byte) {
@@ -46,12 +41,10 @@ func parseHopLimit(cm *ControlMessage, b []byte) {
}
func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_PKTINFO
- m.SetLen(syscall.CmsgLen(sizeofInet6Pktinfo))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo)
if cm != nil {
- pi := (*inet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+ pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0]))
if ip := cm.Src.To16(); ip != nil && ip.To4() == nil {
copy(pi.Addr[:], ip)
}
@@ -59,41 +52,43 @@ func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
pi.setIfindex(cm.IfIndex)
}
}
- return b[syscall.CmsgSpace(sizeofInet6Pktinfo):]
+ return m.Next(sizeofInet6Pktinfo)
}
func parsePacketInfo(cm *ControlMessage, b []byte) {
pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0]))
- cm.Dst = pi.Addr[:]
+ if len(cm.Dst) < net.IPv6len {
+ cm.Dst = make(net.IP, net.IPv6len)
+ }
+ copy(cm.Dst, pi.Addr[:])
cm.IfIndex = int(pi.Ifindex)
}
func marshalNextHop(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_NEXTHOP
- m.SetLen(syscall.CmsgLen(sizeofSockaddrInet6))
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6)
if cm != nil {
- sa := (*sockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+ sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0]))
sa.setSockaddr(cm.NextHop, cm.IfIndex)
}
- return b[syscall.CmsgSpace(sizeofSockaddrInet6):]
+ return m.Next(sizeofSockaddrInet6)
}
func parseNextHop(cm *ControlMessage, b []byte) {
}
func marshalPathMTU(b []byte, cm *ControlMessage) []byte {
- m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
- m.Level = iana.ProtocolIPv6
- m.Type = sysIPV6_PATHMTU
- m.SetLen(syscall.CmsgLen(sizeofIPv6Mtuinfo))
- return b[syscall.CmsgSpace(sizeofIPv6Mtuinfo):]
+ m := socket.ControlMessage(b)
+ m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo)
+ return m.Next(sizeofIPv6Mtuinfo)
}
func parsePathMTU(cm *ControlMessage, b []byte) {
mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0]))
- cm.Dst = mi.Addr.Addr[:]
+ if len(cm.Dst) < net.IPv6len {
+ cm.Dst = make(net.IP, net.IPv6len)
+ }
+ copy(cm.Dst, mi.Addr.Addr[:])
cm.IfIndex = int(mi.Addr.Scope_id)
cm.MTU = int(mi.Mtu)
}
diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go
index 24b40a82d..a045f28f7 100644
--- a/vendor/golang.org/x/net/ipv6/control_stub.go
+++ b/vendor/golang.org/x/net/ipv6/control_stub.go
@@ -2,22 +2,12 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv6
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
- return errOpNoSupport
-}
-
-func newControlMessage(opt *rawOpt) (oob []byte) {
- return nil
-}
+import "golang.org/x/net/internal/socket"
-func parseControlMessage(b []byte) (*ControlMessage, error) {
- return nil, errOpNoSupport
-}
-
-func marshalControlMessage(cm *ControlMessage) (oob []byte) {
- return nil
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
+ return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv6/control_test.go b/vendor/golang.org/x/net/ipv6/control_test.go
new file mode 100644
index 000000000..c186ca99f
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/control_test.go
@@ -0,0 +1,21 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ipv6_test
+
+import (
+ "testing"
+
+ "golang.org/x/net/ipv6"
+)
+
+func TestControlMessageParseWithFuzz(t *testing.T) {
+ var cm ipv6.ControlMessage
+ for _, fuzz := range []string{
+ "\f\x00\x00\x00)\x00\x00\x00.\x00\x00\x00",
+ "\f\x00\x00\x00)\x00\x00\x00,\x00\x00\x00",
+ } {
+ cm.Parse([]byte(fuzz))
+ }
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go
index 7bd421053..66515060a 100644
--- a/vendor/golang.org/x/net/ipv6/control_unix.go
+++ b/vendor/golang.org/x/net/ipv6/control_unix.go
@@ -6,18 +6,13 @@
package ipv6
-import (
- "os"
- "syscall"
+import "golang.org/x/net/internal/socket"
- "golang.org/x/net/internal/iana"
-)
-
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
opt.Lock()
defer opt.Unlock()
- if cf&FlagTrafficClass != 0 && sockOpts[ssoReceiveTrafficClass].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceiveTrafficClass], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -26,8 +21,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
opt.clear(FlagTrafficClass)
}
}
- if cf&FlagHopLimit != 0 && sockOpts[ssoReceiveHopLimit].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceiveHopLimit], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -36,8 +31,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
opt.clear(FlagHopLimit)
}
}
- if cf&flagPacketInfo != 0 && sockOpts[ssoReceivePacketInfo].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceivePacketInfo], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -46,8 +41,8 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
opt.clear(cf & flagPacketInfo)
}
}
- if cf&FlagPathMTU != 0 && sockOpts[ssoReceivePathMTU].name > 0 {
- if err := setInt(s, &sockOpts[ssoReceivePathMTU], boolint(on)); err != nil {
+ if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 {
+ if err := so.SetInt(c, boolint(on)); err != nil {
return err
}
if on {
@@ -58,96 +53,3 @@ func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
}
return nil
}
-
-func newControlMessage(opt *rawOpt) (oob []byte) {
- opt.RLock()
- var l int
- if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length)
- }
- if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length)
- }
- if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
- }
- if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 {
- l += syscall.CmsgSpace(ctlOpts[ctlPathMTU].length)
- }
- if l > 0 {
- oob = make([]byte, l)
- }
- opt.RUnlock()
- return
-}
-
-func parseControlMessage(b []byte) (*ControlMessage, error) {
- if len(b) == 0 {
- return nil, nil
- }
- cmsgs, err := syscall.ParseSocketControlMessage(b)
- if err != nil {
- return nil, os.NewSyscallError("parse socket control message", err)
- }
- cm := &ControlMessage{}
- for _, m := range cmsgs {
- if m.Header.Level != iana.ProtocolIPv6 {
- continue
- }
- switch int(m.Header.Type) {
- case ctlOpts[ctlTrafficClass].name:
- ctlOpts[ctlTrafficClass].parse(cm, m.Data[:])
- case ctlOpts[ctlHopLimit].name:
- ctlOpts[ctlHopLimit].parse(cm, m.Data[:])
- case ctlOpts[ctlPacketInfo].name:
- ctlOpts[ctlPacketInfo].parse(cm, m.Data[:])
- case ctlOpts[ctlPathMTU].name:
- ctlOpts[ctlPathMTU].parse(cm, m.Data[:])
- }
- }
- return cm, nil
-}
-
-func marshalControlMessage(cm *ControlMessage) (oob []byte) {
- if cm == nil {
- return
- }
- var l int
- tclass := false
- if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 {
- tclass = true
- l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length)
- }
- hoplimit := false
- if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 {
- hoplimit = true
- l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length)
- }
- pktinfo := false
- if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) {
- pktinfo = true
- l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
- }
- nexthop := false
- if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil {
- nexthop = true
- l += syscall.CmsgSpace(ctlOpts[ctlNextHop].length)
- }
- if l > 0 {
- oob = make([]byte, l)
- b := oob
- if tclass {
- b = ctlOpts[ctlTrafficClass].marshal(b, cm)
- }
- if hoplimit {
- b = ctlOpts[ctlHopLimit].marshal(b, cm)
- }
- if pktinfo {
- b = ctlOpts[ctlPacketInfo].marshal(b, cm)
- }
- if nexthop {
- b = ctlOpts[ctlNextHop].marshal(b, cm)
- }
- }
- return
-}
diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go
index feef6ab86..ef2563b3f 100644
--- a/vendor/golang.org/x/net/ipv6/control_windows.go
+++ b/vendor/golang.org/x/net/ipv6/control_windows.go
@@ -4,24 +4,13 @@
package ipv6
-import "syscall"
+import (
+ "syscall"
-func setControlMessage(s uintptr, opt *rawOpt, cf ControlFlags, on bool) error {
- // TODO(mikio): implement this
- return syscall.EWINDOWS
-}
-
-func newControlMessage(opt *rawOpt) (oob []byte) {
- // TODO(mikio): implement this
- return nil
-}
+ "golang.org/x/net/internal/socket"
+)
-func parseControlMessage(b []byte) (*ControlMessage, error) {
+func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
// TODO(mikio): implement this
- return nil, syscall.EWINDOWS
-}
-
-func marshalControlMessage(cm *ControlMessage) (oob []byte) {
- // TODO(mikio): implement this
- return nil
+ return syscall.EWINDOWS
}
diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go
index 8a967fd21..3308cb2c3 100644
--- a/vendor/golang.org/x/net/ipv6/defs_linux.go
+++ b/vendor/golang.org/x/net/ipv6/defs_linux.go
@@ -120,6 +120,8 @@ const (
sizeofGroupSourceReq = C.sizeof_struct_group_source_req
sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+
+ sizeofSockFprog = C.sizeof_struct_sock_fprog
)
type kernelSockaddrStorage C.struct___kernel_sockaddr_storage
diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_posix.go b/vendor/golang.org/x/net/ipv6/dgramopt.go
index a448cbaa5..703dafe84 100644
--- a/vendor/golang.org/x/net/ipv6/dgramopt_posix.go
+++ b/vendor/golang.org/x/net/ipv6/dgramopt.go
@@ -2,15 +2,13 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
package ipv6
import (
"net"
"syscall"
- "golang.org/x/net/internal/netreflect"
+ "golang.org/x/net/bpf"
)
// MulticastHopLimit returns the hop limit field value for outgoing
@@ -19,11 +17,11 @@ func (c *dgramOpt) MulticastHopLimit() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoMulticastHopLimit]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoMulticastHopLimit])
+ return so.GetInt(c.Conn)
}
// SetMulticastHopLimit sets the hop limit field value for future
@@ -32,11 +30,11 @@ func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastHopLimit]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoMulticastHopLimit], hoplim)
+ return so.SetInt(c.Conn, hoplim)
}
// MulticastInterface returns the default interface for multicast
@@ -45,11 +43,11 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
if !c.ok() {
return nil, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return nil, err
+ so, ok := sockOpts[ssoMulticastInterface]
+ if !ok {
+ return nil, errOpNoSupport
}
- return getInterface(s, &sockOpts[ssoMulticastInterface])
+ return so.getMulticastInterface(c.Conn)
}
// SetMulticastInterface sets the default interface for future
@@ -58,11 +56,11 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastInterface]
+ if !ok {
+ return errOpNoSupport
}
- return setInterface(s, &sockOpts[ssoMulticastInterface], ifi)
+ return so.setMulticastInterface(c.Conn, ifi)
}
// MulticastLoopback reports whether transmitted multicast packets
@@ -71,11 +69,11 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) {
if !c.ok() {
return false, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return false, err
+ so, ok := sockOpts[ssoMulticastLoopback]
+ if !ok {
+ return false, errOpNoSupport
}
- on, err := getInt(s, &sockOpts[ssoMulticastLoopback])
+ on, err := so.GetInt(c.Conn)
if err != nil {
return false, err
}
@@ -88,11 +86,11 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoMulticastLoopback]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoMulticastLoopback], boolint(on))
+ return so.SetInt(c.Conn, boolint(on))
}
// JoinGroup joins the group address group on the interface ifi.
@@ -108,15 +106,15 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoJoinGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
return errMissingAddress
}
- return setGroup(s, &sockOpts[ssoJoinGroup], ifi, grp)
+ return so.setGroup(c.Conn, ifi, grp)
}
// LeaveGroup leaves the group address group on the interface ifi
@@ -126,15 +124,15 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoLeaveGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
return errMissingAddress
}
- return setGroup(s, &sockOpts[ssoLeaveGroup], ifi, grp)
+ return so.setGroup(c.Conn, ifi, grp)
}
// JoinSourceSpecificGroup joins the source-specific group comprising
@@ -147,9 +145,9 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoJoinSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
@@ -159,7 +157,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoJoinSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// LeaveSourceSpecificGroup leaves the source-specific group on the
@@ -168,9 +166,9 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoLeaveSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
@@ -180,7 +178,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// ExcludeSourceSpecificGroup excludes the source-specific group from
@@ -190,9 +188,9 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoBlockSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
@@ -202,7 +200,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoBlockSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// IncludeSourceSpecificGroup includes the excluded source-specific
@@ -211,9 +209,9 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoUnblockSourceGroup]
+ if !ok {
+ return errOpNoSupport
}
grp := netAddrToIP16(group)
if grp == nil {
@@ -223,7 +221,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
if src == nil {
return errMissingAddress
}
- return setSourceGroup(s, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src)
+ return so.setSourceGroup(c.Conn, ifi, grp, src)
}
// Checksum reports whether the kernel will compute, store or verify a
@@ -234,11 +232,11 @@ func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
if !c.ok() {
return false, 0, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return false, 0, err
+ so, ok := sockOpts[ssoChecksum]
+ if !ok {
+ return false, 0, errOpNoSupport
}
- offset, err = getInt(s, &sockOpts[ssoChecksum])
+ offset, err = so.GetInt(c.Conn)
if err != nil {
return false, 0, err
}
@@ -255,14 +253,14 @@ func (c *dgramOpt) SetChecksum(on bool, offset int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoChecksum]
+ if !ok {
+ return errOpNoSupport
}
if !on {
offset = -1
}
- return setInt(s, &sockOpts[ssoChecksum], offset)
+ return so.SetInt(c.Conn, offset)
}
// ICMPFilter returns an ICMP filter.
@@ -270,11 +268,11 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
if !c.ok() {
return nil, syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return nil, err
+ so, ok := sockOpts[ssoICMPFilter]
+ if !ok {
+ return nil, errOpNoSupport
}
- return getICMPFilter(s, &sockOpts[ssoICMPFilter])
+ return so.getICMPFilter(c.Conn)
}
// SetICMPFilter deploys the ICMP filter.
@@ -282,9 +280,23 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.PacketConn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoICMPFilter]
+ if !ok {
+ return errOpNoSupport
+ }
+ return so.setICMPFilter(c.Conn, f)
+}
+
+// SetBPF attaches a BPF program to the connection.
+//
+// Only supported on Linux.
+func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
+ if !c.ok() {
+ return syscall.EINVAL
+ }
+ so, ok := sockOpts[ssoAttachFilter]
+ if !ok {
+ return errOpNoSupport
}
- return setICMPFilter(s, &sockOpts[ssoICMPFilter], f)
+ return so.setBPF(c.Conn, filter)
}
diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_stub.go b/vendor/golang.org/x/net/ipv6/dgramopt_stub.go
deleted file mode 100644
index 82b0686ae..000000000
--- a/vendor/golang.org/x/net/ipv6/dgramopt_stub.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build nacl plan9
-
-package ipv6
-
-import "net"
-
-// MulticastHopLimit returns the hop limit field value for outgoing
-// multicast packets.
-func (c *dgramOpt) MulticastHopLimit() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetMulticastHopLimit sets the hop limit field value for future
-// outgoing multicast packets.
-func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
- return errOpNoSupport
-}
-
-// MulticastInterface returns the default interface for multicast
-// packet transmissions.
-func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
- return nil, errOpNoSupport
-}
-
-// SetMulticastInterface sets the default interface for future
-// multicast packet transmissions.
-func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
- return errOpNoSupport
-}
-
-// MulticastLoopback reports whether transmitted multicast packets
-// should be copied and send back to the originator.
-func (c *dgramOpt) MulticastLoopback() (bool, error) {
- return false, errOpNoSupport
-}
-
-// SetMulticastLoopback sets whether transmitted multicast packets
-// should be copied and send back to the originator.
-func (c *dgramOpt) SetMulticastLoopback(on bool) error {
- return errOpNoSupport
-}
-
-// JoinGroup joins the group address group on the interface ifi.
-// By default all sources that can cast data to group are accepted.
-// It's possible to mute and unmute data transmission from a specific
-// source by using ExcludeSourceSpecificGroup and
-// IncludeSourceSpecificGroup.
-// JoinGroup uses the system assigned multicast interface when ifi is
-// nil, although this is not recommended because the assignment
-// depends on platforms and sometimes it might require routing
-// configuration.
-func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
- return errOpNoSupport
-}
-
-// LeaveGroup leaves the group address group on the interface ifi
-// regardless of whether the group is any-source group or
-// source-specific group.
-func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
- return errOpNoSupport
-}
-
-// JoinSourceSpecificGroup joins the source-specific group comprising
-// group and source on the interface ifi.
-// JoinSourceSpecificGroup uses the system assigned multicast
-// interface when ifi is nil, although this is not recommended because
-// the assignment depends on platforms and sometimes it might require
-// routing configuration.
-func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// LeaveSourceSpecificGroup leaves the source-specific group on the
-// interface ifi.
-func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// ExcludeSourceSpecificGroup excludes the source-specific group from
-// the already joined any-source groups by JoinGroup on the interface
-// ifi.
-func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// IncludeSourceSpecificGroup includes the excluded source-specific
-// group by ExcludeSourceSpecificGroup again on the interface ifi.
-func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
- return errOpNoSupport
-}
-
-// Checksum reports whether the kernel will compute, store or verify a
-// checksum for both incoming and outgoing packets. If on is true, it
-// returns an offset in bytes into the data of where the checksum
-// field is located.
-func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
- return false, 0, errOpNoSupport
-}
-
-// SetChecksum enables the kernel checksum processing. If on is ture,
-// the offset should be an offset in bytes into the data of where the
-// checksum field is located.
-func (c *dgramOpt) SetChecksum(on bool, offset int) error {
- return errOpNoSupport
-}
-
-// ICMPFilter returns an ICMP filter.
-func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
- return nil, errOpNoSupport
-}
-
-// SetICMPFilter deploys the ICMP filter.
-func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go
index ce0b0ce27..0624c1740 100644
--- a/vendor/golang.org/x/net/ipv6/endpoint.go
+++ b/vendor/golang.org/x/net/ipv6/endpoint.go
@@ -9,7 +9,7 @@ import (
"syscall"
"time"
- "golang.org/x/net/internal/netreflect"
+ "golang.org/x/net/internal/socket"
)
// BUG(mikio): On Windows, the JoinSourceSpecificGroup,
@@ -25,7 +25,7 @@ type Conn struct {
}
type genericOpt struct {
- net.Conn
+ *socket.Conn
}
func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
@@ -33,14 +33,14 @@ func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
// PathMTU returns a path MTU value for the destination associated
// with the endpoint.
func (c *Conn) PathMTU() (int, error) {
- if !c.genericOpt.ok() {
+ if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.genericOpt.Conn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoPathMTU]
+ if !ok {
+ return 0, errOpNoSupport
}
- _, mtu, err := getMTUInfo(s, &sockOpts[ssoPathMTU])
+ _, mtu, err := so.getMTUInfo(c.Conn)
if err != nil {
return 0, err
}
@@ -49,8 +49,9 @@ func (c *Conn) PathMTU() (int, error) {
// NewConn returns a new Conn.
func NewConn(c net.Conn) *Conn {
+ cc, _ := socket.NewConn(c)
return &Conn{
- genericOpt: genericOpt{Conn: c},
+ genericOpt: genericOpt{Conn: cc},
}
}
@@ -66,10 +67,10 @@ type PacketConn struct {
}
type dgramOpt struct {
- net.PacketConn
+ *socket.Conn
}
-func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil }
+func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil }
// SetControlMessage allows to receive the per packet basis IP-level
// socket options.
@@ -77,11 +78,7 @@ func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
if !c.payloadHandler.ok() {
return syscall.EINVAL
}
- s, err := netreflect.PacketSocketOf(c.dgramOpt.PacketConn)
- if err != nil {
- return err
- }
- return setControlMessage(s, &c.payloadHandler.rawOpt, cf, on)
+ return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on)
}
// SetDeadline sets the read and write deadlines associated with the
@@ -122,9 +119,10 @@ func (c *PacketConn) Close() error {
// NewPacketConn returns a new PacketConn using c as its underlying
// transport.
func NewPacketConn(c net.PacketConn) *PacketConn {
+ cc, _ := socket.NewConn(c.(net.Conn))
return &PacketConn{
- genericOpt: genericOpt{Conn: c.(net.Conn)},
- dgramOpt: dgramOpt{PacketConn: c},
- payloadHandler: payloadHandler{PacketConn: c},
+ genericOpt: genericOpt{Conn: cc},
+ dgramOpt: dgramOpt{Conn: cc},
+ payloadHandler: payloadHandler{PacketConn: c, Conn: cc},
}
}
diff --git a/vendor/golang.org/x/net/ipv6/genericopt_posix.go b/vendor/golang.org/x/net/ipv6/genericopt.go
index 0a8d9883d..e9dbc2e18 100644
--- a/vendor/golang.org/x/net/ipv6/genericopt_posix.go
+++ b/vendor/golang.org/x/net/ipv6/genericopt.go
@@ -2,15 +2,9 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
-
package ipv6
-import (
- "syscall"
-
- "golang.org/x/net/internal/netreflect"
-)
+import "syscall"
// TrafficClass returns the traffic class field value for outgoing
// packets.
@@ -18,11 +12,11 @@ func (c *genericOpt) TrafficClass() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoTrafficClass]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoTrafficClass])
+ return so.GetInt(c.Conn)
}
// SetTrafficClass sets the traffic class field value for future
@@ -31,11 +25,11 @@ func (c *genericOpt) SetTrafficClass(tclass int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoTrafficClass]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoTrafficClass], tclass)
+ return so.SetInt(c.Conn, tclass)
}
// HopLimit returns the hop limit field value for outgoing packets.
@@ -43,11 +37,11 @@ func (c *genericOpt) HopLimit() (int, error) {
if !c.ok() {
return 0, syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return 0, err
+ so, ok := sockOpts[ssoHopLimit]
+ if !ok {
+ return 0, errOpNoSupport
}
- return getInt(s, &sockOpts[ssoHopLimit])
+ return so.GetInt(c.Conn)
}
// SetHopLimit sets the hop limit field value for future outgoing
@@ -56,9 +50,9 @@ func (c *genericOpt) SetHopLimit(hoplim int) error {
if !c.ok() {
return syscall.EINVAL
}
- s, err := netreflect.SocketOf(c.Conn)
- if err != nil {
- return err
+ so, ok := sockOpts[ssoHopLimit]
+ if !ok {
+ return errOpNoSupport
}
- return setInt(s, &sockOpts[ssoHopLimit], hoplim)
+ return so.SetInt(c.Conn, hoplim)
}
diff --git a/vendor/golang.org/x/net/ipv6/genericopt_stub.go b/vendor/golang.org/x/net/ipv6/genericopt_stub.go
deleted file mode 100644
index 9dfc57dae..000000000
--- a/vendor/golang.org/x/net/ipv6/genericopt_stub.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build nacl plan9
-
-package ipv6
-
-// TrafficClass returns the traffic class field value for outgoing
-// packets.
-func (c *genericOpt) TrafficClass() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetTrafficClass sets the traffic class field value for future
-// outgoing packets.
-func (c *genericOpt) SetTrafficClass(tclass int) error {
- return errOpNoSupport
-}
-
-// HopLimit returns the hop limit field value for outgoing packets.
-func (c *genericOpt) HopLimit() (int, error) {
- return 0, errOpNoSupport
-}
-
-// SetHopLimit sets the hop limit field value for future outgoing
-// packets.
-func (c *genericOpt) SetHopLimit(hoplim int) error {
- return errOpNoSupport
-}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go
index 3cd84e195..c4b9be6db 100644
--- a/vendor/golang.org/x/net/ipv6/icmp_stub.go
+++ b/vendor/golang.org/x/net/ipv6/icmp_stub.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv6
diff --git a/vendor/golang.org/x/net/ipv6/ipv6_test.go b/vendor/golang.org/x/net/ipv6/ipv6_test.go
deleted file mode 100644
index 8d2d23542..000000000
--- a/vendor/golang.org/x/net/ipv6/ipv6_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv6
-
-import (
- "fmt"
- "os"
- "testing"
-)
-
-var disableTests = false
-
-func TestMain(m *testing.M) {
- if disableTests {
- fmt.Fprintf(os.Stderr, "ipv6 tests disabled in Go 1.9 until netreflect is fixed (Issue 19051)\n")
- os.Exit(0)
- }
- // call flag.Parse() here if TestMain uses flags
- os.Exit(m.Run())
-}
diff --git a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go b/vendor/golang.org/x/net/ipv6/multicastlistener_test.go
index 044db157b..b27713e2f 100644
--- a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go
+++ b/vendor/golang.org/x/net/ipv6/multicastlistener_test.go
@@ -5,7 +5,6 @@
package ipv6_test
import (
- "fmt"
"net"
"runtime"
"testing"
@@ -70,13 +69,16 @@ func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) {
}
for _, gaddr := range udpMultipleGroupListenerTests {
- c1, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port
+ c1, err := net.ListenPacket("udp6", "[ff02::]:0") // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
defer c1.Close()
-
- c2, err := net.ListenPacket("udp6", "[ff02::]:1024") // wildcard address with reusable port
+ _, port, err := net.SplitHostPort(c1.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ c2, err := net.ListenPacket("udp6", net.JoinHostPort("ff02::", port)) // wildcard address with reusable port
if err != nil {
t.Fatal(err)
}
@@ -132,16 +134,29 @@ func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) {
if err != nil {
t.Fatal(err)
}
+ port := "0"
for i, ifi := range ift {
ip, ok := nettest.IsMulticastCapable("ip6", &ifi)
if !ok {
continue
}
- c, err := net.ListenPacket("udp6", fmt.Sprintf("[%s%%%s]:1024", ip.String(), ifi.Name)) // unicast address with non-reusable port
+ c, err := net.ListenPacket("udp6", net.JoinHostPort(ip.String()+"%"+ifi.Name, port)) // unicast address with non-reusable port
if err != nil {
- t.Fatal(err)
+ // The listen may fail when the serivce is
+ // already in use, but it's fine because the
+ // purpose of this is not to test the
+ // bookkeeping of IP control block inside the
+ // kernel.
+ t.Log(err)
+ continue
}
defer c.Close()
+ if port == "0" {
+ _, port, err = net.SplitHostPort(c.LocalAddr().String())
+ if err != nil {
+ t.Fatal(err)
+ }
+ }
p := ipv6.NewPacketConn(c)
if err := p.JoinGroup(&ifi, &gaddr); err != nil {
t.Fatal(err)
@@ -227,7 +242,7 @@ func TestIPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) {
if !ok {
continue
}
- c, err := net.ListenPacket("ip6:ipv6-icmp", fmt.Sprintf("%s%%%s", ip.String(), ifi.Name)) // unicast address
+ c, err := net.ListenPacket("ip6:ipv6-icmp", ip.String()+"%"+ifi.Name) // unicast address
if err != nil {
t.Fatal(err)
}
diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go
index d9f822510..a8197f169 100644
--- a/vendor/golang.org/x/net/ipv6/payload.go
+++ b/vendor/golang.org/x/net/ipv6/payload.go
@@ -4,7 +4,11 @@
package ipv6
-import "net"
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo
// methods of PacketConn is not implemented.
@@ -12,7 +16,8 @@ import "net"
// A payloadHandler represents the IPv6 datagram payload handler.
type payloadHandler struct {
net.PacketConn
+ *socket.Conn
rawOpt
}
-func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil }
+func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil }
diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go
index e853c8059..4ee4b062c 100644
--- a/vendor/golang.org/x/net/ipv6/payload_cmsg.go
+++ b/vendor/golang.org/x/net/ipv6/payload_cmsg.go
@@ -19,27 +19,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.
if !c.ok() {
return 0, nil, nil, syscall.EINVAL
}
- oob := newControlMessage(&c.rawOpt)
- var oobn int
- switch c := c.PacketConn.(type) {
- case *net.UDPConn:
- if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
- return 0, nil, nil, err
- }
- case *net.IPConn:
- if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil {
- return 0, nil, nil, err
- }
- default:
- return 0, nil, nil, errInvalidConnType
- }
- if cm, err = parseControlMessage(oob[:oobn]); err != nil {
- return 0, nil, nil, err
- }
- if cm != nil {
- cm.Src = netAddrToIP16(src)
- }
- return
+ return c.readFrom(b)
}
// WriteTo writes a payload of the IPv6 datagram, to the destination
@@ -51,20 +31,5 @@ func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n
if !c.ok() {
return 0, syscall.EINVAL
}
- oob := marshalControlMessage(cm)
- if dst == nil {
- return 0, errMissingAddress
- }
- switch c := c.PacketConn.(type) {
- case *net.UDPConn:
- n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
- case *net.IPConn:
- n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
- default:
- return 0, errInvalidConnType
- }
- if err != nil {
- return 0, err
- }
- return
+ return c.writeTo(b, cm, dst)
}
diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go
new file mode 100644
index 000000000..431cff46f
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go
@@ -0,0 +1,55 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+// +build !nacl,!plan9,!windows
+
+package ipv6
+
+import "net"
+
+func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+ c.rawOpt.RLock()
+ oob := NewControlMessage(c.rawOpt.cflags)
+ c.rawOpt.RUnlock()
+ var nn int
+ switch c := c.PacketConn.(type) {
+ case *net.UDPConn:
+ if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
+ return 0, nil, nil, err
+ }
+ case *net.IPConn:
+ if n, nn, _, src, err = c.ReadMsgIP(b, oob); err != nil {
+ return 0, nil, nil, err
+ }
+ default:
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType}
+ }
+ if nn > 0 {
+ cm = new(ControlMessage)
+ if err = cm.Parse(oob[:nn]); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ }
+ if cm != nil {
+ cm.Src = netAddrToIP16(src)
+ }
+ return
+}
+
+func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+ oob := cm.Marshal()
+ if dst == nil {
+ return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress}
+ }
+ switch c := c.PacketConn.(type) {
+ case *net.UDPConn:
+ n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
+ case *net.IPConn:
+ n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
+ default:
+ return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType}
+ }
+ return
+}
diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go
new file mode 100644
index 000000000..4072c585a
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go
@@ -0,0 +1,57 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+// +build !nacl,!plan9,!windows
+
+package ipv6
+
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) {
+ c.rawOpt.RLock()
+ m := socket.Message{
+ Buffers: [][]byte{b},
+ OOB: NewControlMessage(c.rawOpt.cflags),
+ }
+ c.rawOpt.RUnlock()
+ switch c.PacketConn.(type) {
+ case *net.UDPConn:
+ if err := c.RecvMsg(&m, 0); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ case *net.IPConn:
+ if err := c.RecvMsg(&m, 0); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ default:
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType}
+ }
+ var cm *ControlMessage
+ if m.NN > 0 {
+ cm = new(ControlMessage)
+ if err := cm.Parse(m.OOB[:m.NN]); err != nil {
+ return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ cm.Src = netAddrToIP16(m.Addr)
+ }
+ return m.N, cm, m.Addr, nil
+}
+
+func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) {
+ m := socket.Message{
+ Buffers: [][]byte{b},
+ OOB: cm.Marshal(),
+ Addr: dst,
+ }
+ err := c.SendMsg(&m, 0)
+ if err != nil {
+ err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err}
+ }
+ return m.N, err
+}
diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go
new file mode 100644
index 000000000..c11d92ae9
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go
@@ -0,0 +1,242 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+package ipv6_test
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/ipv6"
+)
+
+func BenchmarkPacketConnReadWriteUnicast(b *testing.B) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ b.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph := []byte{
+ 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ }
+ greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+ bb := make([]byte, 128)
+ cm := ipv6.ControlMessage{
+ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced,
+ HopLimit: 1,
+ Src: net.IPv6loopback,
+ }
+ if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+
+ b.Run("UDP", func(b *testing.B) {
+ c, err := nettest.NewLocalPacketListener("udp6")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv6.FlagHopLimit | ipv6.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(payload, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(payload, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+ b.Run("IP", func(b *testing.B) {
+ switch runtime.GOOS {
+ case "netbsd":
+ b.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ b.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(datagram, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(datagram, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+}
+
+func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph := []byte{
+ 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ }
+ greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+
+ t.Run("UDP", func(t *testing.T) {
+ c, err := nettest.NewLocalPacketListener("udp6")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr())
+ })
+ })
+ t.Run("IP", func(t *testing.T) {
+ switch runtime.GOOS {
+ case "netbsd":
+ t.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ t.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr())
+ })
+ })
+}
+
+func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr) {
+ ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback)
+ cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU
+
+ if err := p.SetControlMessage(cf, true); err != nil { // probe before test
+ if nettest.ProtocolNotSupported(err) {
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+ t.Fatal(err)
+ }
+
+ var wg sync.WaitGroup
+ reader := func() {
+ defer wg.Done()
+ b := make([]byte, 128)
+ n, cm, _, err := p.ReadFrom(b)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if !bytes.Equal(b[:n], data) {
+ t.Errorf("got %#v; want %#v", b[:n], data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ writer := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv6.ControlMessage{
+ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced,
+ HopLimit: 1,
+ Src: net.IPv6loopback,
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ n, err := p.WriteTo(data, &cm, dst)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(data) {
+ t.Errorf("got %d; want %d", n, len(data))
+ return
+ }
+ }
+
+ const N = 10
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ go reader()
+ }
+ wg.Add(2 * N)
+ for i := 0; i < 2*N; i++ {
+ go writer(i%2 != 0)
+
+ }
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ go reader()
+ }
+ wg.Wait()
+}
diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go
new file mode 100644
index 000000000..e2fd73370
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go
@@ -0,0 +1,373 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.9
+
+package ipv6_test
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+
+ "golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/nettest"
+ "golang.org/x/net/ipv6"
+)
+
+func BenchmarkPacketConnReadWriteUnicast(b *testing.B) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ b.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph := []byte{
+ 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ }
+ greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+ bb := make([]byte, 128)
+ cm := ipv6.ControlMessage{
+ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced,
+ HopLimit: 1,
+ Src: net.IPv6loopback,
+ }
+ if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+
+ b.Run("UDP", func(b *testing.B) {
+ c, err := nettest.NewLocalPacketListener("udp6")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv6.FlagHopLimit | ipv6.FlagInterface
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ wms := []ipv6.Message{
+ {
+ Buffers: [][]byte{payload},
+ Addr: dst,
+ OOB: cm.Marshal(),
+ },
+ }
+ rms := []ipv6.Message{
+ {
+ Buffers: [][]byte{bb},
+ OOB: ipv6.NewControlMessage(cf),
+ },
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(payload, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(payload, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("Batch", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteBatch(wms, 0); err != nil {
+ b.Fatal(err)
+ }
+ if _, err := p.ReadBatch(rms, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+ b.Run("IP", func(b *testing.B) {
+ switch runtime.GOOS {
+ case "netbsd":
+ b.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ b.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1")
+ if err != nil {
+ b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ dst := c.LocalAddr()
+ cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU
+ if err := p.SetControlMessage(cf, true); err != nil {
+ b.Fatal(err)
+ }
+ wms := []ipv6.Message{
+ {
+ Buffers: [][]byte{datagram},
+ Addr: dst,
+ OOB: cm.Marshal(),
+ },
+ }
+ rms := []ipv6.Message{
+ {
+ Buffers: [][]byte{bb},
+ OOB: ipv6.NewControlMessage(cf),
+ },
+ }
+ b.Run("Net", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := c.WriteTo(datagram, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, err := c.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("ToFrom", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteTo(datagram, &cm, dst); err != nil {
+ b.Fatal(err)
+ }
+ if _, _, _, err := p.ReadFrom(bb); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ b.Run("Batch", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ if _, err := p.WriteBatch(wms, 0); err != nil {
+ b.Fatal(err)
+ }
+ if _, err := p.ReadBatch(rms, 0); err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
+ })
+}
+
+func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) {
+ switch runtime.GOOS {
+ case "nacl", "plan9", "windows":
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+
+ payload := []byte("HELLO-R-U-THERE")
+ iph := []byte{
+ 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ }
+ greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00}
+ datagram := append(greh, append(iph, payload...)...)
+
+ t.Run("UDP", func(t *testing.T) {
+ c, err := nettest.NewLocalPacketListener("udp6")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false)
+ })
+ t.Run("Batch", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true)
+ })
+ })
+ t.Run("IP", func(t *testing.T) {
+ switch runtime.GOOS {
+ case "netbsd":
+ t.Skip("need to configure gre on netbsd")
+ case "openbsd":
+ t.Skip("net.inet.gre.allow=0 by default on openbsd")
+ }
+
+ c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1")
+ if err != nil {
+ t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
+ }
+ defer c.Close()
+ p := ipv6.NewPacketConn(c)
+ t.Run("ToFrom", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false)
+ })
+ t.Run("Batch", func(t *testing.T) {
+ testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true)
+ })
+ })
+}
+
+func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr, batch bool) {
+ ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback)
+ cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU
+
+ if err := p.SetControlMessage(cf, true); err != nil { // probe before test
+ if nettest.ProtocolNotSupported(err) {
+ t.Skipf("not supported on %s", runtime.GOOS)
+ }
+ t.Fatal(err)
+ }
+
+ var wg sync.WaitGroup
+ reader := func() {
+ defer wg.Done()
+ b := make([]byte, 128)
+ n, cm, _, err := p.ReadFrom(b)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if !bytes.Equal(b[:n], data) {
+ t.Errorf("got %#v; want %#v", b[:n], data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ batchReader := func() {
+ defer wg.Done()
+ ms := []ipv6.Message{
+ {
+ Buffers: [][]byte{make([]byte, 128)},
+ OOB: ipv6.NewControlMessage(cf),
+ },
+ }
+ n, err := p.ReadBatch(ms, 0)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(ms) {
+ t.Errorf("got %d; want %d", n, len(ms))
+ return
+ }
+ var cm ipv6.ControlMessage
+ if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil {
+ t.Error(err)
+ return
+ }
+ b := ms[0].Buffers[0][:ms[0].N]
+ if !bytes.Equal(b, data) {
+ t.Errorf("got %#v; want %#v", b, data)
+ return
+ }
+ s := cm.String()
+ if strings.Contains(s, ",") {
+ t.Errorf("should be space-separated values: %s", s)
+ return
+ }
+ }
+ writer := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv6.ControlMessage{
+ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced,
+ HopLimit: 1,
+ Src: net.IPv6loopback,
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ n, err := p.WriteTo(data, &cm, dst)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(data) {
+ t.Errorf("got %d; want %d", n, len(data))
+ return
+ }
+ }
+ batchWriter := func(toggle bool) {
+ defer wg.Done()
+ cm := ipv6.ControlMessage{
+ TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced,
+ HopLimit: 1,
+ Src: net.IPv6loopback,
+ }
+ if ifi != nil {
+ cm.IfIndex = ifi.Index
+ }
+ if err := p.SetControlMessage(cf, toggle); err != nil {
+ t.Error(err)
+ return
+ }
+ ms := []ipv6.Message{
+ {
+ Buffers: [][]byte{data},
+ OOB: cm.Marshal(),
+ Addr: dst,
+ },
+ }
+ n, err := p.WriteBatch(ms, 0)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ if n != len(ms) {
+ t.Errorf("got %d; want %d", n, len(ms))
+ return
+ }
+ if ms[0].N != len(data) {
+ t.Errorf("got %d; want %d", ms[0].N, len(data))
+ return
+ }
+ }
+
+ const N = 10
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ if batch {
+ go batchReader()
+ } else {
+ go reader()
+ }
+ }
+ wg.Add(2 * N)
+ for i := 0; i < 2*N; i++ {
+ if batch {
+ go batchWriter(i%2 != 0)
+ } else {
+ go writer(i%2 != 0)
+ }
+ }
+ wg.Add(N)
+ for i := 0; i < N; i++ {
+ if batch {
+ go batchReader()
+ } else {
+ go reader()
+ }
+ }
+ wg.Wait()
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go
index f0cfc2f94..cc3907df3 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt.go
+++ b/vendor/golang.org/x/net/ipv6/sockopt.go
@@ -4,6 +4,8 @@
package ipv6
+import "golang.org/x/net/internal/socket"
+
// Sticky socket options
const (
ssoTrafficClass = iota // header field for unicast packet, RFC 3542
@@ -24,23 +26,18 @@ const (
ssoLeaveSourceGroup // source-specific multicast
ssoBlockSourceGroup // any-source or source-specific multicast
ssoUnblockSourceGroup // any-source or source-specific multicast
- ssoMax
+ ssoAttachFilter // attach BPF for filtering inbound traffic
)
// Sticky socket option value types
const (
- ssoTypeInt = iota + 1
- ssoTypeInterface
- ssoTypeICMPFilter
- ssoTypeMTUInfo
- ssoTypeIPMreq
+ ssoTypeIPMreq = iota + 1
ssoTypeGroupReq
ssoTypeGroupSourceReq
)
// A sockOpt represents a binding for sticky socket option.
type sockOpt struct {
- level int // option level
- name int // option name, must be equal or greater than 1
- typ int // option value type, must be equal or greater than 1
+ socket.Option
+ typ int // hint for option value type; optional
}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go
index e0a3fa693..0eac86eb8 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt_posix.go
+++ b/vendor/golang.org/x/net/ipv6/sockopt_posix.go
@@ -8,88 +8,55 @@ package ipv6
import (
"net"
- "os"
"unsafe"
-)
-
-func getInt(s uintptr, opt *sockOpt) (int, error) {
- if opt.name < 1 || opt.typ != ssoTypeInt {
- return 0, errOpNoSupport
- }
- var i int32
- l := uint32(4)
- if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil {
- return 0, os.NewSyscallError("getsockopt", err)
- }
- return int(i), nil
-}
-func setInt(s uintptr, opt *sockOpt, v int) error {
- if opt.name < 1 || opt.typ != ssoTypeInt {
- return errOpNoSupport
- }
- i := int32(v)
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), 4))
-}
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
-func getInterface(s uintptr, opt *sockOpt) (*net.Interface, error) {
- if opt.name < 1 || opt.typ != ssoTypeInterface {
- return nil, errOpNoSupport
- }
- var i int32
- l := uint32(4)
- if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
- }
- if i == 0 {
- return nil, nil
- }
- ifi, err := net.InterfaceByIndex(int(i))
+func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) {
+ n, err := so.GetInt(c)
if err != nil {
return nil, err
}
- return ifi, nil
+ return net.InterfaceByIndex(n)
}
-func setInterface(s uintptr, opt *sockOpt, ifi *net.Interface) error {
- if opt.name < 1 || opt.typ != ssoTypeInterface {
- return errOpNoSupport
- }
- var i int32
+func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error {
+ var n int
if ifi != nil {
- i = int32(ifi.Index)
+ n = ifi.Index
}
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&i), 4))
+ return so.SetInt(c, n)
}
-func getICMPFilter(s uintptr, opt *sockOpt) (*ICMPFilter, error) {
- if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
- return nil, errOpNoSupport
+func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) {
+ b := make([]byte, so.Len)
+ n, err := so.Get(c, b)
+ if err != nil {
+ return nil, err
}
- var f ICMPFilter
- l := uint32(sizeofICMPv6Filter)
- if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&f.icmpv6Filter), &l); err != nil {
- return nil, os.NewSyscallError("getsockopt", err)
+ if n != sizeofICMPv6Filter {
+ return nil, errOpNoSupport
}
- return &f, nil
+ return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil
}
-func setICMPFilter(s uintptr, opt *sockOpt, f *ICMPFilter) error {
- if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
- return errOpNoSupport
- }
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&f.icmpv6Filter), sizeofICMPv6Filter))
+func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error {
+ b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter]
+ return so.Set(c, b)
}
-func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) {
- if opt.name < 1 || opt.typ != ssoTypeMTUInfo {
- return nil, 0, errOpNoSupport
+func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) {
+ b := make([]byte, so.Len)
+ n, err := so.Get(c, b)
+ if err != nil {
+ return nil, 0, err
}
- var mi ipv6Mtuinfo
- l := uint32(sizeofIPv6Mtuinfo)
- if err := getsockopt(s, opt.level, opt.name, unsafe.Pointer(&mi), &l); err != nil {
- return nil, 0, os.NewSyscallError("getsockopt", err)
+ if n != sizeofIPv6Mtuinfo {
+ return nil, 0, errOpNoSupport
}
+ mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0]))
if mi.Addr.Scope_id == 0 {
return nil, int(mi.Mtu), nil
}
@@ -100,23 +67,21 @@ func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) {
return ifi, int(mi.Mtu), nil
}
-func setGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
- if opt.name < 1 {
- return errOpNoSupport
- }
- switch opt.typ {
+func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ switch so.typ {
case ssoTypeIPMreq:
- return setsockoptIPMreq(s, opt, ifi, grp)
+ return so.setIPMreq(c, ifi, grp)
case ssoTypeGroupReq:
- return setsockoptGroupReq(s, opt, ifi, grp)
+ return so.setGroupReq(c, ifi, grp)
default:
return errOpNoSupport
}
}
-func setSourceGroup(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
- if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq {
- return errOpNoSupport
- }
- return setsockoptGroupSourceReq(s, opt, ifi, grp, src)
+func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
+ return so.setGroupSourceReq(c, ifi, grp, src)
+}
+
+func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error {
+ return so.setAttachFilter(c, f)
}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go
index 6d59a00c2..1f4a273e4 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt_stub.go
+++ b/vendor/golang.org/x/net/ipv6/sockopt_stub.go
@@ -2,12 +2,45 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv6
-import "net"
+import (
+ "net"
-func getMTUInfo(s uintptr, opt *sockOpt) (*net.Interface, int, error) {
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) {
+ return nil, errOpNoSupport
+}
+
+func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) {
+ return nil, errOpNoSupport
+}
+
+func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) {
return nil, 0, errOpNoSupport
}
+
+func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
+ return errOpNoSupport
+}
+
+func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error {
+ return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go
index cd36739df..b0510c0b5 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_posix.go
+++ b/vendor/golang.org/x/net/ipv6/sys_asmreq.go
@@ -8,15 +8,17 @@ package ipv6
import (
"net"
- "os"
"unsafe"
+
+ "golang.org/x/net/internal/socket"
)
-func setsockoptIPMreq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
var mreq ipv6Mreq
copy(mreq.Multiaddr[:], grp)
if ifi != nil {
mreq.setIfindex(ifi.Index)
}
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, unsafe.Pointer(&mreq), sizeofIPv6Mreq))
+ b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq]
+ return so.Set(c, b)
}
diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go
new file mode 100644
index 000000000..eece96187
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go
@@ -0,0 +1,17 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
+
+package ipv6
+
+import (
+ "net"
+
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
+ return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go
new file mode 100644
index 000000000..b2dbcb2f2
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/sys_bpf.go
@@ -0,0 +1,23 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+
+package ipv6
+
+import (
+ "unsafe"
+
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error {
+ prog := sockFProg{
+ Len: uint16(len(f)),
+ Filter: (*sockFilter)(unsafe.Pointer(&f[0])),
+ }
+ b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog]
+ return so.Set(c, b)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go
new file mode 100644
index 000000000..676bea555
--- /dev/null
+++ b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !linux
+
+package ipv6
+
+import (
+ "golang.org/x/net/bpf"
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error {
+ return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go
index c22f8ac63..e416eaa1f 100644
--- a/vendor/golang.org/x/net/ipv6/sys_bsd.go
+++ b/vendor/golang.org/x/net/ipv6/sys_bsd.go
@@ -11,6 +11,7 @@ import (
"syscall"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -22,21 +23,21 @@ var (
ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
- ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
- ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
- ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
- ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
- ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
- ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}},
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}},
+ ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}},
+ ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}},
+ ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}},
+ ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}},
+ ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go
index ffcc9d4c4..e3d044392 100644
--- a/vendor/golang.org/x/net/ipv6/sys_darwin.go
+++ b/vendor/golang.org/x/net/ipv6/sys_darwin.go
@@ -12,6 +12,7 @@ import (
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -20,17 +21,17 @@ var (
ctlPacketInfo: {sysIPV6_2292PKTINFO, sizeofInet6Pktinfo, marshal2292PacketInfo, parsePacketInfo},
}
- sockOpts = [ssoMax]sockOpt{
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, ssoTypeInt},
- ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_2292PKTINFO, ssoTypeInt},
- ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
- ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292HOPLIMIT, Len: 4}},
+ ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292PKTINFO, Len: 4}},
+ ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
}
)
@@ -57,18 +58,18 @@ func init() {
ctlOpts[ctlPacketInfo] = ctlOpt{sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}
ctlOpts[ctlNextHop] = ctlOpt{sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}
ctlOpts[ctlPathMTU] = ctlOpt{sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}
- sockOpts[ssoTrafficClass] = sockOpt{iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt}
- sockOpts[ssoReceiveTrafficClass] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt}
- sockOpts[ssoReceiveHopLimit] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt}
- sockOpts[ssoReceivePacketInfo] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt}
- sockOpts[ssoReceivePathMTU] = sockOpt{iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt}
- sockOpts[ssoPathMTU] = sockOpt{iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo}
- sockOpts[ssoJoinGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq}
- sockOpts[ssoLeaveGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq}
- sockOpts[ssoJoinSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq}
- sockOpts[ssoLeaveSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq}
- sockOpts[ssoBlockSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq}
- sockOpts[ssoUnblockSourceGroup] = sockOpt{iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq}
+ sockOpts[ssoTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}
+ sockOpts[ssoReceiveTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}
+ sockOpts[ssoReceiveHopLimit] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}
+ sockOpts[ssoReceivePacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}
+ sockOpts[ssoReceivePathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}
+ sockOpts[ssoPathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}
+ sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}
+ sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}
+ sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
+ sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}
}
func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) {
diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go
index fd5204beb..e9349dc2c 100644
--- a/vendor/golang.org/x/net/ipv6/sys_freebsd.go
+++ b/vendor/golang.org/x/net/ipv6/sys_freebsd.go
@@ -12,6 +12,7 @@ import (
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -23,25 +24,25 @@ var (
ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
- ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
- ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
- ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
- ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
- ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
- ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]sockOpt{
+ ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}},
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}},
+ ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}},
+ ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}},
+ ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}},
+ ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}},
+ ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go
index 42f5f7853..bc218103c 100644
--- a/vendor/golang.org/x/net/ipv6/sys_linux.go
+++ b/vendor/golang.org/x/net/ipv6/sys_linux.go
@@ -10,6 +10,7 @@ import (
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -20,25 +21,26 @@ var (
ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
- ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
- ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
- ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
- ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
- ssoChecksum: {iana.ProtocolReserved, sysIPV6_CHECKSUM, ssoTypeInt},
- ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMPV6_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]*sockOpt{
+ ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}},
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}},
+ ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}},
+ ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}},
+ ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}},
+ ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}},
+ ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}},
}
)
diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go
index 9bd2d66fd..d348b5f6e 100644
--- a/vendor/golang.org/x/net/ipv6/sys_solaris.go
+++ b/vendor/golang.org/x/net/ipv6/sys_solaris.go
@@ -10,6 +10,7 @@ import (
"unsafe"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
var (
@@ -21,25 +22,25 @@ var (
ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
}
- sockOpts = [ssoMax]sockOpt{
- ssoTrafficClass: {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
- ssoReceiveHopLimit: {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
- ssoReceivePacketInfo: {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
- ssoReceivePathMTU: {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
- ssoPathMTU: {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
- ssoChecksum: {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
- ssoICMPFilter: {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
- ssoJoinGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
- ssoJoinSourceGroup: {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+ sockOpts = map[int]*sockOpt{
+ ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}},
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}},
+ ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}},
+ ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}},
+ ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}},
+ ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}},
+ ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go
index f3668aefc..add8ccc0b 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go
+++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go
@@ -8,52 +8,47 @@ package ipv6
import (
"net"
- "os"
"unsafe"
+
+ "golang.org/x/net/internal/socket"
)
var freebsd32o64 bool
-func setsockoptGroupReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
var gr groupReq
if ifi != nil {
gr.Interface = uint32(ifi.Index)
}
gr.setGroup(grp)
- var p unsafe.Pointer
- var l uint32
+ var b []byte
if freebsd32o64 {
var d [sizeofGroupReq + 4]byte
s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))
copy(d[:4], s[:4])
copy(d[8:], s[4:])
- p = unsafe.Pointer(&d[0])
- l = sizeofGroupReq + 4
+ b = d[:]
} else {
- p = unsafe.Pointer(&gr)
- l = sizeofGroupReq
+ b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq]
}
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, p, l))
+ return so.Set(c, b)
}
-func setsockoptGroupSourceReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
var gsr groupSourceReq
if ifi != nil {
gsr.Interface = uint32(ifi.Index)
}
gsr.setSourceGroup(grp, src)
- var p unsafe.Pointer
- var l uint32
+ var b []byte
if freebsd32o64 {
var d [sizeofGroupSourceReq + 4]byte
s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))
copy(d[:4], s[:4])
copy(d[8:], s[4:])
- p = unsafe.Pointer(&d[0])
- l = sizeofGroupSourceReq + 4
+ b = d[:]
} else {
- p = unsafe.Pointer(&gsr)
- l = sizeofGroupSourceReq
+ b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq]
}
- return os.NewSyscallError("setsockopt", setsockopt(s, opt.level, opt.name, p, l))
+ return so.Set(c, b)
}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go
index 1a8829092..581ee490f 100644
--- a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go
+++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go
@@ -6,12 +6,16 @@
package ipv6
-import "net"
+import (
+ "net"
-func setsockoptGroupReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+ "golang.org/x/net/internal/socket"
+)
+
+func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
return errOpNoSupport
}
-func setsockoptGroupSourceReq(s uintptr, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error {
return errOpNoSupport
}
diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go
index 7663bfc09..b845388ea 100644
--- a/vendor/golang.org/x/net/ipv6/sys_stub.go
+++ b/vendor/golang.org/x/net/ipv6/sys_stub.go
@@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build nacl plan9
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows
package ipv6
var (
ctlOpts = [ctlMax]ctlOpt{}
- sockOpts = [ssoMax]sockOpt{}
+ sockOpts = map[int]*sockOpt{}
)
diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go
index 003c507d5..fc36b018b 100644
--- a/vendor/golang.org/x/net/ipv6/sys_windows.go
+++ b/vendor/golang.org/x/net/ipv6/sys_windows.go
@@ -9,6 +9,7 @@ import (
"syscall"
"golang.org/x/net/internal/iana"
+ "golang.org/x/net/internal/socket"
)
const (
@@ -53,13 +54,13 @@ type icmpv6Filter struct {
var (
ctlOpts = [ctlMax]ctlOpt{}
- sockOpts = [ssoMax]sockOpt{
- ssoHopLimit: {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
- ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
- ssoMulticastHopLimit: {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
- ssoMulticastLoopback: {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
- ssoJoinGroup: {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
- ssoLeaveGroup: {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+ sockOpts = map[int]*sockOpt{
+ ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}},
+ ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv6/syscall_linux_386.go b/vendor/golang.org/x/net/ipv6/syscall_linux_386.go
deleted file mode 100644
index 5184dbe88..000000000
--- a/vendor/golang.org/x/net/ipv6/syscall_linux_386.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv6
-
-import (
- "syscall"
- "unsafe"
-)
-
-const (
- sysGETSOCKOPT = 0xf
- sysSETSOCKOPT = 0xe
-)
-
-func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- if _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv6/syscall_solaris.go b/vendor/golang.org/x/net/ipv6/syscall_solaris.go
deleted file mode 100644
index 2a5c8ee47..000000000
--- a/vendor/golang.org/x/net/ipv6/syscall_solaris.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv6
-
-import (
- "syscall"
- "unsafe"
-)
-
-//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so"
-//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
-
-//go:linkname procGetsockopt libc___xnet_getsockopt
-//go:linkname procSetsockopt libc_setsockopt
-
-var (
- procGetsockopt uintptr
- procSetsockopt uintptr
-)
-
-func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0)
- if errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv6/syscall_unix.go b/vendor/golang.org/x/net/ipv6/syscall_unix.go
deleted file mode 100644
index 58a75b528..000000000
--- a/vendor/golang.org/x/net/ipv6/syscall_unix.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build darwin dragonfly freebsd linux,!386 netbsd openbsd
-
-package ipv6
-
-import (
- "syscall"
- "unsafe"
-)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
- return error(errno)
- }
- return nil
-}
diff --git a/vendor/golang.org/x/net/ipv6/syscall_windows.go b/vendor/golang.org/x/net/ipv6/syscall_windows.go
deleted file mode 100644
index c1f649d38..000000000
--- a/vendor/golang.org/x/net/ipv6/syscall_windows.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ipv6
-
-import (
- "syscall"
- "unsafe"
-)
-
-func getsockopt(s uintptr, level, name int, v unsafe.Pointer, l *uint32) error {
- return syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), (*int32)(unsafe.Pointer(l)))
-}
-
-func setsockopt(s uintptr, level, name int, v unsafe.Pointer, l uint32) error {
- return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(v), int32(l))
-}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go
index f5a410945..73aa8c6df 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go
index f5a410945..73aa8c6df 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go
index f5a410945..73aa8c6df 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go
index f5a410945..73aa8c6df 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go
index be2dbd666..c9bf6a87e 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x104
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x8
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go
index f9376b65c..b64f0157d 100644
--- a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go
+++ b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go
@@ -98,6 +98,8 @@ const (
sizeofGroupSourceReq = 0x108
sizeofICMPv6Filter = 0x20
+
+ sizeofSockFprog = 0x10
)
type kernelSockaddrStorage struct {
diff --git a/vendor/golang.org/x/net/nettest/conntest.go b/vendor/golang.org/x/net/nettest/conntest.go
index f5b0b7bcf..5bd3a8c68 100644
--- a/vendor/golang.org/x/net/nettest/conntest.go
+++ b/vendor/golang.org/x/net/nettest/conntest.go
@@ -12,6 +12,7 @@ import (
"io/ioutil"
"math/rand"
"net"
+ "runtime"
"sync"
"testing"
"time"
@@ -341,6 +342,9 @@ func testCloseTimeout(t *testing.T, c1, c2 net.Conn) {
// testConcurrentMethods tests that the methods of net.Conn can safely
// be called concurrently.
func testConcurrentMethods(t *testing.T, c1, c2 net.Conn) {
+ if runtime.GOOS == "plan9" {
+ t.Skip("skipping on plan9; see https://golang.org/issue/20489")
+ }
go chunkedCopy(c2, c2)
// The results of the calls may be nonsensical, but this should
diff --git a/vendor/golang.org/x/net/publicsuffix/list_test.go b/vendor/golang.org/x/net/publicsuffix/list_test.go
index a08e64eaf..42d79cc43 100644
--- a/vendor/golang.org/x/net/publicsuffix/list_test.go
+++ b/vendor/golang.org/x/net/publicsuffix/list_test.go
@@ -216,13 +216,13 @@ var publicSuffixTestCases = []struct {
{"aaa.xn--p1ai", "xn--p1ai"},
{"www.xxx.yyy.xn--p1ai", "xn--p1ai"},
- // The .zw rules are:
- // *.zw
- {"zw", "zw"},
- {"www.zw", "www.zw"},
- {"zzz.zw", "zzz.zw"},
- {"www.zzz.zw", "zzz.zw"},
- {"www.xxx.yyy.zzz.zw", "zzz.zw"},
+ // The .bd rules are:
+ // *.bd
+ {"bd", "bd"},
+ {"www.bd", "www.bd"},
+ {"zzz.bd", "zzz.bd"},
+ {"www.zzz.bd", "zzz.bd"},
+ {"www.xxx.yyy.zzz.bd", "zzz.bd"},
// There are no .nosuchtld rules.
{"nosuchtld", "nosuchtld"},
diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go
index 5db1e6986..50f070a92 100644
--- a/vendor/golang.org/x/net/publicsuffix/table.go
+++ b/vendor/golang.org/x/net/publicsuffix/table.go
@@ -2,7 +2,7 @@
package publicsuffix
-const version = "publicsuffix.org's public_suffix_list.dat, git revision 45a2bf8ef3e22000fbe4bfa5f9252db41d777001 (2017-01-18T01:04:06Z)"
+const version = "publicsuffix.org's public_suffix_list.dat, git revision f47d806df99585862c8426c3e064a50eb5a278f5 (2017-06-14T11:49:01Z)"
const (
nodesBitsChildren = 9
@@ -23,447 +23,453 @@ const (
)
// numTLD is the number of top level domains.
-const numTLD = 1554
+const numTLD = 1549
// Text is the combined text of all labels.
-const text = "bikedagestangeorgeorgiaxagrocerybnikahokutobishimaizuruhreportar" +
- "nobrzegyptianaturalhistorymuseumcentereviewskrakoweddinggfarmers" +
- "einexus-2bilbaogakievenesalangenikiiyamanouchikuhokuryugasakitau" +
- "rayasudabillustrationikkoebenhavnikolaevennodessagamiharabiomuta" +
- "shinainfinitintuitattoolsztynsettlersalondonetskarpaczeladzjcbre" +
- "mangerbirdartcenterprisesakikuchikuseikarugapartmentsaltdalimoli" +
- "serniabirkenesoddtangenovaravennagasukeverbankaruizawabirthplace" +
- "vje-og-hornnesalvadordalibabajddarchaeologyusuisserveexchangebja" +
- "rkoyuufcfanikonantanangerbjerkreimbalsanagochihayaakasakawaharau" +
- "malopolskanlandds3-us-west-1bjugninohekinannestadrangedalindasda" +
- "burblockbusternidray-dnsupdaterbloombergbauerninomiyakonojosoyro" +
- "rosalzburgjovikarumaifarmsteadraydnsamegawabloxcmsamnangerblueda" +
- "ncebmoattachmentsamsclubindalindesnesamsungladell-ogliastraderbm" +
- "sandvikcoromantovalle-d-aostatic-accessanfranciscofreakunemurora" +
- "ngeiseiyoichiropracticasinordre-landrivelandrobaknoluoktabuseekl" +
- "ogesurancertmgretachikawakkanaibetsubamericanfamilydscloudcontro" +
- "lledekafjordrudunsangoppdalivornobmweirbnpparibaselburglassassin" +
- "ationalheritagematsubarakawagoebnrwfarsundupontariobonnirasakinu" +
- "yamashinashikitchenishiazainvestmentsanjournalismailillesandefjo" +
- "rdurbanamexhibitionishigobookingliwicebootsannanishiharaboschaef" +
- "flerdalomzaporizhzhegurinzais-a-bulls-fanishiizunazukis-a-candid" +
- "atebostikasaokamiminersannohelplfinancialorenskoglobalashovhachi" +
- "nohedmarkashibatakasakiyokawarabostonakijinsekikogentinglobodoes" +
- "-itvedestrandurhamburglogowhalingloppenzaogashimadachicagoboatsa" +
- "nokashiharabotanicalgardenishikatakayamatta-varjjataxihuanishika" +
- "tsuragithubusercontentgoryuzawabotanicgardenishikawazukamitondab" +
- "ayashiogamagoriziabotanybouncemerckmsdnipropetrovskjakdnepropetr" +
- "ovskiervaapsteiermarkashiwarabounty-fullensakerrypropertiesantab" +
- "arbaraboutiquebecngmbhartiffanybozentsujiiebradescorporationishi" +
- "merabrandywinevalleybrasiliabresciabrindisibenikebristoloslocalh" +
- "istoryggeelvinckashiwazakiyosatokashikiyosemitebritishcolumbialo" +
- "wiezachpomorskienishinomiyashironobroadcastlefrakkestadvrcambrid" +
- "gestonextdirectjeldsundvrdnsantacruzsantafedextraspacekitagataji" +
- "rittogoldpoint2thisamitsukebroadwaybroke-itjmaxxxboxenapponazure" +
- "-mobilebrokerbronnoysundwgminakamichiharabrothermesaverdeatnurem" +
- "bergmodellingmxfinitybrowsersafetymarketsanukis-a-catererbrumund" +
- "dalotenkawabrunelasticbeanstalkasukabedzin-the-bandaikawachinaga" +
- "noharamcoalaskanittedallasalleasinglest-mon-blogueurovisionthewi" +
- "fiat-band-campaniabrusselsaotomemergencyberlevagangaviikanonjis-" +
- "a-celticsfanishinoomotegobruxellesapodlasiellakasamatsudovre-eik" +
- "erbryanskjervoyagebrynewhampshirebungoonordlandyndns-at-workingg" +
- "roupalacebuskerudinewjerseybuzenishinoshimattelefonicarbonia-igl" +
- "esias-carboniaiglesiascarboniabuzzlgrimstadyndns-blogdnsapporobw" +
- "hoswhokksundyndns-freebox-ostrowiecateringebuilderschmidtre-gaul" +
- "dalottebzhitomirumalselvendrellottokonamegatakasugais-a-chefashi" +
- "onishiokoppegardyndns-homednsardegnamsskoganeis-a-conservativefs" +
- "nillfjordyndns-ipaleocondoshichinohealth-carereformitakeharaconf" +
- "erenceconstructionconsuladoesntexistanbullensvanguardyndns-wikin" +
- "dlegokasells-for-lessaudaconsultanthropologyconsultingvolluxuryc" +
- "ontactoyookanmakiwakunigamifunecontemporaryarteducationalchikugo" +
- "doharuovatoyosatoyakokonoecontractorskenconventureshinodesashibe" +
- "tsuikinderoycookingchannelblagdenesnaaseralingenkainanaejrietisa" +
- "latinabenonichernihivanovodkagoshimalvikasumigaurawa-mazowszexjc" +
- "palermomahachijorpelandyndns-mailouvreisenishitosashimizunaminam" +
- "iashigaracoolkuszkoladbrokesauheradyndns-workisboringrpamperedch" +
- "efastlylbaltimore-og-romsdalwaysdatabaseballangenoamishirasatoch" +
- "igiessenebakkeshibechambagriculturennebudejjudygarlandigitalavan" +
- "genavigationavuotnaklodzkodairamusementarumizusawabruzzoologyeon" +
- "gbuk12cooperaunitemasekatsushikabeeldengeluidyndns1copenhagencyc" +
- "lopedichernivtsiciliacorsicagliarightathomeftpanamacorvettenriku" +
- "zentakataitogliattiresavannahgacosenzaganquannakadomaritimekeepi" +
- "ngatlantaijis-a-financialadvisor-aurdaluzerncosidnsfor-better-th" +
- "anawawildlifedjeffersoncostumedio-campidano-mediocampidanomedioc" +
- "ouchpotatofriesaves-the-whalessandria-trani-barletta-andriatrani" +
- "barlettaandriacouncilvivano-frankivskatsuyamasfjordencouponsavon" +
- "aplesaxocoursesbschokoladencq-acranbrookuwanalyticscholarshipsch" +
- "oolcreditcardynnschulezajskydivingruecreditunioncremonashorokana" +
- "iecrewilliamhillcricketrzyncrimeastcoastaldefencecrotonewyorkshi" +
- "recipesaro-urbino-pesarourbinopesaromasvuotnaharimamurogawacrown" +
- "providercrsvpanasonichernovtsykkylvenetogakushimotoganewportllig" +
- "atjxn--0trq7p7nnishiwakis-a-cpadoval-daostavalleycruiseschwarzgw" +
- "angjuegoshikiminokamoenairtraffichiryukyuragifuchungbukasuyaltak" +
- "ashimaseratis-a-cubicle-slavellinowtvalleaostatoilowiczest-le-pa" +
- "trondheimmobilienissandnessjoenissayokoshibahikariwanumatakazaki" +
- "s-a-democratkmaxxn--11b4c3dyndns-office-on-the-webcampobassociat" +
- "esardiniacryptonomichigangwoncuisinellahppiacenzakopanerairguard" +
- "ynv6culturalcentertainmentoyotaris-a-geekgalaxycuneocupcakecxn--" +
- "1ctwolominamatakkokaminokawanishiaizubangecymrussiacyonabarulsan" +
- "doycyouthdfcbankaufenfiguerestaurantoyotomiyazakis-a-greenfilate" +
- "liafilminamiawajikis-a-guruslivinghistoryfinalfinancefineartscie" +
- "ntistoragefinlandfinnoyfirebaseapparliamentoyotsukaidownloadfire" +
- "nzefirestonefirmdaleirfjordfishingolffanscjohnsonfitjarqhachioji" +
- "yahikobeatscotlandfitnessettlementoyourafjalerflesbergushikamifu" +
- "ranoshiroomuraflickragerotikakamigaharaflightscrapper-siteflirfl" +
- "ogintogurafloraflorencefloridavvesiidazaifudaigojomedizinhistori" +
- "schescrappingxn--1lqs71dfloristanohatakahamaniwakuratexascolipic" +
- "enord-aurdalipayflorogerserveftparmaflowerservegame-serversaille" +
- "servehalflifestyleflynnhubambleclercartoonartdecoldwarmiamibugat" +
- "tipschlesisches3-us-west-2fndfoodnetworkshoppingfor-ourfor-somee" +
- "thnologyfor-theaterforexrothruherecreationforgotdnservehttparoch" +
- "erkasyno-dservehumourforli-cesena-forlicesenaforlikescandynamic-" +
- "dnserveirchitachinakagawatchandclockaszubyforsaleirvikazoforsand" +
- "asuoloftoystre-slidrettozawafortmissoulair-traffic-controlleyfor" +
- "tworthachirogatakahatakaishimogosenforuminamibosogndalfosneserve" +
- "minecraftozsdev-myqnapcloudcontrolappspotagerfotaruis-a-hard-wor" +
- "kerfoxfordedyn-ip24freeboxoservemp3utilitiesquarezzoologicalvink" +
- "lein-addrammenuernbergdyniabogadocscbnl-o-g-i-nativeamericananti" +
- "ques3-ap-northeast-1kappchizippodhaleangaviikadenadexeterepbodyn" +
- "athomebuilt3l3p0rtargets-itargiving12000emmafanconagawakayamadri" +
- "dvagsoyericssonyoursidealerimo-i-ranaamesjevuemielno-ip6freemaso" +
- "nryfreiburgfreightcminamidaitomangotsukisosakitagawafreseniuscou" +
- "ntryestateofdelawaredstonefribourgfriuli-v-giuliafriuli-ve-giuli" +
- "afriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-" +
- "vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-" +
- "giuliafriuliveneziagiuliafriulivgiuliafrlfroganservep2parservepi" +
- "cservequakefrognfrolandfrom-akrehamnfrom-alfrom-arfrom-azwinbana" +
- "narepublicasadelamonedatsunanjoburgjerstadotsuruokakegawasnesodd" +
- "enmarkhangelskiptveterinairealtychyattorneyagawalmartatamotors3-" +
- "ap-south-1from-capebretonamiastapleservesarcasmatartanddesignfro" +
- "m-collectionfrom-ctrani-andria-barletta-trani-andriafrom-dchitos" +
- "etogitsuldalucaniafrom-defenseljordfrom-flanderservicesettsurgeo" +
- "nshalloffamemorialfrom-gausdalfrom-higashiagatsumagoizumizakiraf" +
- "rom-iafrom-idfrom-ilfrom-incheonfrom-ksevastopolefrom-kyowariasa" +
- "hikawafrom-lajollamericanexpressexyfrom-mannortonsbergfrom-mdfro" +
- "m-megurokunohealthcareersevenassisicilyfrom-midoris-a-hunterfrom" +
- "-mnfrom-mochizukirkenesewindmillfrom-msfranziskanerdpolicefrom-m" +
- "tnfrom-nchloefrom-ndfrom-nefrom-nhktraniandriabarlettatraniandri" +
- "afrom-njelenia-gorafrom-nminamiechizenfrom-nvalled-aostavangerfr" +
- "om-nyfrom-ohkurafrom-oketohmansionshangrilanciafrom-orfrom-pader" +
- "bornfrom-pratohnoshoooshikamaishimodatextileitungsenfrom-ris-a-k" +
- "nightpointtokaizukameokameyamatotakadafrom-schoenbrunnfrom-sdfro" +
- "m-tnfrom-txn--1qqw23afrom-utazuerichardlillehammerfeste-ipartis-" +
- "a-landscaperfrom-vaksdalfrom-vtranoyfrom-wafrom-wielunnerfrom-wv" +
- "alledaostavernfrom-wyfrosinonefrostalowa-wolawafroyahababyglandf" +
- "stcgroupartnersharis-a-lawyerfujiiderafujikawaguchikonefujiminoh" +
- "tawaramotoineppubolognakanotoddenfujinomiyadafujiokayamanxn--2m4" +
- "a15efujisatoshonairportland-4-salernoboribetsucksharpartshawaiij" +
- "imarugame-hostrodawarafujisawafujishiroishidakabiratoridegreefuj" +
- "itsurugashimamateramodalenfujixeroxn--30rr7yfujiyoshidafukayabea" +
- "rdubaiduckdnshellaspeziafukuchiyamadafukudominichocolatelevision" +
- "issedaluccapitalonewmexicoffeedbackplaneapplinzis-a-designerimar" +
- "umorimachidafukuis-a-liberalfukumitsubishigakirovogradoyfukuokaz" +
- "akiryuohadanotaireshimojis-a-libertarianfukuroishikarikaturindal" +
- "fukusakisarazurewebsiteshikagamiishibukawafukuyamagatakaharustka" +
- "noyakagefunabashiriuchinadafunagatakahashimamakishiwadafunahashi" +
- "kamiamakusatsumasendaisennangonohejis-a-linux-useranishiaritabas" +
- "hijonawatefundaciofuoiskujukuriyamaoris-a-llamarylandfuosskoczow" +
- "indowshimokawafurnituredumbrellanbibaidarfurubiraquarelleborkang" +
- "erfurudonostiaarpartyfurukawairtelecityeatshimokitayamafusodegau" +
- "rafussaikisofukushimapasadenamsosnowiechofunatorientexpressarluc" +
- "ernefutabayamaguchinomigawafutboldlygoingnowhere-for-moregontrai" +
- "lroadfuttsurugimperiafuturehostingfuturemailingfvgfyis-a-musicia" +
- "nfylkesbiblackfridayfyresdalhangglidinghangoutsystemscloudfrontd" +
- "oorhannanmokuizumodenakasatsunais-a-painteractivegarsheis-a-pats" +
- "fanhannotteroyhanyuzenhapmirhareidsbergenharstadharvestcelebrati" +
- "onhasamarnardalhasaminami-alpssells-itransportransurlhashbanghas" +
- "udahasura-appassenger-associationhasvikazunohatogayahoohatoyamaz" +
- "akitahiroshimarriottrapaniimimatakatoris-a-personaltrainerhatsuk" +
- "aichikaiseis-a-photographerokuappaviancargodaddynaliascoli-picen" +
- "oipirangamvikddielddanuorrissagaeroclubmedecincinnationwidealsta" +
- "haugesunderseaportsinfolldalabamagasakishimabarackmazehattfjelld" +
- "alhayashimamotobungotakadapliernewhollandhazuminobusellsyourhome" +
- "goodshimotsumahboehringerikehelsinkitakamiizumisanofidelitysvard" +
- "ollshinichinanhembygdsforbundhemneshinjournalistjohnhemsedalhepf" +
- "orgeherokussldheroyhgtvallee-aosteroyhigashichichibunkyonanaoshi" +
- "mageandsoundandvisionhigashihiroshimanehigashiizumozakitakatakam" +
- "oriokalmykiahigashikagawahigashikagurasoedahigashikawakitaaikita" +
- "kyushuaiahigashikurumeiwamarshallstatebankfhappouhigashimatsushi" +
- "maritimodernhigashimatsuyamakitaakitadaitoigawahigashimurayamamo" +
- "torcycleshinjukumanohigashinarusembokukitamidsundhigashinehigash" +
- "iomihachimanchesterhigashiosakasayamanakakogawahigashishirakawam" +
- "atakanabeautydalhigashisumiyoshikawaminamiaikitamotosumitakagild" +
- "eskaliszhigashitsunowruzhgorodeohigashiurausukitanakagusukumodum" +
- "inamiiselectravelchannelhigashiyamatokoriyamanashifteditchyourip" +
- "fizerhigashiyodogawahigashiyoshinogaris-a-playerhiraizumisatohob" +
- "by-sitehirakatashinagawahiranais-a-republicancerresearchaeologic" +
- "aliforniahirarahiratsukagawahirayaitakanezawahistorichouseshinka" +
- "migotoyohashimotoshimahitachiomiyaginankokubunjis-a-rockstaracho" +
- "wicehitachiotagooglecodespotravelersinsurancehitraeumtgeradeloit" +
- "tevadsoccertificationhjartdalhjelmelandholeckobierzyceholidayhom" +
- "eipgfoggiahomelinkhakassiahomelinuxn--32vp30haebaruminamifuranoh" +
- "omeofficehomesecuritymaceratakaokaluganskodjejuifminamiizukamiok" +
- "amikitayamatsuris-a-socialistmein-vigorgehomesecuritypccwinnersh" +
- "inshinotsurgeryhomesenseminehomeunixn--3bst00minamimakis-a-soxfa" +
- "nhondahoneywellbeingzonehongopocznosegawahonjyoitakarazukamakura" +
- "zakitashiobarahornindalhorseoulminamiminowahortendofinternet-dns" +
- "hinshirohospitalhoteleshintokushimahotmailhoyangerhoylandetroits" +
- "kolelhumanitieshintomikasaharahurdalhurumajis-a-studentalhyllest" +
- "adhyogoris-a-teacherkassymantechnologyhyugawarahyundaiwafunehzch" +
- "onanbuildingripescaravantaajlchoyodobashichikashukujitawarajlljm" +
- "pharmacienshirakofuefukihaboromskoguchikuzenjnjeonnamerikawauejo" +
- "yokaichibahcavuotnagaranzannefrankfurtrentino-alto-adigejpmorgan" +
- "jpnjprshiranukamogawajuniperjurkoshunantokigawakosugekotohiradom" +
- "ainsureggiocalabriakotourakouhokutamakis-an-artisteinkjerusalemb" +
- "roiderykounosupplieshiraokanagawakouyamashikokuchuokouzushimasoy" +
- "kozagawakozakis-an-engineeringkpnkppspdnshiratakahagivestbytomar" +
- "idagawassamukawataricohdatingkrasnodarkredirectmeldalkristiansan" +
- "dcatshishikuis-an-entertainerkristiansundkrodsheradkrokstadelval" +
- "daostarostwodzislawioshisognekryminamisanrikubetsupportrentino-a" +
- "ltoadigekumatorinokumejimasudakumenanyokkaichirurgiens-dentistes" +
- "-en-francekunisakis-bykunitachiarailwaykunitomigusukumamotoyamas" +
- "sa-carrara-massacarraramassabusinessebyklegallocus-1kunneppulawy" +
- "kunstsammlungkunstunddesignkuokgrouphdkureggioemiliaromagnakayam" +
- "atsumaebashikshacknetrentino-s-tirollagrigentomologyeonggiehtavu" +
- "oatnagaivuotnagaokakyotambabia-goracleaningkurgankurobelaudibleb" +
- "timnetzkurogimilanokuroisoftwarendalenugkuromatsunais-certifiedo" +
- "gawarabikomaezakirunorthwesternmutualkurotakikawasakis-foundatio" +
- "nkushirogawakusupplykutchanelkutnokuzumakis-gonekvafjordkvalsund" +
- "kvamfamberkeleykvanangenkvinesdalkvinnheradkviteseidskogkvitsoyk" +
- "wpspiegelkzmissilevangermisugitokorozawamitourismolancastermitoy" +
- "oakemiuramiyazumiyotamanomjondalenmlbfanmonmouthagebostadmonster" +
- "monticellombardiamondshisuifuelveruminamitanemontrealestatefarme" +
- "quipmentrentino-stirolmonza-brianzaporizhzhiamonza-e-della-brian" +
- "zapposhitaramamonzabrianzaptokuyamatsusakahoginowaniihamatamakaw" +
- "ajimarburgmonzaebrianzaramonzaedellabrianzamoparachutingmordovia" +
- "jessheiminamiuonumatsumotofukemoriyamatsushigemoriyoshimilitarym" +
- "ormoneymoroyamatsuuramortgagemoscowitdkmpspbarcelonagasakijobser" +
- "verisignieznord-odalaziobihirosakikamijimassnasaarlandd-dnshome-" +
- "webservercellikes-piedmontblancomeeres3-ap-southeast-1moseushist" +
- "orymosjoenmoskeneshizukuishimofusaitamatsukuris-into-gamessinats" +
- "ukigatakasagotembaixadamosshizuokananporovigotpantheonsitemosvik" +
- "nx-serveronakatsugawamoteginozawaonsenmoviemovistargardmtpchrist" +
- "masakikugawatchesarufutsunomiyawakasaikaitakoelniyodogawamtranby" +
- "muenstermugithubcloudusercontentrentino-sud-tirolmuikamisatokama" +
- "chippubetsubetsugarumukochikushinonsenergymulhouservebeermunakat" +
- "anemuncieszynmuosattemuphiladelphiaareadmyblogsitemurmanskolobrz" +
- "egersundmurotorcraftrentino-sudtirolmusashimurayamatsuzakis-leet" +
- "rdmusashinoharamuseetrentino-sued-tirolmuseumverenigingmutsuzawa" +
- "mutuellewismillermy-vigorlicemy-wanggouvicenzamyactivedirectorym" +
- "yasustor-elvdalmycdn77-securechtrainingmydissentrentino-suedtiro" +
- "lmydrobofagemydshoujis-lostre-toteneis-a-techietis-a-therapistoi" +
- "amyeffectrentinoa-adigemyfirewallonieruchomoscienceandindustrynm" +
- "yfritzmyftpaccesshowamyfusionmyhome-serverrankoshigayamelhusgard" +
- "enmykolaivaolbia-tempio-olbiatempioolbialystokkepnogiftshowtimet" +
- "eorapphilatelymymediapchromedicaltanissettairamyokohamamatsudamy" +
- "pepsongdalenviknakanojohanamakinoharamypetshriramlidlugolekagami" +
- "nogatagajobojis-not-certifieducatorahimeshimakanegasakinkobayash" +
- "ikaoirminamiogunicomcastresistancemyphotoshibahccavuotnagareyama" +
- "lborkdalvdalcesienarashinomypsxn--3e0b707emysecuritycamerakermys" +
- "hopblocksigdalmyvnchryslerpictetrentinoaadigepicturesimple-urlpi" +
- "emontepilotsirdalpimientaketomisatolgapinkomakiyosunndalpioneerp" +
- "ippuphoenixn--3oq18vl8pn36apiszpittsburghofauskedsmokorsetagayas" +
- "ells-for-ulvikautokeinopiwatepizzapkomatsushimashikizunokunimiho" +
- "boleslawiechristiansburgriwataraidyndns-picsarpsborgroks-thisaya" +
- "manobeokakudamatsueplanetariuminamiyamashirokawanabellevuelosang" +
- "elesjaguarchitecturealtorlandplantationplantslingplatforminanopl" +
- "aystationplazaplchungnamdalseidfjordyndns-remotewdyndns-serverda" +
- "luroyplombardynamisches-dnslupskomforbarclaycards3-website-ap-no" +
- "rtheast-1plumbingopmnpodzonepohlpoivronpokerpokrovskommunalforbu" +
- "ndpolitiendapolkowicepoltavalle-aostathellexusdecorativeartsnoas" +
- "aitomobellunorddalpomorzeszowithgoogleapisa-hockeynutsiracusakat" +
- "akinouepordenonepornporsangerporsanguidelmenhorstalbansokanazawa" +
- "porsgrunnanpoznanpraxis-a-bookkeeperugiaprdpreservationpresidiop" +
- "rgmrprimeloyalistockholmestrandprincipeprivatizehealthinsurancep" +
- "rochowiceproductionsokndalprofbsbxn--1lqs03nprogressivegasiaproj" +
- "ectrentinoalto-adigepromombetsurfbx-ostrowwlkpmgulenpropertyprot" +
- "ectionprotonetrentinoaltoadigeprudentialpruszkowithyoutubentleyp" +
- "rzeworskogptplusterpvtrentinos-tirolpwchurchaseljeepostfoldnavyp" +
- "zqldqponqslgbtrentinostirolquicksytesolarssonqvcirclegnicafedera" +
- "tionstufftoread-booksnesolundbeckommunestuttgartrentoyokawasusak" +
- "is-slickharkovalleeaosteigensusonosuzakaneyamazoesuzukaniepcesuz" +
- "ukis-uberleetrentino-a-adigesvalbardunloppacificircustomersveios" +
- "velvikomvuxn--3ds443gsvizzeraswedenswidnicarrierswiebodzindianap" +
- "olis-a-bloggerswiftcoversicherungswinoujscienceandhistoryswisshi" +
- "kis-very-badaddjamisonsynology-dsolutionsolognetuscanytushuissie" +
- "r-justicetuvalle-daostaticsootuxfamilyvenneslaskerrylogisticsopo" +
- "trentinosud-tirolvestfoldvestnesor-odalvestre-slidreamhostersor-" +
- "varangervestre-totennishiawakuravestvagoyvevelstadvibo-valentiav" +
- "ibovalentiavideovillaskoyabearalvahkihokumakogengerdalpha-myqnap" +
- "cloudapplebesbydgoszczecinemakeupowiathletajimabariakembuchikuma" +
- "gayagawakuyabukicks-assedicitadeliveryvinnicartiervinnytsiavipsi" +
- "naapphonefossilkomaganevirginiavirtualvirtueeldomeindianmarketin" +
- "gvirtuelvisakegawavistaprinternationalfirearmsorfoldviterboltroa" +
- "ndinosaurepaircraftrevisohughesomavivoldavlaanderenvladikavkazim" +
- "ierz-dolnyvladimirvlogoiphotographysiovolkswagentsorreisahayakaw" +
- "akamiichikawamisatotalvologdanskongsvingervolvolkenkundenvolyngd" +
- "alvossevangenvotevotingvotoyonakagyokutoursortlandworldworse-tha" +
- "ndawowiwatsukiyonowritesthisblogsytewroclawloclawekoninjavald-ao" +
- "starnbergwtciticatholicheltenham-radio-opencraftranagatorodoywtf" +
- "bxosciencecentersciencehistorywuozuwwwmflabsorumincommbanklabudh" +
- "abikinokawabarthagakhanamigawawzmiuwajimaxn--4gq48lf9jetztrentin" +
- "o-aadigexn--4it168dxn--4it797konsulatrobeepilepsydneyxn--4pvxsou" +
- "thcarolinazawaxn--54b7fta0ccivilizationxn--55qw42gxn--55qx5dxn--" +
- "5js045dxn--5rtp49civilwarmanagementmpalmspringsakerxn--5rtq34kon" +
- "yvelolxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2r" +
- "xn--6qq986b3xlxn--7t0a264claimsasayamaxn--80adxhksouthwestfalenx" +
- "n--80ao21axn--80aqecdr1axn--80asehdbarefootballooningjesdalillyo" +
- "mbondiscountysnes3-website-ap-southeast-2xn--80aswgxn--80audneda" +
- "lnxn--8ltr62kooris-an-actorxn--8pvr4uxn--8y0a063axn--90a3academy" +
- "-firewall-gatewayxn--90aishobaraomoriguchiharahkkeravjuedischesa" +
- "peakebayernrtrogstadxn--90azhytomyrxn--9dbhblg6dietcimdbargainst" +
- "itutelemarkaratsuginamikatagamiharuconnectatarantottoribestadisc" +
- "overyomitanobirastronomy-gatewayokosukanzakiwienaturalsciencesna" +
- "turelles3-ap-southeast-2xn--9dbq2axn--9et52uxn--9krt00axn--andy-" +
- "iraxn--aroport-byanaizuxn--asky-iraxn--aurskog-hland-jnbarreauct" +
- "ionayorovnobninskarelianceu-1xn--avery-yuasakuhokkaidontexistein" +
- "geekopervikhmelnitskiyamashikexn--b-5gaxn--b4w605ferdxn--bck1b9a" +
- "5dre4clickatowicexn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-jx" +
- "axn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuuraxn-" +
- "-bievt-0qa2xn--bjarky-fyandexn--3pxu8konskowolayangroupharmacysh" +
- "iraois-an-accountantshinyoshitomiokamitsuexn--bjddar-ptamayufuet" +
- "tertdasnetzxn--blt-elabourxn--bmlo-graingerxn--bod-2naroyxn--brn" +
- "ny-wuaccident-investigation-aptibleaseating-organicbcn-north-1xn" +
- "--brnnysund-m8accident-prevention-webhopenairbusantiquest-a-la-m" +
- "aisondre-landebudapest-a-la-masionionjukudoyamagazineat-urlxn--b" +
- "rum-voagatromsakakinokiaxn--btsfjord-9zaxn--c1avgxn--c2br7gxn--c" +
- "3s14mintelligencexn--cck2b3barrel-of-knowledgemologicallyngenvir" +
- "onmentalconservationflfanfshostrolekamisunagawaugustowadaegubs3-" +
- "ca-central-1xn--cg4bkis-very-evillagexn--ciqpnxn--clchc0ea0b2g2a" +
- "9gcdn77-sslattumisakis-into-carshioyanagawaxn--comunicaes-v6a2ox" +
- "n--correios-e-telecomunicaes-ghc29axn--czr694barrell-of-knowledg" +
- "eologyonagoyaukraanghkeymachineustarhubalestrandabergamoareke164" +
- "xn--czrs0tromsojaworznoxn--czru2dxn--czrw28bashkiriaurskog-holan" +
- "droverhalla-speziaeroportalaheadjudaicaaarborteaches-yogasawarac" +
- "ingroks-theatree12xn--d1acj3basilicataniaustevollarvikarasjokara" +
- "suyamarylhurstjordalshalsenaturbruksgymnaturhistorisches3-eu-cen" +
- "tral-1xn--d1alfaromeoxn--d1atrusteexn--d5qv7z876clinichernigover" +
- "nmentjometlifeinsurancexn--davvenjrga-y4axn--djrs72d6uyxn--djty4" +
- "koryokamikawanehonbetsurutaharaxn--dnna-grajewolterskluwerxn--dr" +
- "bak-wuaxn--dyry-iraxn--e1a4cliniquenoharaxn--eckvdtc9dxn--efvn9s" +
- "owaxn--efvy88haibarakitahatakamatsukawaxn--ehqz56nxn--elqq16hair" +
- "-surveillancexn--estv75gxn--eveni-0qa01gaxn--f6qx53axn--fct429ko" +
- "saigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hspjelkavikomonoxn--" +
- "fiq64basketballfinanzgoraustinnatuurwetenschappenaumburgjemnes3-" +
- "eu-west-1xn--fiqs8spreadbettingxn--fiqz9spydebergxn--fjord-lraxn" +
- "--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-" +
- "grandrapidsrlxn--frna-woaraisaijotrvarggatritonxn--frya-hraxn--f" +
- "zc2c9e2clintonoshoesaseboknowsitallutskypexn--fzys8d69uvgmailxn-" +
- "-g2xx48clothingrondarxn--gckr3f0fermobilyxn--gecrj9cloudnsdojoet" +
- "suwanouchikujogaszczytnore-og-uvdaluxembourgrongaxn--ggaviika-8y" +
- "a47hakatanotogawaxn--gildeskl-g0axn--givuotna-8yaotsurreyxn--gjv" +
- "ik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-very-goodhandsonxn" +
- "--gmqw5axn--h-2failxn--h1aeghakodatexn--h2brj9cnsaskatchewanxn--" +
- "hbmer-xqaxn--hcesuolo-7ya35batodayonaguniversityoriikariyakumold" +
- "eltaiwanairlinedre-eikerxn--hery-iraxn--hgebostad-g3axn--hmmrfea" +
- "sta-s4acctrysiljan-mayenxn--hnefoss-q1axn--hobl-iraxn--holtlen-h" +
- "xaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b" +
- "6b1a6a2exn--imr513nxn--indery-fyasakaiminatoyonezawaxn--io0a7is-" +
- "very-nicexn--j1aeferraraxn--j1amhakonexn--j6w193gxn--jlq61u9w7ba" +
- "tsfjordishakotankarlsoyoshiokarasjohkamikoaniikappugliaustraliai" +
- "sondriodejaneirochesterhcloudfunctions3-external-1xn--jlster-bya" +
- "sugis-very-sweetpepperxn--jrpeland-54axn--jvr189misasaguris-into" +
- "-cartoonshirahamatonbetsurnadalxn--k7yn95exn--karmy-yuaxn--kbrq7" +
- "oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dx" +
- "n--kltx9axn--klty5xn--42c2d9axn--koluokta-7ya57hakubadajozorahol" +
- "taleniwaizumiotsukumiyamazonawsabaerobaticketshimonosekikawaxn--" +
- "kprw13dxn--kpry57dxn--kpu716ferrarivnexn--kput3is-with-thebandoo" +
- "mdnsiskinkyotobetsumidatlantichoseiroumuenchenisshingugexn--krag" +
- "er-gyasuokanraxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn" +
- "--krjohka-hwab49jevnakershuscultureggio-emilia-romagnakatombetsu" +
- "my-routerxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatomitamamurax" +
- "n--kvnangen-k0axn--l-1fairwindsrtrentinosudtirolxn--l1accenturek" +
- "lamborghiniizaxn--laheadju-7yatsukanumazuryxn--langevg-jxaxn--lc" +
- "vr32dxn--ldingen-q1axn--leagaviika-52bauhausposts-and-telecommun" +
- "icationsncfdivtasvuodnakaiwamizawaustrheimatunduhrennesoyokotebi" +
- "nagisochildrensgardenaustdalavagiskebinorfolkebibleikangerxn--le" +
- "sund-huaxn--lgbbat1ad8jewelryxn--lgrd-poacoachampionshiphoptobam" +
- "agentositelekommunikationlinebraskaunjargallupinbbcaseihichisobe" +
- "tsuitainairforceoceanographics3-website-eu-west-1xn--lhppi-xqaxn" +
- "--linds-pramericanartulangevagrarboretumbriamallamaintenancechir" +
- "ealminnesotaketakatsukis-into-animelbournexn--lns-qlansrvareserv" +
- "eblogspotrentinosued-tirolxn--loabt-0qaxn--lrdal-sraxn--lrenskog" +
- "-54axn--lt-liacntoyonoxn--lten-granexn--lury-iraxn--mely-iraxn--" +
- "merker-kuaxn--mgb2ddestordalxn--mgb9awbferreroticanonoichinomiya" +
- "kexn--mgba3a3ejtunesomnaritakurashikis-savedunetbankharkivguccip" +
- "rianiigataishinomakimobetsuliguriaxn--mgba3a4f16axn--mgba3a4fran" +
- "amizuholdingsmileksvikosakaerodromegalsacebetsukubankhmelnytskyi" +
- "vanylvenicexn--mgba7c0bbn0axn--mgbaakc7dvfetsundynvpnxn--mgbaam7" +
- "a8hakuis-a-nascarfanxn--mgbab2bdxn--mgbai9a5eva00bbtateshinanoma" +
- "chintaifun-dnsaliaskimitsubatamicable-modembetsukuibigawauthorda" +
- "landroiddnskingjerdrumckinseyokozebizenakaniikawatanaguraetnagah" +
- "amaroygardendoftheinternetflixilovecollegefantasyleaguernseyboml" +
- "oans3-ap-northeast-2xn--mgbai9azgqp6jewishartgalleryxn--mgbayh7g" +
- "padualstackspace-to-rentalstomakomaibaraxn--mgbb9fbpobanazawaxn-" +
- "-mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgberp4a5d4a87gxn--m" +
- "gberp4a5d4arxn--mgbi4ecexposedxn--mgbpl2fhskleppiagetmyiphilipsy" +
- "nology-diskstationxn--mgbqly7c0a67fbcolonialwilliamsburgrossetou" +
- "chijiwadellogliastradingroundhandlingroznyxn--mgbqly7cvafredriks" +
- "tadtvstoreitrentinosuedtirolxn--mgbt3dhdxn--mgbtf8flatangerxn--m" +
- "gbtx2bbvacationswatch-and-clockerxn--mgbx4cd0abbottunkongsbergxn" +
- "--mix082fgunmarcheaparisor-fronxn--mix891fhvalerxn--mjndalen-64a" +
- "xn--mk0axindustriesteambulancexn--mk1bu44coloradoplateaudioxn--m" +
- "kru45isleofmandalxn--mlatvuopmi-s4axn--mli-tlanxesstorfjordxn--m" +
- "lselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mosjen-eyatsushir" +
- "oxn--mot-tlapyxn--mre-og-romsdal-qqbeppublishproxyzgorzeleccolog" +
- "newspaperxn--msy-ula0hakusandiegoodyearthadselfipassagenshimonit" +
- "ayanagitlaborxn--mtta-vrjjat-k7afamilycompanycolumbusheyxn--muos" +
- "t-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--45brj9ci" +
- "vilaviationxn--nit225koseis-an-actresshiojirishirifujiedaxn--nme" +
- "sjevuemie-tcbalatinord-frontierxn--nnx388axn--nodexn--nqv7fs00em" +
- "axn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeservecount" +
- "erstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattanooganordreisa-ge" +
- "ekosherbrookegawaxn--o3cw4haldenxn--od0algxn--od0aq3bernuorockar" +
- "tuzyukibmdivttasvuotnakamagayachts3-website-sa-east-1xn--ogbpf8f" +
- "lekkefjordxn--oppegrd-ixaxn--ostery-fyawaraxn--osyro-wuaxn--p1ac" +
- "fidonnakamuratajimicrolightinguovdageaidnunzenxn--p1aissmarterth" +
- "anyouxn--pbt977communitysfjordyndns-weberlincolnxn--pgbs0dhlxn--" +
- "porsgu-sta26fieldyroyrvikinguitarschweizparaglidingujolsterxn--p" +
- "ssu33lxn--pssy2uxn--q9jyb4comobaraxn--qcka1pmcdonaldstpetersburg" +
- "xn--qqqt11misconfusedxn--qxamuneuestreamsterdamnserverbaniaxn--r" +
- "ady-iraxn--rdal-poaxn--rde-ulaquilancashirehabmerxn--rdy-0nabari" +
- "wchoshibuyachiyodavvenjargaulardalukowiiheyaizuwakamatsubushikus" +
- "akadogawaxn--rennesy-v1axn--rhkkervju-01aflakstadaokagakibichuox" +
- "n--rholt-mragowoodsidexn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn" +
- "--risa-5narusawaxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmsk" +
- "og-byawatahamaxn--rny31halsaintlouis-a-anarchistoireggio-calabri" +
- "axn--rovu88beskidyn-vpncasertaipeiheijiinetnedalimanowarudautomo" +
- "tivecodyn-o-saurlandes3-fips-us-gov-west-1xn--rros-granvindafjor" +
- "dxn--rskog-uuaxn--rst-0narutokyotangovturystykannamihamadaxn--rs" +
- "ta-francaiseharaxn--ryken-vuaxn--ryrvik-byaxn--s-1faitheguardian" +
- "xn--s9brj9comparemarkerryhotelsassaris-a-doctorayxn--sandnessjen" +
- "-ogbizxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gratangenxn-" +
- "-skierv-utazaskvolloabathsbcompute-1xn--skjervy-v1axn--skjk-soax" +
- "n--sknit-yqaxn--sknland-fxaxn--slat-5narviikamishihoronobeauxart" +
- "sandcraftstudioxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-a-b" +
- "ruinsfanxn--snase-nraxn--sndre-land-0cbstudyndns-at-homedepotenz" +
- "amamicrosoftbankomorotsukaminoyamaxunusualpersonxn--snes-poaxn--" +
- "snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-va" +
- "ranger-ggbestbuyshouses3-website-us-east-1xn--srfold-byaxn--srre" +
- "isa-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshal" +
- "sen-sqbetainaboxfusejnynysadodgeometre-experts-comptables3-websi" +
- "te-us-west-1xn--stre-toten-zcbieigersundiyukuhashimoichinosekiga" +
- "harautoscanadaejeonbukaratehimeji234xn--t60b56axn--tckweathercha" +
- "nnelxn--tiq49xqyjfkhersonxn--tjme-hraxn--tn0agrinet-freakstuff-4" +
- "-salexn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trgstad-r1axn--t" +
- "rna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4axn--ui" +
- "st22hammarfeastafricapetownnews-stagingxn--uisz3gxn--unjrga-rtao" +
- "baokinawashirosatochiokinoshimalatvuopmiasakuchinotsuchiurakawal" +
- "brzycharternopilawalesundxn--unup4yxn--uuwu58axn--vads-jraxn--va" +
- "rd-jraxn--vegrshei-c0axn--vermgensberater-ctbielawalterxn--vermg" +
- "ensberatung-pwbiellaakesvuemielecceu-2xn--vestvgy-ixa6oxn--vg-yi" +
- "abcgxn--vgan-qoaxn--vgsy-qoa0jgoraxn--vgu402computerhistoryofsci" +
- "ence-fictionxn--vhquvbarclays3-website-ap-southeast-1xn--vler-qo" +
- "axn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bieszczad" +
- "ygeyachimataikikonaioirasebastopologyeongnamegawakeisenbahnhlfan" +
- "hs3-website-us-west-2xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dx" +
- "n--wgbh1comsecuritytacticsatxn--1ck2e1balsfjordgcahcesuolodingen" +
- "aval-d-aosta-valleyolasitemrxn--wgbl6axn--xhq521bievatmallorcada" +
- "quesakuraiitatebayashiibaghdadultateyamaveroykenglanddnss3-sa-ea" +
- "st-1xn--xkc2al3hye2axn--xkc2dl3a5ee0hamurakamigoriginshimosuwalk" +
- "is-a-nurservebbshimotsukexn--y9a3aquariumishimatsunoxn--yer-znar" +
- "vikoshimizumakis-an-anarchistoricalsocietyxn--yfro4i67oxn--ygard" +
- "en-p1axn--ygbi2ammxn--45q11civilisationxn--ystre-slidre-ujbifuka" +
- "gawarszawashingtondclkarmoyurihonjoyentatsunoceanographiquevents" +
- "akyotanabeneventoeidsvollimitednpagefrontappagespeedmobilizerodd" +
- "avocatanzarowegroweibolzanordkappgafanpachigasakidsmynasushiobar" +
- "agusarts3-us-east-2xn--zbx025dxn--zf0ao64axn--zf0avxn--4gbrimini" +
- "ngxn--zfr164bihorologyusuharavoues3-us-gov-west-1xperiaxz"
+const text = "bifukagawalterbihorologybikedagestangeorgeorgiaxasnesoddenmarkha" +
+ "ngelskjakdnepropetrovskiervaapsteiermarkaragandabruzzoologicalvi" +
+ "nklein-addrammenuernberggfarmerseine12bilbaogakidsmynasushiobara" +
+ "gusartsalangeninohekinannestadray-dnsiskinkyotobetsumidatlantica" +
+ "tholicheltenham-radio-opencraftranagatorodoybillustrationinomiya" +
+ "konojosoyrorosalondonetskarpaczeladzjavald-aostarnbergladegreevj" +
+ "e-og-hornnesaltdalimitedraydnsupdaternopilawabioceanographiquebi" +
+ "rdartcenterprisesakikuchikuseikarugamvikaruizawabirkenesoddtange" +
+ "novaraumalopolskanlandrivelandrobaknoluoktachikawakembuchikumaga" +
+ "yagawakkanaibetsubamericanfamilydscloudcontrolledekafjordrudunsa" +
+ "lvadordalibabalatinord-aurdalvdalaskanittedallasalleasinglesuran" +
+ "certmgretagajobojinzais-a-candidatebirthplacebjarkoybjerkreimbal" +
+ "sfjordgcahcesuolocus-1bjugnirasakis-a-catererblockbustermezlglas" +
+ "sassinationalheritagematsubarakawagoebloombergbauernishiazais-a-" +
+ "celticsfanishigoddabloxcmsalzburgliwicebluedancebmoattachmentsam" +
+ "egawabmsamnangerbmwegroweibolzanordkappgafanquannefrankfurtjmaxx" +
+ "xboxenapponazure-mobilebnpparibaselburglobalashovhachinohedmarka" +
+ "rumaifarmsteadupontariomutashinais-a-chefarsundurbanamexnethnolo" +
+ "gybnrweirbonnishiharabookinglobodoes-itvedestrandurhamburglogowf" +
+ "ashionishiizunazukis-a-conservativefsnillfjordvrcambridgestonexu" +
+ "s-2bootsamsclubindalimoliserniaboschaefflerdalindashorokanaiebos" +
+ "tikasaokaminokawanishiaizubangebostonakijinsekikogentingloppenza" +
+ "ogashimadachicagoboatsamsungmbhartiffanybotanicalgardenishikatak" +
+ "ayamatta-varjjatjometlifeinsurancebotanicgardenishikatsuragithub" +
+ "usercontentjxfinitybotanybouncemerckmsdnipropetrovskjervoyagebou" +
+ "nty-fullensakerrypropertiesandvikcoromantovalle-d-aostatic-acces" +
+ "sanfranciscofreakunemurorangeiseiyoichippubetsubetsugaruhrboutiq" +
+ "uebecngminakamichiharabozentsujiiebplacedogawarabikomaezakirunor" +
+ "dlandvrdnsangoppdalindesnesanjournalismailillesandefjordyndns-at" +
+ "-workinggroupaleobrandywinevalleybrasiliabresciabrindisibenikebr" +
+ "istoloslocalhistorybritishcolumbialowiezachpomorskienishikawazuk" +
+ "amitondabayashiogamagoriziabroadcastlegallocalhostrodawaravennag" +
+ "asukebroadwaybroke-itkmaxxjaworznowtvalled-aostavangerbrokerbron" +
+ "noysundyndns-blogdnsannanishimerabrothermesaverdeatnurembergmode" +
+ "nakasatsunais-a-cpadualstackspace-to-rentalstomakomaibarabrowser" +
+ "safetymarketsannohelplfinancialivornobrumunddalombardiamondsanok" +
+ "ashibatakashimaseratis-a-cubicle-slavellinotteroybrunelasticbean" +
+ "stalkashiharabrusselsantabarbarabruxellesantacruzsantafedjeffers" +
+ "onishinomiyashironobryanskleppalermomahachijorpelandyndns-freebo" +
+ "x-ostrowwlkpmgmxn--0trq7p7nnishinoomotegobrynewhollandyndns-home" +
+ "dnsanukis-a-democratmpalmspringsakerbuskerudinewmexicodyn-vpnplu" +
+ "sterbuzenishinoshimattelefonicarbonia-iglesias-carboniaiglesiasc" +
+ "arboniabuzzpamperedchefastlylbaltimore-og-romsdalwaysdatabasebal" +
+ "langenoamishirasatochigiessensiositelemarkarateu-1bwhalingrimsta" +
+ "dyndns-ipirangaulardalombardynamisches-dnsaotomemergencyachtsapo" +
+ "dlasiellaktyubinskiptveterinairealtorlandyndns-mailomzaporizhzhe" +
+ "guris-a-designerimarumorimachidabzhitomirumalselvendrellorenskog" +
+ "ripescaravantaacondoshichinohealth-carereformitakeharaconference" +
+ "constructionconsuladoesntexistanbullensvanguardyndns1consultanth" +
+ "ropologyconsultingvolluroycontactoyotsukaidownloadynnsaskatchewa" +
+ "ncontemporaryarteducationalchikugodoharuovatoyouracontractorsken" +
+ "conventureshinodesashibetsuikinderoycookingchannelblagdenesnaase" +
+ "ralingenkainanaejrietisalatinabenonichernivtsiciliacoolkuszczytn" +
+ "ore-og-uvdalutskasuyameldaluxembourgrpanamacooperaunitenrightath" +
+ "omeftpanasonichernovtsykkylvenetogakushimotoganewspapercopenhage" +
+ "ncyclopedichirurgiens-dentistes-en-francecorsicagliaridagawarsza" +
+ "washingtondclkaszubycorvettevadsoccertificationcosenzagancosidns" +
+ "dojoetsuwanouchikujogaszkoladbrokesassaris-a-huntercostumedio-ca" +
+ "mpidano-mediocampidanomediocouchpotatofriesatxn--11b4c3dynv6coun" +
+ "ciluxurycouponsaudacoursesauheradynvpnchiryukyuragifuchungbukhar" +
+ "acq-acranbrookuwanalyticsavannahgacreditcardyroyrvikingruecredit" +
+ "unioncremonashgabadaddjambyluzerncrewiiheyakagecricketrzyncrimea" +
+ "st-kazakhstanangercrotonextdirectoystre-slidrettozawacrownprovid" +
+ "ercrsvparaglidinguitarsaves-the-whalessandria-trani-barletta-and" +
+ "riatranibarlettaandriacruisesavonaplesaxocryptonomichigangwoncui" +
+ "sinellahppiacenzakopanerairguardiannakadomarinebraskaunjargalsac" +
+ "eoculturalcentertainmentozsdeltaitogliattiresbschokoladencuneocu" +
+ "pcakecxn--12c1fe0bradescorporationcyberlevagangaviikanonjis-a-kn" +
+ "ightpointtokaizukamikitayamatsuris-a-landscapercymrussiacyonabar" +
+ "ulvikatowicecyouthdfcbankatsushikabeeldengeluidfidonnakamurataji" +
+ "mibuildingulenfieldfiguerestaurantraniandriabarlettatraniandriaf" +
+ "ilateliafilegearthachiojiyahoofilminamidaitomangotsukisosakitaga" +
+ "wafinalfinancefineartschwarzgwangjuifminamiechizenfinlandfinnoyf" +
+ "irebaseapparisor-fronfirenzefirestonefirmdaleirvikaufenfishingol" +
+ "ffanschweizwildlifedorainfracloudfrontdoorfitjarmeniafitnessettl" +
+ "ementranoyfjalerflesbergunmarburguovdageaidnuslivinghistoryflick" +
+ "ragerotikakamigaharaflightsciencecentersciencehistoryflirflogint" +
+ "ogurafloraflorencefloridavvesiidazaifudaigojomedizinhistorisches" +
+ "cientistoragefloripaderbornfloristanohatakahamangyshlakasamatsud" +
+ "ontexisteingeekautokeinoflorogerscjohnsonflowerscotlandflynnhuba" +
+ "mblefrakkestadiscountysnes3-sa-east-1fndfoodnetworkshoppingushik" +
+ "amifuranortonsbergxn--12co0c3b4evalleaostatoilfor-ourfor-someetn" +
+ "edalfor-theaterforexrothachirogatakahatakaishimogosenforgotdnscr" +
+ "apper-siteforli-cesena-forlicesenaforlikescandynamic-dnscrapping" +
+ "forsaleitungsenforsandasuolodingenfortmissoulair-traffic-control" +
+ "leyfortworthadanosegawaforuminamifuranofosneserveftparliamentran" +
+ "sportransurlfotaruis-a-lawyerfoxfordedyn-ip24freeboxoservegame-s" +
+ "erversailleservehalflifestylefreemasonryfreetlservehttparmafreib" +
+ "urgfreightcminamiiselectrapaniimimatakatoris-a-liberalfresenius-" +
+ "3fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-ve" +
+ "nezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriu" +
+ "live-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiulia" +
+ "friulivgiuliafrlfroganservehumourfrognfrolandfrom-akrehamnfrom-a" +
+ "lfrom-arqhadselfiparocherkasyno-dserveirchitachinakagawassamukaw" +
+ "ataricohdatsunanjoburgriwataraidyndns-office-on-the-webcampobass" +
+ "ociatesapporofrom-azfrom-capebretonamiastapleserveminecraftravel" +
+ "channelfrom-collectionfrom-ctravelersinsurancefrom-dchitosetogit" +
+ "suldalotenkawafrom-defenseljordfrom-flanderservemp3from-gausdalf" +
+ "rom-higashiagatsumagoizumizakirkeneservep2parservepicservequakef" +
+ "rom-iafrom-idfrom-ilfrom-incheonfrom-kservesarcasmatartanddesign" +
+ "from-kyowariasahikawafrom-lajollamericanexpressexyfrom-maniwakur" +
+ "atextileksvikazofrom-mdfrom-megurokunohealthcareerservicesettsur" +
+ "geonshalloffamemorialfrom-microsoftbankazunofrom-mnfrom-modellin" +
+ "gfrom-msevastopolefrom-mtnfrom-nchloefrom-ndfrom-nefrom-nhktrdfr" +
+ "om-njcbnlfrom-nminamiizukamisatokamachintaifun-dnsaliasdaburfrom" +
+ "-nvalledaostavernfrom-nyfrom-ohkurafrom-oketohmannorth-kazakhsta" +
+ "nfrom-orfrom-padovaksdalfrom-pratohnoshoooshikamaishimodatefrom-" +
+ "rivnefrom-schoenbrunnfrom-sdfrom-tnfrom-txn--1ck2e1bananarepubli" +
+ "caseihichisobetsuitainairforcechirealminamiawajikibmdiscoveryomb" +
+ "ondishakotanavigationavoiitatebayashiibahcavuotnagaraholtaleniwa" +
+ "izumiotsukumiyamazonawsadodgemologicallyngenvironmentalconservat" +
+ "ionavuotnaklodzkodairassnasabaerobaticketselinogradultashkentata" +
+ "motors3-ap-northeast-2from-utazuerichardlillehammerfeste-ipartis" +
+ "-a-libertarianfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wa" +
+ "from-wielunnerfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wo" +
+ "lawafroyahikobeardubaiduckdnsevenassisicilyfstcgroupartnersewill" +
+ "iamhillfujiiderafujikawaguchikonefujiminohtawaramotoineppubologn" +
+ "akanotoddenfujinomiyadafujiokayamansionsfranziskanerdpolicefujis" +
+ "atoshonairtelecityeatsharis-a-linux-useranishiaritabashijonawate" +
+ "fujisawafujishiroishidakabiratoridefinimakanegasakindlegokasells" +
+ "-for-lessharpartshawaiijimarugame-hostrolekameokameyamatotakadaf" +
+ "ujitsurugashimaritimekeepingfujixeroxn--1ctwolominamatakkokamino" +
+ "yamaxunusualpersonfujiyoshidafukayabeatshellaspeziafukuchiyamada" +
+ "fukudominichocolatemasekashiwazakiyosatokashikiyosemitefukuis-a-" +
+ "llamarylandfukumitsubishigakirovogradoyfukuokazakiryuohaebarumin" +
+ "amimakis-a-musicianfukuroishikarikaturindalfukusakisarazurewebsi" +
+ "teshikagamiishibukawafukuyamagatakaharustkanoyakumoldeloittexasc" +
+ "olipicenoipifonynysaarlandfunabashiriuchinadafunagatakahashimama" +
+ "kishiwadafunahashikamiamakusatsumasendaisennangonohejis-a-nascar" +
+ "fanfundaciofuoiskujukuriyamanxn--1lqs03nfuosskoczowinbarcelonaga" +
+ "sakijobserverisignieznord-frontiereviewskrakowedeployomitanobihi" +
+ "rosakikamijimastronomy-gatewaybomloans3-ap-south-1furnituredston" +
+ "efurubiraquarelleborkangerfurudonostiaarpartyfurukawairtrafficho" +
+ "funatoriginsurecifedexhibitionishiokoppegardyndns-picsardegnamss" +
+ "koganeis-a-doctorayfusodegaurafussaikisofukushimaoris-a-nurserve" +
+ "bbshimojis-a-painteractivegarsheis-a-patsfanfutabayamaguchinomig" +
+ "awafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiafut" +
+ "urehostingfuturemailingfvgfyis-a-personaltrainerfylkesbiblackfri" +
+ "dayfyresdalhangoutsystemscloudfunctionshimokawahannanmokuizumode" +
+ "rnhannotaireshimokitayamahanyuzenhapmirhareidsbergenharstadharve" +
+ "stcelebrationhasamarcheapassagenshimonitayanagitlaborhasaminami-" +
+ "alpssells-itrentino-aadigehashbanghasudahasura-appassenger-assoc" +
+ "iationhasvikddielddanuorrikuzentakataiwanairlinedre-eikerhatogay" +
+ "aitakamoriokalmykiahatoyamazakitahiroshimarnardalhatsukaichikais" +
+ "eis-a-republicancerresearchaeologicaliforniahattfjelldalhayashim" +
+ "amotobungotakadapliernewjerseyhazuminobusellsyourhomegoodshimono" +
+ "sekikawahboehringerikehelsinkitakamiizumisanofidelitysvardollshi" +
+ "mosuwalkis-a-rockstarachowicehembygdsforbundhemneshimotsukehemse" +
+ "dalhepforgeherokussldheroyhgtvalleeaosteigenhigashichichibunkyon" +
+ "anaoshimageandsoundandvisionhigashihiroshimanehigashiizumozakita" +
+ "katakanabeautydalhigashikagawahigashikagurasoedahigashikawakitaa" +
+ "ikitakyushuaiahigashikurumeiwamarriottrentino-alto-adigehigashim" +
+ "atsushimarshallstatebankfhappouhigashimatsuyamakitaakitadaitoiga" +
+ "wahigashimurayamamotorcycleshimotsumahigashinarusembokukitamidor" +
+ "is-a-socialistmein-vigorgehigashinehigashiomihachimanchesterhiga" +
+ "shiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiy" +
+ "oshikawaminamiaikitamotosumitakagildeskaliszhigashitsunotogawahi" +
+ "gashiurausukitanakagusukumoduminamiminowahigashiyamatokoriyamana" +
+ "shifteditchyouripaviancarrierhigashiyodogawahigashiyoshinogaris-" +
+ "a-soxfanhiraizumisatohobby-sitehirakatashinagawahiranais-a-stude" +
+ "ntalhirarahiratsukagawahirayaizuwakamatsubushikusakadogawahistor" +
+ "ichouseshinichinanhitachiomiyaginankokubunjis-a-teacherkassymant" +
+ "echnologyhitachiotagooglecodespotrentino-altoadigehitraeumtgerad" +
+ "elmenhorstalbanshinjournalistjohnhjartdalhjelmelandholeckobierzy" +
+ "ceholidayhomeipfizerhomelinkhakassiahomelinuxn--1lqs71dhomeoffic" +
+ "ehomesecuritymaceratakaokaluganskolevangerhomesecuritypccwindmil" +
+ "lhomesenseminehomeunixn--1qqw23ahondahoneywellbeingzonehongopocz" +
+ "northwesternmutualhonjyoitakarazukamakurazakitashiobarahornindal" +
+ "horseoulminamiogunicomcastresistancehortendofinternet-dnshinjuku" +
+ "manohospitalhoteleshinkamigotoyohashimotoshimahotmailhoyangerhoy" +
+ "landetroitskydivinghumanitieshinshinotsurgeryhurdalhurumajis-a-t" +
+ "echietis-a-therapistoiahyllestadhyogoris-an-accountantshinshiroh" +
+ "yugawarahyundaiwafunehzchoseiroumuenchenishitosashimizunaminamia" +
+ "shigarajfkhmelnitskiyamashikejgorajlchoyodobashichikashukujitawa" +
+ "rajlljmpharmacienshiojirishirifujiedajnjcpgfoggiajoyokaichibahcc" +
+ "avuotnagareyamalborkdalpha-myqnapcloudapplebesbyglandjpmorganjpn" +
+ "jprshioyanaizujuniperjurkoshimizumakis-an-engineeringkoshunantok" +
+ "igawakosugekotohiradomainshirakofuefukihaboromskoguchikuzenkotou" +
+ "rakouhokutamakis-an-entertainerkounosupplieshiranukamogawakouyam" +
+ "ashikokuchuokouzushimasoykozagawakozakis-bykpnkppspdnshiraois-ce" +
+ "rtifieducatorahimeshimamateramochizukirakrasnodarkredirectmelhus" +
+ "cultureggio-calabriakristiansandcatshiraokanagawakristiansundkro" +
+ "dsheradkrokstadelvaldaostarostwodzislawindowshiratakahagivestbyk" +
+ "ryminamisanrikubetsupportrentino-sued-tirolkumatorinokumejimasud" +
+ "akumenanyokkaichiropractichristmasakikugawatchandclockasukabedzi" +
+ "n-the-bandaikawachinaganoharamcoachampionshiphoptobishimaizurugb" +
+ "ydgoszczecinemakeupowiathletajimabariakeisenbahnishiwakis-a-fina" +
+ "ncialadvisor-aurdalottokonamegatakasugais-a-geekgalaxykunisakis-" +
+ "foundationkunitachiarailwaykunitomigusukumamotoyamassa-carrara-m" +
+ "assacarraramassabusinessebytomaritimobarakunneppulawykunstsammlu" +
+ "ngkunstunddesignkuokgrouphdkureggio-emilia-romagnakatsugawakurga" +
+ "nkurobelaudiblebtimnetzkurogimilanokuroisoftwarendalenugkuromats" +
+ "unais-gonekurotakikawasakis-into-animelbournekushirogawakustanai" +
+ "s-into-carshintomikasaharakusupplykutchanelkutnokuzumakis-into-c" +
+ "artoonshinyoshitomiokamitsuekvafjordkvalsundkvamfamberkeleykvana" +
+ "ngenkvinesdalkvinnheradkviteseidskogkvitsoykwpspiegelkzmissilewi" +
+ "smillermisugitokorozawamitourismolancastermitoyoakemiuramiyazumi" +
+ "yotamanomjondalenmlbfanmonmouthagebostadmonstermonticellolmontre" +
+ "alestatefarmequipmentrentino-suedtirolmonza-brianzaporizhzhiamon" +
+ "za-e-della-brianzapposhishikuis-not-certifiedunetbankharkovanylv" +
+ "enicemonzabrianzaptokuyamatsusakahoginowaniihamatamakawajimaphil" +
+ "adelphiaareadmyblogsitemonzaebrianzaramonzaedellabrianzamoonscal" +
+ "exusdecorativeartshisognemoparachutingmordoviajessheiminamitanem" +
+ "oriyamatsushigemoriyoshimilitarymormoneymoroyamatsuuramortgagemo" +
+ "scowinnershisuifuelveruminamiuonumatsumotofukemoseushistorymosjo" +
+ "enmoskeneshitaramamosshizukuishimofusaitamatsukuris-savedmosvikn" +
+ "x-serveronakatombetsunndalmoteginozawaonsenmoviemovistargardmtpc" +
+ "hromedicaltanissettairamtranbymuenstermugithubcloudusercontentre" +
+ "ntinoa-adigemuikamishihoronobeauxartsandcraftshizuokananporovigo" +
+ "tpantheonsitemukochikushinonsenergymulhouservebeermunakatanemunc" +
+ "ieszynmuosattemuphilatelymurmanskolobrzegersundmurotorcraftrenti" +
+ "noaadigemusashimurayamatsuzakis-slickhersonmusashinoharamuseetre" +
+ "ntinoalto-adigemuseumverenigingmusicargodaddynaliascoli-picenogi" +
+ "ftshoujis-uberleetrentino-stirolmutsuzawamy-vigorlicemy-wanggouv" +
+ "icenzamyactivedirectorymyasustor-elvdalmycdn77-securechtrainingm" +
+ "ydissentrentinoaltoadigemydrobofagemydshowamyeffectrentinos-tiro" +
+ "lmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccesshowti" +
+ "meteorapphilipsynology-diskstationmyfusionmyhome-serverrankoshig" +
+ "ayanagawamykolaivaporcloudmymailermymediapchryslermyokohamamatsu" +
+ "damypepsongdalenviknakanojohanamakinoharamypetshriramlidlugoleka" +
+ "gaminoduminamiyamashirokawanabelembroideryggeelvincklabudhabikin" +
+ "okawabarthagakhanamigawamyphotoshibajddarchaeologyeongnamegawalb" +
+ "rzycharternidmypsxn--30rr7ymysecuritycamerakermyshopblocksienara" +
+ "shinomytis-a-bookkeeperugiamyvnchungnamdalseidfjordyndns-remotew" +
+ "dyndns-serverdalouvreggioemiliaromagnakayamatsumaebashikshacknet" +
+ "oyookanmakiwakunigamidsundyndns-weberlincolnissandnessjoenissayo" +
+ "koshibahikariwanumatakazakis-a-greenissedalowiczest-le-patrondhe" +
+ "immobilienisshingugepicturesilkomaganepiemontepilotsimple-urlpim" +
+ "ientaketomisatolgapinkomakiyosumy-routerpioneerpippuphonefossigd" +
+ "alpiszpittsburghofauskedsmokorsetagayasells-for-unzenpiwatepizza" +
+ "pkomatsushimashikizunokunimihoboleslawiechristiansburgroks-thisa" +
+ "yamanobeokakudamatsueplanetariuminanoplantationplantsirdalplatfo" +
+ "rmshangrilanciaplaystationplazaplchurchaseljeepostfoldnavyplumbi" +
+ "ngopmnpodzonepohlpoivronpokerpokrovskomforbarclays3-us-gov-west-" +
+ "1politiendapolkowicepoltavalle-aostathellezajskommunalforbundpom" +
+ "orzeszowioslingpordenonepornporsangerporsanguidellogliastradingp" +
+ "orsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidioprgmrpr" +
+ "imeloyalistockholmestrandprincipeprivatizehealthinsuranceprochow" +
+ "iceproductionslupskommuneprofbsbxn--12cfi8ixb8lvivano-frankivska" +
+ "tsuyamasfjordenprogressivegasiapromombetsurfbx-oscholarshipschoo" +
+ "lpropertyprotectionprotonetrentinosud-tirolprudentialpruszkowitd" +
+ "komonoprzeworskogptplusgardenpvtrentinosudtirolpwcirclegnicafede" +
+ "rationiyodogawapzqldqponqslgbtrentinosued-tirolquicksytesnoasait" +
+ "omobellevuelosangelesjaguarchitecturealtychyattorneyagawalesundq" +
+ "uipelementsokanazawaqvcircustomerstuff-4-salestufftoread-booksne" +
+ "solognestuttgartritonsusakis-very-evillagesusonosuzakaneyamazoes" +
+ "uzukaniepcesuzukis-very-goodhandsonsvalbardunloppacificitadelive" +
+ "rysveiosvelvikongsbergsvizzeraswedenswidnicartierswiebodzindiana" +
+ "polis-a-bloggerswiftcoversicherungswinoujscienceandhistoryswissh" +
+ "ikis-very-nicesynology-dsolundbeckomorotsukamiokamikoaniikappugl" +
+ "iatushuissier-justicetuvalle-daostaticsomatuxfamilytwmailvennesl" +
+ "askerrylogisticsomnaritakurashikis-very-badajozoravestfoldvestne" +
+ "soovestre-slidreamhostersopotrentinosuedtirolvestre-totennishiaw" +
+ "akuravestvagoyvevelstadvibo-valentiavibovalentiavideovillaskimit" +
+ "subatamicable-modembetsukuis-very-sweetpeppervinnicartoonartdeco" +
+ "ffeedbackplaneappspotagervinnytsiavipsinaappiagetmyiphoenixn--32" +
+ "vp30haibarakitahatakamatsukawavirginiavirtualvirtueeldomeindianm" +
+ "arketingvirtuelvisakegawavistaprinternationalfirearmsor-odalvite" +
+ "rboltrogstadvivoldavixn--3bst00minnesotaketakatsukis-into-gamess" +
+ "inatsukigatakasagotembaixadavlaanderenvladikavkazimierz-dolnyvla" +
+ "dimirvlogoipictetrentinostirolvolkswagentsor-varangervologdansko" +
+ "ninjamisonvolvolkenkundenvolyngdalvossevangenvotevotingvotoyonak" +
+ "agyokutoursorfoldwloclawekonskowolayangroupharmacyshirahamatonbe" +
+ "tsurnadalwmflabsorreisahayakawakamiichikawamisatotalworldworse-t" +
+ "handawowithgoogleapisa-hockeynutsiracusakatakinouewritesthisblog" +
+ "sytewroclawithyoutubeneventoeidsvollwtcitichernigovernmentoyonow" +
+ "tfbxoschulewuozuwwwiwatsukiyonowruzhgorodeowzmiuwajimaxn--45brj9" +
+ "civilaviationxn--45q11civilisationxn--4gbriminingxn--4it168dxn--" +
+ "4it797konyveloftrentino-sudtirolxn--4pvxs4allxn--54b7fta0ccivili" +
+ "zationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilwarmanageme" +
+ "ntoyosatoyakokonoexn--5rtq34kooris-an-anarchistoricalsocietyxn--" +
+ "5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986" +
+ "b3xlxn--7t0a264claimsarlucaniaxn--80adxhksortlandxn--80ao21axn--" +
+ "80aqecdr1axn--80asehdbarreauctionflfanfshostrowiecasertaipeiheij" +
+ "iiyamanouchikuhokuryugasakitaurayasudaukraanghkeymachineustarhub" +
+ "alsanagochihayaakasakawaharanzanpachigasakicks-assedicasadelamon" +
+ "edatingjemnes3-ap-southeast-2xn--80aswgxn--80audnedalnxn--8ltr62" +
+ "kopervikhmelnytskyivaolbia-tempio-olbiatempioolbialystokkepnogat" +
+ "aijis-an-actresshintokushimaxn--8pvr4uxn--8y0a063axn--90a3academ" +
+ "y-firewall-gatewayxn--90aishobaraomoriguchiharahkkeravjuedisches" +
+ "apeakebayernrtromsakakinokiaxn--90azhytomyrxn--9dbhblg6dietcimdb" +
+ "arrel-of-knowledgeologyonagoyaurskog-holandroverhalla-speziaerop" +
+ "ortalaheadjudaicaaarborteaches-yogasawaracingroks-theatree164xn-" +
+ "-9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byandexn--3d" +
+ "s443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-knowledgeometre-" +
+ "experts-comptables3-us-west-1xn--avery-yuasakuhokkaidoomdnshome-" +
+ "webservercellikes-piedmontblancomeeresorumincommbankmpspbarclayc" +
+ "ards3-us-east-2xn--b-5gaxn--b4w605ferdxn--bck1b9a5dre4cldmailucc" +
+ "apitalonewportlligatoyotaris-a-gurulsandoyxn--bdddj-mrabdxn--bea" +
+ "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" +
+ "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bj" +
+ "ddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--b" +
+ "od-2naroyxn--brnny-wuaccident-investigation-aptibleaseating-orga" +
+ "nicbcn-north-1xn--brnnysund-m8accident-prevention-webhopenairbus" +
+ "antiquest-a-la-maisondre-landebudapest-a-la-masionionjukudoyamag" +
+ "entositelekommunikationthewifiat-band-campaniaxn--brum-voagatrom" +
+ "sojampagefrontapphotographysioxn--btsfjord-9zaxn--c1avgxn--c2br7" +
+ "gxn--c3s14mintelligencexn--cck2b3barsyonlinewhampshirebungoonord" +
+ "-odalazioceanographics3-us-west-2xn--cg4bkis-with-thebandovre-ei" +
+ "kerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumisakis-leetrentino" +
+ "-s-tirollagrigentomologyeongbukharkivgucciprianiigataishinomakim" +
+ "obetsuliguriaxn--comunicaes-v6a2oxn--correios-e-telecomunicaes-g" +
+ "hc29axn--czr694bashkiriaustevollarvikarasjohkamiminers3-ca-centr" +
+ "al-1xn--czrs0trusteexn--czru2dxn--czrw28basilicataniaustinnatura" +
+ "lsciencesnaturelles3-eu-central-1xn--d1acj3basketballfinanzgorau" +
+ "straliaisondriodejaneirochesterepbodynathomebuiltatarantottoribe" +
+ "staddnskingjerdrumckinseyokosukanzakiwienaturbruksgymnaturhistor" +
+ "isches3-eu-west-1xn--d1alfaromeoxn--d1atrvarggatroandinosaureise" +
+ "nxn--d5qv7z876clickasumigaurawa-mazowszextraspacekitagatajirissa" +
+ "gamiharaxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawane" +
+ "honbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry" +
+ "-iraxn--e1a4clinichernihivanovodkagoshimalvikashiwaraxn--eckvdtc" +
+ "9dxn--efvn9southcarolinazawaxn--efvy88hair-surveillancexn--ehqz5" +
+ "6nxn--elqq16hakatanoshiroomuraxn--estv75gxn--eveni-0qa01gaxn--f6" +
+ "qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hso" +
+ "uthwestfalenxn--fiq64batodayonaguniversityoriikariyaltakasakiyok" +
+ "awaraustrheimatunduhrennesoyokoteastcoastaldefencebinagisochildr" +
+ "ensgardenatuurwetenschappenaumburgjerstadotsuruokakegawaetnagaha" +
+ "maroygardenebakkeshibechambagriculturennebudejjudygarlandd-dnsfo" +
+ "r-better-thanawawdev-myqnapcloudcontrolapplinzi234xn--fiqs8sowax" +
+ "n--fiqz9spjelkavikomvuxn--2m4a15exn--fjord-lraxn--fjq720axn--fl-" +
+ "ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grandrapidspread" +
+ "bettingxn--frna-woaraisaijotrysiljanxn--frya-hraxn--fzc2c9e2clin" +
+ "iquenoharaxn--fzys8d69uvgmailxn--g2xx48clintonoshoesarpsborgrond" +
+ "arxn--gckr3f0fedorapeopleirfjordxn--gecrj9clothingrongaxn--ggavi" +
+ "ika-8ya47hakodatexn--gildeskl-g0axn--givuotna-8yasakaiminatoyone" +
+ "zawaxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050isleofmand" +
+ "alxn--gmqw5axn--h-2failxn--h1aeghakonexn--h2brj9cnsarufutsunomiy" +
+ "awakasaikaitakoelnxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" +
+ "a35batsfjordivtasvuodnakaiwamizawauthordalandroiddnss3-eu-west-2" +
+ "xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctulangevagrarbo" +
+ "retumbriaxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqa" +
+ "xn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr" +
+ "513nxn--indery-fyasugissmarterthanyouxn--io0a7iwchoshibuyachiyod" +
+ "avvenjargapartmentsardiniaxn--j1aefedoraprojectrani-andria-barle" +
+ "tta-trani-andriaxn--j1amhakubaghdadxn--j6w193gxn--jlq61u9w7bauha" +
+ "usposts-and-telecommunicationsncfdivttasvuotnakamagayahababyklec" +
+ "lercasinordre-landiyoshiokaracoldwarmiamihamadautomotivecoalipay" +
+ "okozebinorfolkebibleikangereportateshinanomachimkentateyamagroce" +
+ "rybnikahokutobamaintenancebetsukubank12xn--jlster-byasuokanraxn-" +
+ "-jrpeland-54axn--jvr189misasaguris-lostre-toteneis-an-actorxn--k" +
+ "7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--kl" +
+ "bu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3e0b707exn--ko" +
+ "luokta-7ya57hakuis-a-photographerokuappasadenamsosnowiechonanbui" +
+ "lderschmidtre-gauldalottexn--kprw13dxn--kpry57dxn--kpu716fermoda" +
+ "lenxn--kput3ixn--krager-gyatomitamamuraxn--kranghke-b0axn--krdsh" +
+ "erad-m8axn--krehamn-dxaxn--krjohka-hwab49jeonnamerikawauexn--ksn" +
+ "es-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazuryxn--kvnangen-k0a" +
+ "xn--l-1fairwindspydebergxn--l1accentureklamborghiniizaxn--lahead" +
+ "ju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leaga" +
+ "viika-52bbcateringebugattipschlesisches3-website-ap-northeast-1x" +
+ "n--lesund-huaxn--lgbbat1ad8jetztrentino-sud-tirolxn--lgrd-poacnt" +
+ "oyotomiyazakis-a-hard-workerxn--lhppi-xqaxn--linds-pramericanart" +
+ "unesolutionsokndalxn--lns-qlansrlxn--loabt-0qaxn--lrdal-sraxn--l" +
+ "renskog-54axn--lt-liacolonialwilliamsburgrossetouchijiwadell-ogl" +
+ "iastraderxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--m" +
+ "erker-kuaxn--mgb2ddesrtrentoyokawaxn--mgb9awbferraraxn--mgba3a3e" +
+ "jtunkongsvingerxn--mgba3a4f16axn--mgba3a4franamizuholdingsmilelx" +
+ "n--mgba7c0bbn0axn--mgbaakc7dvferrarittogoldpoint2thisamitsukexn-" +
+ "-mgbaam7a8hakusandiegoodyearxn--mgbab2bdxn--mgbai9a5eva00bbtatto" +
+ "olsztynsettlers3-website-ap-southeast-1xn--mgbai9azgqp6jevnakers" +
+ "huscountryestateofdelawarezzoologyxn--mgbayh7gpagespeedmobilizer" +
+ "oxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzd" +
+ "oxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--mgbpl" +
+ "2fhskodjejuegoshikiminokamoenairportland-4-salernoboribetsucksrv" +
+ "areserveblogspotrevisohughesolarssonxn--mgbqly7c0a67fbcoloradopl" +
+ "ateaudioxn--mgbqly7cvafredrikstadtvstordalxn--mgbt3dhdxn--mgbtf8" +
+ "flatangerxn--mgbtx2bbvacationswatch-and-clockerhcloudns3-website" +
+ "-ap-southeast-2xn--mgbx4cd0abbotturystykannamifunexn--mix082ferr" +
+ "eroticanonoichinomiyakexn--mix891fetsundxn--mjndalen-64axn--mk0a" +
+ "xindustriesteambulancexn--mk1bu44columbusheyxn--mkru45ixn--mlatv" +
+ "uopmi-s4axn--mli-tlanxesstorehabmerxn--mlselv-iuaxn--moreke-juax" +
+ "n--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlapyatigorskypexn-" +
+ "-mre-og-romsdal-qqbentleyukinfinitintuitaxihuanhlfanhs3-website-" +
+ "eu-west-1xn--msy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycommu" +
+ "nitysfjordyndns-wikinkobayashikaoirminamibosogndalucernexn--muos" +
+ "t-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3oq18vl8" +
+ "pn36axn--nit225kosakaerodromegallupinbarefootballooningjovikarat" +
+ "suginamikatagamiharuconnectatsunobiraugustowadaegubs3-ap-southea" +
+ "st-1xn--nmesjevuemie-tcbalestrandabergamoarekexn--nnx388axn--nod" +
+ "exn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery" +
+ "-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattano" +
+ "oganordreisa-geekoseis-an-artisteinkjerusalemrxn--o3cw4halsaintl" +
+ "ouis-a-anarchistoiredumbrellanbibaidarxn--o3cyx2axn--od0algxn--o" +
+ "d0aq3beppublishproxyzgorzeleccolognewyorkshirecipesaro-urbino-pe" +
+ "sarourbinopesaromasvuotnaharimamurogawatches3-website-sa-east-1x" +
+ "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osy" +
+ "ro-wuaxn--p1acfgujolsterxn--p1aixn--pbt977comobilyxn--pgbs0dhlxn" +
+ "--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4comparemarke" +
+ "rryhotelsasayamaxn--qcka1pmcdonaldstorfjordxn--qqqt11misconfused" +
+ "xn--qxamuneuestorjelenia-goraxn--rady-iraxn--rdal-poaxn--rde-ula" +
+ "quilancashireggiocalabriaxn--rdy-0nabarixn--rennesy-v1axn--rhkke" +
+ "rvju-01aflakstadaokagakibichuoxn--rholt-mragowoodsidexn--rhqv96g" +
+ "xn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn--risr-iraxn--r" +
+ "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafricap" +
+ "etownnews-stagingxn--rovu88bernuorockartuzyukuhashimoichinosekig" +
+ "aharautoscanadaejeonbukarasjokarasuyamarylhurstjordalshalsenaust" +
+ "dalavagiskebizenakaniikawatanaguramusementarnobrzegyptianaturalh" +
+ "istorymuseumcenterepaircraftarumizusawabogadocscbgdyniabkhaziama" +
+ "llamagazineat-url-o-g-i-nativeamericanantiques3-ap-northeast-1ka" +
+ "ppchizippodhaleangaviikadenadexetereit3l3p0rtargets-itargiving12" +
+ "000emmafanconagawakayamadridvagsoyericssonyoursidealerimo-i-rana" +
+ "amesjevuemielno-ip6xn--rros-granvindafjordxn--rskog-uuaxn--rst-0" +
+ "narutokyotangovtuscanyxn--rsta-francaiseharaxn--ryken-vuaxn--ryr" +
+ "vik-byaxn--s-1faithruherecreationxn--s9brj9compute-1xn--sandness" +
+ "jen-ogbizxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gratangen" +
+ "xn--skierv-utazaskoyabearalvahkihokumakogengerdalcestpetersburgx" +
+ "n--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5" +
+ "narviikamisunagawaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-" +
+ "a-bulls-fanxn--snase-nraxn--sndre-land-0cbremangerxn--snes-poaxn" +
+ "--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-" +
+ "varanger-ggbeskidyn-o-saurlandes3-website-us-east-1xn--srfold-by" +
+ "axn--srreisa-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--st" +
+ "jrdalshalsen-sqbestbuyshouses3-website-us-west-1xn--stre-toten-z" +
+ "cbstreamsterdamnserverbaniaxn--t60b56axn--tckweatherchannelxn--t" +
+ "iq49xqyjewelryxn--tjme-hraxn--tn0agrinet-freakstudioxn--tnsberg-" +
+ "q1axn--tor131oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-" +
+ "zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4axn--uist22hamurakamigor" +
+ "is-a-playerxn--uisz3gxn--unjrga-rtaobaokinawashirosatochiokinosh" +
+ "imalatvuopmiasakuchinotsuchiurakawakuyabukievenestudyndns-at-hom" +
+ "edepotenzamamicrolightingxn--unup4yxn--uuwu58axn--vads-jraxn--va" +
+ "rd-jraxn--vegrshei-c0axn--vermgensberater-ctbetainaboxfusejnyuri" +
+ "honjoyentgoryusuharaveroykenglandds3-external-1xn--vermgensberat" +
+ "ung-pwbieigersundnpalaceu-3utilitiesquare7xn--vestvgy-ixa6oxn--v" +
+ "g-yiabcgxn--vgan-qoaxn--vgsy-qoa0jewishartgalleryxn--vgu402compu" +
+ "terhistoryofscience-fictionxn--vhquvbargainstitutelevisionayorov" +
+ "nobninskarelianceu-2xn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadx" +
+ "n--vry-yla5gxn--vuq861bielawalmartjeldsundrangedalillyusuisserve" +
+ "exchangevents3-website-us-west-2xn--w4r85el8fhu5dnraxn--w4rs40lx" +
+ "n--wcvs22dxn--wgbh1comsecuritytacticsaseboknowsitallukowhoswhokk" +
+ "sundyndns-workisboringroundhandlingroznyxn--wgbl6axn--xhq521biel" +
+ "laakesvuemielecceverbankarlsoyuufcfanikinuyamashinashikitchenikk" +
+ "oebenhavnikolaevennodessagaeroclubmedecincinnationwidealstahauge" +
+ "sunderseaportsinfolldalabamagasakishimabarackmazerbaijan-mayendo" +
+ "ftheinternetflixilovecollegefantasyleaguernseyuzawavocatanzarowe" +
+ "ddingjesdalavangenaval-d-aosta-valleyolasitehimejibigawaskvolloa" +
+ "bathsbc66xn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn--y9a3aqua" +
+ "riumishimatsunoxn--yer-znarvikosherbrookegawaxn--yfro4i67oxn--yg" +
+ "arden-p1axn--ygbi2ammxn--3pxu8konsulatrobeepilepsydneyxn--ystre-" +
+ "slidre-ujbieszczadygeyachimataikikonaioirasebastopologyeonggieht" +
+ "avuoatnagaivuotnagaokakyotambabia-goracleaningatlantabuseekloges" +
+ "t-mon-blogueurovisionikonantankarmoyxn--zbx025dxn--zf0ao64axn--z" +
+ "f0avxn--42c2d9axn--zfr164bievatmallorcadaquesakurainvestmentsaky" +
+ "otanabellunorddalimanowarudavoues3-fips-us-gov-west-1xperiaxz"
// nodes is the list of nodes. Each node is represented as a uint32, which
// encodes the node's children, wildcard bit and node type (as an index into
@@ -483,8127 +489,8268 @@ const text = "bikedagestangeorgeorgiaxagrocerybnikahokutobishimaizuruhreportar"
// [15 bits] text index
// [ 6 bits] text length
var nodes = [...]uint32{
- 0x32f983,
- 0x28a344,
- 0x30e286,
- 0x371b43,
- 0x371b46,
- 0x394646,
- 0x3a5003,
- 0x367844,
- 0x260687,
- 0x30dec8,
- 0x1a04cc2,
- 0x316e47,
- 0x355d89,
- 0x32228a,
- 0x32228b,
- 0x22eec3,
- 0x28fac6,
- 0x2327c5,
- 0x1e04e02,
- 0x217c04,
- 0x2a90c3,
- 0x3ac705,
- 0x2203942,
- 0x329e03,
- 0x26957c4,
- 0x368e05,
- 0x2a10182,
- 0x3787ce,
- 0x253343,
- 0x3a03c6,
+ 0x31a403,
+ 0x284944,
+ 0x2dd106,
+ 0x3706c3,
+ 0x3706c6,
+ 0x398706,
+ 0x3a8103,
+ 0x2fe244,
+ 0x38e987,
+ 0x2dcd48,
+ 0x1a05702,
+ 0x316e87,
+ 0x35c789,
+ 0x2abb0a,
+ 0x2abb0b,
+ 0x22f383,
+ 0x287506,
+ 0x232dc5,
+ 0x1e021c2,
+ 0x2161c4,
+ 0x238743,
+ 0x26fc45,
+ 0x2214902,
+ 0x347743,
+ 0x266f744,
+ 0x33ddc5,
+ 0x2a04702,
+ 0x376b4e,
+ 0x24c4c3,
+ 0x38ae46,
0x2e00142,
- 0x30e407,
- 0x23ae46,
- 0x3200c42,
- 0x22a343,
- 0x254b04,
- 0x325a86,
- 0x35c208,
- 0x28a706,
- 0x21ad04,
- 0x3601442,
- 0x332309,
- 0x207587,
- 0x256286,
- 0x339309,
- 0x29d788,
- 0x328d44,
- 0x364906,
- 0x36b606,
- 0x3a02942,
- 0x27144f,
- 0x20f94e,
- 0x2131c4,
- 0x2c6085,
- 0x367745,
- 0x385989,
- 0x241a89,
- 0x368047,
- 0x23c9c6,
- 0x273a43,
- 0x3e02342,
- 0x2df283,
- 0x205aca,
- 0x221d83,
- 0x303145,
- 0x289c02,
- 0x289c09,
- 0x4200f82,
- 0x203d84,
- 0x2250c6,
- 0x2eb205,
- 0x34cbc4,
- 0x4a04c04,
- 0x205283,
- 0x231ac4,
- 0x4e02e02,
- 0x209f04,
- 0x52f4e04,
- 0x24ae0a,
- 0x5601342,
- 0x303907,
- 0x26b8c8,
- 0x6202f82,
- 0x31cf07,
- 0x2c2e04,
- 0x2c2e07,
- 0x373d85,
- 0x357a47,
- 0x367e06,
- 0x2e8384,
- 0x39c0c5,
- 0x294847,
- 0x7206cc2,
- 0x34f703,
- 0x200582,
- 0x200583,
- 0x76125c2,
- 0x221ec5,
- 0x7a02302,
- 0x27bd84,
- 0x2810c5,
- 0x213107,
- 0x269f0e,
- 0x224bc4,
- 0x206a84,
- 0x211503,
- 0x2ceac9,
- 0x2ed94b,
- 0x3a6548,
- 0x3148c8,
- 0x318dc8,
- 0x237908,
- 0x33914a,
- 0x357947,
- 0x318146,
- 0x7ea4fc2,
- 0x35bc03,
- 0x366c43,
- 0x371144,
- 0x3a5043,
- 0x324cc3,
- 0x171f542,
- 0x8203682,
- 0x252185,
- 0x2a11c6,
- 0x2d6d44,
- 0x2f6e07,
- 0x382986,
- 0x319dc4,
- 0x398247,
- 0x20f7c3,
- 0x86c8902,
- 0x8b124c2,
- 0x8e1c502,
- 0x21c506,
+ 0x2dd287,
+ 0x236f46,
+ 0x3209282,
+ 0x229d83,
+ 0x24d9c4,
+ 0x325e86,
+ 0x26c588,
+ 0x2761c6,
+ 0x2011c4,
+ 0x3600242,
+ 0x3335c9,
+ 0x20a1c7,
+ 0x351e86,
+ 0x330c89,
+ 0x298308,
+ 0x26e904,
+ 0x241ec6,
+ 0x222a46,
+ 0x3a022c2,
+ 0x26480f,
+ 0x20948e,
+ 0x211d04,
+ 0x2c2b85,
+ 0x2fe145,
+ 0x39e189,
+ 0x23c409,
+ 0x349a87,
+ 0x20fa86,
+ 0x275a83,
+ 0x3e02a82,
+ 0x315503,
+ 0x34e24a,
+ 0x20f903,
+ 0x2af985,
+ 0x284202,
+ 0x284209,
+ 0x4200ec2,
+ 0x212484,
+ 0x2b9686,
+ 0x2f3645,
+ 0x3552c4,
+ 0x4a05644,
+ 0x2030c3,
+ 0x232344,
+ 0x4e00c02,
+ 0x268d44,
+ 0x52ef6c4,
+ 0x25ef4a,
+ 0x5603dc2,
+ 0x2ba587,
+ 0x2f3b08,
+ 0x6208142,
+ 0x311687,
+ 0x2bf204,
+ 0x2bf207,
+ 0x36e0c5,
+ 0x34ffc7,
+ 0x349846,
+ 0x24f3c4,
+ 0x38c105,
+ 0x29e447,
+ 0x72001c2,
+ 0x26e503,
+ 0x200b82,
+ 0x200b83,
+ 0x760de02,
+ 0x2102c5,
+ 0x7a02a42,
+ 0x350e04,
+ 0x2734c5,
+ 0x211c47,
+ 0x26bcce,
+ 0x2b9184,
+ 0x245544,
+ 0x202f03,
+ 0x281d49,
+ 0x31ee0b,
+ 0x2e9a88,
+ 0x379948,
+ 0x3a9908,
+ 0x22ae48,
+ 0x330aca,
+ 0x34fec7,
+ 0x318186,
+ 0x7e87002,
+ 0x35e203,
+ 0x367e43,
+ 0x36f4c4,
+ 0x3a8143,
+ 0x3250c3,
+ 0x1720b82,
+ 0x8202502,
+ 0x27a8c5,
+ 0x296206,
+ 0x2d1b84,
+ 0x375487,
+ 0x2e1886,
+ 0x331f84,
+ 0x39d3c7,
+ 0x203bc3,
+ 0x86c54c2,
+ 0x8b0f242,
+ 0x8e16742,
+ 0x216746,
0x9200002,
- 0x359b85,
- 0x320a83,
- 0x200004,
- 0x2ee344,
- 0x2ee345,
- 0x203e43,
- 0x9768883,
- 0x9a07f42,
- 0x28e245,
- 0x28e24b,
- 0x2d0686,
- 0x20a0cb,
- 0x225b04,
- 0x20a7c9,
- 0x20be84,
- 0x9e0c0c2,
- 0x20cf83,
- 0x210843,
- 0x1600802,
- 0x260903,
- 0x2109ca,
- 0xa211cc2,
- 0x217e85,
- 0x2983ca,
- 0x2dc184,
- 0x369f03,
- 0x315044,
- 0x213643,
- 0x213644,
- 0x213647,
- 0x213985,
- 0x213e05,
- 0x2150c6,
- 0x2167c6,
- 0x2182c3,
- 0x21c188,
- 0x221c43,
- 0xa601082,
- 0x21cac8,
- 0x21ff0b,
- 0x2216c8,
- 0x2221c6,
- 0x222a47,
- 0x226488,
- 0xb2413c2,
- 0xb6c2fc2,
- 0x326388,
- 0x257ec7,
- 0x22bac5,
- 0x22bac8,
- 0x2bf708,
- 0x3871c3,
- 0x22a784,
- 0x371182,
- 0xba2af82,
- 0xbe5ba02,
- 0xc62c1c2,
- 0x22c1c3,
- 0xca0e542,
- 0x367803,
- 0x2f8e04,
- 0x218443,
- 0x328d04,
- 0x25fe4b,
- 0x21fe43,
- 0x2e4d06,
- 0x226284,
- 0x2a5a8e,
- 0x361c05,
- 0x3a04c8,
- 0x282247,
- 0x28224a,
- 0x229d03,
- 0x2b3447,
- 0x2edb05,
- 0x22ea44,
- 0x272486,
- 0x272487,
- 0x32b704,
- 0x304ac7,
- 0x26a244,
- 0x35bc84,
- 0x35bc86,
- 0x386904,
- 0x20e546,
- 0x223c83,
- 0x22b888,
- 0x30c3c8,
- 0x24e2c3,
- 0x2608c3,
- 0x204f04,
- 0x395943,
- 0xce0d882,
- 0xd2db442,
- 0x20c043,
- 0x201806,
- 0x35c383,
- 0x28bfc4,
- 0xd6081c2,
- 0x2081c3,
- 0x358243,
- 0x219942,
- 0xda02ac2,
- 0x2c55c6,
- 0x2334c7,
- 0x2f7a85,
- 0x37da44,
- 0x3723c5,
- 0x367007,
- 0x274205,
- 0x2d3e89,
- 0x2e0586,
- 0x2e5488,
- 0x2f7986,
- 0xde0db42,
- 0x362f48,
- 0x2f8bc6,
- 0x20db45,
- 0x304687,
- 0x30c2c4,
- 0x30c2c5,
- 0x28a8c4,
- 0x28a8c8,
- 0xe20a182,
- 0xe60c502,
- 0x313646,
- 0x2c28c8,
- 0x31f145,
- 0x332c06,
- 0x3356c8,
- 0x33e1c8,
- 0xea0fd45,
- 0xee0c504,
- 0x2958c7,
- 0xf20bbc2,
- 0xf61c402,
- 0x1060d1c2,
- 0x35aa45,
- 0x2a8505,
- 0x282606,
- 0x3698c7,
- 0x376ec7,
- 0x10ed0783,
- 0x2e3447,
- 0x30dc88,
- 0x3823c9,
- 0x378987,
- 0x390287,
- 0x3a5b08,
- 0x3aa206,
- 0x22e546,
- 0x22f18c,
- 0x230b0a,
- 0x230fc7,
- 0x23268b,
- 0x233307,
- 0x23330e,
- 0x236244,
- 0x23a184,
- 0x23b547,
- 0x264f47,
- 0x240d46,
- 0x240d47,
- 0x241207,
- 0x18a20802,
- 0x2420c6,
- 0x2420ca,
- 0x24294b,
- 0x243407,
- 0x244ec5,
- 0x245203,
- 0x246c46,
- 0x246c47,
- 0x241c43,
- 0x18e38702,
- 0x24b74a,
- 0x19356fc2,
- 0x196acdc2,
- 0x19a4cec2,
- 0x19e26982,
- 0x24da85,
- 0x24e0c4,
- 0x1a604d02,
- 0x209f85,
- 0x294ac3,
- 0x20bf85,
- 0x237804,
- 0x20a684,
- 0x2ba5c6,
- 0x26a546,
- 0x28e443,
- 0x3b1484,
- 0x209383,
- 0x1aa03b02,
- 0x263544,
- 0x263546,
- 0x295e45,
- 0x27fdc6,
- 0x304788,
- 0x20cb44,
- 0x2a8e88,
- 0x343fc5,
- 0x24a108,
- 0x2b1cc6,
- 0x2bddc7,
- 0x26cdc4,
- 0x26cdc6,
- 0x25e303,
- 0x382e43,
- 0x2c9388,
- 0x318bc4,
- 0x238d47,
- 0x220246,
- 0x2dad89,
- 0x315108,
- 0x319f08,
- 0x349184,
- 0x39b9c3,
- 0x23e342,
- 0x1ba34682,
- 0x1be16102,
- 0x3b2783,
- 0x1c204a42,
- 0x2607c4,
- 0x390a46,
- 0x39a6c5,
- 0x2a4383,
- 0x232004,
- 0x2b6f47,
- 0x26aa43,
- 0x250d08,
- 0x20e8c5,
- 0x370083,
- 0x281045,
- 0x281184,
- 0x2fb8c6,
- 0x210384,
- 0x211a46,
- 0x213046,
- 0x263004,
- 0x21fd83,
- 0x2225c3,
- 0x1c604e42,
- 0x377905,
- 0x222e03,
- 0x1ca1c3c2,
- 0x22f143,
- 0x210085,
- 0x231b83,
- 0x231b89,
- 0x1ce07d02,
- 0x1d601142,
- 0x28d9c5,
- 0x21a746,
- 0x2d6906,
- 0x2b94c8,
- 0x2b94cb,
- 0x20538b,
- 0x2f7c85,
- 0x2e1045,
- 0x2c9fc9,
- 0x1600742,
- 0x2631c8,
- 0x206044,
- 0x1de001c2,
- 0x25fa83,
- 0x1e665106,
- 0x20f088,
- 0x1ea04782,
- 0x233ec8,
- 0x1ee01742,
- 0x225c4a,
- 0x1f2d0e43,
- 0x3b1e86,
- 0x206988,
- 0x207d48,
- 0x39a9c6,
- 0x36d5c7,
- 0x271647,
- 0x220b0a,
- 0x2dc204,
- 0x3423c4,
- 0x355589,
- 0x1fb8fc85,
- 0x20fb46,
- 0x208203,
- 0x251944,
- 0x201e44,
- 0x201e47,
- 0x22cec7,
- 0x237044,
- 0x220a45,
- 0x2826c8,
- 0x350707,
- 0x3619c7,
- 0x1fe041c2,
- 0x226004,
- 0x298cc8,
- 0x381004,
- 0x24f0c4,
- 0x24fa45,
- 0x24fb87,
- 0x215809,
- 0x2505c4,
- 0x2510c9,
- 0x251308,
- 0x2516c4,
- 0x2516c7,
- 0x20251c43,
- 0x252487,
- 0x16101c2,
- 0x179d442,
- 0x253386,
- 0x2539c7,
- 0x253e84,
- 0x255607,
- 0x256907,
- 0x257483,
- 0x2abc02,
- 0x229c02,
- 0x258743,
- 0x258744,
- 0x25874b,
- 0x3149c8,
- 0x25f184,
- 0x2594c5,
- 0x25ba87,
- 0x25d8c5,
- 0x2c4dca,
- 0x25f0c3,
- 0x2060da42,
- 0x22b484,
- 0x264d09,
- 0x268983,
- 0x268a47,
- 0x28ee89,
- 0x37b5c8,
- 0x2d8483,
- 0x27ff47,
- 0x280689,
- 0x2316c3,
- 0x288284,
- 0x289389,
- 0x28c6c6,
- 0x28dc83,
- 0x2023c2,
- 0x24ca43,
- 0x36ab47,
- 0x2bfa85,
- 0x35ba06,
- 0x256bc4,
- 0x2d1d45,
- 0x205a83,
- 0x218506,
- 0x20a9c2,
- 0x391084,
- 0x22ad02,
- 0x22ad03,
- 0x20a00182,
- 0x29b083,
- 0x216c44,
- 0x216c47,
- 0x200306,
- 0x201e02,
- 0x20e01dc2,
- 0x21e184,
- 0x2123b882,
- 0x21600502,
- 0x2dfcc4,
- 0x2dfcc5,
- 0x2b9cc5,
- 0x262746,
- 0x21a0ca82,
- 0x20ca85,
- 0x210d85,
- 0x225883,
- 0x215c06,
- 0x216dc5,
- 0x21c482,
- 0x33de05,
- 0x21c484,
- 0x2230c3,
- 0x223303,
- 0x21e097c2,
- 0x294a47,
- 0x221144,
- 0x221149,
- 0x251844,
- 0x228903,
- 0x341cc9,
- 0x3777c8,
- 0x2a8384,
- 0x2a8386,
- 0x210503,
- 0x259b43,
- 0x332ec3,
- 0x222ebc02,
- 0x30eb82,
- 0x22600642,
- 0x3238c8,
- 0x35c588,
- 0x394d86,
- 0x24ed45,
- 0x2b32c5,
- 0x200647,
- 0x228fc5,
- 0x2630c2,
- 0x22a9a502,
- 0x1614502,
- 0x38fe08,
- 0x362e85,
- 0x351d04,
- 0x2f18c5,
- 0x3836c7,
- 0x24f5c4,
- 0x246f82,
- 0x22e01182,
- 0x336f04,
- 0x2173c7,
- 0x28e9c7,
- 0x357a04,
- 0x298383,
- 0x24e204,
- 0x24e208,
- 0x22e886,
- 0x27230a,
- 0x2156c4,
- 0x298708,
- 0x259784,
- 0x222b46,
- 0x29a4c4,
- 0x35ad46,
- 0x221409,
- 0x25b287,
- 0x234483,
- 0x23274842,
- 0x274843,
- 0x20c2c2,
- 0x23651b02,
- 0x2f0b06,
- 0x364148,
- 0x2a9d87,
- 0x395d09,
- 0x297f09,
- 0x2ab245,
- 0x2ad3c9,
- 0x2ae045,
- 0x2ae189,
- 0x2af5c5,
- 0x2b0208,
- 0x27f284,
- 0x23a8d6c7,
- 0x294403,
- 0x2b0407,
- 0x390646,
- 0x2b08c7,
- 0x2a6d45,
- 0x2a7f83,
- 0x23e00dc2,
- 0x392604,
- 0x2423b8c2,
- 0x264403,
- 0x24618d82,
- 0x307646,
- 0x26b845,
- 0x2b2bc7,
- 0x37f183,
- 0x324c44,
- 0x2138c3,
- 0x2386c3,
- 0x24a0a3c2,
- 0x25201a02,
- 0x394744,
- 0x2abbc3,
- 0x38c985,
- 0x226d85,
- 0x25602282,
- 0x25e00bc2,
- 0x280286,
- 0x318d04,
- 0x2491c4,
- 0x2491ca,
- 0x26601d42,
- 0x37324a,
- 0x204148,
- 0x26a964c4,
- 0x201d43,
- 0x25ff43,
- 0x318f09,
- 0x2a8909,
- 0x2b7046,
- 0x26e04303,
- 0x328145,
- 0x30664d,
- 0x204306,
- 0x21268b,
- 0x27203482,
- 0x295048,
- 0x27e1c282,
- 0x282051c2,
- 0x37aa85,
- 0x28600b02,
- 0x2a3147,
- 0x212b87,
- 0x201503,
- 0x22f848,
- 0x28a02f02,
- 0x202f04,
- 0x217043,
- 0x38d045,
- 0x386fc3,
- 0x2eb106,
- 0x30bdc4,
- 0x204ec3,
- 0x234f83,
- 0x28e07042,
- 0x2f7c04,
- 0x30ed45,
- 0x35a587,
- 0x27dbc3,
- 0x2b36c3,
- 0x2b3ec3,
- 0x1621ac2,
- 0x2b3f83,
- 0x2b4b03,
- 0x2920ae42,
- 0x2cee84,
- 0x26a746,
- 0x33c7c3,
- 0x2b4f83,
- 0x296b5e02,
- 0x2b5e08,
- 0x2b60c4,
- 0x2470c6,
- 0x2b6547,
- 0x24e3c6,
- 0x295304,
- 0x37200082,
- 0x39050b,
- 0x2ffbce,
- 0x21bb0f,
- 0x29da43,
- 0x37a4ca02,
- 0x166b142,
- 0x37e02442,
- 0x29c243,
- 0x2472c3,
- 0x233106,
- 0x22ff46,
- 0x212307,
- 0x31aa84,
- 0x3821a882,
- 0x3860ec02,
- 0x2d4ac5,
- 0x2e88c7,
- 0x37e046,
- 0x38a82882,
- 0x2f5b04,
- 0x2b9783,
- 0x38e01b02,
- 0x39352883,
- 0x2ba984,
- 0x2c06c9,
- 0x16c6fc2,
- 0x39642682,
- 0x351245,
- 0x39ac7242,
- 0x39e02682,
- 0x341687,
- 0x2364c9,
- 0x35600b,
- 0x271405,
- 0x2c7c89,
- 0x276a46,
- 0x2d06c7,
- 0x3a2092c4,
- 0x32ef49,
- 0x374b07,
- 0x2255c7,
- 0x234003,
- 0x37b386,
- 0x30f887,
- 0x265383,
- 0x27c5c6,
- 0x3aa022c2,
- 0x3ae31e02,
- 0x220443,
- 0x324845,
- 0x257747,
- 0x21fac6,
- 0x2bfa05,
- 0x230044,
- 0x2efa45,
- 0x2f8284,
- 0x3b205e82,
- 0x349f07,
- 0x2e1c44,
- 0x23e244,
- 0x33328d,
- 0x257249,
- 0x381588,
- 0x25ac04,
- 0x314e85,
- 0x3b2607,
- 0x205e84,
- 0x382a47,
- 0x20c705,
- 0x3b6aa384,
- 0x36dec5,
- 0x267644,
- 0x24f706,
- 0x3696c5,
- 0x3ba24742,
- 0x369fc4,
- 0x369fc5,
- 0x3716c6,
- 0x2bfb45,
- 0x25c104,
- 0x3120c3,
- 0x204986,
- 0x22c085,
- 0x22c785,
- 0x3697c4,
- 0x215743,
- 0x21574c,
- 0x3be8d002,
- 0x3c2045c2,
- 0x3c605d82,
- 0x205d83,
- 0x205d84,
- 0x3ca032c2,
- 0x2f9648,
- 0x35bac5,
- 0x33f884,
- 0x230e46,
- 0x3ce073c2,
- 0x3d20fc42,
- 0x3d600c02,
- 0x321e85,
- 0x262ec6,
- 0x20b484,
- 0x325fc6,
- 0x3036c6,
- 0x202983,
- 0x3db1164a,
- 0x264785,
- 0x28b4c3,
- 0x223886,
- 0x305e09,
- 0x223887,
- 0x293308,
- 0x29d649,
- 0x248108,
- 0x229a46,
- 0x208843,
- 0x3de017c2,
- 0x384b03,
- 0x384b09,
- 0x368548,
- 0x3e2513c2,
- 0x3e601f02,
- 0x22d603,
- 0x2e0405,
- 0x258f44,
- 0x35e849,
- 0x226784,
- 0x26f288,
- 0x205c03,
- 0x2602c4,
- 0x2784c3,
- 0x21a788,
- 0x3331c7,
- 0x3ea0f302,
- 0x2432c2,
- 0x257d85,
- 0x3960c9,
- 0x20fbc3,
- 0x281ac4,
- 0x328104,
- 0x219e03,
- 0x28380a,
- 0x3ef73102,
- 0x3f2c0202,
- 0x2c8883,
- 0x374fc3,
- 0x1649202,
- 0x262a43,
- 0x3f60bcc2,
- 0x3fa05f02,
- 0x3fe22044,
- 0x222046,
- 0x33e8c6,
- 0x277844,
- 0x2474c3,
- 0x39bc83,
- 0x235143,
- 0x242cc6,
- 0x2ce085,
- 0x2c8e47,
- 0x2d0589,
- 0x2ccac5,
- 0x2cdfc6,
- 0x2ce548,
- 0x2ce746,
- 0x245bc4,
- 0x29ef8b,
- 0x2d3983,
- 0x2d3985,
- 0x2d3ac8,
- 0x226302,
- 0x341982,
- 0x4024db02,
- 0x4060b602,
- 0x21a8c3,
- 0x40a73fc2,
- 0x273fc3,
- 0x2d3dc4,
- 0x2d4e43,
- 0x41201682,
- 0x41601686,
- 0x2c47c6,
- 0x2da008,
- 0x41a95242,
- 0x41e10882,
- 0x42223342,
- 0x4265e402,
- 0x42a14202,
- 0x42e01302,
- 0x234103,
- 0x261c05,
- 0x32d1c6,
- 0x43213184,
- 0x295c4a,
- 0x201306,
- 0x2f7ec4,
- 0x269ec3,
- 0x43e0c002,
- 0x202082,
- 0x231743,
- 0x44204ac3,
- 0x362b47,
- 0x3695c7,
- 0x45a58847,
- 0x32d747,
- 0x228543,
- 0x2977ca,
- 0x377004,
- 0x220144,
- 0x22014a,
- 0x202085,
- 0x45e04182,
- 0x3294c3,
- 0x462002c2,
- 0x2104c3,
- 0x274803,
- 0x46a00842,
- 0x2e33c4,
- 0x21db44,
- 0x208285,
- 0x30bd05,
- 0x249406,
- 0x249786,
- 0x46e09282,
- 0x47201002,
- 0x3274c5,
- 0x2c44d2,
- 0x271ac6,
- 0x248803,
- 0x2a2486,
- 0x248805,
- 0x1610a02,
- 0x4f611802,
- 0x3522c3,
- 0x211803,
- 0x278203,
- 0x4fa11f82,
- 0x378ac3,
- 0x4fe14602,
- 0x200a83,
- 0x2ceec8,
- 0x24a843,
- 0x24a846,
- 0x3a1087,
- 0x321b06,
- 0x321b0b,
- 0x2f7e07,
- 0x392404,
- 0x50603ec2,
- 0x364805,
- 0x50a04a83,
- 0x239f83,
- 0x326805,
- 0x35b5c3,
- 0x35b5c6,
- 0x26334a,
- 0x2774c3,
- 0x23ad04,
- 0x2c2806,
- 0x20df46,
- 0x50e00383,
- 0x324b07,
- 0x28bb8d,
- 0x3adbc7,
- 0x2a0685,
- 0x250b46,
- 0x22c0c3,
- 0x52a15e43,
- 0x52e04c82,
- 0x3b2804,
- 0x236d8c,
- 0x245309,
- 0x24bcc7,
- 0x3724c5,
- 0x268d84,
- 0x27c1c8,
- 0x27ed05,
- 0x5328a405,
- 0x377c09,
- 0x256343,
- 0x2acd44,
- 0x53617902,
- 0x21aac3,
- 0x53a99f82,
- 0x2a3fc6,
- 0x16aa082,
- 0x53e943c2,
- 0x321d88,
- 0x2c08c3,
- 0x36de07,
- 0x305105,
- 0x2943c5,
- 0x30860b,
- 0x2e3906,
- 0x308806,
- 0x36dbc6,
- 0x268f84,
- 0x2e5686,
- 0x2e5b48,
- 0x23e943,
- 0x23cf83,
- 0x23cf84,
- 0x2e6984,
- 0x2e6e07,
- 0x2e8745,
- 0x542e8882,
- 0x54606ec2,
- 0x206ec5,
- 0x2a4a84,
- 0x2ebf8b,
- 0x2ee248,
- 0x2f7304,
- 0x290602,
- 0x54eb6042,
- 0x38c543,
- 0x2ee704,
- 0x2ee9c5,
- 0x2ef087,
- 0x2f1404,
- 0x2f7cc4,
- 0x552054c2,
- 0x35d209,
- 0x2f2445,
- 0x2716c5,
- 0x2f3105,
- 0x5561aa03,
- 0x2f4244,
- 0x2f424b,
- 0x2f4684,
- 0x2f4b0b,
- 0x2f5505,
- 0x21bc4a,
- 0x2f5d08,
- 0x2f5f0a,
- 0x2f6783,
- 0x2f678a,
- 0x55a1b282,
- 0x55e01202,
- 0x26a103,
- 0x562f7902,
- 0x2f7903,
- 0x5673aa42,
- 0x56b21202,
- 0x2f8104,
- 0x21c2c6,
- 0x325d05,
- 0x2f8b43,
- 0x32ff46,
- 0x30c845,
- 0x2e9784,
- 0x56e00e02,
- 0x2d7904,
- 0x2c9c4a,
- 0x2eb487,
- 0x26b686,
- 0x244007,
- 0x236ec3,
- 0x265488,
- 0x28954b,
- 0x386a45,
- 0x235905,
- 0x235906,
- 0x370204,
- 0x31d488,
- 0x215a83,
- 0x2b5984,
- 0x36b507,
- 0x307206,
- 0x200e06,
- 0x2a58ca,
- 0x24e684,
- 0x24e68a,
- 0x57201946,
- 0x201947,
- 0x259547,
- 0x279804,
- 0x279809,
- 0x2ba485,
- 0x23b80b,
- 0x2769c3,
- 0x211c03,
- 0x2a3f43,
- 0x22ec44,
- 0x57600682,
- 0x259f06,
- 0x2a7d05,
- 0x2a26c5,
- 0x2564c6,
- 0x2531c4,
- 0x57a01f82,
- 0x245244,
- 0x57e00d42,
- 0x200d44,
- 0x224303,
- 0x58211842,
- 0x3398c3,
- 0x2478c6,
- 0x58602602,
- 0x2cfb88,
- 0x223704,
- 0x223706,
- 0x375846,
- 0x25bb44,
- 0x204905,
- 0x20c408,
- 0x20c907,
- 0x20d007,
- 0x20d00f,
- 0x298bc6,
- 0x227843,
- 0x227844,
- 0x28be84,
- 0x210e83,
- 0x222c84,
- 0x241104,
- 0x58a36b82,
- 0x28e183,
- 0x241383,
- 0x58e0c4c2,
- 0x22a543,
- 0x260883,
- 0x213e8a,
- 0x22bc87,
- 0x241c8c,
- 0x241f46,
- 0x242406,
- 0x246dc7,
- 0x592ddb07,
- 0x251a09,
- 0x21cc04,
- 0x252284,
- 0x59609f42,
- 0x59a01702,
- 0x2a5c86,
- 0x324904,
- 0x2db5c6,
- 0x2ab348,
- 0x20eec4,
- 0x2a3186,
- 0x2d68c5,
- 0x26ebc8,
- 0x205583,
- 0x272605,
- 0x273583,
- 0x2717c3,
- 0x2717c4,
- 0x273983,
- 0x59edeec2,
- 0x5a200b42,
- 0x276889,
- 0x27ec05,
- 0x27ee04,
- 0x281305,
- 0x212504,
- 0x2c1247,
- 0x33d3c5,
- 0x258a04,
- 0x258a08,
- 0x2dc3c6,
- 0x2de404,
- 0x2dfdc8,
- 0x2e1a87,
- 0x5a60e5c2,
- 0x305304,
- 0x210f44,
- 0x2257c7,
- 0x5aa53d84,
- 0x249682,
- 0x5ae01ac2,
- 0x21b083,
- 0x351144,
- 0x242643,
- 0x33d945,
- 0x5b21de42,
- 0x2ebb05,
- 0x212bc2,
- 0x381dc5,
- 0x364305,
- 0x5b60c842,
- 0x3581c4,
- 0x5ba06342,
- 0x2a9146,
- 0x2ac506,
- 0x396208,
- 0x2c3608,
- 0x3075c4,
- 0x2f8905,
- 0x2fe809,
- 0x2e10c4,
- 0x263304,
- 0x20aec3,
- 0x5be20c45,
- 0x2c7087,
- 0x25e944,
- 0x33a48d,
- 0x33c282,
- 0x33c283,
- 0x355783,
- 0x5c200202,
- 0x388b45,
- 0x26c747,
- 0x2a7e04,
- 0x32d807,
- 0x29d849,
- 0x2c9d89,
- 0x248ac7,
- 0x243843,
- 0x27c008,
- 0x2f33c9,
- 0x2500c7,
- 0x370145,
- 0x385886,
- 0x394246,
- 0x3959c5,
- 0x257345,
- 0x5c603102,
- 0x27eb05,
- 0x2b8308,
- 0x2c5386,
- 0x2bcc07,
- 0x2f5744,
- 0x2ad207,
- 0x2faf46,
- 0x5ca2fb02,
- 0x3713c6,
- 0x2fd38a,
- 0x2fde45,
- 0x5cee4742,
- 0x5d245702,
- 0x30fbc6,
- 0x2b25c8,
- 0x5d68eb87,
- 0x5da04602,
- 0x20edc3,
- 0x38c706,
- 0x2246c4,
- 0x3a0f46,
- 0x262446,
- 0x26bd0a,
- 0x319a45,
- 0x204446,
- 0x218c83,
- 0x218c84,
- 0x205302,
- 0x30c283,
- 0x5de05dc2,
- 0x2ce903,
- 0x3734c4,
- 0x2b2704,
- 0x2b270a,
- 0x229b03,
- 0x28a7c8,
- 0x229b0a,
- 0x23a407,
- 0x301446,
- 0x2a9004,
- 0x296e42,
- 0x219542,
- 0x5e206e42,
- 0x24e1c3,
- 0x259307,
- 0x330207,
- 0x38fd4b,
- 0x28a2c4,
- 0x34f9c7,
- 0x2ef186,
- 0x21c607,
- 0x258004,
- 0x23c445,
- 0x2c17c5,
- 0x5e620382,
- 0x221a86,
- 0x246043,
- 0x24a2c2,
- 0x24a2c6,
- 0x5ea04802,
- 0x5ee05bc2,
- 0x3abd45,
- 0x5f222e82,
- 0x5f600a42,
- 0x343745,
- 0x38e6c5,
- 0x204505,
- 0x270ac3,
- 0x390b05,
- 0x2e39c7,
- 0x309445,
- 0x30a985,
- 0x3a05c4,
- 0x24c646,
- 0x25c1c4,
- 0x5fa03382,
- 0x6060ce05,
- 0x36f447,
- 0x2db7c8,
- 0x2a32c6,
- 0x2a32cd,
- 0x2a86c9,
- 0x2a86d2,
- 0x332705,
- 0x33c843,
- 0x60a044c2,
- 0x2f6d84,
- 0x204383,
- 0x3623c5,
- 0x2fed85,
- 0x60e17082,
- 0x3700c3,
- 0x6124d082,
- 0x616c3142,
- 0x61a18dc2,
- 0x364c05,
- 0x329ec3,
- 0x319888,
- 0x61e02d82,
- 0x62206902,
- 0x2e3386,
- 0x34398a,
- 0x272243,
- 0x25c083,
- 0x2ed703,
- 0x62e016c2,
- 0x71211fc2,
- 0x71a19682,
- 0x206602,
- 0x3711c9,
- 0x2c6404,
- 0x22fb48,
- 0x71ef8b82,
- 0x72202502,
- 0x2f4d45,
- 0x232ac8,
- 0x2cf008,
- 0x2fd54c,
- 0x23bd83,
- 0x267002,
- 0x726019c2,
- 0x2ccf46,
- 0x3022c5,
- 0x239103,
- 0x383586,
- 0x302406,
- 0x21e2c3,
- 0x304ec3,
- 0x3055c6,
- 0x306204,
- 0x225d46,
- 0x2d3b45,
- 0x30648a,
- 0x240544,
- 0x307884,
- 0x307a4a,
- 0x72a037c2,
- 0x234605,
- 0x30898a,
- 0x309a85,
- 0x30a344,
- 0x30a446,
- 0x30a5c4,
- 0x228306,
- 0x72e39342,
- 0x2eadc6,
- 0x3a2445,
- 0x26bb87,
- 0x3a3c46,
- 0x246fc4,
- 0x2da807,
- 0x311586,
- 0x25b5c5,
- 0x2d4287,
- 0x39cd87,
- 0x39cd8e,
- 0x24abc6,
- 0x382905,
- 0x285407,
- 0x201c43,
- 0x201c47,
- 0x3b3445,
- 0x2108c4,
- 0x211882,
- 0x22afc7,
- 0x31ab04,
- 0x22fec4,
- 0x24314b,
- 0x21d283,
- 0x288fc7,
- 0x21d284,
- 0x2ace07,
- 0x2824c3,
- 0x334b4d,
- 0x389388,
- 0x228e04,
- 0x258905,
- 0x30ac85,
- 0x30b0c3,
- 0x73201a82,
- 0x30c243,
- 0x30cf43,
- 0x221c04,
- 0x280785,
- 0x223387,
- 0x218d06,
- 0x373203,
- 0x24a40b,
- 0x3aa70b,
- 0x27928b,
- 0x28088a,
- 0x2ad8cb,
- 0x2fc28b,
- 0x2e478c,
- 0x2e7291,
- 0x32170a,
- 0x34e48b,
- 0x379d0b,
- 0x3b048a,
- 0x3b4cca,
- 0x30ea4d,
- 0x31038e,
- 0x3109cb,
- 0x310c8a,
- 0x312191,
- 0x3125ca,
- 0x312acb,
- 0x31300e,
- 0x31398c,
- 0x313fcb,
- 0x31428e,
- 0x31460c,
- 0x315a4a,
- 0x31694c,
- 0x73716c4a,
- 0x317449,
- 0x31b60a,
- 0x31b88a,
- 0x31bb0b,
- 0x31e9ce,
- 0x31ed51,
- 0x327a09,
- 0x327c4a,
- 0x32844b,
- 0x32a30a,
- 0x32ab96,
- 0x32c8cb,
- 0x32e00a,
- 0x32e5ca,
- 0x33048b,
- 0x332189,
- 0x3354c9,
- 0x335a4d,
- 0x3360cb,
- 0x33734b,
- 0x337d0b,
- 0x3381c9,
- 0x33880e,
- 0x338f0a,
- 0x33a24a,
- 0x33a7ca,
- 0x33af8b,
- 0x33b7cb,
- 0x33ba8d,
- 0x33cecd,
- 0x33da90,
- 0x33df4b,
- 0x33e54c,
- 0x33ea4b,
- 0x34118b,
- 0x34290b,
- 0x3463cb,
- 0x346e4f,
- 0x34720b,
- 0x347d0a,
- 0x348249,
- 0x348609,
- 0x34898b,
- 0x348c4e,
- 0x34b98b,
- 0x34d04f,
- 0x34ff0b,
- 0x3501cb,
- 0x35048b,
- 0x35098a,
- 0x355c09,
- 0x35a20f,
- 0x36128c,
- 0x36170c,
- 0x36208e,
- 0x36388f,
- 0x363c4e,
- 0x3652d0,
- 0x3656cf,
- 0x365d4e,
- 0x36650c,
- 0x366812,
- 0x36a511,
- 0x36ad0e,
- 0x36ba0e,
- 0x36bf4e,
- 0x36c2cf,
- 0x36c68e,
- 0x36ca13,
- 0x36ced1,
- 0x36d30e,
- 0x36d78c,
- 0x36e493,
- 0x36fa90,
- 0x37070c,
- 0x370a0c,
- 0x370ecb,
- 0x37184e,
- 0x371f8b,
- 0x3727cb,
- 0x37378c,
- 0x37914a,
- 0x37950c,
- 0x37980c,
- 0x379b09,
- 0x37b7cb,
- 0x37ba88,
- 0x37bc89,
- 0x37bc8f,
- 0x37d5cb,
- 0x37e44a,
- 0x37fd4c,
- 0x380e09,
- 0x381b88,
- 0x38214b,
- 0x382c0b,
- 0x38418a,
- 0x38440b,
- 0x38488c,
- 0x385548,
- 0x38958b,
- 0x38c04b,
- 0x39000b,
- 0x39180b,
- 0x39c90b,
- 0x39cbc9,
- 0x39d10d,
- 0x3a264a,
- 0x3a3597,
- 0x3a3dd8,
- 0x3a6309,
- 0x3a7b4b,
- 0x3a9554,
- 0x3a9a4b,
- 0x3a9fca,
- 0x3ab70a,
- 0x3ab98b,
- 0x3ad110,
- 0x3ad511,
- 0x3ae64a,
- 0x3afa8d,
- 0x3b018d,
- 0x3b508b,
- 0x3b5c46,
- 0x221b83,
- 0x73b76c03,
- 0x37f706,
- 0x292c85,
- 0x396787,
- 0x3215c6,
- 0x1639f02,
- 0x2b3809,
- 0x32fd44,
- 0x2e0bc8,
- 0x24e103,
- 0x2f6cc7,
- 0x241b82,
- 0x2b2c03,
- 0x73e06c82,
- 0x2cb006,
- 0x2cc544,
- 0x3b2e84,
- 0x2616c3,
- 0x2616c5,
- 0x746c7282,
- 0x74aae504,
- 0x279747,
- 0x1669e02,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x20abc3,
- 0x204cc2,
- 0x15f048,
- 0x20d1c2,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x324156,
- 0x325393,
- 0x34f849,
- 0x2957c8,
- 0x364689,
- 0x308b06,
- 0x336f50,
- 0x25c9d3,
- 0x3072c8,
- 0x344207,
- 0x27e407,
- 0x2475ca,
- 0x373549,
- 0x239789,
- 0x29258b,
- 0x367e06,
- 0x314aca,
- 0x2221c6,
- 0x32f943,
- 0x294985,
- 0x22b888,
- 0x2a920d,
- 0x35ab0c,
- 0x3a2107,
- 0x379f8d,
- 0x20c504,
- 0x22ef0a,
- 0x23064a,
- 0x230b0a,
- 0x20fe87,
- 0x240387,
- 0x243084,
- 0x26cdc6,
- 0x3aab84,
- 0x2e26c8,
- 0x2267c9,
- 0x2b94c6,
- 0x2b94c8,
- 0x24c34d,
- 0x2c9fc9,
- 0x207d48,
- 0x271647,
- 0x2f8e8a,
- 0x2539c6,
- 0x2642c7,
- 0x2c96c4,
- 0x28e807,
- 0x332eca,
- 0x36f5ce,
- 0x228fc5,
- 0x28e70b,
- 0x262089,
- 0x2a8909,
- 0x2129c7,
- 0x29998a,
- 0x225707,
- 0x2ffd09,
- 0x326b48,
- 0x35dc4b,
- 0x2e0405,
- 0x38144a,
- 0x223109,
- 0x23908a,
- 0x2ccb4b,
- 0x383a0b,
- 0x292315,
- 0x2e6185,
- 0x2716c5,
- 0x2f424a,
- 0x25980a,
- 0x261e07,
- 0x21d743,
- 0x2a5c08,
- 0x2d828a,
- 0x223706,
- 0x24ff09,
- 0x26ebc8,
- 0x2de404,
- 0x242649,
- 0x2c3608,
- 0x2b1c07,
- 0x20ce06,
- 0x36f447,
- 0x293cc7,
- 0x242ac5,
- 0x228e0c,
- 0x258905,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x2d0783,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x2d0783,
- 0x204ac3,
- 0x24a843,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x20d1c2,
- 0x2000c2,
- 0x230d42,
- 0x202f02,
- 0x202382,
- 0x261e82,
- 0x46d0783,
- 0x231b83,
- 0x2135c3,
- 0x332ec3,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x201383,
- 0x15f048,
- 0x32df04,
- 0x260087,
- 0x263d43,
- 0x37aa84,
- 0x214543,
- 0x212a43,
- 0x332ec3,
- 0x13ecc7,
- 0x204cc2,
- 0x168883,
- 0x5a0d1c2,
- 0x8d54d,
- 0x8d88d,
- 0x230d42,
- 0x964c4,
- 0x200382,
- 0x5e963c8,
- 0xf39c4,
- 0x15f048,
- 0x14020c2,
- 0x1509cc6,
- 0x20e443,
- 0x26ae03,
- 0x66d0783,
- 0x22ef04,
- 0x6a31b83,
- 0x6f32ec3,
- 0x20a3c2,
- 0x2964c4,
- 0x204ac3,
- 0x2fc883,
- 0x201882,
- 0x200383,
- 0x21c802,
- 0x2f8043,
- 0x202602,
- 0x203f83,
- 0x26ec83,
- 0x206d02,
- 0x15f048,
- 0x20e443,
- 0x2fc883,
- 0x201882,
- 0x2f8043,
- 0x202602,
+ 0x3523c5,
+ 0x3220c3,
+ 0x200604,
+ 0x2e8f84,
+ 0x2e8f85,
+ 0x206b43,
+ 0x978d2c3,
+ 0x9a0bb42,
+ 0x289e05,
+ 0x289e0b,
+ 0x31e686,
+ 0x20cb4b,
+ 0x221344,
+ 0x20d949,
+ 0x20e9c4,
+ 0x9e0ec02,
+ 0x20f143,
+ 0x20f403,
+ 0x16105c2,
+ 0x268183,
+ 0x2105ca,
+ 0xa20b382,
+ 0x216445,
+ 0x29224a,
+ 0x2d7744,
+ 0x283783,
+ 0x26cfc4,
+ 0x212543,
+ 0x212544,
+ 0x212547,
+ 0x2140c5,
+ 0x2147c5,
+ 0x214f46,
+ 0x2157c6,
+ 0x216a03,
+ 0x21ae88,
+ 0x210043,
+ 0xa601c02,
+ 0x243448,
+ 0x213ccb,
+ 0x220148,
+ 0x220d86,
+ 0x221847,
+ 0x225348,
+ 0xb642b42,
+ 0xbabf3c2,
+ 0x326788,
+ 0x35e4c7,
+ 0x246085,
+ 0x357f48,
+ 0x2bd408,
+ 0x34dd83,
+ 0x22a1c4,
+ 0x36f502,
+ 0xbe2bc82,
+ 0xc238482,
+ 0xca2e802,
+ 0x22e803,
+ 0xce01ec2,
+ 0x2fe203,
+ 0x2f1e84,
+ 0x201ec3,
+ 0x26e8c4,
+ 0x201ecb,
+ 0x213c03,
+ 0x2de946,
+ 0x239f84,
+ 0x29034e,
+ 0x371145,
+ 0x38af48,
+ 0x31ffc7,
+ 0x31ffca,
+ 0x229743,
+ 0x22f147,
+ 0x31efc5,
+ 0x22f8c4,
+ 0x265b06,
+ 0x265b07,
+ 0x2c11c4,
+ 0x2f7a87,
+ 0x313d44,
+ 0x26c004,
+ 0x26c006,
+ 0x387184,
+ 0x3510c6,
0x203f83,
- 0x26ec83,
- 0x206d02,
- 0x2f8043,
+ 0x35e288,
+ 0x203f88,
+ 0x245503,
+ 0x268143,
+ 0x399a04,
+ 0x39e003,
+ 0xd219f02,
+ 0xd6d6a42,
+ 0x20bac3,
+ 0x207146,
+ 0x241fc3,
+ 0x377cc4,
+ 0xdaee982,
+ 0x3af843,
+ 0x3507c3,
+ 0x217a02,
+ 0xde04142,
+ 0x2c1946,
+ 0x233ac7,
+ 0x2e8945,
+ 0x37de04,
+ 0x28c505,
+ 0x268907,
+ 0x267805,
+ 0x2b8649,
+ 0x2cefc6,
+ 0x2daa88,
+ 0x2e8846,
+ 0xe21a1c2,
+ 0x32ca08,
+ 0x2f1c46,
+ 0x21a1c5,
+ 0x2f6d87,
+ 0x309984,
+ 0x309985,
+ 0x276384,
+ 0x276388,
+ 0xe60cc02,
+ 0xea09882,
+ 0x3103c6,
+ 0x3b8988,
+ 0x334385,
+ 0x337306,
+ 0x342f08,
+ 0x344a88,
+ 0xee09885,
+ 0xf2142c4,
+ 0x3b0787,
+ 0xf60e5c2,
+ 0xfa1b102,
+ 0x10a099c2,
+ 0x2b9785,
+ 0x2a2645,
+ 0x2fef86,
+ 0x3b2547,
+ 0x380747,
+ 0x112a84c3,
+ 0x2a84c7,
+ 0x31eb08,
+ 0x376ec9,
+ 0x376d07,
+ 0x384d07,
+ 0x3a8ec8,
+ 0x3ad4c6,
+ 0x22f3c6,
+ 0x23000c,
+ 0x23120a,
+ 0x231687,
+ 0x232c8b,
+ 0x233907,
+ 0x23390e,
+ 0x234cc4,
+ 0x235ac4,
+ 0x237a47,
+ 0x3690c7,
+ 0x23b206,
+ 0x23b207,
+ 0x23b4c7,
+ 0x19604682,
+ 0x23c886,
+ 0x23c88a,
+ 0x23ce8b,
+ 0x23dbc7,
+ 0x23ed45,
+ 0x23f083,
+ 0x240586,
+ 0x240587,
+ 0x38eb43,
+ 0x19a0c442,
+ 0x240f4a,
+ 0x19f5d882,
+ 0x1a2a5e02,
+ 0x1a643142,
+ 0x1aa2cd82,
+ 0x244bc5,
+ 0x245304,
+ 0x1b205742,
+ 0x268dc5,
+ 0x23d483,
+ 0x20eac5,
+ 0x22ad44,
+ 0x206804,
+ 0x314046,
+ 0x25e206,
+ 0x28a003,
+ 0x238284,
+ 0x3a6803,
+ 0x1b600dc2,
+ 0x391c04,
+ 0x391c06,
+ 0x3b0d05,
+ 0x205e06,
+ 0x2f6e88,
+ 0x266e84,
+ 0x27ed08,
+ 0x2426c5,
+ 0x228308,
+ 0x29ff86,
+ 0x237587,
+ 0x22e204,
+ 0x22e206,
+ 0x33f443,
+ 0x383ec3,
+ 0x223d08,
+ 0x318dc4,
+ 0x348747,
+ 0x23e6c6,
+ 0x2d6389,
+ 0x250348,
+ 0x26cd08,
+ 0x26d084,
+ 0x351443,
+ 0x225e02,
+ 0x1c60f882,
+ 0x1ca10e82,
+ 0x3a7403,
+ 0x1ce04a42,
+ 0x38eac4,
+ 0x2862c6,
+ 0x26e605,
+ 0x21ba03,
+ 0x232884,
+ 0x2b14c7,
+ 0x33da03,
+ 0x231a88,
+ 0x208545,
+ 0x36e803,
+ 0x273445,
+ 0x273584,
+ 0x2f6a86,
+ 0x209ec4,
+ 0x211346,
+ 0x211b86,
+ 0x3916c4,
+ 0x213b43,
+ 0x1d205882,
+ 0x247345,
+ 0x221c03,
+ 0x1d61b0c2,
+ 0x22ffc3,
+ 0x209bc5,
+ 0x232403,
+ 0x232409,
+ 0x1da05f02,
+ 0x1e205e42,
+ 0x2893c5,
+ 0x218786,
+ 0x2d1746,
+ 0x2b0a88,
+ 0x2b0a8b,
+ 0x20718b,
+ 0x2e8b45,
+ 0x2db145,
+ 0x2c6309,
+ 0x1600302,
+ 0x391888,
+ 0x20dc44,
+ 0x1ea007c2,
+ 0x3a7883,
+ 0x1f2c6086,
+ 0x20ae88,
+ 0x1f601402,
+ 0x2344c8,
+ 0x1fa2bb82,
+ 0x3b92ca,
+ 0x1feccc43,
+ 0x3ac1c6,
+ 0x3af408,
+ 0x3ac008,
+ 0x31d006,
+ 0x36bc07,
+ 0x264a07,
+ 0x3349ca,
+ 0x2d77c4,
+ 0x3474c4,
+ 0x35c1c9,
+ 0x20794385,
+ 0x209686,
+ 0x20e1c3,
+ 0x24a044,
+ 0x20a02644,
+ 0x202647,
+ 0x212fc7,
+ 0x22a584,
+ 0x285445,
+ 0x2ff048,
+ 0x366747,
+ 0x370f07,
+ 0x20e18342,
+ 0x327704,
+ 0x292b48,
+ 0x245bc4,
+ 0x247784,
+ 0x248085,
+ 0x2481c7,
+ 0x223589,
+ 0x248fc4,
+ 0x249709,
+ 0x249948,
+ 0x249dc4,
+ 0x249dc7,
+ 0x2124aa83,
+ 0x24ad47,
+ 0x1609d02,
+ 0x16ad202,
+ 0x24bec6,
+ 0x24c507,
+ 0x24cd44,
+ 0x24e6c7,
+ 0x24fa47,
+ 0x24fdc3,
+ 0x248902,
+ 0x229642,
+ 0x250a03,
+ 0x250a04,
+ 0x250a0b,
+ 0x379a48,
+ 0x256804,
+ 0x2523c5,
+ 0x254007,
+ 0x2555c5,
+ 0x2bc00a,
+ 0x256743,
+ 0x2160fc82,
+ 0x226e84,
+ 0x258d89,
+ 0x25c343,
+ 0x25c407,
+ 0x24a849,
+ 0x282688,
+ 0x204743,
+ 0x278fc7,
+ 0x279709,
+ 0x268ac3,
+ 0x2810c4,
+ 0x283c89,
+ 0x2880c6,
+ 0x289683,
+ 0x200182,
+ 0x21f983,
+ 0x3a8a87,
+ 0x21f985,
+ 0x379746,
+ 0x256e84,
+ 0x302e85,
+ 0x2e4403,
+ 0x216c46,
+ 0x20db42,
+ 0x395144,
+ 0x221402,
+ 0x221403,
+ 0x21a00782,
+ 0x247303,
+ 0x215c44,
+ 0x215c47,
+ 0x200906,
0x202602,
- 0x203f83,
- 0x26ec83,
- 0x206d02,
- 0x2d0783,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x210582,
+ 0x21e025c2,
+ 0x2dca84,
+ 0x22235e82,
+ 0x22600b02,
+ 0x2d4f84,
+ 0x2d4f85,
+ 0x2b6dc5,
+ 0x390e06,
+ 0x22a05d42,
+ 0x205d45,
+ 0x20cf05,
+ 0x20ae03,
+ 0x210986,
+ 0x2126c5,
+ 0x2166c2,
+ 0x343605,
+ 0x2166c4,
+ 0x221ec3,
+ 0x227343,
+ 0x22e0c642,
+ 0x2d4987,
+ 0x3669c4,
+ 0x3669c9,
+ 0x249f44,
+ 0x291d43,
+ 0x2f6609,
+ 0x367508,
+ 0x232a24c4,
+ 0x2a24c6,
+ 0x21c303,
+ 0x247bc3,
+ 0x2e9dc3,
+ 0x236eb382,
+ 0x368cc2,
+ 0x23a05e82,
+ 0x323cc8,
+ 0x32a388,
+ 0x398e46,
+ 0x2e27c5,
+ 0x22efc5,
+ 0x352ec7,
+ 0x21d205,
+ 0x228782,
+ 0x23e38182,
+ 0x1603002,
+ 0x2416c8,
+ 0x32c945,
+ 0x2e3404,
+ 0x2ebac5,
+ 0x23f407,
+ 0x3207c4,
+ 0x240e42,
+ 0x24200582,
+ 0x338984,
+ 0x212cc7,
+ 0x28a2c7,
+ 0x34ff84,
+ 0x292203,
+ 0x245444,
+ 0x245448,
+ 0x22f706,
+ 0x26598a,
+ 0x223444,
+ 0x292588,
+ 0x288504,
+ 0x221946,
+ 0x294684,
+ 0x2b9a86,
+ 0x366c89,
+ 0x25da47,
+ 0x3375c3,
+ 0x24667e42,
+ 0x267e43,
+ 0x20ee02,
+ 0x24a11ec2,
+ 0x3085c6,
+ 0x365c88,
+ 0x2a4087,
+ 0x3a3f49,
+ 0x291c49,
+ 0x2a5045,
+ 0x2a6049,
+ 0x2a6805,
+ 0x2a6949,
+ 0x2a8005,
+ 0x2a9108,
+ 0x21fb84,
+ 0x24e890c7,
+ 0x2a9303,
+ 0x2a9307,
+ 0x3850c6,
+ 0x2a9b87,
+ 0x2a1085,
+ 0x2935c3,
+ 0x2521ae02,
+ 0x3b40c4,
+ 0x2562ce82,
+ 0x258203,
+ 0x25a17f42,
+ 0x36d586,
+ 0x2f3a85,
+ 0x2ac207,
+ 0x26cc43,
+ 0x325044,
+ 0x20e903,
+ 0x33e783,
+ 0x25e02bc2,
+ 0x266015c2,
+ 0x398804,
+ 0x2488c3,
+ 0x243c85,
+ 0x26a029c2,
+ 0x27206482,
+ 0x2b4506,
+ 0x318f04,
+ 0x2e3004,
+ 0x2e300a,
+ 0x27a01fc2,
+ 0x37204a,
+ 0x3756c8,
+ 0x27fb1384,
+ 0x20ad83,
+ 0x201fc3,
+ 0x3a9a49,
+ 0x217649,
+ 0x285246,
+ 0x28244183,
+ 0x3292c5,
+ 0x30180d,
+ 0x375886,
+ 0x3bac8b,
+ 0x28602e82,
+ 0x22c1c8,
+ 0x29206e82,
+ 0x29606fc2,
+ 0x2ae585,
+ 0x29a03942,
+ 0x258447,
+ 0x21c907,
+ 0x21e003,
+ 0x2306c8,
+ 0x29e06502,
+ 0x312684,
+ 0x212943,
+ 0x351d45,
+ 0x34db83,
+ 0x2f3546,
+ 0x205904,
+ 0x268103,
+ 0x2ae9c3,
+ 0x2a205fc2,
+ 0x2e8ac4,
+ 0x35f6c5,
+ 0x39f1c7,
+ 0x275643,
+ 0x2ad883,
+ 0x2ae083,
+ 0x160fec2,
+ 0x2ae143,
+ 0x2ae943,
+ 0x2a605102,
+ 0x282104,
+ 0x25e406,
+ 0x342643,
+ 0x2aec43,
+ 0x2aaafd42,
+ 0x2afd48,
+ 0x2b0004,
+ 0x36c246,
+ 0x2b0387,
+ 0x249c46,
+ 0x28e2c4,
+ 0x38600682,
+ 0x384f8b,
+ 0x2fb08e,
+ 0x21930f,
+ 0x2985c3,
+ 0x38ebbbc2,
+ 0x1600f42,
+ 0x39201582,
+ 0x28f403,
+ 0x2fdec3,
+ 0x233706,
+ 0x277c46,
+ 0x3afd87,
+ 0x3328c4,
+ 0x396188c2,
+ 0x39a08882,
+ 0x348345,
+ 0x2e6047,
+ 0x3b5746,
+ 0x39e27282,
+ 0x227284,
+ 0x2b3ac3,
+ 0x3a20be02,
+ 0x3a759ec3,
+ 0x2b4c44,
+ 0x2be409,
+ 0x16c3ac2,
+ 0x3aa03a82,
+ 0x203a85,
+ 0x3aec3d42,
+ 0x3b203202,
+ 0x346947,
+ 0x239689,
+ 0x35ca0b,
+ 0x2647c5,
+ 0x2c4849,
+ 0x2e8246,
+ 0x31e6c7,
+ 0x3b608484,
+ 0x3199c9,
+ 0x373487,
+ 0x20ab47,
+ 0x20a383,
+ 0x20a386,
+ 0x3b68c7,
+ 0x206a43,
+ 0x2565c6,
+ 0x3be02a02,
+ 0x3c232682,
+ 0x385803,
+ 0x324c45,
+ 0x350f47,
+ 0x250086,
+ 0x21f905,
+ 0x277d44,
+ 0x2c9fc5,
+ 0x2f2684,
+ 0x3c6040c2,
+ 0x331107,
+ 0x2dbd44,
+ 0x217544,
+ 0x21754d,
+ 0x257509,
+ 0x3a4448,
+ 0x253944,
+ 0x3abc45,
+ 0x206447,
+ 0x2144c4,
+ 0x2e1947,
+ 0x21c485,
+ 0x3caa4604,
+ 0x2d92c5,
+ 0x25b004,
+ 0x24bb86,
+ 0x3b2345,
+ 0x3ce250c2,
+ 0x283844,
+ 0x283845,
+ 0x36fa46,
+ 0x20c3c5,
+ 0x30c304,
+ 0x2c5dc3,
+ 0x2053c6,
+ 0x358505,
+ 0x2bb485,
+ 0x3b2444,
+ 0x2234c3,
+ 0x2234cc,
+ 0x3d288a02,
+ 0x3d6010c2,
+ 0x3da00282,
+ 0x206343,
+ 0x206344,
+ 0x3de04bc2,
+ 0x2f9688,
+ 0x379805,
+ 0x235684,
+ 0x23b086,
+ 0x3e201f42,
+ 0x3e609782,
+ 0x3ea00e82,
+ 0x306b85,
+ 0x391586,
+ 0x211084,
+ 0x3263c6,
+ 0x2ba346,
+ 0x219943,
+ 0x3ef0de0a,
+ 0x247b05,
+ 0x2c8e83,
+ 0x223186,
+ 0x300fc9,
+ 0x223187,
+ 0x297788,
+ 0x2981c9,
+ 0x224348,
+ 0x229486,
+ 0x20bf03,
+ 0x3f2a8542,
+ 0x385683,
+ 0x385689,
+ 0x332448,
+ 0x3f649a02,
+ 0x3fa02342,
+ 0x227f83,
+ 0x2da905,
+ 0x251ec4,
+ 0x2c0909,
+ 0x22cb84,
+ 0x266348,
+ 0x202343,
+ 0x202344,
+ 0x278b03,
+ 0x2187c8,
+ 0x217487,
+ 0x4020b102,
+ 0x274082,
+ 0x351905,
+ 0x266689,
+ 0x209703,
+ 0x27b184,
+ 0x329284,
+ 0x2064c3,
+ 0x27c3ca,
+ 0x40752bc2,
+ 0x40a83802,
+ 0x2c5443,
+ 0x3739c3,
+ 0x1602302,
+ 0x38ac03,
+ 0x40e0f242,
+ 0x4120ec42,
+ 0x41610444,
+ 0x210446,
+ 0x383b06,
+ 0x26ad44,
+ 0x36c643,
+ 0x38bcc3,
+ 0x226883,
+ 0x23d206,
+ 0x2cb8c5,
+ 0x2c5a07,
+ 0x31e589,
+ 0x2ca645,
+ 0x2cb806,
+ 0x2cbd88,
+ 0x2cbf86,
+ 0x236a04,
+ 0x29944b,
+ 0x2ceac3,
+ 0x2ceac5,
+ 0x2cec08,
+ 0x228502,
+ 0x346c42,
+ 0x41a44c42,
+ 0x41e0e602,
+ 0x218903,
+ 0x422675c2,
+ 0x2675c3,
+ 0x2cef04,
+ 0x2cf5c3,
+ 0x42a115c2,
+ 0x42ed43c6,
+ 0x2a7306,
+ 0x43207902,
+ 0x4360f442,
+ 0x43a27382,
+ 0x43e02c82,
+ 0x4422dd02,
+ 0x44602d02,
+ 0x234703,
+ 0x390685,
+ 0x319606,
+ 0x44a11cc4,
+ 0x3b0b0a,
+ 0x32fe86,
+ 0x2e8d84,
+ 0x281d03,
+ 0x45604642,
+ 0x200c82,
+ 0x25fd03,
+ 0x45a05503,
+ 0x2c7b87,
+ 0x3b2247,
+ 0x47250b07,
+ 0x312d87,
+ 0x227b03,
+ 0x227b0a,
+ 0x236b84,
+ 0x23e5c4,
+ 0x23e5ca,
+ 0x213f05,
+ 0x47609642,
+ 0x24e683,
+ 0x47a008c2,
+ 0x21c2c3,
+ 0x267e03,
+ 0x48203342,
+ 0x2a8444,
+ 0x21de84,
+ 0x3b9505,
+ 0x305005,
+ 0x2e1ac6,
+ 0x2e1e46,
+ 0x48608442,
+ 0x48a033c2,
+ 0x3185c5,
+ 0x2a7012,
+ 0x2511c6,
+ 0x220803,
+ 0x30a746,
+ 0x220805,
+ 0x1610602,
+ 0x50e120c2,
+ 0x353e83,
+ 0x2120c3,
+ 0x2441c3,
+ 0x512023c2,
+ 0x376e43,
+ 0x5160b482,
+ 0x210483,
+ 0x282148,
+ 0x25e983,
+ 0x25e986,
+ 0x3a2987,
+ 0x306806,
+ 0x30680b,
+ 0x2e8cc7,
+ 0x3b3ec4,
+ 0x51e04ec2,
+ 0x379685,
+ 0x522054c3,
+ 0x2a6e03,
+ 0x326c05,
+ 0x329983,
+ 0x52729986,
+ 0x391a0a,
+ 0x26a9c3,
+ 0x204584,
+ 0x3b88c6,
+ 0x21a5c6,
+ 0x52a00983,
+ 0x324f07,
+ 0x285147,
+ 0x29b0c5,
+ 0x2318c6,
+ 0x224a83,
+ 0x54a10bc3,
+ 0x54e056c2,
+ 0x328144,
+ 0x22a2cc,
+ 0x236149,
+ 0x2414c7,
+ 0x249245,
+ 0x262a84,
+ 0x273cc8,
+ 0x278305,
+ 0x55284a05,
+ 0x28c609,
+ 0x351f43,
+ 0x2a5d84,
+ 0x556013c2,
+ 0x2013c3,
+ 0x55a94142,
+ 0x2a4386,
+ 0x160f982,
+ 0x55e06e02,
+ 0x306a88,
+ 0x2be603,
+ 0x2d9207,
+ 0x2e4d05,
+ 0x2dd685,
+ 0x32840b,
+ 0x2dd686,
+ 0x328606,
+ 0x2ffac6,
+ 0x262c84,
+ 0x3042c6,
+ 0x2e3508,
+ 0x23a043,
+ 0x250dc3,
+ 0x250dc4,
+ 0x2e4484,
+ 0x2e4a07,
+ 0x2e5ec5,
+ 0x562e6002,
+ 0x5660ba02,
+ 0x20ba05,
+ 0x2e83c4,
+ 0x2e83cb,
+ 0x2e8e88,
+ 0x228f44,
+ 0x2272c2,
+ 0x56e28ec2,
+ 0x23b903,
+ 0x2e9344,
+ 0x2e9605,
+ 0x2ea047,
+ 0x2eb604,
+ 0x2e8b84,
+ 0x57201302,
+ 0x360cc9,
+ 0x2ec405,
+ 0x264a85,
+ 0x2ecf85,
+ 0x57601303,
+ 0x2ee0c4,
+ 0x2ee0cb,
+ 0x2ee644,
+ 0x2ef3cb,
+ 0x2ef7c5,
+ 0x21944a,
+ 0x2f0048,
+ 0x2f024a,
+ 0x2f0ac3,
+ 0x2f0aca,
+ 0x57a01742,
+ 0x57e2d4c2,
0x21aa03,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204ac3,
- 0x200383,
- 0x370145,
- 0x217082,
- 0x204cc2,
- 0x15f048,
- 0x1491b48,
- 0x332ec3,
- 0x2461c1,
- 0x2096c1,
- 0x202201,
- 0x209441,
- 0x24a5c1,
- 0x27e081,
- 0x24c0c1,
- 0x2462c1,
- 0x2e7481,
- 0x30ed01,
+ 0x582f1bc2,
+ 0x2f1bc3,
+ 0x5875c402,
+ 0x58b22842,
+ 0x2f2504,
+ 0x21afc6,
+ 0x326105,
+ 0x2f4503,
+ 0x31a9c6,
+ 0x204405,
+ 0x25e704,
+ 0x58e05ec2,
+ 0x2c9244,
+ 0x2c5f8a,
+ 0x22d787,
+ 0x2f38c6,
+ 0x380b07,
+ 0x22a403,
+ 0x283e48,
+ 0x37f48b,
+ 0x3736c5,
+ 0x333ec5,
+ 0x333ec6,
+ 0x390884,
+ 0x3aa248,
+ 0x222943,
+ 0x222944,
+ 0x222947,
+ 0x38e446,
+ 0x352686,
+ 0x29018a,
+ 0x246604,
+ 0x24660a,
+ 0x59282846,
+ 0x282847,
+ 0x252447,
+ 0x270844,
+ 0x270849,
+ 0x25e0c5,
+ 0x235e0b,
+ 0x2e81c3,
+ 0x211503,
+ 0x22f003,
+ 0x22fac4,
+ 0x59600482,
+ 0x25d4c6,
+ 0x293345,
+ 0x30a985,
+ 0x24f6c6,
+ 0x3395c4,
+ 0x59a02782,
+ 0x23f0c4,
+ 0x59e01c42,
+ 0x2b9f05,
+ 0x21ad84,
+ 0x21bec3,
+ 0x5a612102,
+ 0x212103,
+ 0x23ba46,
+ 0x5aa03082,
+ 0x27f488,
+ 0x223004,
+ 0x223006,
+ 0x374246,
+ 0x2540c4,
+ 0x205345,
+ 0x2141c8,
+ 0x216547,
+ 0x219687,
+ 0x21968f,
+ 0x292a46,
+ 0x22cf03,
+ 0x22cf04,
+ 0x310504,
+ 0x20d003,
+ 0x221a84,
+ 0x240944,
+ 0x5ae42b02,
+ 0x289d43,
+ 0x242b03,
+ 0x5b209842,
+ 0x229f83,
+ 0x38eb83,
+ 0x21484a,
+ 0x358107,
+ 0x2efc0c,
+ 0x2efec6,
+ 0x30a146,
+ 0x248547,
+ 0x5b64c687,
+ 0x24f809,
+ 0x243584,
+ 0x24fbc4,
+ 0x5ba18942,
+ 0x5be027c2,
+ 0x290546,
+ 0x324d04,
+ 0x2d6bc6,
+ 0x2a5148,
+ 0x3b8dc4,
+ 0x258486,
+ 0x2d1705,
+ 0x265c88,
+ 0x207383,
+ 0x273705,
+ 0x273e83,
+ 0x264b83,
+ 0x264b84,
+ 0x2759c3,
+ 0x5c2ec082,
+ 0x5c602e02,
+ 0x2e8089,
+ 0x278205,
+ 0x278404,
+ 0x27a9c5,
+ 0x20dd44,
+ 0x2e0d07,
+ 0x343bc5,
+ 0x250cc4,
+ 0x250cc8,
+ 0x2d5086,
+ 0x2d7984,
+ 0x2d8e88,
+ 0x2dbb87,
+ 0x5ca03902,
+ 0x2e36c4,
+ 0x20d0c4,
+ 0x20ad47,
+ 0x5ce2b804,
+ 0x2ccf42,
+ 0x5d201102,
+ 0x201543,
+ 0x203984,
+ 0x2aa283,
+ 0x374e05,
+ 0x5d61e182,
+ 0x2eb285,
+ 0x202c42,
+ 0x34d5c5,
+ 0x365e45,
+ 0x5da00c42,
+ 0x350744,
+ 0x5de00d02,
+ 0x2387c6,
+ 0x29a146,
+ 0x2667c8,
+ 0x2bfa08,
+ 0x36d504,
+ 0x36d6c5,
+ 0x3610c9,
+ 0x2db1c4,
+ 0x3919c4,
+ 0x205183,
+ 0x5e222705,
+ 0x2c3b87,
+ 0x2a2744,
+ 0x341e8d,
+ 0x361782,
+ 0x361783,
+ 0x364503,
+ 0x5e600802,
+ 0x388305,
+ 0x25f9c7,
+ 0x205b44,
+ 0x312e47,
+ 0x2983c9,
+ 0x2c60c9,
+ 0x2519c7,
+ 0x273b03,
+ 0x273b08,
+ 0x2ed249,
+ 0x24e187,
+ 0x373605,
+ 0x39e086,
+ 0x39fb86,
+ 0x3a3c05,
+ 0x257605,
+ 0x5ea02d82,
+ 0x36ce45,
+ 0x2b2908,
+ 0x2c1706,
+ 0x5eeb7487,
+ 0x2efa04,
+ 0x2aa987,
+ 0x2f62c6,
+ 0x5f230982,
+ 0x36f746,
+ 0x2f83ca,
+ 0x2f8e85,
+ 0x5f6de402,
+ 0x5fa36542,
+ 0x3b6c06,
+ 0x2a1e88,
+ 0x5fe8a487,
+ 0x60234e42,
+ 0x2255c3,
+ 0x311d86,
+ 0x225044,
+ 0x3a2846,
+ 0x390b06,
+ 0x26ff0a,
+ 0x331c05,
+ 0x367ec6,
+ 0x3759c3,
+ 0x3759c4,
+ 0x207102,
+ 0x309943,
+ 0x60606382,
+ 0x2f0f83,
+ 0x3722c4,
+ 0x2a1fc4,
+ 0x2a1fca,
+ 0x229543,
+ 0x276288,
+ 0x22954a,
+ 0x27b447,
+ 0x2fcd86,
+ 0x238684,
+ 0x290bc2,
+ 0x2a2e82,
+ 0x60a04002,
+ 0x245403,
+ 0x252207,
+ 0x31ac87,
+ 0x2848c4,
+ 0x26f8c7,
+ 0x2ea146,
+ 0x216847,
+ 0x35e604,
+ 0x242a05,
+ 0x2b7985,
+ 0x60e0fe82,
+ 0x20fe86,
+ 0x218283,
+ 0x220502,
+ 0x220506,
+ 0x61203e02,
+ 0x6160b0c2,
+ 0x3ba785,
+ 0x61a21c82,
+ 0x61e03b42,
+ 0x33b5c5,
+ 0x393105,
+ 0x367f85,
+ 0x267303,
+ 0x286385,
+ 0x2dd747,
+ 0x307bc5,
+ 0x306185,
+ 0x38b044,
+ 0x3204c6,
+ 0x23e804,
+ 0x62201442,
+ 0x62f630c5,
+ 0x2ebe07,
+ 0x2d6dc8,
+ 0x25fe86,
+ 0x25fe8d,
+ 0x260709,
+ 0x260712,
+ 0x32f345,
+ 0x3339c3,
+ 0x6320a9c2,
+ 0x309444,
+ 0x375903,
+ 0x360fc5,
+ 0x2fa085,
+ 0x63612982,
+ 0x36e843,
+ 0x63a50b82,
+ 0x642bf542,
+ 0x6460fb42,
+ 0x353805,
+ 0x37ac43,
+ 0x37a4c8,
+ 0x64a07842,
+ 0x64e000c2,
+ 0x2a8406,
+ 0x33b80a,
+ 0x21bf03,
+ 0x20c343,
+ 0x2ee3c3,
+ 0x65a02dc2,
+ 0x73e35482,
+ 0x74601c82,
+ 0x201682,
+ 0x36f549,
+ 0x2c2f04,
+ 0x2309c8,
+ 0x74af4542,
+ 0x74e08602,
+ 0x2ef605,
+ 0x2330c8,
+ 0x282288,
+ 0x2f858c,
+ 0x22d543,
+ 0x25a9c2,
+ 0x75201f82,
+ 0x2caac6,
+ 0x2fdc05,
+ 0x26d343,
+ 0x23cc46,
+ 0x2fdd46,
+ 0x201f83,
+ 0x2ff883,
+ 0x300786,
+ 0x3013c4,
+ 0x295586,
+ 0x2cec85,
+ 0x30164a,
+ 0x2eebc4,
+ 0x302304,
+ 0x30370a,
+ 0x7566b082,
+ 0x337745,
+ 0x30478a,
+ 0x305285,
+ 0x305b44,
+ 0x305c46,
+ 0x305dc4,
+ 0x218dc6,
+ 0x75a6dac2,
+ 0x2f3206,
+ 0x2f3dc5,
+ 0x3ab6c7,
+ 0x200206,
+ 0x248744,
+ 0x2d5e07,
+ 0x30dd46,
+ 0x2b8a45,
+ 0x381947,
+ 0x39eb47,
+ 0x39eb4e,
+ 0x25ed06,
+ 0x2e1805,
+ 0x27dec7,
+ 0x282b43,
+ 0x3b2f87,
+ 0x20f5c5,
+ 0x212144,
+ 0x212f82,
+ 0x3addc7,
+ 0x332944,
+ 0x377404,
+ 0x273f0b,
+ 0x21d5c3,
+ 0x2b6987,
+ 0x21d5c4,
+ 0x2cc0c7,
+ 0x228bc3,
+ 0x33678d,
+ 0x388b48,
+ 0x21d044,
+ 0x250bc5,
+ 0x307d05,
+ 0x308143,
+ 0x75e22f02,
+ 0x309903,
+ 0x309fc3,
+ 0x210004,
+ 0x279805,
+ 0x218307,
+ 0x375a46,
+ 0x372003,
+ 0x23ab4b,
+ 0x26ba4b,
+ 0x2a654b,
+ 0x2de44a,
+ 0x30254b,
+ 0x31be8b,
+ 0x356b8c,
+ 0x378d11,
+ 0x3b654a,
+ 0x3ba10b,
+ 0x30ad8b,
+ 0x30b34a,
+ 0x30b88a,
+ 0x30cb4e,
+ 0x30d18b,
+ 0x30d44a,
+ 0x30ef11,
+ 0x30f34a,
+ 0x30f84b,
+ 0x30fd8e,
+ 0x31078c,
+ 0x310c4b,
+ 0x310f0e,
+ 0x31128c,
+ 0x31474a,
+ 0x31698c,
+ 0x76316c8a,
+ 0x317489,
+ 0x31af4a,
+ 0x31b1ca,
+ 0x31b44b,
+ 0x31f60e,
+ 0x31f991,
+ 0x328b89,
+ 0x328dca,
+ 0x3295cb,
+ 0x32a84a,
+ 0x32b316,
+ 0x32e14b,
+ 0x32f10a,
+ 0x32f50a,
+ 0x33084b,
+ 0x333449,
+ 0x337109,
+ 0x337d4d,
+ 0x33870b,
+ 0x33978b,
+ 0x33a14b,
+ 0x33a609,
+ 0x33ac4e,
+ 0x33b30a,
+ 0x33fc8a,
+ 0x33ffca,
+ 0x340b8b,
+ 0x3413cb,
+ 0x34168d,
+ 0x342c0d,
+ 0x343290,
+ 0x34374b,
+ 0x34408c,
+ 0x34480b,
+ 0x34644b,
+ 0x34798b,
+ 0x34c00b,
+ 0x34ca8f,
+ 0x34ce4b,
+ 0x34d94a,
+ 0x34e689,
+ 0x34f409,
+ 0x34f8cb,
+ 0x34fb8e,
+ 0x35434b,
+ 0x35574f,
+ 0x35864b,
+ 0x35890b,
+ 0x358bcb,
+ 0x3590ca,
+ 0x35c609,
+ 0x35f34f,
+ 0x36424c,
+ 0x36488c,
+ 0x364d0e,
+ 0x3653cf,
+ 0x36578e,
+ 0x365fd0,
+ 0x3663cf,
+ 0x366f4e,
+ 0x36770c,
+ 0x367a12,
+ 0x3689d1,
+ 0x36988e,
+ 0x36a04e,
+ 0x36a58e,
+ 0x36a90f,
+ 0x36acce,
+ 0x36b053,
+ 0x36b511,
+ 0x36b94e,
+ 0x36bdcc,
+ 0x36d913,
+ 0x36e210,
+ 0x36ea8c,
+ 0x36ed8c,
+ 0x36f24b,
+ 0x3703ce,
+ 0x370c8b,
+ 0x3715cb,
+ 0x37258c,
+ 0x37814a,
+ 0x37850c,
+ 0x37880c,
+ 0x378b09,
+ 0x37bb8b,
+ 0x37be48,
+ 0x37c049,
+ 0x37c04f,
+ 0x37d98b,
+ 0x7677eb8a,
+ 0x381fcc,
+ 0x383189,
+ 0x383608,
+ 0x38380b,
+ 0x383c8b,
+ 0x38480a,
+ 0x384a8b,
+ 0x38540c,
+ 0x386008,
+ 0x388d4b,
+ 0x38b44b,
+ 0x39484b,
+ 0x3958cb,
+ 0x39e6cb,
+ 0x39e989,
+ 0x39eecd,
+ 0x3a464a,
+ 0x3a5597,
+ 0x3a6bd8,
+ 0x3a96c9,
+ 0x3ab30b,
+ 0x3ac814,
+ 0x3acd0b,
+ 0x3ad28a,
+ 0x3aea0a,
+ 0x3aec8b,
+ 0x3b4250,
+ 0x3b4651,
+ 0x3b4d0a,
+ 0x3b5b4d,
+ 0x3b624d,
+ 0x3ba3cb,
+ 0x3bbd46,
+ 0x20ff83,
+ 0x76b80483,
+ 0x22cdc6,
+ 0x247645,
+ 0x27a007,
+ 0x31bd46,
+ 0x1656682,
+ 0x2ad9c9,
+ 0x31a7c4,
+ 0x2dacc8,
+ 0x232b43,
+ 0x309387,
+ 0x234f42,
+ 0x2ac243,
+ 0x76e07b02,
+ 0x2c7406,
+ 0x2c9884,
+ 0x369f44,
+ 0x390143,
+ 0x390145,
+ 0x776c3d82,
+ 0x77aa6cc4,
+ 0x270787,
+ 0x77e4a282,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x204e83,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x324556,
+ 0x325793,
+ 0x26f749,
+ 0x3b0688,
+ 0x379509,
+ 0x304906,
+ 0x3389d0,
+ 0x254b53,
+ 0x38e508,
+ 0x28ea47,
+ 0x36c747,
+ 0x284d0a,
+ 0x372349,
+ 0x38d849,
+ 0x28decb,
+ 0x349846,
+ 0x379b4a,
+ 0x220d86,
+ 0x31a3c3,
+ 0x2d48c5,
+ 0x35e288,
+ 0x23888d,
+ 0x2b984c,
+ 0x2de0c7,
+ 0x30b00d,
+ 0x2142c4,
+ 0x22fd8a,
+ 0x230d4a,
+ 0x23120a,
+ 0x2099c7,
+ 0x23af07,
+ 0x23d844,
+ 0x22e206,
+ 0x20c144,
+ 0x2b4148,
+ 0x22cbc9,
+ 0x2b0a86,
+ 0x2b0a88,
+ 0x2422cd,
+ 0x2c6309,
+ 0x3ac008,
+ 0x264a07,
+ 0x2f1f0a,
+ 0x24c506,
+ 0x2580c7,
+ 0x2cc3c4,
+ 0x23f287,
+ 0x309c0a,
+ 0x3ae54e,
+ 0x21d205,
+ 0x3b4a4b,
+ 0x331a09,
+ 0x217649,
+ 0x21c747,
+ 0x2a34ca,
+ 0x20ac87,
+ 0x2fb1c9,
+ 0x38f0c8,
+ 0x3533cb,
+ 0x2da905,
+ 0x3a430a,
+ 0x266e09,
+ 0x26d2ca,
+ 0x2ca6cb,
+ 0x23f18b,
+ 0x28dc55,
+ 0x2e3b85,
+ 0x264a85,
+ 0x2ee0ca,
+ 0x3945ca,
+ 0x331787,
+ 0x21da83,
+ 0x2904c8,
+ 0x2d2c4a,
+ 0x223006,
+ 0x24dfc9,
+ 0x265c88,
+ 0x2d7984,
+ 0x2aa289,
+ 0x2bfa08,
+ 0x29fec7,
+ 0x3630c6,
+ 0x2ebe07,
+ 0x289a47,
+ 0x23d005,
+ 0x21d04c,
+ 0x250bc5,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x2a84c3,
+ 0x205503,
+ 0x25e983,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2099c2,
+ 0x2006c2,
+ 0x231442,
+ 0x206502,
+ 0x200542,
+ 0x2decc2,
+ 0x46a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x2d47c6,
+ 0x205503,
+ 0x200983,
+ 0x233183,
+ 0x16d208,
+ 0x31ae44,
+ 0x202107,
+ 0x392403,
+ 0x2ae584,
+ 0x22e043,
+ 0x21c7c3,
+ 0x2e9dc3,
+ 0x16fc07,
+ 0x205702,
+ 0x18d2c3,
+ 0x5a099c2,
+ 0x88f4d,
+ 0x8928d,
+ 0x231442,
+ 0x1b1384,
+ 0x200442,
+ 0x5fb1288,
+ 0xed844,
+ 0x16d208,
+ 0x1411d82,
+ 0x15054c6,
+ 0x231783,
+ 0x200c03,
+ 0x66a84c3,
+ 0x22fd84,
+ 0x6a32403,
+ 0x6ee9dc3,
+ 0x202bc2,
+ 0x3b1384,
+ 0x205503,
+ 0x2f78c3,
+ 0x203ec2,
+ 0x200983,
+ 0x21b5c2,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x16d208,
+ 0x231783,
+ 0x2f78c3,
+ 0x203ec2,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x2a84c3,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x20f942,
+ 0x201303,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x373605,
+ 0x212982,
+ 0x205702,
+ 0x16d208,
+ 0x1456108,
+ 0x2e9dc3,
+ 0x2274c1,
+ 0x202901,
+ 0x202941,
+ 0x23ad81,
+ 0x23ad01,
+ 0x30aec1,
+ 0x23aec1,
+ 0x2275c1,
+ 0x2eea41,
+ 0x30afc1,
0x200141,
0x200001,
- 0x15f048,
+ 0x129845,
+ 0x16d208,
+ 0x201ec1,
0x200701,
- 0x200101,
- 0x2000c1,
- 0x201e41,
+ 0x200301,
+ 0x200081,
0x200181,
- 0x200941,
+ 0x200401,
0x200041,
- 0x204ec1,
- 0x200081,
- 0x201481,
- 0x200c01,
- 0x2002c1,
- 0x200381,
+ 0x201181,
+ 0x200101,
+ 0x200281,
0x200e81,
- 0x21c2c1,
- 0x2003c1,
+ 0x2008c1,
+ 0x200441,
+ 0x201301,
+ 0x206ec1,
+ 0x200341,
+ 0x200801,
+ 0x2002c1,
+ 0x2000c1,
+ 0x201501,
0x200201,
- 0x200241,
- 0x200a01,
- 0x2019c1,
- 0x201a81,
+ 0x200bc1,
0x2005c1,
- 0x2007c1,
- 0x200cc1,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x200382,
- 0x200383,
- 0x13ecc7,
- 0xfcc7,
- 0x28b86,
- 0x3dcca,
- 0x8cc48,
- 0x58dc8,
- 0x59207,
- 0x62a46,
- 0xde185,
- 0x63c85,
- 0x177ac6,
- 0x125886,
- 0x24ae04,
- 0x31cdc7,
- 0x15f048,
- 0x2da904,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x332ec3,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x217082,
- 0x2c8dc3,
- 0x21fd43,
- 0x200603,
- 0x202942,
- 0x251d43,
- 0x205283,
- 0x21e743,
+ 0x201cc1,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x200442,
+ 0x200983,
+ 0x16fc07,
+ 0x9807,
+ 0x1cdc6,
+ 0x13ef8a,
+ 0x88648,
+ 0x51d48,
+ 0x52107,
+ 0x191106,
+ 0xd8c05,
+ 0x192345,
+ 0x5d306,
+ 0x125c86,
+ 0x25ef44,
+ 0x311547,
+ 0x16d208,
+ 0x2d5f04,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x212982,
+ 0x2c5983,
+ 0x2bb143,
+ 0x32c243,
+ 0x2022c2,
+ 0x25d183,
+ 0x2030c3,
+ 0x204903,
0x200001,
- 0x203e43,
- 0x225b04,
- 0x37f1c3,
- 0x318cc3,
- 0x21c403,
- 0x360383,
- 0xaad0783,
- 0x23a184,
- 0x21c3c3,
- 0x22f143,
- 0x231b83,
- 0x2318c3,
- 0x23a943,
- 0x2a85c3,
- 0x318c43,
- 0x233ec3,
- 0x201e43,
- 0x253f84,
- 0x2abc02,
- 0x258683,
- 0x25eb43,
- 0x27bfc3,
- 0x262883,
- 0x201dc3,
- 0x332ec3,
- 0x208803,
- 0x209e43,
- 0x204143,
- 0x210203,
- 0x2ff083,
- 0xae30043,
- 0x2b1083,
- 0x2113c3,
- 0x22d603,
- 0x20fbc3,
- 0x226302,
- 0x201683,
- 0x204ac3,
- 0x160abc3,
- 0x27d643,
- 0x20ff03,
- 0x216ec3,
- 0x200383,
- 0x3b37c3,
- 0x21aa03,
- 0x241f03,
- 0x304f43,
- 0x2f8203,
- 0x30c845,
- 0x2202c3,
- 0x2f8243,
- 0x35ed83,
- 0x218c84,
- 0x265203,
- 0x311883,
- 0x2d8fc3,
- 0x201383,
- 0x217082,
- 0x23bd83,
- 0x308484,
- 0x22fec4,
- 0x22a843,
- 0x15f048,
- 0x4cc2,
- 0x1442,
- 0x2942,
- 0x5ac2,
- 0x2302,
- 0x702,
- 0x4e242,
- 0x1c2,
- 0x8a42,
- 0xc02,
- 0xf302,
- 0xb602,
- 0x73fc2,
- 0x4c82,
- 0x61e82,
- 0x17902,
- 0x3cf82,
- 0x54c2,
- 0x18b82,
- 0xfc2,
- 0x682,
- 0x1bb82,
- 0x1f82,
- 0xc4c2,
- 0x1702,
- 0x20c42,
- 0xa42,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x200383,
- 0xc2d0783,
- 0x332ec3,
- 0x20fbc3,
- 0x20dc42,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x6c82,
- 0x2031c2,
- 0x24ac42,
- 0x15f048,
- 0xd1c2,
- 0x233482,
- 0x208842,
- 0x22f942,
- 0x204182,
- 0x209282,
- 0x63c85,
- 0x204702,
- 0x201882,
- 0x211f82,
- 0x2034c2,
- 0x217902,
- 0x384982,
- 0x201ac2,
- 0x245742,
- 0x13ecc7,
- 0x169a8d,
- 0xde209,
- 0x56bcb,
- 0xe3888,
- 0x55109,
- 0x332ec3,
- 0x15f048,
- 0x15f048,
- 0x59b46,
- 0x204cc2,
- 0x24ae04,
- 0x20d1c2,
- 0x2d0783,
- 0x2000c2,
- 0x231b83,
- 0x208a42,
- 0x2da904,
- 0x204303,
- 0x2513c2,
- 0x204ac3,
- 0x200382,
- 0x200383,
- 0x2716c6,
- 0x31c0cf,
- 0x70d8c3,
- 0x15f048,
- 0x20d1c2,
- 0x2135c3,
- 0x332ec3,
- 0x20fbc3,
- 0x155afcb,
- 0xde548,
- 0x14ff507,
- 0x13ecc7,
- 0x20d1c2,
- 0x2d0783,
- 0x332ec3,
- 0x204ac3,
- 0x204cc2,
- 0x200902,
- 0x207f42,
- 0xfad0783,
- 0x2416c2,
- 0x231b83,
- 0x2101c2,
- 0x22ad02,
- 0x332ec3,
- 0x2630c2,
- 0x255302,
- 0x2ae4c2,
- 0x203742,
- 0x291e02,
- 0x209902,
- 0x200b82,
- 0x274842,
- 0x258142,
- 0x251b02,
- 0x2b36c2,
- 0x242602,
- 0x246082,
- 0x263c42,
- 0x20fbc3,
- 0x205f02,
- 0x204ac3,
- 0x231302,
- 0x27de02,
- 0x200383,
- 0x251dc2,
- 0x20c4c2,
- 0x209f42,
- 0x200b42,
- 0x20c842,
- 0x2e4742,
- 0x220382,
- 0x24d082,
- 0x234f42,
- 0x310c8a,
- 0x347d0a,
- 0x37e80a,
- 0x3b5dc2,
- 0x2046c2,
- 0x204e82,
- 0xff4f589,
- 0x10324d0a,
- 0x15926c7,
- 0x1410c43,
- 0x243d0,
- 0x9402,
- 0x24fe44,
- 0x10ad0783,
- 0x231b83,
- 0x251304,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x2202c3,
- 0x24abc3,
- 0x15f048,
- 0x14629c4,
- 0x614c5,
- 0x5f88a,
- 0x1168c2,
- 0x1a03c6,
- 0x102d11,
- 0x1134f589,
- 0x61548,
- 0x82a08,
- 0x5e887,
- 0xf82,
- 0x19a18a,
- 0x2ac47,
- 0x15f048,
- 0x10b708,
- 0xbac7,
- 0x16c1b74b,
- 0x1082,
- 0x15de87,
- 0xdb4a,
- 0x5e58f,
- 0xfd4f,
- 0x1c402,
- 0xd1c2,
- 0xa8508,
- 0x185b0a,
- 0x1681c8,
- 0x3b02,
- 0x5e30f,
- 0xa3d4b,
- 0x1672c8,
- 0x13edc7,
- 0x15104a,
- 0x2f64b,
- 0x11dd09,
- 0x150f47,
- 0x100c4c,
- 0x1b3c47,
- 0x18d18a,
- 0x94b88,
- 0x195a8e,
- 0x28b8e,
- 0x2aa8b,
- 0x2b2cb,
- 0x2d3cb,
- 0x2e209,
- 0x3558b,
- 0x4a68d,
- 0xe984b,
- 0xec8cd,
- 0xecc4d,
- 0x18274a,
- 0x2fd0b,
- 0x3688b,
- 0x42305,
- 0x14243d0,
- 0x125d8f,
- 0x1264cf,
- 0x48dcd,
- 0x25910,
- 0x1742,
- 0x17203988,
- 0xfb48,
- 0x176f4745,
- 0x505cb,
- 0x117050,
- 0x57488,
- 0x2b48a,
- 0x5f4c9,
- 0x695c7,
- 0x69907,
- 0x69ac7,
- 0x6c287,
- 0x6d307,
- 0x6dd07,
- 0x6e487,
- 0x6e8c7,
- 0x6f487,
- 0x6f787,
- 0x6ffc7,
- 0x70187,
- 0x70347,
- 0x70507,
- 0x70807,
- 0x70c47,
- 0x718c7,
- 0x71d87,
- 0x729c7,
- 0x72f07,
- 0x730c7,
- 0x73807,
- 0x73e87,
- 0x74087,
- 0x74347,
- 0x74507,
- 0x746c7,
- 0x75047,
- 0x754c7,
- 0x75987,
- 0x76147,
- 0x76407,
- 0x76bc7,
- 0x76d87,
- 0x77107,
- 0x77d07,
- 0x78987,
- 0x78d87,
- 0x78f47,
- 0x79107,
- 0x79547,
- 0x7a307,
- 0x7a607,
- 0x7a907,
- 0x7aac7,
- 0x7ae47,
- 0x7b387,
- 0xa9c2,
- 0x4c94a,
- 0x16dc87,
- 0x178d528b,
- 0x14d5296,
- 0x19151,
- 0xf080a,
- 0xa838a,
- 0x59b46,
- 0xd2acb,
- 0x642,
- 0x2e891,
- 0x94609,
- 0x9a109,
- 0x74842,
- 0xa4f4a,
- 0xaa689,
- 0xab24f,
- 0xaca4e,
- 0xad708,
- 0x18d82,
- 0x15da89,
- 0x18b88e,
- 0xfd08c,
- 0xf254f,
- 0x146ce,
- 0x23b4c,
- 0x2ccc9,
- 0x2db51,
- 0x465c8,
- 0x482d2,
- 0x49fcd,
- 0x82bcd,
- 0x19090b,
- 0x3d2d5,
- 0x4c809,
- 0x4ec0a,
- 0x4f489,
- 0x5ecd0,
- 0x72c4b,
- 0x79f4f,
- 0x7c48b,
- 0x8340c,
- 0x84610,
- 0x8894a,
- 0x8dd0d,
- 0x16618e,
- 0x1ae00a,
- 0x8f7cc,
- 0x93994,
- 0x94291,
- 0xa494b,
- 0xa578f,
- 0xa7bcd,
- 0xac3ce,
- 0xb1acc,
- 0xb220c,
- 0xdc90b,
- 0xdcc0e,
- 0x122110,
- 0x11640b,
- 0x17a64d,
- 0x1af38f,
- 0xb798c,
- 0xb934e,
- 0xbb311,
- 0xc3ccc,
- 0xc5a47,
- 0x15e58d,
- 0x12b50c,
- 0x14be50,
- 0xd1b4d,
- 0xd8e47,
- 0xe2350,
- 0xfa008,
- 0xfb08b,
- 0x150bcf,
- 0x17de88,
- 0xf0a0d,
- 0x181d50,
- 0x17fb1846,
- 0xb6003,
- 0x1b02,
- 0xd0309,
- 0x5ac0a,
- 0x1084c6,
- 0x180dff49,
- 0x13203,
- 0xdab91,
- 0xdafc9,
- 0xdc047,
- 0x5e40b,
- 0xe4a90,
- 0xe4f4c,
- 0xe5385,
- 0x126cc8,
- 0x19dc0a,
- 0x129607,
- 0x1002,
- 0x12464a,
- 0x25e49,
- 0x3a20a,
- 0x8eacf,
- 0x44f4b,
- 0x1b280c,
- 0x1b2ad2,
- 0xaa085,
- 0x2124a,
- 0x186f2fc5,
- 0x17698c,
- 0x121203,
- 0x184982,
- 0xf86ca,
- 0x96b88,
- 0xeca88,
- 0x14a587,
- 0xd42,
- 0x2602,
- 0x3f390,
+ 0x2dc745,
+ 0x206b43,
+ 0x221344,
+ 0x26cc83,
+ 0x318ec3,
+ 0x21b103,
+ 0x35ff43,
+ 0xaaa84c3,
+ 0x235ac4,
+ 0x23dbc3,
+ 0x21cc43,
+ 0x21b0c3,
+ 0x22ffc3,
+ 0x232403,
+ 0x232143,
+ 0x2459c3,
+ 0x2a2703,
+ 0x318e43,
+ 0x2344c3,
+ 0x202643,
+ 0x24ce44,
+ 0x24e347,
+ 0x248902,
+ 0x250943,
+ 0x256303,
+ 0x273ac3,
+ 0x390f43,
+ 0x2025c3,
+ 0xaee9dc3,
+ 0x20bec3,
+ 0x2143c3,
+ 0x24a5c3,
+ 0x328085,
+ 0x209d43,
+ 0x2fa383,
+ 0xb21f903,
+ 0x365f03,
+ 0x20d543,
+ 0x227f83,
+ 0x209703,
+ 0x228502,
+ 0x27d2c3,
+ 0x205503,
+ 0x1604e83,
+ 0x224a43,
+ 0x209a43,
+ 0x204a03,
+ 0x200983,
+ 0x35fe83,
+ 0x20f943,
+ 0x201303,
+ 0x2efe83,
+ 0x2ff903,
+ 0x2f2603,
+ 0x204405,
+ 0x23e743,
+ 0x285346,
+ 0x2f2643,
+ 0x36cf43,
+ 0x3759c4,
+ 0x2d9083,
+ 0x2284c3,
+ 0x267ec3,
+ 0x233183,
+ 0x212982,
+ 0x22d543,
+ 0x3024c3,
+ 0x304144,
+ 0x377404,
+ 0x20ce83,
+ 0x16d208,
+ 0x205702,
+ 0x200242,
+ 0x2022c2,
+ 0x201702,
+ 0x202a42,
+ 0x206c02,
+ 0x245482,
+ 0x2007c2,
+ 0x20d882,
+ 0x200e82,
+ 0x20b102,
+ 0x20e602,
+ 0x2675c2,
+ 0x2056c2,
+ 0x2decc2,
+ 0x2013c2,
+ 0x2069c2,
+ 0x201302,
+ 0x2172c2,
+ 0x202482,
+ 0x200482,
+ 0x219382,
+ 0x202782,
+ 0x209842,
+ 0x2027c2,
+ 0x222702,
+ 0x203b42,
+ 0x5702,
+ 0x242,
+ 0x22c2,
0x1702,
- 0x1aa2cf,
- 0x177ac6,
- 0x301ce,
- 0xe7fcb,
- 0x1ae208,
- 0xd6c09,
- 0x17cd92,
- 0x7c0d,
- 0x56608,
- 0x56a89,
- 0x5700d,
- 0x59c89,
- 0x5a28b,
- 0x5b088,
- 0x5f6c8,
+ 0x2a42,
+ 0x6c02,
+ 0x45482,
+ 0x7c2,
+ 0xd882,
+ 0xe82,
+ 0xb102,
+ 0xe602,
+ 0x675c2,
+ 0x56c2,
+ 0xdecc2,
+ 0x13c2,
+ 0x69c2,
+ 0x1302,
+ 0x172c2,
+ 0x2482,
+ 0x482,
+ 0x19382,
+ 0x2782,
+ 0x9842,
+ 0x27c2,
+ 0x22702,
+ 0x3b42,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x200983,
+ 0xc6a84c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x21a2c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x7b02,
+ 0x201bc2,
+ 0x153f3c5,
+ 0x25ed82,
+ 0x16d208,
+ 0x99c2,
+ 0x20c182,
+ 0x208d02,
+ 0x2024c2,
+ 0x209642,
+ 0x208442,
+ 0x192345,
+ 0x2038c2,
+ 0x203ec2,
+ 0x2023c2,
+ 0x204dc2,
+ 0x2013c2,
+ 0x385502,
+ 0x201102,
+ 0x236582,
+ 0x16fc07,
+ 0x1b270d,
+ 0xd8c89,
+ 0x56e8b,
+ 0xdd608,
+ 0x53dc9,
+ 0xfacc6,
+ 0x2e9dc3,
+ 0x16d208,
+ 0x16d208,
+ 0x52e06,
+ 0x1a78c7,
+ 0x205702,
+ 0x25ef44,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2006c2,
+ 0x232403,
+ 0x20d882,
+ 0x2d5f04,
+ 0x244183,
+ 0x249a02,
+ 0x205503,
+ 0x200442,
+ 0x200983,
+ 0x264a86,
+ 0x31ba0f,
+ 0x70a403,
+ 0x16d208,
+ 0x2099c2,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x1526f4b,
+ 0xd9888,
+ 0x142b68a,
+ 0x14fa807,
+ 0xda405,
+ 0x16fc07,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x205503,
+ 0x205702,
+ 0x20c202,
+ 0x20bb42,
+ 0xfea84c3,
+ 0x23c042,
+ 0x232403,
+ 0x209d02,
+ 0x221402,
+ 0x2e9dc3,
+ 0x228782,
+ 0x251442,
+ 0x2a6c82,
+ 0x200f82,
+ 0x28d742,
+ 0x203442,
+ 0x202e42,
+ 0x267e42,
+ 0x24ecc2,
+ 0x211ec2,
+ 0x2ad882,
+ 0x2eab02,
+ 0x2182c2,
+ 0x2ad342,
+ 0x209703,
+ 0x20ec42,
+ 0x205503,
+ 0x200e42,
+ 0x281702,
+ 0x200983,
+ 0x25d202,
+ 0x209842,
+ 0x218942,
+ 0x202e02,
+ 0x200c42,
+ 0x2de402,
+ 0x20fe82,
+ 0x250b82,
+ 0x220642,
+ 0x30d44a,
+ 0x34d94a,
+ 0x37fc4a,
+ 0x3bbec2,
+ 0x202cc2,
+ 0x2058c2,
+ 0x1026e389,
+ 0x1072510a,
+ 0x1594ac7,
+ 0x1410843,
+ 0x24d50,
+ 0x50642,
+ 0x2030c4,
+ 0x10ea84c3,
+ 0x232403,
+ 0x249944,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0xdc105,
+ 0x204e83,
+ 0x200983,
+ 0x23e743,
+ 0x25ed03,
+ 0x16d208,
+ 0x1591084,
+ 0x18ff45,
+ 0x1a768a,
+ 0x116902,
+ 0x18ae46,
+ 0xaf551,
+ 0x1166e389,
+ 0x18ffc8,
+ 0x13f9c8,
+ 0xff387,
+ 0xec2,
+ 0x12984b,
+ 0x1a5b0a,
+ 0x21347,
+ 0x16d208,
+ 0x108f08,
+ 0xe4c7,
+ 0x17818f4b,
+ 0x1b887,
+ 0x1c02,
+ 0x6c707,
+ 0x1a1ca,
+ 0x13f6cf,
+ 0x988f,
+ 0x1b102,
+ 0x99c2,
+ 0xa2648,
+ 0x19e30a,
+ 0x1320c8,
+ 0xdc2,
+ 0x13f44f,
+ 0x9e18b,
0x68bc8,
- 0x68e49,
- 0x6904a,
- 0x6c8cc,
- 0xe5d0a,
- 0x104f87,
- 0x16b2cd,
- 0xf910b,
- 0x12fb4c,
- 0x1a05d0,
- 0x6902,
- 0x1968cd,
- 0x16c2,
- 0x11fc2,
- 0x104eca,
- 0xf070a,
- 0xf6bcb,
- 0x36a4c,
- 0x10b48e,
- 0x21ccd,
- 0x1ab488,
- 0x6c82,
- 0x1166118e,
- 0x11f6a18e,
- 0x1266c00a,
- 0x12ed0a0e,
- 0x137156ce,
- 0x13f2a00c,
- 0x15926c7,
- 0x15926c9,
- 0x1410c43,
- 0x14731e8c,
- 0x14f3a009,
- 0x1409402,
- 0x610d1,
- 0x16a0d1,
- 0x6bf4d,
- 0xd0951,
- 0x11b1d1,
- 0x129f4f,
- 0x131dcf,
- 0x139f4c,
- 0x14a94d,
- 0x18d555,
- 0x1ace0c,
- 0x1b41cc,
- 0x1b5850,
- 0x940c,
- 0x5838c,
- 0xedc19,
- 0x1a6719,
- 0x115419,
- 0x15c754,
- 0x17f854,
- 0x198594,
- 0x19ae14,
- 0x1a9054,
- 0x1577fb09,
- 0x15d98849,
- 0x167b4289,
- 0x11b6b089,
- 0x9402,
- 0x1236b089,
- 0x9402,
- 0xedc0a,
- 0x9402,
- 0x12b6b089,
- 0x9402,
- 0xedc0a,
- 0x9402,
- 0x1336b089,
- 0x9402,
- 0x13b6b089,
- 0x9402,
- 0x1436b089,
- 0x9402,
- 0xedc0a,
- 0x9402,
- 0x14b6b089,
- 0x9402,
- 0xedc0a,
- 0x9402,
- 0x1536b089,
- 0x9402,
- 0x15b6b089,
- 0x9402,
- 0x1636b089,
- 0x9402,
- 0x16b6b089,
- 0x9402,
- 0xedc0a,
- 0x9402,
- 0x102d05,
- 0x19a184,
- 0x11d644,
- 0x1a4884,
- 0xbfc04,
- 0x2144,
- 0x5e884,
- 0x1482283,
- 0x1420183,
- 0xffd84,
- 0x1542b83,
- 0x1742,
- 0x21cc3,
- 0x204cc2,
- 0x20d1c2,
- 0x2000c2,
- 0x2041c2,
- 0x208a42,
- 0x200382,
- 0x202602,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204143,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x204ac3,
- 0x200383,
- 0x3b943,
- 0x332ec3,
- 0x204cc2,
- 0x368883,
- 0x1a2d0783,
- 0x20ef47,
- 0x332ec3,
- 0x205d83,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x25084a,
- 0x2716c5,
- 0x21aa03,
- 0x205bc2,
- 0x15f048,
- 0x15f048,
- 0xd1c2,
- 0x11f0c2,
- 0x15dfc5,
- 0x15f048,
- 0xd0783,
- 0x1ae3db07,
- 0xcfd46,
- 0x1b1acd05,
- 0xcfe07,
- 0xa54a,
- 0xa408,
- 0xb747,
- 0x5f2c8,
- 0x18c407,
- 0xed30f,
- 0x3ab07,
- 0x165bc6,
- 0x117050,
- 0x122f0f,
- 0x108544,
- 0x1b4cfece,
- 0xafd0c,
- 0x11de8a,
- 0xac687,
- 0x12d54a,
- 0x60989,
- 0xc2f4a,
- 0x77a8a,
- 0x1084c6,
- 0xac74a,
- 0x11a58a,
- 0x154009,
- 0xda448,
- 0xda746,
- 0xde74d,
- 0xb9905,
- 0x5a107,
- 0x16df94,
- 0xfe58b,
- 0x16710a,
- 0xa8bcd,
- 0x28b83,
- 0x28b83,
- 0x28b86,
- 0x28b83,
- 0x168883,
- 0x15f048,
- 0xd1c2,
- 0x51304,
- 0x8cdc3,
- 0x170145,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x205283,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x29a2c3,
- 0x24abc3,
- 0x205283,
- 0x24ae04,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x209103,
- 0x2d0783,
- 0x231b83,
- 0x2041c3,
- 0x2135c3,
- 0x332ec3,
- 0x2964c4,
- 0x23a0c3,
- 0x22d603,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x21aa03,
- 0x38c743,
- 0x1d2d0783,
- 0x231b83,
- 0x2c3ec3,
- 0x332ec3,
- 0x2075c3,
- 0x22d603,
- 0x200383,
- 0x2054c3,
- 0x343c44,
- 0x15f048,
- 0x1dad0783,
- 0x231b83,
- 0x2ad7c3,
- 0x332ec3,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x21d7c3,
- 0x15f048,
- 0x1e2d0783,
- 0x231b83,
- 0x2135c3,
- 0x20abc3,
- 0x200383,
- 0x15f048,
- 0x15926c7,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x13ecc7,
- 0x16e1cb,
- 0xdb3c4,
- 0xb9905,
- 0x1491b48,
- 0xae2cd,
- 0x1f68a405,
- 0x192c4,
- 0x1a5c3,
- 0x367fc5,
- 0x15f048,
- 0x1d202,
- 0x2803,
- 0xf7286,
- 0x32f448,
- 0x304507,
- 0x24ae04,
- 0x3b3006,
- 0x3b5706,
- 0x15f048,
- 0x310683,
- 0x2384c9,
- 0x2bdad5,
- 0xbdadf,
- 0x2d0783,
- 0x39a9d2,
- 0xf5806,
- 0x10cfc5,
- 0x2b48a,
- 0x5f4c9,
- 0x39a78f,
- 0x2da904,
- 0x20f345,
- 0x2fee50,
- 0x2959c7,
- 0x20abc3,
- 0x2842c8,
- 0x1257c6,
- 0x2b400a,
- 0x200e84,
- 0x2f2a03,
- 0x2716c6,
- 0x205bc2,
- 0x26b44b,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x2f74c3,
- 0x20d1c2,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x205d83,
- 0x223103,
- 0x200383,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x204ac3,
- 0x200383,
- 0x204cc2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x24ae04,
- 0x2d0783,
- 0x231b83,
- 0x222044,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x209e43,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x262fc3,
- 0x1e303,
- 0x5d83,
- 0x204ac3,
- 0x200383,
- 0x310c8a,
- 0x32a949,
- 0x34184b,
- 0x341f8a,
- 0x347d0a,
- 0x356e8b,
- 0x37300a,
- 0x37914a,
- 0x37e80a,
- 0x37ea8b,
- 0x39d949,
- 0x39f84a,
- 0x39fbcb,
- 0x3a9d0b,
- 0x3b4a8a,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x10c9c9,
- 0x15f048,
- 0x2d0783,
- 0x2695c4,
- 0x200c82,
- 0x213184,
- 0x3ac705,
- 0x205283,
- 0x24ae04,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x251304,
- 0x2da904,
- 0x2964c4,
- 0x22d603,
- 0x204ac3,
- 0x200383,
- 0x293ac5,
- 0x209103,
- 0x21aa03,
- 0x22c6c3,
- 0x258a04,
- 0x262904,
- 0x35d705,
- 0x15f048,
- 0x306e44,
- 0x20e546,
- 0x28a8c4,
- 0x20d1c2,
- 0x361ac7,
- 0x253587,
- 0x24f0c4,
- 0x25d8c5,
- 0x2d1d45,
- 0x2b0405,
- 0x2964c4,
- 0x23cfc8,
- 0x33f306,
- 0x311f48,
- 0x227b05,
- 0x2e0405,
- 0x377004,
- 0x200383,
- 0x2f39c4,
- 0x355f46,
- 0x2717c3,
- 0x258a04,
- 0x291a45,
- 0x363644,
- 0x234e84,
- 0x205bc2,
- 0x25e206,
- 0x392206,
- 0x3022c5,
- 0x204cc2,
- 0x368883,
- 0x24e0d1c2,
- 0x232dc4,
- 0x208a42,
- 0x20fbc3,
- 0x25e402,
- 0x204ac3,
- 0x200382,
- 0x213e83,
- 0x24abc3,
- 0x15f048,
- 0x15f048,
- 0x332ec3,
- 0x204cc2,
- 0x25a0d1c2,
- 0x332ec3,
- 0x2702c3,
- 0x23a0c3,
- 0x32bc44,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x204cc2,
- 0x2620d1c2,
- 0x2d0783,
- 0x204ac3,
- 0x200383,
- 0x682,
- 0x2044c2,
- 0x217082,
- 0x205d83,
- 0x2ec383,
- 0x204cc2,
- 0x15f048,
- 0x13ecc7,
- 0x20d1c2,
- 0x231b83,
- 0x251304,
- 0x202743,
- 0x332ec3,
- 0x209e43,
- 0x20fbc3,
- 0x204ac3,
- 0x2183c3,
- 0x200383,
- 0x21d743,
- 0x1286d3,
- 0x12cb54,
- 0x13ecc7,
- 0x1fd86,
- 0x5ae0b,
- 0x28b86,
- 0x58c07,
- 0x130089,
- 0xe9cca,
- 0x8cb0d,
- 0x16978c,
- 0x13d64a,
- 0x63c85,
- 0xa588,
- 0x177ac6,
- 0x125886,
- 0x201742,
- 0x827cc,
- 0x19a347,
- 0x23551,
- 0x2d0783,
- 0x5f245,
- 0x102c4,
- 0x274341c6,
- 0x19146,
- 0x178146,
- 0x920ca,
- 0xb2f03,
- 0x27a5c984,
- 0x130045,
- 0xa383,
- 0xd2b8c,
- 0xf6188,
- 0xbaf48,
- 0xa3bc9,
- 0x20c48,
- 0x141dd06,
- 0xfbc88,
- 0x5e884,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x204cc2,
- 0x20d1c2,
- 0x332ec3,
- 0x20a3c2,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x36388f,
- 0x363c4e,
- 0x15f048,
- 0x2d0783,
- 0x4cd07,
- 0x231b83,
- 0x332ec3,
- 0x204303,
- 0x204ac3,
- 0x200383,
- 0x21d0c3,
- 0x239c47,
+ 0x38f47,
+ 0x388a,
+ 0x304cb,
+ 0x4efc9,
+ 0x11dd07,
+ 0xfc34c,
+ 0x2c07,
+ 0x19b40a,
+ 0xd4ac8,
+ 0x1a3cce,
+ 0x1cdce,
+ 0x2118b,
+ 0x26ccb,
+ 0x27d4b,
+ 0x2c009,
+ 0x2da0b,
+ 0x5e7cd,
+ 0x85acb,
+ 0xdfc8d,
+ 0xe000d,
+ 0xe164a,
+ 0x17724b,
+ 0x1ae0cb,
+ 0x31c45,
+ 0x1424d50,
+ 0x12618f,
+ 0x1268cf,
+ 0xe2c0d,
+ 0x1b8f90,
+ 0x2bb82,
+ 0x17fb0388,
+ 0x9688,
+ 0x182ee705,
+ 0x48fcb,
+ 0x117090,
+ 0x4fdc8,
+ 0x26e8a,
+ 0x56b49,
+ 0x5cb47,
+ 0x5ce87,
+ 0x5d047,
+ 0x5f507,
+ 0x60587,
+ 0x60b87,
+ 0x61387,
+ 0x617c7,
+ 0x61cc7,
+ 0x61fc7,
+ 0x62fc7,
+ 0x63187,
+ 0x63347,
+ 0x63507,
+ 0x63807,
+ 0x64007,
+ 0x64c87,
+ 0x65407,
+ 0x66547,
+ 0x66b07,
+ 0x66cc7,
+ 0x67047,
+ 0x67487,
+ 0x67687,
+ 0x67947,
+ 0x67b07,
+ 0x67cc7,
+ 0x67f87,
+ 0x68247,
+ 0x68f07,
+ 0x69607,
+ 0x698c7,
+ 0x6a047,
+ 0x6a207,
+ 0x6a607,
+ 0x6aec7,
+ 0x6b147,
+ 0x6b547,
+ 0x6b707,
+ 0x6b8c7,
+ 0x70587,
+ 0x71387,
+ 0x718c7,
+ 0x71e47,
+ 0x72007,
+ 0x72387,
+ 0x728c7,
+ 0xdb42,
+ 0xbbb0a,
+ 0xffb87,
+ 0x184cfa0b,
+ 0x14cfa16,
+ 0x17e91,
+ 0x1082ca,
+ 0xa24ca,
+ 0x52e06,
+ 0xd0f8b,
+ 0x5e82,
+ 0x2f711,
+ 0x157789,
+ 0x942c9,
+ 0x67e42,
+ 0x9f54a,
+ 0xa4909,
+ 0xa504f,
+ 0xa5a8e,
+ 0xa6388,
+ 0x17f42,
+ 0x18ef09,
+ 0x17f08e,
+ 0xf80cc,
+ 0xdf20f,
+ 0x198f4e,
+ 0xc84c,
+ 0x11809,
+ 0x13491,
+ 0x222c8,
+ 0x24512,
+ 0x281cd,
+ 0x2e0cd,
+ 0x8618b,
+ 0xbadd5,
+ 0xbb9c9,
+ 0xe268a,
+ 0x120689,
+ 0x160310,
+ 0x39a0b,
+ 0x4480f,
+ 0x5648b,
+ 0x58a8c,
+ 0x70f90,
+ 0x7beca,
+ 0x7d18d,
+ 0x80d4e,
+ 0x86cca,
+ 0x8720c,
+ 0x89714,
+ 0x157411,
+ 0x1a200b,
+ 0x9004f,
+ 0x9320d,
+ 0x9a00e,
+ 0x9fd8c,
+ 0xa1acc,
+ 0xaae8b,
+ 0xab18e,
+ 0xab990,
+ 0x154c0b,
+ 0x1160cd,
+ 0x10e80f,
+ 0x17e50c,
+ 0xb090e,
+ 0xb2391,
+ 0xb3ecc,
+ 0xc00c7,
+ 0xc064d,
+ 0xc0fcc,
+ 0xc1dd0,
+ 0x102c8d,
+ 0x12bc87,
+ 0xc7750,
+ 0xd3748,
+ 0xd51cb,
+ 0x12aa8f,
+ 0x17e248,
+ 0x1084cd,
+ 0x14d550,
+ 0x18ba60c6,
+ 0xaff43,
+ 0xbe02,
+ 0x11e309,
+ 0x5394a,
+ 0x104186,
+ 0x18cd9009,
+ 0x11d43,
+ 0xd6191,
+ 0xd65c9,
+ 0xd7607,
+ 0xaf6cb,
+ 0xde6d0,
+ 0xdeb8c,
+ 0xdf6c5,
+ 0x18f248,
+ 0x19f94a,
+ 0x111947,
+ 0x33c2,
+ 0x124a4a,
+ 0x127549,
+ 0x35b4a,
+ 0x8a3cf,
+ 0x3edcb,
+ 0x12814c,
+ 0x169b92,
+ 0xaea45,
+ 0x166aca,
+ 0x192ece45,
+ 0x18020c,
+ 0x122843,
+ 0x185502,
+ 0xf2bca,
+ 0x14f3fcc,
+ 0x1b1a48,
+ 0xdfe48,
+ 0x16fb87,
+ 0x1c42,
+ 0x3082,
+ 0x3f590,
+ 0x27c2,
+ 0x1ad58f,
+ 0x5d306,
+ 0x77ece,
+ 0xe598b,
+ 0x86ec8,
+ 0xd1a49,
+ 0x17d152,
+ 0x1abecd,
+ 0x55b08,
+ 0x56d49,
+ 0x572cd,
+ 0x57b89,
+ 0x5c58b,
+ 0x5d848,
+ 0x61ac8,
+ 0x628c8,
+ 0x62b49,
+ 0x62d4a,
+ 0x6398c,
+ 0xe3cca,
+ 0xff947,
+ 0x2270d,
+ 0xf4b4b,
+ 0x11a5cc,
+ 0x18b050,
+ 0xc2,
+ 0x7a14d,
+ 0x2dc2,
+ 0x35482,
+ 0xff88a,
+ 0x1081ca,
+ 0x10928b,
+ 0x1ae28c,
+ 0x108c8e,
+ 0x100cd,
+ 0x1b3908,
+ 0x7b02,
+ 0x11b5ec4e,
+ 0x1227020e,
+ 0x12a83a0a,
+ 0x1336864e,
+ 0x13b143ce,
+ 0x1432ee0c,
+ 0x1594ac7,
+ 0x1594ac9,
+ 0x1410843,
+ 0x14b3054c,
+ 0x15333209,
+ 0x15b49dc9,
+ 0x50642,
+ 0x18fb51,
+ 0x70151,
+ 0x8394d,
+ 0x17acd1,
+ 0x114311,
+ 0x12ed4f,
+ 0x13048f,
+ 0x13314c,
+ 0x149d0c,
+ 0x1a688d,
+ 0x1bb815,
+ 0x5064c,
+ 0x11f0cc,
+ 0xe9c50,
+ 0x11d44c,
+ 0x12a54c,
+ 0x15e999,
+ 0x168399,
+ 0x16fd99,
+ 0x175d54,
+ 0x181ad4,
+ 0x19b7d4,
+ 0x19d714,
+ 0x1ac314,
+ 0x16250709,
+ 0x1699ba89,
+ 0x1731f189,
+ 0x11e224c9,
+ 0x50642,
+ 0x126224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x12e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x136224c9,
+ 0x50642,
+ 0x13e224c9,
+ 0x50642,
+ 0x146224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x14e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x156224c9,
+ 0x50642,
+ 0x15e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x166224c9,
+ 0x50642,
+ 0x16e224c9,
+ 0x50642,
+ 0x176224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0xaf545,
+ 0x1a5b04,
+ 0x2bb84,
+ 0x1aa404,
+ 0x1a75c4,
+ 0xc484,
+ 0x13fc4,
+ 0x58f44,
+ 0xff384,
+ 0x14ab3c3,
+ 0x143e603,
+ 0xfb244,
+ 0x1547c03,
+ 0x2bb82,
+ 0x100c3,
+ 0x205702,
+ 0x2099c2,
+ 0x2006c2,
+ 0x218342,
+ 0x20d882,
+ 0x200442,
+ 0x203082,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x24a5c3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x3fc3,
+ 0x2e9dc3,
+ 0x205702,
+ 0x38d2c3,
+ 0x1aea84c3,
+ 0x3b8e47,
+ 0x2e9dc3,
+ 0x206343,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x255cca,
+ 0x264a85,
+ 0x201303,
+ 0x20b0c2,
+ 0x16d208,
+ 0x16d208,
+ 0x99c2,
+ 0x11fd02,
+ 0x6c845,
+ 0x129845,
+ 0x16d208,
+ 0x1b887,
+ 0xa84c3,
+ 0x1ba38e47,
+ 0x13ee06,
+ 0x1bd49c05,
+ 0x11de07,
+ 0x66ca,
+ 0x3748,
+ 0x65c7,
+ 0x56948,
+ 0x28d87,
+ 0x2c6cf,
+ 0x30b87,
+ 0x3b806,
+ 0x117090,
+ 0x12330f,
+ 0x104204,
+ 0x1c11dece,
+ 0xa8b4c,
+ 0x4f14a,
+ 0x9a2c7,
+ 0x112b8a,
+ 0x18f409,
+ 0xbf34a,
+ 0x5414a,
+ 0x104186,
+ 0x9a38a,
+ 0x8350a,
+ 0xe47c9,
+ 0xd5a48,
+ 0xd5d46,
+ 0xd9a8d,
+ 0xb3c45,
+ 0x1a78c7,
+ 0x5d6c7,
+ 0xd9394,
+ 0xf938b,
+ 0x68a0a,
+ 0xa2d0d,
+ 0x1cdc3,
+ 0x1cdc3,
+ 0x1cdc6,
+ 0x1cdc3,
+ 0x18d2c3,
+ 0x16d208,
+ 0x99c2,
+ 0x49944,
+ 0x887c3,
+ 0x173605,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2030c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x294483,
+ 0x25ed03,
+ 0x2030c3,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2082c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x218343,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x353903,
+ 0x227f83,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x311dc3,
+ 0x1dea84c3,
+ 0x232403,
+ 0x246383,
+ 0x2e9dc3,
+ 0x20a203,
+ 0x227f83,
+ 0x200983,
+ 0x2072c3,
+ 0x33bac4,
+ 0x16d208,
+ 0x1e6a84c3,
+ 0x232403,
+ 0x2a6443,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x21db03,
+ 0x16d208,
+ 0x1eea84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x204e83,
+ 0x200983,
+ 0x16d208,
+ 0x1594ac7,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x129845,
+ 0x16fc07,
+ 0xd95cb,
+ 0xd69c4,
+ 0xb3c45,
+ 0x1456108,
+ 0xa6a8d,
+ 0x20284a05,
+ 0x18004,
+ 0x169c3,
+ 0x186345,
+ 0x349a05,
+ 0x16d208,
+ 0x1cdc2,
+ 0x336c3,
+ 0xf1446,
+ 0x319ec8,
+ 0x313bc7,
+ 0x25ef44,
+ 0x3b2c86,
+ 0x3bb6c6,
+ 0x16d208,
+ 0x30ce43,
+ 0x33e589,
+ 0x237295,
+ 0x3729f,
+ 0x2a84c3,
+ 0x31d012,
+ 0xefac6,
+ 0x10a045,
+ 0x26e8a,
+ 0x56b49,
+ 0x31cdcf,
+ 0x2d5f04,
+ 0x20b145,
+ 0x2fa150,
+ 0x3b0887,
+ 0x204e83,
+ 0x28b148,
+ 0x125bc6,
+ 0x2ae1ca,
+ 0x256044,
+ 0x2ec883,
+ 0x264a86,
+ 0x20b0c2,
+ 0x22d54b,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2f1743,
+ 0x2099c2,
+ 0x2cd83,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x206343,
+ 0x221f03,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x9885,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x232403,
+ 0x210444,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2143c3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x391683,
+ 0x63643,
+ 0x6343,
+ 0x205503,
+ 0x200983,
+ 0x30d44a,
+ 0x32b0c9,
+ 0x346b0b,
+ 0x34708a,
+ 0x34d94a,
+ 0x35d74b,
+ 0x371e0a,
+ 0x37814a,
+ 0x37fc4a,
+ 0x37fecb,
+ 0x39f689,
+ 0x3a140a,
+ 0x3a178b,
+ 0x3acfcb,
+ 0x3b9eca,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x4589,
+ 0x16d208,
+ 0x2a84c3,
+ 0x25cb44,
+ 0x207ac2,
+ 0x211cc4,
+ 0x26fc45,
+ 0x2030c3,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x249944,
+ 0x2d5f04,
+ 0x3b1384,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x27a305,
+ 0x2082c3,
+ 0x201303,
+ 0x22ed03,
+ 0x250cc4,
+ 0x390fc4,
+ 0x34ae45,
+ 0x16d208,
+ 0x302044,
+ 0x3510c6,
+ 0x276384,
+ 0x2099c2,
+ 0x371007,
+ 0x24c0c7,
+ 0x247784,
+ 0x2555c5,
+ 0x302e85,
+ 0x2a9305,
+ 0x3b1384,
+ 0x3b8ac8,
+ 0x239486,
+ 0x30c188,
+ 0x24ed05,
+ 0x2da905,
+ 0x236b84,
+ 0x200983,
+ 0x2ed844,
+ 0x35c946,
+ 0x264b83,
+ 0x250cc4,
+ 0x256005,
+ 0x32d104,
+ 0x334944,
+ 0x20b0c2,
+ 0x2425c6,
+ 0x3962c6,
+ 0x2fdc05,
+ 0x205702,
+ 0x38d2c3,
+ 0x262099c2,
+ 0x2333c4,
+ 0x20d882,
+ 0x209703,
+ 0x202c82,
+ 0x205503,
+ 0x200442,
+ 0x214843,
+ 0x25ed03,
+ 0x16d208,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x205702,
+ 0x26e099c2,
+ 0x2e9dc3,
+ 0x245b43,
+ 0x353903,
+ 0x327344,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x276099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x482,
+ 0x20a9c2,
+ 0x212982,
+ 0x206343,
+ 0x2e87c3,
+ 0x205702,
+ 0x129845,
+ 0x16d208,
+ 0x16fc07,
+ 0x2099c2,
+ 0x232403,
+ 0x249944,
+ 0x2032c3,
+ 0x2e9dc3,
+ 0x2143c3,
+ 0x209703,
+ 0x205503,
+ 0x216b03,
+ 0x200983,
+ 0x21da83,
+ 0x118fd3,
+ 0x11c954,
+ 0x16fc07,
+ 0x13b46,
+ 0x53b4b,
+ 0x1cdc6,
+ 0x51b87,
+ 0x11ab09,
+ 0xe6d4a,
+ 0x8850d,
+ 0x1b240c,
+ 0x1ada8a,
+ 0x192345,
+ 0x6708,
+ 0x5d306,
+ 0x125c86,
+ 0x22bb82,
+ 0xff14c,
+ 0x1a5cc7,
+ 0x22e51,
+ 0x2a84c3,
+ 0x568c5,
+ 0x77848,
+ 0x9e04,
+ 0x288347c6,
+ 0x17e86,
+ 0x8cb46,
+ 0x8da0a,
+ 0xac543,
+ 0x28e54b04,
+ 0x11aac5,
+ 0xde283,
+ 0xdc105,
+ 0xd104c,
+ 0xf04c8,
+ 0xb5708,
+ 0x9e009,
+ 0x134b08,
+ 0x141e046,
+ 0xda40a,
+ 0x82b48,
+ 0xf4648,
+ 0xff384,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x3653cf,
+ 0x36578e,
+ 0x16d208,
+ 0x2a84c3,
+ 0x42f87,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x205503,
+ 0x200983,
+ 0x201bc3,
+ 0x201bc7,
0x200142,
- 0x2c1949,
- 0x201442,
- 0x23f68b,
- 0x2b5b8a,
- 0x2bcfc9,
- 0x200282,
- 0x262b46,
- 0x26d615,
- 0x23f7d5,
- 0x274a13,
- 0x23fd53,
- 0x202342,
- 0x20d605,
- 0x3ab1cc,
- 0x24698b,
- 0x29a745,
- 0x205ac2,
- 0x289c02,
- 0x386746,
- 0x200f82,
- 0x25fb86,
- 0x294d0d,
- 0x255dcc,
- 0x224444,
- 0x201342,
- 0x203782,
- 0x248688,
- 0x202302,
- 0x208886,
- 0x303bc4,
- 0x26d7d5,
- 0x274b93,
- 0x210b83,
- 0x33070a,
- 0x2f0187,
- 0x3b2209,
- 0x32dc47,
- 0x3124c2,
+ 0x32c249,
+ 0x200242,
+ 0x23f88b,
+ 0x297b8a,
+ 0x2a2a49,
+ 0x200882,
+ 0x391206,
+ 0x34ed15,
+ 0x23f9d5,
+ 0x246993,
+ 0x23ff53,
+ 0x202a82,
+ 0x205ac5,
+ 0x3b364c,
+ 0x27160b,
+ 0x2726c5,
+ 0x201702,
+ 0x284202,
+ 0x386fc6,
+ 0x200ec2,
+ 0x3695c6,
+ 0x2d4c4d,
+ 0x27ef4c,
+ 0x224dc4,
+ 0x203dc2,
+ 0x205942,
+ 0x2248c8,
+ 0x202a42,
+ 0x312fc6,
+ 0x2ba844,
+ 0x34eed5,
+ 0x246b13,
+ 0x210783,
+ 0x32fa0a,
+ 0x3bb147,
+ 0x3094c9,
+ 0x37b887,
+ 0x30f242,
0x200002,
- 0x3a4386,
- 0x20a0c2,
- 0x15f048,
- 0x200802,
- 0x211cc2,
- 0x27d407,
- 0x3b3507,
- 0x21c7c5,
- 0x201082,
- 0x21d707,
- 0x21d8c8,
- 0x2413c2,
- 0x2c2fc2,
- 0x22c1c2,
- 0x20e542,
- 0x23b688,
- 0x218443,
- 0x2b72c8,
- 0x2e078d,
- 0x21fe43,
- 0x226288,
- 0x23e88f,
- 0x23ec4e,
- 0x24ac8a,
- 0x229d11,
- 0x22a190,
- 0x2bf0cd,
- 0x2bf40c,
- 0x38c5c7,
- 0x330887,
- 0x3b30c9,
- 0x204f02,
- 0x200702,
- 0x25a6cc,
- 0x25a9cb,
- 0x202ac2,
- 0x2dcac6,
- 0x20db42,
- 0x20c502,
- 0x21c402,
- 0x20d1c2,
- 0x384684,
- 0x23c7c7,
- 0x220802,
- 0x242c07,
- 0x243c47,
- 0x2271c2,
- 0x20e482,
- 0x24cbc5,
- 0x204d02,
- 0x20cb4e,
- 0x36f1cd,
- 0x231b83,
- 0x353a0e,
- 0x2c0b8d,
- 0x3ab643,
- 0x201842,
- 0x206744,
- 0x208182,
- 0x220a42,
- 0x33e805,
- 0x348447,
- 0x372202,
- 0x2041c2,
- 0x250f07,
- 0x2543c8,
- 0x2abc02,
- 0x2aa106,
- 0x25a54c,
- 0x25a88b,
- 0x20da42,
- 0x26588f,
- 0x265c50,
- 0x26604f,
- 0x266415,
- 0x266954,
- 0x266e4e,
- 0x2671ce,
- 0x26754f,
- 0x26790e,
- 0x267c94,
- 0x268193,
- 0x26864d,
- 0x27b549,
- 0x28dbc3,
- 0x200182,
- 0x237b85,
- 0x206506,
- 0x208a42,
- 0x21a2c7,
- 0x332ec3,
- 0x200642,
- 0x36edc8,
- 0x229f51,
- 0x22a390,
- 0x200bc2,
- 0x28d387,
- 0x200b02,
- 0x205fc7,
- 0x201b02,
- 0x32f249,
- 0x386707,
- 0x281408,
- 0x234006,
- 0x2cf4c3,
- 0x2cf4c5,
- 0x231e02,
- 0x204842,
- 0x3a4785,
- 0x376e05,
+ 0x3aef06,
+ 0x20cb42,
+ 0x16d208,
+ 0x2105c2,
+ 0x20b382,
+ 0x274e87,
+ 0x20f687,
+ 0x21b585,
+ 0x201c02,
+ 0x21da47,
+ 0x21dc08,
+ 0x242b42,
+ 0x2bf3c2,
+ 0x22e802,
+ 0x201ec2,
+ 0x237b88,
+ 0x201ec3,
+ 0x2b5308,
+ 0x2cf1cd,
+ 0x213c03,
+ 0x327988,
+ 0x239f8f,
+ 0x23a34e,
+ 0x25edca,
+ 0x229751,
+ 0x229bd0,
+ 0x2bcdcd,
+ 0x2bd10c,
+ 0x311c47,
+ 0x32fb87,
+ 0x3b2d49,
+ 0x224ec2,
+ 0x206c02,
+ 0x25340c,
+ 0x25370b,
+ 0x204142,
+ 0x2ab046,
+ 0x21a1c2,
+ 0x209882,
+ 0x21b102,
+ 0x2099c2,
+ 0x383a84,
+ 0x238bc7,
+ 0x204682,
+ 0x23d147,
+ 0x23e487,
+ 0x20e142,
+ 0x2301c2,
+ 0x242e45,
+ 0x205742,
+ 0x362e0e,
+ 0x2ebb8d,
+ 0x232403,
+ 0x2be90e,
+ 0x2e064d,
+ 0x37eac3,
+ 0x200e02,
+ 0x21fec4,
+ 0x2454c2,
+ 0x2175c2,
+ 0x358e45,
+ 0x364b47,
+ 0x383382,
+ 0x218342,
+ 0x249547,
+ 0x24d288,
+ 0x248902,
+ 0x2aeac6,
+ 0x25328c,
+ 0x2535cb,
+ 0x20fc82,
+ 0x25924f,
+ 0x259610,
+ 0x259a0f,
+ 0x259dd5,
+ 0x25a314,
+ 0x25a80e,
+ 0x25ab8e,
+ 0x25af0f,
+ 0x25b2ce,
+ 0x25b654,
+ 0x25bb53,
+ 0x25c00d,
+ 0x272a89,
+ 0x2895c3,
+ 0x200782,
+ 0x22b0c5,
+ 0x207f86,
+ 0x20d882,
+ 0x21f507,
+ 0x2e9dc3,
0x205e82,
- 0x245f43,
- 0x3636c7,
- 0x210687,
- 0x204982,
- 0x3aae04,
- 0x214183,
- 0x2c9209,
- 0x2ed188,
- 0x205d82,
- 0x2032c2,
- 0x26e2c7,
- 0x282185,
- 0x2ab548,
- 0x20d2c7,
- 0x216143,
- 0x372306,
- 0x2bef4d,
- 0x2bf2cc,
- 0x280346,
- 0x208842,
- 0x2017c2,
- 0x201f02,
- 0x23e70f,
- 0x23eb0e,
- 0x2d1dc7,
- 0x203cc2,
- 0x2c3345,
- 0x2c3346,
- 0x20bcc2,
- 0x205f02,
- 0x28f406,
- 0x205f03,
- 0x205f06,
- 0x2ca585,
- 0x2ca58d,
- 0x2cab55,
- 0x2cb38c,
- 0x2cc28d,
- 0x2cc652,
- 0x20b602,
- 0x273fc2,
+ 0x362a08,
+ 0x229991,
+ 0x229dd0,
+ 0x206482,
+ 0x288d87,
+ 0x203942,
+ 0x214607,
+ 0x20be02,
+ 0x319cc9,
+ 0x386f87,
+ 0x27aac8,
+ 0x234606,
+ 0x2e86c3,
+ 0x32a105,
+ 0x232682,
+ 0x202082,
+ 0x3af305,
+ 0x380685,
+ 0x2040c2,
+ 0x24c543,
+ 0x32d187,
+ 0x223787,
+ 0x200502,
+ 0x254684,
+ 0x223b83,
+ 0x223b89,
+ 0x22c548,
+ 0x200282,
+ 0x204bc2,
+ 0x3105c7,
+ 0x31ff05,
+ 0x2a5348,
+ 0x219947,
+ 0x200e83,
+ 0x28c446,
+ 0x2bcc4d,
+ 0x2bcfcc,
+ 0x2b45c6,
+ 0x208d02,
+ 0x2a8542,
+ 0x202342,
+ 0x239e0f,
+ 0x23a20e,
+ 0x302f07,
+ 0x203d02,
+ 0x2bf745,
+ 0x2bf746,
+ 0x20f242,
+ 0x20ec42,
+ 0x221f06,
+ 0x214543,
+ 0x214546,
+ 0x2c6985,
+ 0x2c698d,
+ 0x2c6f55,
+ 0x2c814c,
+ 0x2c95cd,
+ 0x2c9992,
+ 0x20e602,
+ 0x2675c2,
+ 0x202d02,
+ 0x240806,
+ 0x2f7f86,
+ 0x2033c2,
+ 0x208006,
+ 0x2023c2,
+ 0x38b785,
+ 0x200542,
+ 0x2ebc89,
+ 0x31554c,
+ 0x31588b,
+ 0x200442,
+ 0x24e748,
+ 0x203b02,
+ 0x2056c2,
+ 0x26a346,
+ 0x222445,
+ 0x226747,
+ 0x257d85,
+ 0x29e405,
+ 0x243002,
+ 0x2067c2,
+ 0x2013c2,
+ 0x2df507,
+ 0x380c0d,
+ 0x380f8c,
+ 0x22f087,
+ 0x20f982,
+ 0x2069c2,
+ 0x241248,
+ 0x31e488,
+ 0x2e3988,
+ 0x308484,
+ 0x2ab407,
+ 0x2e90c3,
+ 0x228ec2,
+ 0x2082c2,
+ 0x2eb3c9,
+ 0x3a40c7,
0x201302,
- 0x240fc6,
- 0x2fcf46,
- 0x201002,
- 0x206586,
- 0x211f82,
- 0x37edc5,
- 0x202382,
- 0x20cc89,
- 0x2df2cc,
- 0x2df60b,
- 0x200382,
- 0x255688,
- 0x213a02,
- 0x204c82,
- 0x246746,
- 0x36b005,
- 0x235007,
- 0x2567c5,
- 0x294805,
- 0x24cd82,
- 0x20a642,
- 0x217902,
- 0x2f2847,
- 0x24410d,
- 0x24448c,
- 0x2b3387,
- 0x2aa082,
- 0x23cf82,
- 0x24ba48,
- 0x2d0488,
- 0x2e5f88,
- 0x2f09c4,
- 0x2dce87,
- 0x2ee483,
- 0x2b6042,
- 0x200e82,
- 0x2f11c9,
- 0x395e87,
- 0x2054c2,
- 0x277245,
- 0x201202,
- 0x26a102,
- 0x349c43,
- 0x349c46,
- 0x2f74c2,
- 0x2f7fc2,
- 0x201402,
- 0x3b3fc6,
- 0x206687,
- 0x207842,
- 0x200e02,
- 0x38bc8f,
- 0x35384d,
- 0x2b714e,
- 0x2c0a0c,
- 0x2003c2,
- 0x205502,
- 0x233e45,
- 0x3b4e86,
- 0x201ec2,
- 0x200fc2,
- 0x200682,
- 0x20d244,
- 0x2e0604,
- 0x2d29c6,
- 0x202602,
- 0x27e787,
- 0x22d703,
- 0x22d708,
- 0x24b048,
- 0x390787,
- 0x240ec6,
- 0x20e5c2,
- 0x23b383,
- 0x23b387,
- 0x272846,
- 0x2e4385,
- 0x2f0d48,
- 0x206342,
- 0x34a007,
- 0x220c42,
- 0x33c282,
- 0x203b82,
- 0x2dbe09,
- 0x22fb02,
- 0x200242,
- 0x240183,
- 0x319ac7,
+ 0x26a745,
+ 0x22d4c2,
+ 0x21aa02,
+ 0x2f9f03,
+ 0x2f9f06,
+ 0x2f1742,
+ 0x2f23c2,
+ 0x201a42,
+ 0x202f86,
+ 0x21fe07,
+ 0x213bc2,
+ 0x205ec2,
+ 0x2b514f,
+ 0x2be74d,
+ 0x3872ce,
+ 0x2e04cc,
+ 0x2009c2,
+ 0x207302,
+ 0x234445,
+ 0x30ba46,
0x2018c2,
- 0x2df44c,
- 0x2df74b,
- 0x2803c6,
- 0x20a2c5,
- 0x222e82,
- 0x200a42,
- 0x2bd306,
- 0x235b83,
- 0x39c147,
- 0x23bb02,
- 0x203382,
- 0x26d495,
- 0x23f995,
- 0x2748d3,
- 0x23fed3,
- 0x2934c7,
- 0x2b5948,
- 0x2fb310,
- 0x30ee4f,
- 0x2b5953,
- 0x2bcd92,
- 0x2c1510,
- 0x2ca1cf,
- 0x2d57d2,
- 0x2d84d1,
- 0x2d9513,
- 0x2dbbd2,
- 0x2dd20f,
- 0x2e57ce,
- 0x2f5092,
- 0x2f6351,
- 0x2f754f,
- 0x2f834e,
- 0x300011,
- 0x355810,
- 0x35f212,
- 0x3702d1,
- 0x2f9bc6,
- 0x307487,
- 0x373387,
- 0x204b42,
- 0x284e05,
- 0x2febc7,
- 0x217082,
+ 0x202482,
+ 0x200482,
+ 0x2198c4,
+ 0x2cf044,
+ 0x2d0e86,
+ 0x203082,
+ 0x36cac7,
+ 0x203083,
+ 0x285d48,
+ 0x34e488,
+ 0x239887,
+ 0x240706,
+ 0x203902,
+ 0x234b03,
+ 0x234b07,
+ 0x273946,
+ 0x2dee45,
+ 0x308808,
+ 0x200d02,
+ 0x331207,
+ 0x222702,
+ 0x361782,
+ 0x20cfc2,
+ 0x2c6749,
+ 0x230982,
+ 0x200842,
+ 0x22f303,
+ 0x331c87,
+ 0x2002c2,
+ 0x3156cc,
+ 0x3159cb,
+ 0x2b4646,
+ 0x2de1c5,
+ 0x221c82,
+ 0x203b42,
+ 0x2b7bc6,
+ 0x260dc3,
+ 0x38c187,
+ 0x236102,
+ 0x201442,
+ 0x34eb95,
+ 0x23fb95,
+ 0x246853,
+ 0x2400d3,
+ 0x2585c7,
+ 0x271a48,
+ 0x271a50,
+ 0x28d2cf,
+ 0x297953,
+ 0x2a2812,
+ 0x32be10,
+ 0x2d544f,
+ 0x35f7d2,
+ 0x30c3d1,
+ 0x2b7613,
+ 0x2c6512,
+ 0x2cff4f,
+ 0x2d2e8e,
+ 0x2d3f52,
+ 0x2d71d1,
+ 0x2d7c8f,
+ 0x30440e,
+ 0x2f0691,
+ 0x2f17d0,
+ 0x2f2752,
+ 0x2fc711,
+ 0x364586,
+ 0x36d3c7,
+ 0x372187,
0x203142,
- 0x2293c5,
- 0x21ee43,
- 0x35d986,
- 0x2442cd,
- 0x24460c,
- 0x206602,
- 0x3ab04b,
- 0x24684a,
- 0x30be4a,
- 0x2bbf49,
- 0x2ef68b,
- 0x20d40d,
- 0x2ff2cc,
- 0x24890a,
- 0x275b0c,
- 0x27afcb,
- 0x29a58c,
- 0x2fa34b,
- 0x2df243,
- 0x35ee06,
- 0x3a6502,
- 0x2f8b82,
- 0x2db2c3,
- 0x202502,
- 0x202503,
- 0x245886,
- 0x2665c7,
- 0x365146,
- 0x385cc8,
- 0x2d0188,
- 0x2d3186,
- 0x2019c2,
- 0x301c8d,
- 0x301fcc,
- 0x2da9c7,
- 0x306d07,
- 0x21fdc2,
- 0x21ac02,
- 0x23b302,
- 0x254782,
- 0x20d1c2,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x204cc2,
- 0x204e02,
- 0x29a94005,
- 0x29e02e85,
- 0x2a3177c6,
- 0x15f048,
- 0x2a6b5145,
- 0x20d1c2,
- 0x2000c2,
- 0x2ab9c685,
- 0x2ae83305,
- 0x2b283e07,
- 0x2b68b309,
- 0x2ba47ac4,
- 0x208a42,
- 0x200642,
- 0x2bf72245,
- 0x2c293149,
- 0x2c71db88,
- 0x2cab2085,
- 0x2cf363c7,
- 0x2d219b08,
- 0x2d6e8605,
- 0x2da5b4c6,
- 0x2de346c9,
- 0x2e2b8648,
- 0x2e6c4b48,
- 0x2ea9cf0a,
- 0x2ee52104,
- 0x2f2d6585,
- 0x2f6becc8,
- 0x2fb51245,
- 0x2184c2,
- 0x2fe63b83,
- 0x302a7786,
- 0x3064ea48,
- 0x30a24f06,
- 0x30ecec88,
- 0x3132d1c6,
- 0x316e4444,
- 0x202082,
- 0x31b630c7,
- 0x31eaeb84,
- 0x3227dc47,
- 0x327a1087,
- 0x200382,
- 0x32aa0685,
- 0x32e03bc4,
- 0x332d1807,
- 0x3362adc7,
- 0x33a87406,
- 0x33e36085,
- 0x3429b807,
- 0x346d2688,
- 0x34a37f07,
- 0x34eb0689,
- 0x3538e6c5,
- 0x35719c07,
- 0x35a92e46,
- 0x35e62d48,
- 0x2460cd,
- 0x24cf09,
- 0x2f484b,
- 0x25534b,
- 0x27de4b,
- 0x2aa88b,
- 0x30f20b,
- 0x30f4cb,
- 0x30fd49,
- 0x310f0b,
- 0x3111cb,
- 0x311ccb,
- 0x31284a,
- 0x312d8a,
- 0x31338c,
- 0x31608b,
- 0x3166ca,
- 0x327eca,
- 0x3328ce,
- 0x333a4e,
- 0x333dca,
- 0x335d8a,
- 0x3369cb,
- 0x336c8b,
- 0x337a4b,
- 0x34c7cb,
- 0x34cdca,
- 0x34da8b,
- 0x34dd4a,
- 0x34dfca,
- 0x34e24a,
- 0x373ecb,
- 0x37a2cb,
- 0x37c38e,
- 0x37c70b,
- 0x383ecb,
- 0x38500b,
- 0x38984a,
- 0x389ac9,
- 0x389d0a,
- 0x38b38a,
- 0x39e50b,
- 0x39fe8b,
- 0x3a09ca,
- 0x3a28cb,
- 0x3a588b,
- 0x3b44cb,
- 0x36285b88,
- 0x3668c289,
- 0x36aa3a49,
- 0x36ee0bc8,
- 0x33c685,
- 0x202943,
- 0x212944,
- 0x206885,
- 0x247806,
- 0x25b245,
- 0x28adc4,
- 0x21a1c8,
- 0x30af85,
- 0x297a44,
- 0x209907,
- 0x2a280a,
- 0x361d8a,
- 0x3101c7,
- 0x211f47,
+ 0x27d8c5,
+ 0x3933c7,
+ 0x212982,
+ 0x209942,
+ 0x228a85,
+ 0x21e743,
+ 0x34b0c6,
+ 0x380dcd,
+ 0x38110c,
+ 0x201682,
+ 0x3b34cb,
+ 0x2714ca,
+ 0x20598a,
+ 0x2b6449,
+ 0x2ea64b,
+ 0x219a8d,
+ 0x2fa5cc,
+ 0x25180a,
+ 0x22090c,
+ 0x26908b,
+ 0x27250c,
+ 0x29474b,
+ 0x3154c3,
+ 0x36cfc6,
+ 0x3a98c2,
+ 0x2f4542,
+ 0x20a743,
+ 0x208602,
+ 0x21fe83,
+ 0x2366c6,
+ 0x259f87,
+ 0x2c7fc6,
+ 0x39e4c8,
+ 0x31e188,
+ 0x2ce146,
+ 0x201f82,
+ 0x2fd5cd,
+ 0x2fd90c,
+ 0x2d5fc7,
+ 0x301f07,
+ 0x213b82,
+ 0x201502,
+ 0x234a82,
+ 0x24d642,
+ 0x2099c2,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x205702,
+ 0x2021c2,
+ 0x2ae8fdc5,
+ 0x2b247e45,
+ 0x2b717806,
+ 0x16d208,
+ 0x2baaee05,
+ 0x2099c2,
+ 0x2006c2,
+ 0x2bfb3ac5,
+ 0x2c27bdc5,
+ 0x2c67c9c7,
+ 0x2ca86a09,
+ 0x2ce3bc44,
+ 0x20d882,
+ 0x205e82,
+ 0x2d24b5c5,
+ 0x2d68f849,
+ 0x2db1db88,
+ 0x2deab805,
+ 0x2e300187,
+ 0x2e61ed48,
+ 0x2eae5d85,
+ 0x2ee00106,
+ 0x2f337809,
+ 0x2f6b5a48,
+ 0x2fac0488,
+ 0x2fe9704a,
+ 0x302732c4,
+ 0x306d13c5,
+ 0x30abc9c8,
+ 0x30e03a85,
+ 0x20cec2,
+ 0x31248a43,
+ 0x316a1686,
+ 0x31b60148,
+ 0x31eb94c6,
+ 0x32281f08,
+ 0x32719606,
+ 0x32adef04,
+ 0x200c82,
+ 0x32f2cb87,
+ 0x332a75c4,
+ 0x336756c7,
+ 0x33ba2987,
+ 0x200442,
+ 0x33e9b0c5,
+ 0x34334f84,
+ 0x346cd907,
+ 0x34a5f187,
+ 0x34e80886,
+ 0x3527c585,
+ 0x356959c7,
+ 0x35ad0b48,
+ 0x35e2b447,
+ 0x363164c9,
+ 0x36793105,
+ 0x36b31dc7,
+ 0x36e8f546,
+ 0x37391408,
+ 0x2273cd,
+ 0x279909,
+ 0x28174b,
+ 0x2a4b0b,
+ 0x34058b,
+ 0x2ffe8b,
+ 0x30bc4b,
+ 0x30bf0b,
+ 0x30c809,
+ 0x30d6cb,
+ 0x30d98b,
+ 0x30e48b,
+ 0x30f5ca,
+ 0x30fb0a,
+ 0x31010c,
+ 0x314d8b,
+ 0x31670a,
+ 0x32904a,
+ 0x33404e,
+ 0x33568e,
+ 0x335a0a,
+ 0x33808a,
+ 0x338dcb,
+ 0x33908b,
+ 0x339e8b,
+ 0x354ecb,
+ 0x3554ca,
+ 0x35618b,
+ 0x35644a,
+ 0x3566ca,
+ 0x35694a,
+ 0x372b0b,
+ 0x37914b,
+ 0x37c74e,
+ 0x37cacb,
+ 0x38454b,
+ 0x385acb,
+ 0x38900a,
+ 0x389289,
+ 0x3894ca,
+ 0x38a94a,
+ 0x3a00cb,
+ 0x3a1a4b,
+ 0x3a22ca,
+ 0x3a48cb,
+ 0x3a8c4b,
+ 0x3b990b,
+ 0x3767e648,
+ 0x37a87c89,
+ 0x37e9de89,
+ 0x382dacc8,
+ 0x342505,
+ 0x217083,
+ 0x21c6c4,
+ 0x220005,
+ 0x23b986,
+ 0x25da05,
+ 0x2864c4,
+ 0x21f408,
+ 0x308005,
+ 0x291784,
+ 0x203447,
+ 0x29cf8a,
+ 0x3712ca,
+ 0x338547,
+ 0x3af9c7,
+ 0x2f8f07,
+ 0x264e87,
+ 0x2f60c5,
+ 0x33bb86,
+ 0x2bb847,
+ 0x2b4904,
+ 0x2e4646,
+ 0x2e4546,
+ 0x3b9585,
+ 0x26d1c4,
+ 0x3519c6,
+ 0x29bf47,
+ 0x285746,
+ 0x2e3247,
+ 0x25e443,
+ 0x2b1c06,
+ 0x2328c5,
+ 0x27cac7,
+ 0x2641ca,
+ 0x260e44,
+ 0x217c08,
+ 0x2abd89,
+ 0x2cd247,
+ 0x336286,
+ 0x24e9c8,
+ 0x2b9c09,
+ 0x309684,
+ 0x366944,
+ 0x244245,
+ 0x2bb548,
+ 0x2c4b07,
+ 0x2a9709,
+ 0x364688,
+ 0x345e86,
+ 0x3204c6,
+ 0x298048,
+ 0x359646,
+ 0x247e45,
+ 0x280946,
+ 0x275ec8,
+ 0x24da46,
+ 0x2525cb,
+ 0x298646,
+ 0x29994d,
+ 0x3a6005,
+ 0x2a7486,
+ 0x208b45,
+ 0x2f9bc9,
+ 0x2f9a87,
+ 0x37a208,
+ 0x266986,
+ 0x298bc9,
+ 0x3793c6,
+ 0x264145,
+ 0x268686,
+ 0x2cae46,
+ 0x2cb3c9,
+ 0x3530c6,
+ 0x339487,
+ 0x26ad85,
+ 0x202ac3,
+ 0x252745,
+ 0x299c07,
+ 0x33c6c6,
+ 0x3a5f09,
+ 0x317806,
+ 0x280b86,
+ 0x210c49,
+ 0x280349,
+ 0x29fc07,
+ 0x282f88,
+ 0x28c989,
+ 0x27d548,
+ 0x378386,
+ 0x2d5805,
+ 0x2418ca,
+ 0x280c06,
+ 0x3b7986,
+ 0x2c8985,
+ 0x265808,
+ 0x223307,
+ 0x22f50a,
+ 0x249e46,
+ 0x279d45,
+ 0x37aa46,
+ 0x21ac47,
+ 0x336147,
+ 0x21bbc5,
+ 0x264305,
+ 0x357dc6,
+ 0x2ac5c6,
+ 0x34dc06,
+ 0x2b3204,
+ 0x27f689,
+ 0x288b46,
+ 0x2dd38a,
+ 0x21b388,
+ 0x3078c8,
+ 0x3712ca,
+ 0x20b445,
+ 0x29be85,
+ 0x350b88,
+ 0x2b2c88,
+ 0x27b5c7,
+ 0x258946,
+ 0x322388,
0x2fdec7,
- 0x255b47,
- 0x2fad45,
- 0x343d06,
- 0x22cb47,
- 0x26fec4,
- 0x2e6b46,
- 0x2e6a46,
- 0x208305,
- 0x3492c4,
- 0x38ec86,
- 0x2a1647,
- 0x22d046,
- 0x351b47,
- 0x26a783,
- 0x2b4846,
- 0x232045,
- 0x283f07,
- 0x270e0a,
- 0x26dfc4,
- 0x218ec8,
- 0x2affc9,
- 0x2cb147,
- 0x334646,
- 0x255908,
- 0x200a49,
- 0x3b23c4,
- 0x2210c4,
- 0x278285,
- 0x22c848,
- 0x2c7f47,
- 0x2a7109,
- 0x2f9cc8,
- 0x347a86,
- 0x24c646,
- 0x29de88,
- 0x354c46,
- 0x202e85,
- 0x2874c6,
- 0x27e108,
- 0x254b86,
- 0x25d14b,
- 0x29dac6,
- 0x29f50d,
- 0x3b1785,
- 0x2aea46,
- 0x20f505,
- 0x349909,
- 0x2abe87,
- 0x3195c8,
- 0x292986,
- 0x29e709,
- 0x364546,
- 0x270d85,
- 0x2a4dc6,
- 0x2c99c6,
- 0x2cdb89,
- 0x200846,
- 0x253087,
- 0x277885,
- 0x202383,
- 0x25d2c5,
- 0x29f7c7,
- 0x358e06,
- 0x3b1689,
- 0x3177c6,
- 0x287706,
- 0x215ec9,
- 0x286ec9,
- 0x2a5607,
- 0x2cf688,
- 0x377f89,
- 0x284a88,
- 0x379386,
- 0x2d9dc5,
- 0x23cb4a,
- 0x287786,
- 0x3a8506,
- 0x2cbbc5,
- 0x272188,
- 0x215587,
- 0x22e68a,
- 0x251746,
- 0x24d345,
- 0x329cc6,
- 0x2d6347,
- 0x334507,
- 0x2c4145,
- 0x270f45,
- 0x2b2f86,
- 0x351746,
- 0x387046,
- 0x2b8bc4,
- 0x286209,
- 0x28d146,
- 0x30e50a,
- 0x222848,
- 0x309148,
- 0x361d8a,
- 0x2145c5,
- 0x2a1585,
- 0x37f588,
- 0x2b6348,
- 0x21b507,
- 0x293846,
- 0x320d48,
- 0x3674c7,
- 0x285188,
- 0x2b9206,
- 0x2885c8,
- 0x29ad46,
- 0x227c87,
- 0x272b06,
- 0x38ec86,
- 0x25d9ca,
- 0x384706,
- 0x2d9dc9,
- 0x2b5446,
- 0x2e3d8a,
- 0x2e4449,
- 0x362586,
- 0x2ba844,
- 0x237c4d,
- 0x28c507,
- 0x3268c6,
- 0x2c4a05,
- 0x3645c5,
- 0x375846,
- 0x2d1649,
- 0x2b4287,
- 0x27f886,
- 0x2c9546,
- 0x28ae49,
- 0x264a04,
- 0x2d4a44,
- 0x3ac808,
- 0x245c46,
- 0x277308,
- 0x2e66c8,
- 0x202fc7,
- 0x3a80c9,
- 0x387247,
- 0x2b500a,
- 0x2498cf,
- 0x250b0a,
- 0x233c45,
- 0x27e345,
- 0x218745,
- 0x303b07,
- 0x20e183,
- 0x2cf888,
- 0x3028c6,
- 0x3029c9,
- 0x2d4006,
- 0x3aeb47,
- 0x29e4c9,
- 0x3194c8,
- 0x2cbc87,
- 0x30d803,
- 0x33c705,
- 0x20e105,
- 0x2b8a0b,
- 0x351304,
- 0x257984,
- 0x27cbc6,
- 0x30e887,
- 0x38b10a,
- 0x2757c7,
- 0x38c807,
- 0x283305,
- 0x200045,
- 0x240909,
- 0x38ec86,
- 0x27564d,
- 0x35af05,
- 0x29f4c3,
- 0x20ad83,
- 0x34f785,
- 0x347845,
- 0x255908,
- 0x280047,
- 0x2d47c6,
- 0x2a36c6,
- 0x2296c5,
- 0x231e47,
- 0x202ac7,
- 0x33f1c7,
- 0x2d660a,
- 0x2b4908,
- 0x2b8bc4,
- 0x254907,
- 0x281607,
- 0x3400c6,
- 0x26f8c7,
- 0x2eaa08,
- 0x2e9e88,
- 0x2abd86,
- 0x2d1ec8,
- 0x2008c4,
- 0x22cb46,
- 0x247d86,
- 0x216646,
- 0x3a8c46,
- 0x22d9c4,
- 0x255c06,
- 0x2c31c6,
- 0x29d406,
- 0x235ec6,
- 0x20ac46,
- 0x2ea846,
- 0x2d46c8,
- 0x3af1c8,
- 0x2d6e48,
- 0x25b448,
- 0x37f506,
- 0x212485,
- 0x2e2006,
- 0x2b2105,
- 0x388c87,
- 0x216605,
- 0x2136c3,
- 0x203ec5,
- 0x33fb44,
- 0x20ad85,
- 0x2266c3,
- 0x338007,
- 0x34bc88,
- 0x351c06,
- 0x32250d,
- 0x27e306,
- 0x29c985,
- 0x2d9743,
- 0x2be689,
- 0x264b86,
- 0x23c0c6,
- 0x2a4ec4,
- 0x250a87,
- 0x233006,
- 0x2b4545,
- 0x234a83,
- 0x207ac4,
- 0x2817c6,
- 0x2ded04,
- 0x32b8c8,
- 0x39ba49,
- 0x24d849,
- 0x2a4cca,
- 0x387acd,
- 0x208d07,
- 0x224bc6,
- 0x20a684,
- 0x28b309,
- 0x28a088,
- 0x28c106,
- 0x23dfc6,
- 0x26f8c7,
- 0x2b9a46,
- 0x21f706,
- 0x3ac246,
- 0x3a110a,
- 0x219b08,
- 0x2464c5,
- 0x26fd09,
- 0x28568a,
- 0x2fa988,
- 0x2a0ec8,
- 0x29bd48,
- 0x2af08c,
- 0x316305,
- 0x2a3948,
- 0x2e8e06,
- 0x319746,
- 0x3aea07,
- 0x2756c5,
- 0x287645,
- 0x24d709,
- 0x213487,
- 0x302985,
- 0x227487,
- 0x20ad83,
- 0x2c8485,
- 0x20b8c8,
- 0x25d647,
- 0x2a0d89,
- 0x2de405,
- 0x307784,
- 0x2a6508,
- 0x363207,
- 0x2cbe48,
- 0x368c48,
- 0x2dc805,
- 0x304286,
- 0x278686,
- 0x2ac1c9,
- 0x31c407,
- 0x2b29c6,
- 0x3b3907,
- 0x221d03,
- 0x247ac4,
- 0x2a7885,
- 0x231f84,
- 0x383c84,
- 0x286947,
- 0x35bdc7,
- 0x27fa44,
- 0x2a0bd0,
- 0x367c87,
- 0x200045,
- 0x2536cc,
- 0x225344,
- 0x2b1588,
- 0x227b89,
- 0x2b4e06,
- 0x220d88,
- 0x247344,
- 0x247348,
- 0x22ec86,
- 0x235d48,
- 0x2a1c06,
- 0x2d328b,
- 0x202385,
- 0x2cb988,
- 0x216ac4,
- 0x39be8a,
- 0x2a0d89,
- 0x381346,
- 0x218808,
- 0x25ebc5,
- 0x2b69c4,
- 0x2b1486,
- 0x33f088,
- 0x285b88,
- 0x340bc6,
- 0x31d104,
- 0x23cac6,
- 0x3872c7,
- 0x27db47,
- 0x26f8cf,
- 0x205547,
- 0x362647,
- 0x38eb45,
- 0x352245,
- 0x2a52c9,
+ 0x27dc48,
+ 0x2b3846,
+ 0x281408,
+ 0x294f06,
+ 0x24ee87,
+ 0x299ec6,
+ 0x3519c6,
+ 0x3778ca,
+ 0x2bd8c6,
+ 0x2d5809,
+ 0x26dbc6,
+ 0x2af14a,
+ 0x2def09,
+ 0x2fb486,
+ 0x2b4b04,
+ 0x22b18d,
+ 0x287f07,
+ 0x326cc6,
+ 0x2c0345,
+ 0x379445,
+ 0x374246,
+ 0x2cd749,
+ 0x2b1647,
+ 0x277306,
+ 0x2cc246,
+ 0x286549,
+ 0x247d84,
+ 0x3482c4,
+ 0x352cc8,
+ 0x236a86,
+ 0x26a808,
+ 0x2e41c8,
+ 0x312747,
+ 0x3b7549,
+ 0x34de07,
+ 0x2aecca,
+ 0x2e1f8f,
+ 0x23188a,
+ 0x234245,
+ 0x276105,
+ 0x216e85,
+ 0x2ba787,
+ 0x21a803,
+ 0x283188,
+ 0x396786,
+ 0x396889,
+ 0x2b87c6,
+ 0x3b5207,
+ 0x298989,
+ 0x37a108,
+ 0x2c8a47,
+ 0x30a343,
+ 0x342585,
+ 0x21a785,
+ 0x2b304b,
+ 0x203b44,
+ 0x2c2084,
+ 0x274646,
+ 0x30abc7,
+ 0x382bca,
+ 0x248ac7,
+ 0x311e87,
+ 0x27bdc5,
+ 0x200645,
+ 0x2eef89,
+ 0x3519c6,
+ 0x24894d,
+ 0x353305,
+ 0x2b1383,
+ 0x205043,
+ 0x26f685,
+ 0x345c45,
+ 0x24e9c8,
+ 0x2790c7,
+ 0x348046,
+ 0x29db06,
+ 0x229105,
+ 0x2326c7,
+ 0x312247,
+ 0x239347,
+ 0x2d144a,
+ 0x2b1cc8,
+ 0x2b3204,
+ 0x24d7c7,
+ 0x27acc7,
+ 0x339306,
+ 0x262107,
+ 0x2dc4c8,
+ 0x2e6f08,
+ 0x268506,
+ 0x303008,
+ 0x2c87c4,
+ 0x2bb846,
+ 0x2353c6,
+ 0x33bfc6,
+ 0x2ba986,
+ 0x286004,
+ 0x264f46,
+ 0x2bf5c6,
+ 0x297546,
+ 0x247846,
+ 0x204f06,
+ 0x26e2c6,
+ 0x347f48,
+ 0x2b0748,
+ 0x2d1c88,
+ 0x25dc08,
+ 0x350b06,
+ 0x20dcc5,
+ 0x315ec6,
+ 0x2ab885,
+ 0x388447,
+ 0x215305,
+ 0x2125c3,
+ 0x211585,
+ 0x344cc4,
+ 0x205045,
+ 0x203b03,
+ 0x33a447,
+ 0x354648,
+ 0x2e3306,
+ 0x2c218d,
+ 0x2760c6,
+ 0x296ac5,
+ 0x2b7843,
+ 0x2bc389,
+ 0x247f06,
+ 0x28e7c6,
+ 0x29f4c4,
+ 0x231807,
+ 0x233606,
+ 0x2b1905,
+ 0x203cc3,
+ 0x3abd84,
+ 0x27ae86,
+ 0x2354c4,
+ 0x2da048,
+ 0x38ba89,
+ 0x215589,
+ 0x29f2ca,
+ 0x2a070d,
+ 0x313447,
+ 0x2b9186,
+ 0x206804,
+ 0x286a09,
+ 0x284688,
+ 0x287b06,
+ 0x33f286,
+ 0x262107,
+ 0x2b6b46,
+ 0x226346,
+ 0x26d606,
+ 0x3a2a0a,
+ 0x21ed48,
+ 0x2bacc5,
+ 0x262549,
+ 0x27e14a,
+ 0x2f5d08,
+ 0x29b908,
+ 0x295f08,
+ 0x2a7acc,
+ 0x30e705,
+ 0x29dd88,
+ 0x2e6586,
+ 0x37a386,
+ 0x3b50c7,
+ 0x2489c5,
+ 0x280ac5,
+ 0x215449,
+ 0x20e247,
+ 0x396845,
+ 0x227887,
+ 0x205043,
+ 0x2c5045,
+ 0x20ef48,
+ 0x252ac7,
+ 0x29b7c9,
+ 0x2d7985,
+ 0x2fa984,
+ 0x2a03c8,
+ 0x32ccc7,
+ 0x2c8c08,
+ 0x38d688,
+ 0x354b05,
+ 0x3a3946,
+ 0x278cc6,
+ 0x244609,
+ 0x2b01c7,
+ 0x2ac006,
+ 0x313787,
+ 0x210103,
+ 0x23bc44,
+ 0x2a1785,
+ 0x232804,
+ 0x3833c4,
+ 0x27fdc7,
+ 0x26c147,
+ 0x22e704,
+ 0x29b610,
+ 0x3b3c47,
+ 0x200645,
+ 0x24c20c,
+ 0x20a8c4,
+ 0x2c1488,
+ 0x24ed89,
+ 0x35acc6,
+ 0x334c48,
+ 0x215244,
+ 0x36c4c8,
+ 0x22fb06,
+ 0x2accc8,
+ 0x29c506,
+ 0x2bec0b,
+ 0x202ac5,
+ 0x2c8748,
+ 0x215ac4,
+ 0x38beca,
+ 0x29b7c9,
+ 0x245f06,
+ 0x216f48,
+ 0x256385,
+ 0x2b0f44,
+ 0x2c1386,
+ 0x239208,
+ 0x27e648,
+ 0x322c06,
+ 0x3a9ec4,
+ 0x241846,
+ 0x34de87,
+ 0x2755c7,
+ 0x26210f,
+ 0x207347,
+ 0x2fb547,
+ 0x3709c5,
+ 0x353e05,
+ 0x29f8c9,
+ 0x2dd046,
+ 0x27cc05,
+ 0x280647,
+ 0x2e0bc8,
+ 0x297645,
+ 0x299ec6,
+ 0x21b1c8,
+ 0x2b94ca,
+ 0x2db4c8,
+ 0x28ac87,
+ 0x2e23c6,
+ 0x262506,
+ 0x21a5c3,
+ 0x216a43,
+ 0x27e309,
+ 0x28c809,
+ 0x2c1286,
+ 0x2d7985,
+ 0x33bd48,
+ 0x216f48,
+ 0x3597c8,
+ 0x26d68b,
+ 0x2c23c7,
+ 0x30a589,
+ 0x262388,
+ 0x343084,
+ 0x3514c8,
+ 0x28cd89,
+ 0x2ac305,
+ 0x2ba687,
+ 0x23bcc5,
+ 0x27e548,
+ 0x28fc4b,
+ 0x295710,
+ 0x2a6dc5,
+ 0x215a0c,
+ 0x348205,
+ 0x27be43,
+ 0x2a8f86,
+ 0x2be6c4,
+ 0x335086,
+ 0x29bf47,
+ 0x21b244,
+ 0x240b88,
+ 0x28304d,
+ 0x302945,
+ 0x29b104,
+ 0x2243c4,
+ 0x276949,
+ 0x2a11c8,
+ 0x317687,
+ 0x22fb88,
+ 0x27f748,
+ 0x277605,
+ 0x209287,
+ 0x277587,
+ 0x33e347,
+ 0x264309,
+ 0x233489,
+ 0x214c46,
+ 0x2bd306,
+ 0x262346,
+ 0x37f785,
+ 0x3a7184,
+ 0x200006,
+ 0x200386,
+ 0x277648,
+ 0x21a90b,
+ 0x260d07,
+ 0x206804,
+ 0x353646,
+ 0x2fe447,
+ 0x26dec5,
+ 0x391d05,
+ 0x219644,
+ 0x233406,
+ 0x200088,
+ 0x286a09,
+ 0x2510c6,
+ 0x284048,
+ 0x2b19c6,
+ 0x345248,
+ 0x306dcc,
+ 0x2774c6,
+ 0x29678d,
+ 0x296c0b,
+ 0x339545,
+ 0x312387,
+ 0x3531c6,
+ 0x336008,
+ 0x214cc9,
+ 0x2d0588,
+ 0x200645,
+ 0x277987,
+ 0x27d648,
+ 0x349649,
+ 0x28e946,
+ 0x250fca,
+ 0x335d88,
+ 0x2d03cb,
+ 0x39818c,
+ 0x36c5c8,
+ 0x27a7c6,
+ 0x208c88,
+ 0x3b77c7,
+ 0x32cf49,
+ 0x28f74d,
+ 0x299dc6,
+ 0x27b808,
+ 0x2b0609,
+ 0x2bda48,
+ 0x281508,
+ 0x2bfe0c,
+ 0x2c0b47,
+ 0x2c1887,
+ 0x264145,
+ 0x2ad587,
+ 0x2e0a88,
+ 0x2c1406,
+ 0x2556cc,
+ 0x2ef888,
+ 0x2ccb88,
+ 0x25dec6,
+ 0x21a507,
+ 0x214e44,
+ 0x25dc08,
+ 0x22200c,
+ 0x2ce24c,
+ 0x2342c5,
+ 0x2d0d47,
+ 0x3a9e46,
+ 0x21a486,
+ 0x2f9d88,
+ 0x3af904,
+ 0x28574b,
+ 0x36cc0b,
+ 0x2e23c6,
+ 0x282ec7,
+ 0x37a805,
+ 0x269a05,
+ 0x285886,
+ 0x256345,
+ 0x203b05,
+ 0x2cc9c7,
+ 0x274c49,
+ 0x2ac784,
+ 0x2fbb45,
+ 0x2e4bc5,
+ 0x2d9dc8,
+ 0x329d05,
+ 0x2b72c9,
+ 0x2ae5c7,
+ 0x2ae5cb,
+ 0x381306,
+ 0x347c89,
+ 0x26d108,
+ 0x276545,
+ 0x33e448,
+ 0x2334c8,
+ 0x245747,
+ 0x3776c7,
+ 0x27fe49,
+ 0x2acc07,
+ 0x28a989,
+ 0x2aa70c,
+ 0x3163c8,
+ 0x2b2ac9,
+ 0x2b3d47,
+ 0x27f809,
+ 0x26c287,
+ 0x398288,
+ 0x3b7705,
+ 0x2bb7c6,
+ 0x2c0388,
+ 0x308a88,
+ 0x27e009,
+ 0x203b47,
+ 0x269ac5,
+ 0x222b09,
+ 0x2bd6c6,
+ 0x28f544,
0x30e1c6,
- 0x284045,
- 0x2871c7,
- 0x2c1108,
- 0x29d505,
- 0x272b06,
- 0x222688,
- 0x224f0a,
- 0x2e13c8,
+ 0x35ffc8,
+ 0x232ac7,
+ 0x21ab08,
+ 0x3030c9,
+ 0x3a3707,
+ 0x29d146,
+ 0x312444,
+ 0x211609,
+ 0x209108,
+ 0x25dd87,
+ 0x27eb46,
+ 0x21a846,
+ 0x3b7904,
+ 0x2241c6,
+ 0x204fc3,
+ 0x3b1649,
+ 0x202a86,
+ 0x303345,
+ 0x29db06,
+ 0x26cac5,
+ 0x27dac8,
+ 0x36c307,
+ 0x381646,
+ 0x3b3b06,
+ 0x3078c8,
+ 0x29fa47,
+ 0x299e05,
+ 0x29b408,
+ 0x3a1e48,
+ 0x335d88,
+ 0x3480c5,
+ 0x2bb846,
+ 0x215349,
+ 0x244484,
+ 0x26c94b,
+ 0x22604b,
+ 0x2babc9,
+ 0x205043,
+ 0x254485,
+ 0x2214c6,
+ 0x385208,
+ 0x2e1f04,
+ 0x2e3306,
+ 0x2d1589,
+ 0x2ca445,
+ 0x2cc906,
+ 0x32ccc6,
+ 0x216f44,
+ 0x2a764a,
+ 0x303288,
+ 0x308a86,
+ 0x3b8645,
+ 0x37a687,
+ 0x2e0fc7,
+ 0x3a3944,
+ 0x226287,
+ 0x2aecc4,
+ 0x33bf46,
+ 0x2096c3,
+ 0x264305,
+ 0x32ad45,
+ 0x207588,
+ 0x24d985,
+ 0x277209,
+ 0x25da47,
+ 0x25da4b,
+ 0x2a148c,
+ 0x2a224a,
+ 0x300187,
+ 0x203503,
+ 0x3afc08,
+ 0x348285,
+ 0x2976c5,
+ 0x205104,
+ 0x398186,
+ 0x24ed86,
+ 0x224207,
+ 0x33448b,
+ 0x286004,
+ 0x2e6684,
+ 0x21f044,
+ 0x2cafc6,
+ 0x21b244,
+ 0x2bb648,
+ 0x342445,
+ 0x21ba45,
+ 0x359707,
+ 0x312489,
+ 0x345c45,
+ 0x37424a,
+ 0x26ac89,
+ 0x2996ca,
+ 0x3a2b49,
+ 0x33fec4,
+ 0x2cc305,
+ 0x2b6c48,
+ 0x2cd9cb,
+ 0x244245,
+ 0x2f2fc6,
+ 0x213e84,
+ 0x277746,
+ 0x3a3589,
+ 0x353707,
+ 0x3179c8,
+ 0x2a0a86,
+ 0x34de07,
+ 0x27e648,
+ 0x3747c6,
+ 0x375604,
+ 0x365ac7,
+ 0x357305,
+ 0x367287,
+ 0x200104,
+ 0x353146,
+ 0x2f4308,
+ 0x296dc8,
+ 0x2e6047,
+ 0x274fc8,
+ 0x294fc5,
+ 0x204e84,
+ 0x3711c8,
+ 0x2750c4,
+ 0x216e05,
+ 0x2f5fc4,
+ 0x2fdfc7,
+ 0x288c07,
+ 0x27f948,
+ 0x2c8d86,
+ 0x24d905,
+ 0x277008,
+ 0x2db6c8,
+ 0x29f209,
+ 0x226346,
+ 0x22f588,
+ 0x38bd4a,
+ 0x26df48,
+ 0x2e5d85,
+ 0x20b306,
+ 0x26ab48,
+ 0x277a4a,
+ 0x210f87,
+ 0x284c45,
+ 0x292708,
+ 0x2ade04,
+ 0x265886,
+ 0x2c1c08,
+ 0x204f06,
+ 0x38e7c8,
0x28f187,
- 0x249d06,
- 0x26fcc6,
- 0x20df43,
- 0x218303,
- 0x285849,
- 0x377e09,
- 0x2b0586,
- 0x2de405,
- 0x2163c8,
- 0x218808,
- 0x354dc8,
- 0x3ac2cb,
- 0x322747,
- 0x30b249,
- 0x26fb48,
- 0x335844,
- 0x349588,
- 0x291409,
- 0x2b2cc5,
- 0x303a07,
- 0x247b45,
- 0x285a88,
- 0x293e8b,
- 0x29b550,
- 0x2ae605,
- 0x216a0c,
- 0x2d4985,
- 0x283383,
- 0x29f386,
- 0x2c0984,
- 0x203cc6,
- 0x2a1647,
- 0x222704,
- 0x24b388,
- 0x2cf74d,
- 0x35e245,
- 0x208d44,
- 0x233984,
- 0x287bc9,
- 0x2990c8,
- 0x317647,
- 0x22ed08,
- 0x2862c8,
- 0x27fb85,
- 0x20f747,
- 0x27fb07,
- 0x238287,
- 0x270f49,
- 0x232e89,
- 0x242d86,
- 0x2bf606,
- 0x26fb06,
- 0x289845,
- 0x39b744,
- 0x3b0e86,
- 0x3b5306,
- 0x27fbc8,
- 0x2d600b,
- 0x26de87,
- 0x20a684,
- 0x364a46,
- 0x367a47,
- 0x34f0c5,
- 0x263645,
- 0x212dc4,
- 0x232e06,
- 0x3b0f08,
- 0x28b309,
- 0x252f86,
- 0x289a48,
- 0x2b4606,
- 0x342708,
- 0x34c34c,
- 0x27fa46,
- 0x29c64d,
- 0x29cacb,
- 0x253145,
- 0x202c07,
- 0x200946,
- 0x3343c8,
- 0x242e09,
- 0x393c88,
- 0x200045,
- 0x2e2a87,
- 0x284b88,
- 0x358649,
- 0x344106,
- 0x252e8a,
- 0x334148,
- 0x393acb,
- 0x3298cc,
- 0x247448,
- 0x280e46,
- 0x303d08,
- 0x3a8347,
- 0x363489,
- 0x29304d,
- 0x29f986,
- 0x21e608,
- 0x3af089,
- 0x2bfd08,
- 0x2886c8,
- 0x2c3a0c,
- 0x2c5047,
- 0x2c5507,
- 0x270d85,
- 0x31e5c7,
- 0x2c0fc8,
- 0x2b1506,
- 0x2aaccc,
- 0x2f55c8,
- 0x2d0d88,
- 0x2ba286,
- 0x20de87,
- 0x242f84,
- 0x25b448,
- 0x28f50c,
- 0x353d0c,
- 0x233cc5,
- 0x2d2887,
- 0x31d086,
- 0x20de06,
- 0x349ac8,
- 0x2027c4,
- 0x22d04b,
- 0x27e8cb,
- 0x249d06,
- 0x2cf5c7,
- 0x31a2c5,
- 0x276545,
- 0x22d186,
- 0x25eb85,
- 0x3512c5,
- 0x2cd5c7,
- 0x27d1c9,
- 0x351904,
- 0x34ee05,
- 0x2e6fc5,
- 0x2dea88,
- 0x2287c5,
- 0x2bca49,
- 0x37aac7,
- 0x37aacb,
- 0x244806,
- 0x2d4409,
- 0x349208,
- 0x27c385,
- 0x238388,
- 0x232ec8,
- 0x23a6c7,
- 0x2e2f87,
- 0x2869c9,
- 0x235c87,
- 0x289149,
- 0x2acf8c,
- 0x2b0588,
- 0x2b6189,
- 0x321f87,
- 0x286389,
- 0x35bf07,
- 0x3299c8,
- 0x3a8285,
- 0x22cac6,
- 0x2c4a48,
- 0x2f0fc8,
- 0x285549,
- 0x351307,
- 0x276605,
- 0x36b6c9,
- 0x2b9ec6,
- 0x2323c4,
- 0x2323c6,
- 0x24e8c8,
- 0x252847,
- 0x2d6208,
- 0x2d1f89,
- 0x3a1e07,
- 0x2a29c6,
- 0x202cc4,
- 0x203f49,
- 0x20f5c8,
- 0x2ba147,
- 0x343e06,
- 0x20e1c6,
- 0x3a8484,
- 0x247f86,
- 0x201b83,
- 0x296789,
- 0x202346,
- 0x2d2205,
- 0x2a36c6,
- 0x24f305,
- 0x285008,
- 0x247187,
- 0x244b46,
- 0x39c6c6,
- 0x309148,
- 0x2a5447,
- 0x29f9c5,
- 0x2a09c8,
- 0x3ada88,
- 0x334148,
- 0x2d4845,
- 0x22cb46,
- 0x24d609,
- 0x2ac044,
- 0x24f18b,
- 0x21f40b,
- 0x2463c9,
- 0x20ad83,
- 0x25bf05,
- 0x213a86,
- 0x313788,
- 0x249844,
- 0x351c06,
- 0x2d6749,
- 0x2bc545,
- 0x2cd506,
- 0x363206,
- 0x2163c4,
- 0x2aec0a,
- 0x2d2148,
- 0x2f0fc6,
- 0x2c2585,
- 0x3b1987,
- 0x231147,
- 0x304284,
- 0x21f647,
- 0x2165c4,
- 0x2165c6,
- 0x203c83,
- 0x270f45,
- 0x350e85,
- 0x205788,
- 0x254ac5,
- 0x27f789,
- 0x25b287,
- 0x25b28b,
- 0x2a758c,
- 0x2a810a,
- 0x3363c7,
- 0x204083,
- 0x212188,
- 0x2d4a05,
- 0x29d585,
- 0x20ae44,
- 0x3298c6,
- 0x227b86,
- 0x247fc7,
- 0x2349cb,
- 0x22d9c4,
- 0x2e8f04,
- 0x219e04,
- 0x2cd786,
- 0x222704,
- 0x22c948,
- 0x33c5c5,
- 0x244d85,
- 0x354d07,
- 0x202d09,
- 0x347845,
- 0x37584a,
- 0x277789,
- 0x29810a,
- 0x3a1249,
- 0x335fc4,
- 0x2c9605,
- 0x2b9b48,
- 0x2d18cb,
- 0x278285,
- 0x2f0086,
- 0x2200c4,
- 0x27fcc6,
- 0x3a1c89,
- 0x364b07,
- 0x317988,
- 0x387e46,
- 0x387247,
- 0x285b88,
- 0x380946,
- 0x37f0c4,
- 0x363f87,
- 0x366085,
- 0x377547,
- 0x25b4c4,
- 0x2008c6,
- 0x2f1e08,
- 0x29cc88,
- 0x2e88c7,
- 0x27d548,
- 0x29ae05,
- 0x20abc4,
- 0x361c88,
- 0x27d644,
- 0x2186c5,
- 0x2fac44,
- 0x3675c7,
- 0x28d207,
- 0x2864c8,
- 0x2cbfc6,
- 0x254a45,
- 0x27f588,
- 0x2e15c8,
- 0x2a4c09,
- 0x21f706,
- 0x22e708,
- 0x39bd0a,
- 0x34f148,
- 0x2e8605,
- 0x2e2206,
- 0x277648,
- 0x2e2b4a,
- 0x20b387,
- 0x28a645,
- 0x298888,
- 0x2b3c44,
- 0x272206,
- 0x2c5888,
- 0x20ac46,
- 0x239a88,
- 0x29bfc7,
- 0x209806,
- 0x2ba844,
- 0x28ba07,
- 0x2b6804,
- 0x3a1c47,
- 0x23bf0d,
- 0x21b585,
- 0x2d144b,
- 0x2a1d06,
- 0x255788,
- 0x24b344,
- 0x27bc86,
- 0x2817c6,
- 0x304047,
- 0x29c30d,
- 0x226dc7,
- 0x2b6d48,
- 0x271a05,
- 0x27f048,
- 0x2c7ec6,
- 0x29ae88,
- 0x223a06,
- 0x26a9c7,
- 0x336689,
- 0x33d2c7,
- 0x28c3c8,
- 0x279685,
- 0x21c848,
- 0x20dd45,
- 0x396005,
- 0x3a14c5,
- 0x221443,
- 0x235984,
- 0x26fd05,
- 0x2346c9,
- 0x285f86,
- 0x2eab08,
- 0x2e2d45,
- 0x2b8847,
- 0x2aee8a,
- 0x2cd449,
- 0x2c98ca,
- 0x2d6ec8,
- 0x2272cc,
- 0x28724d,
- 0x2ff683,
- 0x239988,
- 0x207a85,
- 0x224cc6,
- 0x319346,
- 0x2e7f05,
- 0x3b3a09,
- 0x358f45,
- 0x27f588,
- 0x2841c6,
- 0x348806,
- 0x2a63c9,
- 0x38f247,
- 0x294146,
- 0x2aee08,
- 0x216548,
- 0x2e0dc7,
- 0x235ece,
- 0x2c8105,
- 0x358545,
- 0x20ab48,
- 0x27f3c7,
- 0x20e202,
- 0x2c3584,
- 0x203bca,
- 0x2ba208,
- 0x367b46,
- 0x29e608,
- 0x278686,
- 0x31a7c8,
- 0x2b29c8,
- 0x395fc4,
- 0x2b8d85,
- 0x68a8c4,
- 0x68a8c4,
- 0x68a8c4,
- 0x202403,
- 0x20e046,
- 0x27fa46,
- 0x2a220c,
- 0x209843,
- 0x285686,
- 0x215344,
- 0x264b08,
- 0x2d6585,
- 0x203cc6,
- 0x2bedc8,
- 0x2d8206,
- 0x244ac6,
- 0x381148,
- 0x2a7907,
- 0x235a49,
- 0x2d4bca,
+ 0x203346,
+ 0x2b4b04,
+ 0x284fc7,
+ 0x2b0d84,
+ 0x3a3547,
+ 0x28e60d,
+ 0x27b645,
+ 0x2cd54b,
+ 0x29c606,
+ 0x24e848,
+ 0x240b44,
+ 0x350d06,
+ 0x27ae86,
+ 0x208fc7,
+ 0x29644d,
+ 0x243cc7,
+ 0x2b12c8,
+ 0x269b85,
+ 0x278648,
+ 0x2c4a86,
+ 0x295048,
+ 0x228086,
+ 0x33d987,
+ 0x300449,
+ 0x343ac7,
+ 0x287dc8,
+ 0x2706c5,
+ 0x21b608,
+ 0x21a3c5,
+ 0x3a4245,
+ 0x3a2dc5,
+ 0x234543,
+ 0x2809c4,
+ 0x262545,
+ 0x337809,
+ 0x27ea46,
+ 0x2dc5c8,
+ 0x377485,
+ 0x2b2e87,
+ 0x2a78ca,
+ 0x2cc849,
+ 0x2cad4a,
+ 0x2d1d08,
+ 0x2276cc,
+ 0x2806cd,
+ 0x2fc003,
+ 0x38e6c8,
+ 0x3abd45,
+ 0x2b9286,
+ 0x379f86,
+ 0x2e58c5,
+ 0x313889,
+ 0x33cc45,
+ 0x277008,
+ 0x2552c6,
+ 0x347806,
+ 0x2a0289,
+ 0x393947,
+ 0x28ff06,
+ 0x2a7848,
+ 0x33bec8,
+ 0x2daec7,
+ 0x2ace4e,
+ 0x2c4cc5,
+ 0x349545,
+ 0x204e08,
+ 0x21fcc7,
+ 0x21a882,
+ 0x2bf984,
+ 0x334f8a,
+ 0x25de48,
+ 0x2fe546,
+ 0x298ac8,
+ 0x278cc6,
+ 0x332608,
+ 0x2ac008,
+ 0x3a4204,
+ 0x2b33c5,
+ 0x676384,
+ 0x676384,
+ 0x676384,
+ 0x202b43,
+ 0x21a6c6,
+ 0x2774c6,
+ 0x29cb0c,
+ 0x203383,
+ 0x27e146,
+ 0x2151c4,
+ 0x247e88,
+ 0x2d13c5,
+ 0x335086,
+ 0x2bcac8,
+ 0x2d2bc6,
+ 0x3815c6,
+ 0x245d08,
+ 0x2a1807,
+ 0x2ac9c9,
+ 0x2f214a,
+ 0x22b484,
+ 0x215305,
+ 0x2a96c5,
+ 0x247c06,
+ 0x313486,
+ 0x29d546,
+ 0x2f5546,
+ 0x2acb04,
+ 0x2acb0b,
+ 0x231804,
+ 0x29ccc5,
+ 0x2aad85,
+ 0x312806,
+ 0x3a6308,
+ 0x280587,
+ 0x317784,
+ 0x236203,
+ 0x2ad905,
+ 0x306047,
+ 0x28048b,
+ 0x207487,
+ 0x2bc9c8,
+ 0x2e62c7,
+ 0x370b06,
+ 0x279bc8,
+ 0x2a820b,
+ 0x21ff46,
+ 0x212309,
+ 0x2a8385,
+ 0x30a343,
+ 0x2cc906,
+ 0x28f088,
+ 0x213403,
+ 0x24f403,
+ 0x27e646,
+ 0x278cc6,
+ 0x35d10a,
+ 0x27a805,
+ 0x27accb,
+ 0x29da4b,
+ 0x23ef83,
+ 0x202843,
+ 0x2aec44,
+ 0x278a87,
+ 0x28f104,
+ 0x244504,
+ 0x2e6404,
+ 0x26e248,
+ 0x3b8588,
+ 0x3baf89,
+ 0x393188,
+ 0x2b9dc7,
+ 0x247846,
+ 0x2dc20f,
+ 0x2c4e06,
+ 0x2d1344,
+ 0x3b83ca,
+ 0x305f47,
+ 0x3b9606,
+ 0x28f589,
+ 0x3baf05,
+ 0x2076c5,
+ 0x3bb046,
+ 0x21b743,
+ 0x2ade49,
+ 0x21eec6,
+ 0x3afa89,
+ 0x382bc6,
+ 0x264305,
+ 0x2346c5,
+ 0x207343,
+ 0x278bc8,
+ 0x20d787,
+ 0x396784,
+ 0x247d08,
+ 0x2e1244,
+ 0x2f1006,
+ 0x2a8f86,
+ 0x23c346,
+ 0x2c8609,
+ 0x297645,
+ 0x3519c6,
+ 0x2582c9,
+ 0x2c41c6,
+ 0x26e2c6,
+ 0x387886,
+ 0x2160c5,
+ 0x2f5fc6,
+ 0x33d984,
+ 0x3b7705,
+ 0x2c0384,
+ 0x2b2246,
+ 0x3532c4,
+ 0x203c43,
+ 0x284745,
+ 0x2331c8,
+ 0x25e607,
+ 0x2b8209,
+ 0x284b48,
+ 0x297e11,
+ 0x32cd4a,
+ 0x2e2307,
+ 0x2e7246,
+ 0x2151c4,
+ 0x2c0488,
+ 0x22e448,
+ 0x297fca,
+ 0x2b708d,
+ 0x268686,
+ 0x245e06,
+ 0x285086,
+ 0x21ba47,
+ 0x2b1385,
+ 0x3912c7,
+ 0x247dc5,
+ 0x2ae704,
+ 0x2a6206,
+ 0x224047,
+ 0x2adb4d,
+ 0x26aa87,
+ 0x21f308,
+ 0x277309,
+ 0x20b206,
+ 0x28e8c5,
+ 0x22cb04,
+ 0x3600c6,
+ 0x3a3846,
+ 0x25dfc6,
+ 0x299348,
+ 0x215f83,
+ 0x208fc3,
+ 0x352105,
+ 0x277dc6,
+ 0x2abfc5,
+ 0x2a0c88,
+ 0x29c10a,
+ 0x282084,
+ 0x247e88,
+ 0x295f08,
+ 0x312647,
+ 0x377549,
+ 0x2bc6c8,
+ 0x286a87,
+ 0x2587c6,
+ 0x204f0a,
+ 0x360148,
+ 0x2f98c9,
+ 0x2a1288,
+ 0x221609,
+ 0x2e7107,
+ 0x2f2f05,
+ 0x26d886,
+ 0x2c1288,
+ 0x27e7c8,
+ 0x296088,
+ 0x2e24c8,
+ 0x29ccc5,
0x208a84,
- 0x216605,
- 0x2a70c5,
- 0x264886,
- 0x208d46,
- 0x2a2dc6,
- 0x2f9ec6,
- 0x235b84,
- 0x235b8b,
- 0x231144,
- 0x2a23c5,
- 0x2b19c5,
- 0x203086,
- 0x3b5548,
- 0x287107,
- 0x317744,
- 0x2453c3,
- 0x2b3745,
- 0x30a847,
- 0x28700b,
- 0x205687,
- 0x2becc8,
- 0x2e8b47,
- 0x231646,
- 0x24d1c8,
- 0x2e318b,
- 0x2067c6,
- 0x213bc9,
- 0x2e3305,
- 0x30d803,
- 0x2cd506,
- 0x29bec8,
- 0x214cc3,
- 0x200a03,
- 0x285b86,
- 0x278686,
- 0x375dca,
- 0x280e85,
- 0x28160b,
- 0x2a360b,
- 0x245103,
- 0x202043,
- 0x2b4f84,
- 0x278447,
- 0x247444,
- 0x202ec4,
- 0x2e8c84,
- 0x34f448,
- 0x2c24c8,
- 0x3b2049,
- 0x38e748,
- 0x200c07,
- 0x235ec6,
- 0x2ea74f,
- 0x2c8246,
- 0x2d6504,
- 0x2c230a,
- 0x30a747,
- 0x208386,
- 0x292e89,
- 0x3b1fc5,
- 0x2058c5,
- 0x3b2106,
- 0x21c983,
- 0x2b3c89,
- 0x219c86,
- 0x212009,
- 0x38b106,
- 0x270f45,
- 0x2340c5,
- 0x205543,
- 0x278588,
- 0x211607,
- 0x3028c4,
- 0x264988,
- 0x2313c4,
- 0x338d86,
- 0x29f386,
- 0x2419c6,
- 0x2cb849,
- 0x29d505,
- 0x38ec86,
- 0x2a2fc9,
- 0x2c7606,
- 0x2ea846,
- 0x386e86,
- 0x200b45,
- 0x2fac46,
- 0x26a9c4,
- 0x3a8285,
- 0x2c4a44,
- 0x2b7846,
- 0x35aec4,
- 0x20f843,
- 0x28a145,
- 0x232bc8,
- 0x2e9687,
- 0x2bd949,
- 0x28a548,
- 0x29dc51,
- 0x36328a,
- 0x249c47,
- 0x2ea1c6,
- 0x215344,
- 0x2c4b48,
- 0x282f48,
- 0x29de0a,
- 0x2bc80d,
- 0x2a4dc6,
- 0x381246,
- 0x28bac6,
- 0x2c3fc7,
- 0x2b6e05,
- 0x262c07,
- 0x264a45,
- 0x37ac04,
- 0x2ad586,
- 0x216287,
- 0x2b398d,
- 0x277587,
- 0x21a0c8,
- 0x27f889,
- 0x2e2106,
- 0x344085,
- 0x226704,
- 0x24e9c6,
- 0x304186,
- 0x2ba386,
- 0x29ee88,
- 0x2179c3,
- 0x203043,
- 0x3598c5,
- 0x2300c6,
- 0x2b2985,
- 0x388048,
- 0x2a180a,
- 0x2cee04,
- 0x264b08,
- 0x29bd48,
- 0x202ec7,
- 0x2e2e09,
- 0x2be9c8,
- 0x28b387,
- 0x2936c6,
- 0x20ac4a,
- 0x24ea48,
- 0x396449,
- 0x299188,
- 0x21cec9,
- 0x2ea087,
- 0x2effc5,
- 0x3ac4c6,
- 0x2b1388,
- 0x285d08,
- 0x2a1048,
- 0x249e08,
- 0x2a23c5,
- 0x20f444,
- 0x211308,
- 0x208484,
- 0x3a1044,
- 0x270f45,
- 0x297a87,
- 0x202ac9,
- 0x303e47,
- 0x215f45,
- 0x27cdc6,
- 0x34ebc6,
- 0x203d44,
- 0x2a6706,
- 0x254884,
- 0x27ef46,
- 0x202886,
- 0x214b06,
- 0x200045,
- 0x387f07,
- 0x204083,
- 0x206b49,
- 0x308f48,
- 0x264984,
- 0x28b20d,
- 0x29cd88,
- 0x3053c8,
- 0x3963c6,
- 0x336789,
- 0x2cd449,
- 0x3a1985,
- 0x2a190a,
- 0x2adb4a,
- 0x2af7cc,
- 0x2af946,
- 0x27d9c6,
- 0x2c83c6,
- 0x273209,
- 0x224f06,
- 0x262c46,
- 0x359006,
- 0x25b448,
- 0x27d546,
- 0x2d36cb,
- 0x297c05,
- 0x244d85,
- 0x27dc45,
- 0x366f46,
- 0x20ac03,
- 0x241946,
- 0x277507,
- 0x2c4a05,
- 0x24c705,
- 0x3645c5,
- 0x327346,
+ 0x20d488,
+ 0x23e2c4,
+ 0x3a2944,
+ 0x264305,
+ 0x2917c7,
+ 0x312249,
+ 0x208dc7,
+ 0x210cc5,
+ 0x274846,
+ 0x34f606,
+ 0x212444,
+ 0x2a05c6,
+ 0x24d744,
+ 0x278546,
+ 0x312006,
+ 0x213246,
+ 0x200645,
+ 0x2a0b47,
+ 0x203503,
+ 0x2079c9,
+ 0x3076c8,
+ 0x247d04,
+ 0x28690d,
+ 0x296ec8,
+ 0x2e3788,
+ 0x2f9846,
+ 0x300549,
+ 0x2cc849,
+ 0x3a3285,
+ 0x29c20a,
+ 0x27cf4a,
+ 0x29d74c,
+ 0x29d8c6,
+ 0x275446,
+ 0x2c4f86,
+ 0x2b4749,
+ 0x2b94c6,
+ 0x29fa86,
+ 0x33cd06,
+ 0x25dc08,
+ 0x274fc6,
+ 0x2ce80b,
+ 0x291945,
+ 0x21ba45,
+ 0x2756c5,
+ 0x352a46,
+ 0x204ec3,
+ 0x23c2c6,
+ 0x26aa07,
+ 0x2c0345,
+ 0x320585,
+ 0x379445,
+ 0x318446,
0x31da84,
0x31da86,
- 0x3add49,
- 0x366dcc,
- 0x37a948,
- 0x33f004,
- 0x2fa886,
- 0x2a1e06,
- 0x29bec8,
- 0x218808,
- 0x366cc9,
- 0x3b1987,
- 0x245989,
- 0x254106,
- 0x22c2c4,
- 0x20bf04,
- 0x286cc4,
- 0x285b88,
- 0x20290a,
- 0x3477c6,
- 0x352107,
- 0x36f007,
- 0x2d4505,
- 0x2a7084,
- 0x2913c6,
- 0x2b6e46,
- 0x202803,
- 0x308d87,
- 0x368b48,
- 0x3a1aca,
- 0x2ce348,
- 0x2cec88,
- 0x35af05,
- 0x253245,
- 0x26df85,
- 0x2d48c6,
- 0x33d4c6,
- 0x35bd05,
- 0x2969c9,
- 0x2a6e8c,
- 0x26e047,
- 0x29de88,
- 0x381a45,
- 0x68a8c4,
- 0x24df84,
- 0x25d784,
- 0x214486,
- 0x2a450e,
- 0x205947,
- 0x2c41c5,
- 0x2abfcc,
- 0x231287,
- 0x216207,
- 0x218089,
- 0x218f89,
- 0x28a645,
- 0x308f48,
- 0x24d609,
- 0x334005,
- 0x2c4948,
- 0x322906,
- 0x361f06,
- 0x2e4444,
- 0x2ae848,
- 0x251f43,
- 0x303084,
- 0x2b37c5,
- 0x3ac0c7,
- 0x210445,
- 0x39bbc9,
- 0x28aa8d,
- 0x299886,
- 0x245404,
- 0x2937c8,
- 0x27d00a,
- 0x224107,
- 0x23be45,
- 0x203143,
- 0x2a37ce,
- 0x27868c,
- 0x2faa87,
- 0x2a46c7,
- 0x203c03,
- 0x224f45,
- 0x25d785,
- 0x29e9c8,
- 0x29bb89,
- 0x33ef06,
- 0x247444,
- 0x249b86,
- 0x21e3cb,
- 0x2cd1cc,
- 0x221507,
- 0x2d5c45,
- 0x3ad988,
- 0x2e0b85,
- 0x2c2307,
- 0x3630c7,
- 0x251f45,
- 0x20ac03,
- 0x39a644,
- 0x212905,
- 0x351805,
- 0x351806,
- 0x34fd08,
- 0x216287,
- 0x319646,
- 0x35c106,
- 0x3a1406,
- 0x2d5e89,
- 0x20f847,
- 0x26a5c6,
- 0x2cd346,
- 0x252006,
- 0x2aeb45,
- 0x219646,
- 0x3768c5,
- 0x228848,
- 0x2973cb,
- 0x291086,
- 0x36f044,
- 0x2e2909,
- 0x25b284,
- 0x322888,
- 0x2324c7,
- 0x2885c4,
- 0x2be288,
- 0x2c5304,
- 0x2aeb84,
- 0x28b145,
- 0x35e286,
- 0x34f387,
- 0x239b43,
- 0x2a2a85,
- 0x322e84,
- 0x358586,
- 0x3a1a08,
- 0x368885,
- 0x297089,
- 0x3363c5,
- 0x2e1e88,
- 0x215207,
- 0x388dc8,
- 0x2bd787,
- 0x362709,
- 0x255a86,
- 0x32b3c6,
- 0x359004,
- 0x293605,
- 0x30150c,
- 0x27dc47,
- 0x27e207,
- 0x36eec8,
- 0x299886,
- 0x277444,
- 0x32e344,
- 0x286849,
- 0x2c84c6,
- 0x240987,
- 0x3a8bc4,
- 0x286086,
- 0x343905,
- 0x2cbb07,
- 0x2d3646,
- 0x252d49,
- 0x2aab07,
- 0x26f8c7,
- 0x2a6246,
- 0x3879c5,
- 0x283988,
- 0x219b08,
- 0x2646c6,
- 0x3688c5,
- 0x261b06,
- 0x209983,
- 0x29e849,
- 0x2a2b4e,
- 0x2bd488,
- 0x2314c8,
- 0x2644cb,
- 0x2972c6,
- 0x2089c4,
- 0x244ac4,
- 0x2a2c4a,
- 0x216907,
- 0x26a685,
- 0x213bc9,
- 0x2c3285,
- 0x3a1087,
- 0x2b4c04,
- 0x284487,
- 0x2e65c8,
- 0x2cb206,
- 0x21e789,
- 0x2beaca,
- 0x216886,
- 0x29c8c6,
- 0x2b1945,
- 0x37ccc5,
- 0x31a107,
- 0x24dd08,
- 0x343848,
- 0x395fc6,
- 0x234145,
- 0x208ace,
- 0x2b8bc4,
- 0x264645,
- 0x27c749,
- 0x30dfc8,
- 0x28f0c6,
- 0x2a04cc,
- 0x2a1410,
- 0x2a414f,
- 0x2a51c8,
- 0x3363c7,
- 0x200045,
- 0x26fd05,
- 0x34f209,
- 0x298a89,
- 0x23cbc6,
- 0x278307,
- 0x2d2805,
- 0x21b509,
- 0x340146,
- 0x224d4d,
- 0x286b89,
- 0x202ec4,
- 0x2bd208,
- 0x2113c9,
- 0x347986,
- 0x27cec5,
- 0x32b3c6,
- 0x317849,
- 0x26ba08,
- 0x212485,
- 0x2ae844,
- 0x2a068b,
- 0x347845,
- 0x2a07c6,
- 0x287586,
- 0x26ed86,
- 0x287fcb,
- 0x297189,
- 0x35c045,
- 0x388b87,
- 0x363206,
- 0x220f06,
- 0x25d508,
- 0x35e389,
- 0x219e8c,
- 0x30a648,
- 0x360406,
- 0x340bc3,
- 0x303c06,
- 0x287e05,
- 0x281948,
- 0x233b46,
- 0x2cbd48,
- 0x275845,
- 0x29dfc5,
- 0x215348,
- 0x31a947,
- 0x319287,
- 0x247fc7,
- 0x220d88,
- 0x336508,
- 0x31e4c6,
- 0x2b7687,
- 0x247987,
- 0x287cca,
- 0x254003,
- 0x366f46,
- 0x202a45,
- 0x203bc4,
- 0x27f889,
- 0x362684,
- 0x2a7e44,
- 0x2a1c84,
- 0x2a46cb,
- 0x211547,
- 0x208d05,
- 0x29ab08,
- 0x27cdc6,
- 0x27cdc8,
- 0x280dc6,
- 0x2900c5,
- 0x290385,
- 0x291f46,
- 0x292b08,
- 0x292dc8,
- 0x27fa46,
- 0x29a94f,
- 0x29e310,
- 0x3b1785,
- 0x204083,
- 0x22c385,
- 0x30b188,
- 0x298989,
- 0x334148,
- 0x2d5d08,
- 0x224788,
- 0x211607,
- 0x27ca89,
- 0x2cbf48,
- 0x25bd44,
- 0x2a1b08,
- 0x2deb49,
- 0x2b81c7,
- 0x29f904,
- 0x303f08,
- 0x387cca,
- 0x2ebe06,
- 0x2a4dc6,
- 0x21f5c9,
- 0x2a1647,
- 0x2ce1c8,
- 0x30cc88,
- 0x3a8a48,
- 0x356245,
- 0x37dc45,
- 0x244d85,
- 0x25d745,
- 0x37e287,
- 0x20ac05,
- 0x2c4a05,
- 0x2b5546,
- 0x334087,
- 0x2d1807,
- 0x387fc6,
- 0x2d7405,
- 0x2a07c6,
- 0x212245,
- 0x2b84c8,
- 0x2f1d84,
- 0x2c7686,
- 0x343744,
- 0x2b69c8,
- 0x2c778a,
- 0x28004c,
- 0x234bc5,
- 0x2c4086,
- 0x21a046,
- 0x368706,
- 0x30b384,
- 0x343bc5,
- 0x280c07,
- 0x2a16c9,
- 0x2cdc87,
- 0x68a8c4,
- 0x68a8c4,
- 0x3175c5,
- 0x32dd04,
- 0x29fe8a,
- 0x27cc46,
- 0x24d404,
- 0x208305,
- 0x37a545,
- 0x2b6d44,
- 0x2871c7,
- 0x36b847,
- 0x2cd788,
- 0x368ec8,
- 0x212489,
- 0x340248,
- 0x2a004b,
- 0x250b44,
- 0x221005,
- 0x2840c5,
- 0x247f49,
- 0x35e389,
- 0x2e2808,
- 0x232248,
- 0x203084,
- 0x2a1e45,
- 0x202943,
- 0x264845,
- 0x38ed06,
- 0x29b9cc,
- 0x20f4c6,
- 0x247246,
- 0x28f345,
- 0x3273c8,
- 0x2bd606,
- 0x2ea346,
- 0x2a4dc6,
- 0x2297cc,
- 0x2ba544,
- 0x3a154a,
- 0x28f288,
- 0x29b807,
- 0x322d86,
- 0x33efc7,
- 0x2f2185,
- 0x343e06,
- 0x34af86,
- 0x356707,
- 0x2be7c4,
- 0x3676c5,
- 0x27c744,
- 0x37ac87,
- 0x27c988,
- 0x27d84a,
- 0x284a07,
- 0x2d22c7,
- 0x336347,
- 0x2e0cc9,
- 0x29b9ca,
- 0x219e43,
- 0x2e9645,
- 0x200c83,
- 0x2e8cc9,
- 0x26ac48,
- 0x38eb47,
- 0x334249,
- 0x219c06,
- 0x2d4108,
- 0x337f85,
- 0x2e16ca,
- 0x2d8c49,
- 0x2abc49,
- 0x3aea07,
- 0x283049,
- 0x214a08,
- 0x3568c6,
- 0x2c4248,
- 0x217b07,
- 0x235c87,
- 0x277787,
- 0x2d2688,
- 0x2fa706,
- 0x387a85,
- 0x280c07,
- 0x29c3c8,
- 0x3436c4,
- 0x30e3c4,
- 0x294047,
- 0x2b2d47,
- 0x24d48a,
- 0x356846,
- 0x330f0a,
- 0x2c34c7,
- 0x2b8987,
- 0x257e44,
- 0x289204,
- 0x2d3546,
- 0x3b3d44,
- 0x3b3d4c,
- 0x203505,
- 0x218649,
- 0x2dfc44,
- 0x2b6e05,
- 0x27cf88,
- 0x292e85,
- 0x375846,
- 0x217f84,
- 0x3ae3ca,
- 0x32b7c6,
- 0x2a68ca,
- 0x237f07,
- 0x2d3385,
- 0x21c985,
- 0x2d454a,
- 0x2a6805,
- 0x2a4cc6,
- 0x208484,
- 0x2b5106,
- 0x31a1c5,
- 0x233c06,
- 0x2e88cc,
- 0x2cd90a,
- 0x2936c4,
- 0x235ec6,
- 0x2a1647,
- 0x2d5204,
- 0x25b448,
- 0x38e5c6,
- 0x208949,
- 0x2bb109,
- 0x2b0689,
- 0x24f346,
- 0x217c06,
- 0x2c4387,
- 0x296908,
- 0x217a09,
- 0x211547,
- 0x29ac86,
- 0x3872c7,
- 0x28b985,
- 0x2b8bc4,
- 0x2c3f47,
- 0x247b45,
- 0x28b085,
- 0x235247,
- 0x251e08,
+ 0x292f49,
+ 0x3528cc,
+ 0x2ae448,
+ 0x239184,
+ 0x2f5c06,
+ 0x29c706,
+ 0x28f088,
+ 0x216f48,
+ 0x3527c9,
+ 0x37a687,
+ 0x2367c9,
+ 0x24cfc6,
+ 0x22e904,
+ 0x20ea44,
+ 0x280144,
+ 0x27e648,
+ 0x31208a,
+ 0x345bc6,
+ 0x353cc7,
+ 0x362c47,
+ 0x347d85,
+ 0x2a9684,
+ 0x28cd46,
+ 0x2b13c6,
+ 0x2336c3,
+ 0x307507,
+ 0x38d588,
+ 0x3a33ca,
+ 0x2cbb88,
+ 0x281f08,
+ 0x353305,
+ 0x339645,
+ 0x260e05,
+ 0x348146,
0x3ad906,
- 0x29d24d,
- 0x29ebcf,
- 0x2a360d,
- 0x215f84,
- 0x232cc6,
- 0x2d91c8,
- 0x358fc5,
- 0x287e88,
- 0x23a58a,
- 0x202ec4,
- 0x21e946,
- 0x239607,
- 0x22d9c7,
- 0x2a79c9,
- 0x2c4205,
- 0x2b6d44,
- 0x2b8cca,
- 0x2be589,
- 0x283147,
- 0x272086,
- 0x347986,
- 0x2a1d86,
- 0x364046,
- 0x2d890f,
- 0x2d9089,
- 0x27d546,
- 0x282e46,
- 0x32fd89,
- 0x2b7787,
- 0x226743,
- 0x229946,
- 0x218303,
- 0x2e7dc8,
- 0x387107,
- 0x2a53c9,
- 0x29f208,
- 0x3193c8,
- 0x351446,
- 0x20f409,
- 0x23c1c5,
- 0x2b7844,
- 0x2a73c7,
- 0x273285,
- 0x215f84,
- 0x208dc8,
- 0x216bc4,
- 0x2b74c7,
- 0x34bc06,
- 0x2b3045,
- 0x299188,
- 0x34784b,
- 0x319c07,
- 0x2d47c6,
- 0x2c82c4,
- 0x32d146,
- 0x270f45,
- 0x247b45,
- 0x283709,
- 0x286dc9,
- 0x235cc4,
- 0x235d05,
- 0x235f05,
- 0x2e1546,
- 0x309048,
- 0x2c2c46,
- 0x36898b,
- 0x2b4c8a,
- 0x2b6905,
- 0x290406,
- 0x3025c5,
- 0x2e0a45,
- 0x2ab6c7,
- 0x3ac808,
- 0x245984,
- 0x26c586,
- 0x292e46,
- 0x214bc7,
- 0x30d7c4,
- 0x2817c6,
- 0x2b9f85,
- 0x2b9f89,
- 0x2135c4,
- 0x2a7209,
- 0x27fa46,
- 0x2c5108,
- 0x235f05,
- 0x36f105,
- 0x233c06,
- 0x219d89,
- 0x218f89,
- 0x2472c6,
- 0x30e0c8,
- 0x28abc8,
- 0x302584,
- 0x2b9004,
- 0x2b9008,
- 0x3269c8,
- 0x245a89,
- 0x38ec86,
- 0x2a4dc6,
- 0x320c0d,
- 0x351c06,
- 0x34c209,
- 0x23d1c5,
- 0x3b2106,
- 0x262d48,
- 0x31d9c5,
- 0x2479c4,
- 0x270f45,
- 0x2866c8,
- 0x29fc49,
- 0x27c804,
- 0x2008c6,
- 0x39660a,
- 0x2fa988,
- 0x24d609,
- 0x244c4a,
- 0x3341c6,
- 0x29ed88,
- 0x2c20c5,
- 0x2c0e48,
- 0x2bd885,
- 0x219ac9,
- 0x36bd09,
- 0x203602,
- 0x2e3305,
- 0x276286,
- 0x27f987,
- 0x295705,
- 0x2f0ec6,
- 0x306288,
- 0x299886,
- 0x2b9a09,
- 0x27e306,
- 0x25d388,
- 0x2afb85,
- 0x25c586,
- 0x26aac8,
- 0x285b88,
- 0x2e9f88,
- 0x347b08,
- 0x219644,
- 0x209fc3,
- 0x2b9c44,
- 0x249b06,
- 0x28b9c4,
- 0x231407,
- 0x2ea249,
- 0x2c7a05,
- 0x30cc86,
- 0x229946,
- 0x34fb4b,
- 0x2b6846,
- 0x20edc6,
- 0x2cb6c8,
- 0x24c646,
- 0x2bcb03,
- 0x2080c3,
- 0x2b8bc4,
- 0x22e605,
- 0x2b4447,
- 0x27c988,
- 0x27c98f,
- 0x280b0b,
- 0x308e48,
- 0x200946,
- 0x30914e,
- 0x233c03,
- 0x2b43c4,
- 0x2b67c5,
- 0x2b6bc6,
- 0x2914cb,
- 0x297b46,
- 0x222709,
- 0x2b3045,
- 0x38a208,
- 0x211d88,
- 0x218e4c,
- 0x2a4706,
- 0x264886,
- 0x2de405,
- 0x28c188,
- 0x26aac5,
- 0x335848,
- 0x2a084a,
- 0x2a3a49,
- 0x68a8c4,
- 0x3760d1c2,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204ac3,
- 0x200383,
- 0x210e03,
- 0x24ae04,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x2da904,
- 0x332ec3,
+ 0x26c085,
+ 0x3b1889,
+ 0x2a948c,
+ 0x260ec7,
+ 0x298048,
+ 0x2e5c05,
+ 0x676384,
+ 0x320944,
+ 0x252c04,
+ 0x22df86,
+ 0x29eb0e,
+ 0x207747,
+ 0x21bc45,
+ 0x24440c,
+ 0x2e1107,
+ 0x223fc7,
+ 0x225109,
+ 0x217cc9,
+ 0x284c45,
+ 0x3076c8,
+ 0x215349,
+ 0x335c45,
+ 0x2c0288,
+ 0x2c2586,
+ 0x371446,
+ 0x2def04,
+ 0x2553c8,
+ 0x20b3c3,
+ 0x2af8c4,
+ 0x2ad985,
+ 0x3bab07,
+ 0x21c245,
+ 0x38bc09,
+ 0x28b30d,
+ 0x2a33c6,
+ 0x225fc4,
+ 0x2588c8,
+ 0x274a8a,
+ 0x2611c7,
+ 0x235d45,
+ 0x23b403,
+ 0x29dc0e,
+ 0x278ccc,
+ 0x2f5e07,
+ 0x29ecc7,
+ 0x200143,
+ 0x2b9505,
+ 0x252c05,
+ 0x298e88,
+ 0x295d49,
+ 0x239086,
+ 0x28f104,
+ 0x2e2246,
+ 0x27b5cb,
+ 0x2cc5cc,
+ 0x366d87,
+ 0x2d0305,
+ 0x3a1d48,
+ 0x2dac85,
+ 0x3b83c7,
+ 0x32cb87,
+ 0x247585,
+ 0x204ec3,
+ 0x26e584,
+ 0x21c685,
+ 0x2ac685,
+ 0x2ac686,
+ 0x292008,
+ 0x224047,
+ 0x37a286,
+ 0x26c486,
+ 0x3a2d06,
+ 0x268789,
+ 0x209387,
+ 0x25e286,
+ 0x2cc746,
+ 0x2731c6,
+ 0x2a7585,
+ 0x3b2b46,
+ 0x380145,
+ 0x329d88,
+ 0x29114b,
+ 0x28c346,
+ 0x362c84,
+ 0x2b4389,
+ 0x25da44,
+ 0x2c2508,
+ 0x30e2c7,
+ 0x281404,
+ 0x2bbd88,
+ 0x2c1684,
+ 0x2a75c4,
+ 0x286845,
+ 0x302986,
+ 0x26e187,
+ 0x203043,
+ 0x29d205,
+ 0x323284,
+ 0x349586,
+ 0x3a3308,
+ 0x38d2c5,
+ 0x290e09,
+ 0x222d05,
+ 0x2dbf88,
+ 0x215087,
+ 0x388588,
+ 0x2b8047,
+ 0x2fb609,
+ 0x264dc6,
+ 0x32bb46,
+ 0x28cac4,
+ 0x258705,
+ 0x2fce4c,
+ 0x2756c7,
+ 0x275fc7,
+ 0x362b08,
+ 0x2a33c6,
+ 0x26a944,
+ 0x328004,
+ 0x27fcc9,
+ 0x2c5086,
+ 0x298a07,
+ 0x208c04,
+ 0x23da46,
+ 0x33b785,
+ 0x2c88c7,
+ 0x2ce786,
+ 0x250e89,
+ 0x27cd87,
+ 0x262107,
+ 0x2a0106,
+ 0x23d985,
+ 0x27c548,
+ 0x21ed48,
+ 0x247a46,
+ 0x38d305,
+ 0x390586,
+ 0x2034c3,
+ 0x298d09,
+ 0x29d2ce,
+ 0x2b7d48,
+ 0x2e1348,
+ 0x24784b,
+ 0x291046,
+ 0x313104,
+ 0x2802c4,
+ 0x29d3ca,
+ 0x215907,
+ 0x25e345,
+ 0x212309,
+ 0x2bf685,
+ 0x3a2987,
+ 0x245c84,
+ 0x287087,
+ 0x2e40c8,
+ 0x2cd306,
+ 0x27b989,
+ 0x2bc7ca,
+ 0x215886,
+ 0x296a06,
+ 0x2aad05,
+ 0x37d085,
+ 0x282d07,
+ 0x244e48,
+ 0x33b6c8,
+ 0x3a4206,
+ 0x234745,
+ 0x31320e,
+ 0x2b3204,
+ 0x2479c5,
+ 0x2741c9,
+ 0x2dce48,
+ 0x28abc6,
+ 0x29af0c,
+ 0x29bd10,
+ 0x29e74f,
+ 0x29f7c8,
+ 0x300187,
+ 0x200645,
+ 0x262545,
+ 0x26e009,
+ 0x292909,
+ 0x241946,
+ 0x2442c7,
+ 0x2d0cc5,
+ 0x337b09,
+ 0x339386,
+ 0x2b930d,
+ 0x280009,
+ 0x244504,
+ 0x2b7ac8,
+ 0x20d549,
+ 0x345d86,
+ 0x274945,
+ 0x32bb46,
+ 0x317889,
+ 0x2f3c48,
+ 0x20dcc5,
+ 0x2553c4,
+ 0x29b0cb,
+ 0x345c45,
+ 0x29b206,
+ 0x280a06,
+ 0x265e46,
+ 0x276d4b,
+ 0x290f09,
+ 0x26c3c5,
+ 0x388347,
+ 0x32ccc6,
+ 0x334dc6,
+ 0x252988,
+ 0x302a89,
+ 0x21f0cc,
+ 0x305e48,
+ 0x309e46,
+ 0x322c03,
+ 0x2ba886,
+ 0x276b85,
+ 0x27b008,
+ 0x234146,
+ 0x2c8b08,
+ 0x248b45,
+ 0x279305,
+ 0x32eb08,
+ 0x332787,
+ 0x379ec7,
+ 0x224207,
+ 0x334c48,
+ 0x3002c8,
+ 0x2ad486,
+ 0x2b2087,
+ 0x23bb07,
+ 0x276a4a,
+ 0x201e03,
+ 0x352a46,
+ 0x2392c5,
+ 0x334f84,
+ 0x277309,
+ 0x2fb584,
+ 0x25e684,
+ 0x29c584,
+ 0x29eccb,
+ 0x20d6c7,
+ 0x313445,
+ 0x294cc8,
+ 0x274846,
+ 0x274848,
+ 0x27a746,
+ 0x28b085,
+ 0x28b645,
+ 0x28d886,
+ 0x28ee48,
+ 0x28f4c8,
+ 0x2774c6,
+ 0x294b0f,
+ 0x2987d0,
+ 0x3a6005,
+ 0x203503,
+ 0x22e9c5,
+ 0x30a4c8,
+ 0x292809,
+ 0x335d88,
+ 0x268608,
+ 0x2b8d48,
+ 0x20d787,
+ 0x274509,
+ 0x2c8d08,
+ 0x265304,
+ 0x29c408,
+ 0x2d9e89,
+ 0x2b27c7,
+ 0x299d44,
+ 0x208e88,
+ 0x2a090a,
+ 0x2e77c6,
+ 0x268686,
+ 0x226209,
+ 0x29bf47,
+ 0x2cba08,
+ 0x204848,
+ 0x2ddd88,
+ 0x35cc45,
+ 0x37e005,
+ 0x21ba45,
+ 0x252bc5,
+ 0x3b5987,
+ 0x204ec5,
+ 0x2c0345,
+ 0x313686,
+ 0x335cc7,
+ 0x2cd907,
+ 0x2a0c06,
+ 0x2d2245,
+ 0x29b206,
+ 0x27ba85,
+ 0x2b58c8,
+ 0x2f4284,
+ 0x2c4246,
+ 0x33b5c4,
+ 0x2b0f48,
+ 0x2c434a,
+ 0x2790cc,
+ 0x334685,
+ 0x21bb06,
+ 0x21f286,
+ 0x351fc6,
+ 0x309ec4,
+ 0x33ba45,
+ 0x27a587,
+ 0x29bfc9,
+ 0x2cb4c7,
+ 0x676384,
+ 0x676384,
+ 0x317605,
+ 0x37b944,
+ 0x29a8ca,
+ 0x2746c6,
+ 0x279e04,
+ 0x3b9585,
+ 0x37e405,
+ 0x2b12c4,
+ 0x280647,
+ 0x222c87,
+ 0x2cafc8,
+ 0x33de88,
+ 0x20dcc9,
+ 0x29cd88,
+ 0x29aa8b,
+ 0x2318c4,
+ 0x366885,
+ 0x27cc85,
+ 0x224189,
+ 0x302a89,
+ 0x2b4288,
+ 0x30e048,
+ 0x2d6604,
+ 0x29c745,
+ 0x217083,
+ 0x247bc5,
+ 0x351a46,
+ 0x295b8c,
+ 0x208b06,
+ 0x36c3c6,
+ 0x28ae45,
+ 0x3184c8,
+ 0x2b7ec6,
+ 0x2e73c6,
+ 0x268686,
+ 0x22920c,
+ 0x25e184,
+ 0x3a2e4a,
+ 0x28ad88,
0x2959c7,
- 0x20fbc3,
- 0x20abc3,
- 0x2842c8,
- 0x200383,
- 0x2b400b,
- 0x2f2a03,
- 0x2716c6,
- 0x205bc2,
- 0x26b44b,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x200383,
- 0x200e03,
- 0x203383,
- 0x204cc2,
- 0x15f048,
- 0x325b45,
- 0x247bc8,
- 0x2ec408,
- 0x20d1c2,
- 0x329dc5,
- 0x39c307,
- 0x2001c2,
- 0x24b587,
- 0x208a42,
- 0x246f87,
- 0x239ec9,
- 0x2c1c88,
- 0x3a88c9,
- 0x338b02,
- 0x270647,
- 0x2abac4,
- 0x39c3c7,
- 0x2b4b87,
- 0x24ca02,
- 0x20fbc3,
- 0x20b602,
- 0x202082,
- 0x200382,
- 0x217902,
- 0x200e02,
- 0x20c4c2,
- 0x2af685,
- 0x24dec5,
- 0xd1c2,
- 0x31b83,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x117c3,
- 0x701,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x204ac3,
- 0x200383,
- 0x21bd03,
- 0x3a40d686,
- 0x5e303,
- 0x854c5,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x8082,
- 0x15f048,
- 0x4dcc4,
- 0xe0f85,
- 0x204cc2,
- 0x2cfa44,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x236d03,
- 0x2b0405,
- 0x204303,
- 0x205d83,
- 0x204ac3,
- 0x2104c3,
- 0x200383,
- 0x213e83,
- 0x24ae83,
- 0x24abc3,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x20d1c2,
- 0x200383,
- 0x15f048,
- 0x332ec3,
- 0x15f048,
- 0x26ae03,
- 0x2d0783,
- 0x22ef04,
- 0x231b83,
- 0x332ec3,
- 0x20a3c2,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20a3c2,
- 0x22d603,
- 0x204ac3,
- 0x200383,
- 0x2ec383,
- 0x213e83,
- 0x204cc2,
- 0x20d1c2,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2716c5,
- 0x1540c6,
- 0x24ae04,
- 0x205bc2,
- 0x15f048,
- 0x204cc2,
- 0x1d508,
- 0x20d1c2,
- 0x97606,
- 0x1681c4,
- 0x16e1cb,
- 0x3dc06,
- 0xfcc7,
- 0x231b83,
- 0x332ec3,
- 0x15ae05,
- 0x19c804,
- 0x221543,
- 0x53fc7,
- 0xdc304,
- 0x204ac3,
- 0x94fc4,
- 0x200383,
- 0x2f39c4,
- 0xfe588,
- 0x125886,
- 0x114f85,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x20abc3,
- 0x200383,
- 0x2f2a03,
- 0x205bc2,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204143,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x2da904,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2716c6,
- 0x231b83,
- 0x332ec3,
- 0x178ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0xfcc7,
- 0x15f048,
- 0x332ec3,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x40ed0783,
- 0x231b83,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x204cc2,
- 0x20d1c2,
- 0x2d0783,
- 0x332ec3,
- 0x204ac3,
- 0x200382,
- 0x200383,
- 0x316e47,
- 0x23860b,
- 0x2396c3,
- 0x24be08,
- 0x296687,
- 0x225246,
- 0x2c6145,
- 0x373549,
- 0x20f948,
- 0x260d09,
- 0x260d10,
- 0x35d28b,
- 0x385989,
- 0x209303,
- 0x2b5649,
- 0x230806,
- 0x23080c,
- 0x260f08,
- 0x3ae848,
- 0x35d7c9,
- 0x2a5d0e,
- 0x20780b,
- 0x2eb20c,
- 0x205283,
- 0x26cc4c,
- 0x205289,
- 0x257a87,
- 0x231acc,
- 0x36aa8a,
- 0x24fe44,
- 0x393f4d,
- 0x26cb08,
- 0x210e0d,
- 0x272746,
- 0x29258b,
- 0x31a3c9,
- 0x23d087,
- 0x339606,
- 0x349d89,
- 0x38ce8a,
- 0x37a0c8,
- 0x2f24c4,
- 0x34ecc7,
- 0x3ac5c7,
- 0x3a8dc4,
- 0x32d984,
- 0x237209,
- 0x2ceac9,
- 0x237908,
- 0x210b85,
- 0x392545,
- 0x20aa06,
- 0x393e09,
- 0x23a80d,
- 0x2eac88,
- 0x20a907,
- 0x2c61c8,
- 0x382986,
- 0x37ed04,
- 0x359b85,
- 0x202246,
- 0x203204,
- 0x205187,
- 0x206d8a,
- 0x211cc4,
- 0x2167c6,
- 0x2182c9,
- 0x2182cf,
- 0x2197cd,
- 0x21a486,
- 0x21d110,
- 0x21d506,
- 0x21dc47,
- 0x21ebc7,
- 0x21ebcf,
- 0x21f889,
- 0x2242c6,
- 0x226487,
- 0x226488,
- 0x227649,
- 0x2b3108,
- 0x2e7907,
- 0x20a203,
- 0x378c86,
- 0x3abf08,
- 0x2a5fca,
- 0x21fe49,
- 0x20fa83,
- 0x39c206,
- 0x26c3ca,
- 0x2fca47,
- 0x2578ca,
- 0x26a24e,
- 0x21f9c6,
- 0x2e3507,
- 0x227086,
- 0x201806,
- 0x37da4b,
- 0x30c58a,
- 0x317ecd,
- 0x217cc7,
- 0x359188,
- 0x359189,
- 0x35918f,
- 0x20e28c,
- 0x281bc9,
- 0x2e928e,
- 0x295aca,
- 0x3035c6,
- 0x2fbbc6,
- 0x3b06cc,
- 0x3106cc,
- 0x311448,
- 0x33d1c7,
- 0x25b7c5,
- 0x2251c4,
- 0x2438ce,
- 0x38d104,
- 0x257bc7,
- 0x26d08a,
- 0x36e914,
- 0x373a4f,
- 0x21ed88,
- 0x378b48,
- 0x357e8d,
- 0x357e8e,
- 0x3823c9,
- 0x3a5b08,
- 0x3a5b0f,
- 0x2317cc,
- 0x2317cf,
- 0x232a07,
- 0x23acca,
- 0x21cc4b,
- 0x23bcc8,
- 0x23e5c7,
- 0x264f4d,
- 0x3151c6,
- 0x394106,
- 0x2417c9,
- 0x259888,
- 0x24c108,
- 0x24c10e,
- 0x238707,
- 0x226985,
- 0x24da85,
- 0x205e04,
- 0x225506,
- 0x237808,
- 0x260183,
- 0x2efb8e,
- 0x265308,
- 0x2f198b,
- 0x26afc7,
- 0x395e05,
- 0x26cdc6,
- 0x2b0e07,
- 0x307048,
- 0x319f09,
- 0x298fc5,
- 0x28a188,
- 0x217306,
- 0x3a02ca,
- 0x2437c9,
- 0x231b89,
- 0x231b8b,
- 0x201148,
- 0x3a8c89,
- 0x210c46,
- 0x22c54a,
- 0x2b7f4a,
- 0x23aecc,
- 0x3acb87,
- 0x2c1a8a,
- 0x328ecb,
- 0x328ed9,
- 0x30fa48,
- 0x271745,
- 0x265106,
- 0x258fc9,
- 0x261cc6,
- 0x21324a,
- 0x20fb46,
- 0x201e44,
- 0x2c9ecd,
- 0x201e47,
- 0x20b549,
- 0x383305,
- 0x24e548,
- 0x24ee89,
- 0x24f0c4,
- 0x24fd47,
- 0x24fd48,
- 0x250287,
- 0x26ea08,
- 0x2545c7,
- 0x35c2c5,
- 0x25c70c,
- 0x25cf49,
- 0x2c4dca,
- 0x38f0c9,
- 0x2b5749,
- 0x2739cc,
- 0x263e0b,
- 0x2640c8,
- 0x265688,
- 0x268a44,
- 0x288288,
- 0x289389,
- 0x36ab47,
- 0x218506,
- 0x317287,
- 0x21e1c9,
- 0x328b0b,
- 0x32cfc7,
- 0x200407,
- 0x238047,
- 0x210d84,
- 0x210d85,
- 0x2ac905,
- 0x33c00b,
- 0x399404,
- 0x369d08,
- 0x26f08a,
- 0x2173c7,
- 0x341dc7,
- 0x290c12,
- 0x27ee46,
- 0x22e886,
- 0x35898e,
- 0x281346,
- 0x298708,
- 0x29938f,
- 0x2111c8,
- 0x38bb08,
- 0x3af64a,
- 0x3af651,
- 0x2a6b4e,
- 0x254e4a,
- 0x254e4c,
- 0x2014c7,
- 0x3a5d10,
- 0x3b5388,
- 0x2a6d45,
- 0x2b114a,
- 0x20324c,
- 0x29afcd,
- 0x2fce06,
- 0x2fce07,
- 0x2fce0c,
- 0x305c8c,
- 0x32814c,
- 0x28f98b,
- 0x289b84,
- 0x21f744,
- 0x374149,
- 0x2fe3c7,
- 0x23e389,
- 0x2b7d89,
- 0x35a587,
- 0x36a906,
- 0x36a909,
- 0x39d403,
- 0x2129ca,
- 0x32f807,
- 0x238acb,
- 0x317d4a,
- 0x2abb44,
- 0x39c546,
- 0x284c89,
- 0x3b3bc4,
- 0x2035ca,
- 0x2d4ac5,
- 0x2c0005,
- 0x2c000d,
- 0x2c034e,
- 0x378205,
- 0x323506,
- 0x2712c7,
- 0x38684a,
- 0x38d406,
- 0x35ecc4,
- 0x2f8987,
- 0x2da18b,
- 0x382a47,
- 0x282ac4,
- 0x24f706,
- 0x24f70d,
- 0x21de8c,
- 0x204986,
- 0x2eae8a,
- 0x235806,
- 0x2f3248,
- 0x28bf47,
- 0x33f88a,
- 0x23d986,
- 0x217bc3,
- 0x262ec6,
- 0x3abd88,
- 0x2a024a,
- 0x2766c7,
- 0x2766c8,
- 0x27dd84,
- 0x2cc0c7,
- 0x23ccc8,
- 0x29e008,
- 0x288b48,
- 0x33110a,
- 0x2e0405,
- 0x2e0687,
- 0x254c93,
- 0x2d0806,
- 0x26f288,
- 0x222c09,
- 0x24b448,
- 0x3514cb,
- 0x2cddc8,
- 0x273704,
- 0x215446,
- 0x3b4f06,
- 0x35e0c9,
- 0x2c72c7,
- 0x25c808,
- 0x29e186,
- 0x235144,
- 0x2ce085,
- 0x2c8a08,
- 0x2c900a,
- 0x2c9b48,
- 0x2ce746,
- 0x29ef8a,
- 0x351988,
- 0x2d5008,
- 0x2d6a88,
- 0x2d70c6,
- 0x2d93c6,
- 0x20168c,
- 0x2d99d0,
- 0x28de45,
- 0x210fc8,
- 0x306790,
- 0x210fd0,
- 0x260b8e,
- 0x20130e,
- 0x201314,
- 0x31abcf,
- 0x31af86,
- 0x3319d1,
- 0x339793,
- 0x339c08,
- 0x3aafc5,
- 0x35b6c8,
- 0x385785,
- 0x22854c,
- 0x229489,
- 0x282449,
- 0x245d47,
- 0x377009,
- 0x243d87,
- 0x2fadc6,
- 0x359987,
- 0x261245,
- 0x211803,
- 0x260349,
- 0x222ec9,
- 0x378ac3,
- 0x39a544,
- 0x35c40d,
- 0x3b1b0f,
- 0x235185,
- 0x35b5c6,
- 0x211b07,
- 0x325987,
- 0x28cd86,
- 0x28cd8b,
- 0x2a82c5,
- 0x25f106,
- 0x2fba47,
- 0x276ec9,
- 0x2290c6,
- 0x22e405,
- 0x31190b,
- 0x23bb46,
- 0x3724c5,
- 0x28b548,
- 0x321d88,
- 0x2d75cc,
- 0x2d75d0,
- 0x2e0149,
- 0x2e7107,
- 0x30860b,
- 0x2e6186,
- 0x2e77ca,
- 0x2ea4cb,
- 0x2eb74a,
- 0x2eb9c6,
- 0x2ec245,
- 0x32f546,
- 0x27e4c8,
- 0x245e0a,
- 0x357b1c,
- 0x2f2acc,
- 0x2f2dc8,
- 0x2716c5,
- 0x2f4f07,
- 0x26a106,
- 0x27d385,
- 0x21c2c6,
- 0x28cf48,
- 0x2be807,
- 0x2a5c08,
- 0x2e360a,
- 0x34a10c,
- 0x34a389,
- 0x37ee87,
- 0x20d244,
- 0x24db46,
- 0x38b68a,
- 0x2b7e85,
- 0x20734c,
- 0x20b088,
- 0x377648,
- 0x20d98c,
- 0x21be8c,
- 0x2206c9,
- 0x220907,
- 0x342c0c,
- 0x3aa644,
- 0x23c54a,
- 0x2580cc,
- 0x278acb,
- 0x24140b,
- 0x241f46,
- 0x383847,
- 0x2ddb07,
- 0x3a5f4f,
- 0x2fda11,
- 0x2ddb12,
- 0x30d0cd,
- 0x30d0ce,
- 0x30d40e,
- 0x31ad88,
- 0x31ad92,
- 0x252288,
- 0x2962c7,
- 0x25260a,
- 0x204748,
- 0x281305,
- 0x37e0ca,
- 0x21da47,
- 0x305304,
- 0x21b083,
- 0x2b0fc5,
- 0x3af8c7,
- 0x2fea07,
- 0x29b1ce,
- 0x30ff4d,
- 0x313c49,
- 0x220c45,
- 0x33aa03,
- 0x25fac6,
- 0x36ffc5,
- 0x2f1bc8,
- 0x30c009,
- 0x265145,
- 0x26514f,
- 0x2ec087,
- 0x373485,
- 0x21b2ca,
- 0x299b86,
- 0x2f33c9,
- 0x384d0c,
- 0x2f99c9,
- 0x207b06,
- 0x26ee8c,
- 0x340cc6,
- 0x2fc548,
- 0x2fc746,
- 0x30fbc6,
- 0x349344,
- 0x264443,
- 0x2b270a,
- 0x35b211,
- 0x281d8a,
- 0x255d05,
- 0x277947,
- 0x259307,
- 0x23cdc4,
- 0x23cdcb,
- 0x3a8748,
- 0x2bd306,
- 0x36ef45,
- 0x3a05c4,
- 0x291949,
- 0x330304,
- 0x25cd87,
- 0x332705,
- 0x332707,
- 0x358bc5,
- 0x2af743,
- 0x296188,
- 0x34398a,
- 0x239b43,
- 0x325b8a,
- 0x3b4086,
- 0x264ecf,
- 0x353689,
- 0x2efb10,
- 0x2dee88,
- 0x2d0e89,
- 0x29d087,
- 0x24f68f,
- 0x334604,
- 0x2da984,
- 0x21d386,
- 0x2b3546,
- 0x256dca,
- 0x383586,
- 0x32a787,
- 0x3055c8,
- 0x3057c7,
- 0x306047,
- 0x307a4a,
- 0x309b4b,
- 0x3a2445,
- 0x2dd748,
- 0x2166c3,
- 0x3b120c,
- 0x37140f,
- 0x25b5cd,
- 0x2c4607,
- 0x313d89,
- 0x217687,
- 0x23e148,
- 0x36eb0c,
- 0x273608,
- 0x258908,
- 0x3188ce,
- 0x32bad4,
- 0x32bfe4,
- 0x3424ca,
- 0x35ea8b,
- 0x243e44,
- 0x243e49,
- 0x21e9c8,
- 0x24e105,
- 0x25fc8a,
- 0x239d87,
- 0x2957c4,
- 0x368883,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x20fbc3,
- 0x201686,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x21aa03,
- 0x204cc2,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x332ec3,
- 0x204303,
- 0x201686,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x204cc2,
- 0x21fd43,
- 0x20d1c2,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x20e542,
+ 0x323186,
+ 0x239147,
+ 0x2ec145,
+ 0x27eb46,
+ 0x34d406,
+ 0x35b847,
+ 0x25e6c4,
+ 0x2fe0c5,
+ 0x2741c4,
+ 0x2ae787,
+ 0x274408,
+ 0x2752ca,
+ 0x27d4c7,
+ 0x303407,
+ 0x300107,
+ 0x2dadc9,
+ 0x295b8a,
+ 0x21f083,
+ 0x25e5c5,
+ 0x213283,
+ 0x2e6449,
+ 0x33dc08,
+ 0x3709c7,
+ 0x335e89,
+ 0x21ee46,
+ 0x2b88c8,
+ 0x33a3c5,
+ 0x2db7ca,
+ 0x2d3549,
+ 0x2683c9,
+ 0x3b50c7,
+ 0x22e549,
+ 0x213148,
+ 0x35ba06,
+ 0x21bcc8,
+ 0x2160c7,
+ 0x2acc07,
+ 0x26ac87,
+ 0x2d0b48,
+ 0x2f5a86,
+ 0x2a06c5,
+ 0x27a587,
+ 0x296508,
+ 0x33b544,
+ 0x2dd244,
+ 0x28fe07,
+ 0x2ac387,
+ 0x2151ca,
+ 0x35b986,
+ 0x38c74a,
+ 0x2bf8c7,
+ 0x2b2fc7,
+ 0x246004,
+ 0x28aa44,
+ 0x2ce686,
+ 0x202d04,
+ 0x202d0c,
+ 0x3aff05,
+ 0x216d89,
+ 0x2d4f04,
+ 0x2b1385,
+ 0x274a08,
+ 0x279fc5,
+ 0x374246,
+ 0x223ec4,
+ 0x293c4a,
+ 0x2b00c6,
+ 0x29ba8a,
+ 0x22b447,
+ 0x21ac45,
+ 0x21b745,
+ 0x347dca,
+ 0x28efc5,
+ 0x26dfc6,
+ 0x23e2c4,
+ 0x2aedc6,
+ 0x282dc5,
+ 0x234206,
+ 0x2e604c,
+ 0x2cb14a,
+ 0x2587c4,
+ 0x247846,
+ 0x29bf47,
+ 0x2cf984,
+ 0x25dc08,
+ 0x393006,
+ 0x313089,
+ 0x2c7549,
+ 0x3164c9,
+ 0x26cb06,
+ 0x2161c6,
+ 0x21be07,
+ 0x3b17c8,
+ 0x215fc9,
+ 0x20d6c7,
+ 0x294e46,
+ 0x34de87,
+ 0x284f45,
+ 0x2b3204,
+ 0x21b9c7,
+ 0x23bcc5,
+ 0x286785,
+ 0x226987,
+ 0x247448,
+ 0x3a1cc6,
+ 0x29738d,
+ 0x29908f,
+ 0x29da4d,
+ 0x210d04,
+ 0x2332c6,
+ 0x2d3c08,
+ 0x33ccc5,
+ 0x276c08,
+ 0x24560a,
+ 0x244504,
+ 0x27bb46,
+ 0x26f3c7,
+ 0x286007,
+ 0x2a18c9,
+ 0x21bc85,
+ 0x2b12c4,
+ 0x2b330a,
+ 0x2bc289,
+ 0x22e647,
+ 0x265706,
+ 0x345d86,
+ 0x29c686,
+ 0x365b86,
+ 0x2d320f,
+ 0x2d3ac9,
+ 0x274fc6,
+ 0x22e346,
+ 0x31a809,
+ 0x2b2187,
+ 0x217443,
+ 0x229386,
+ 0x216a43,
+ 0x2e5788,
+ 0x34dcc7,
+ 0x29f9c9,
+ 0x2a8e08,
+ 0x37a008,
+ 0x203c86,
+ 0x208a49,
+ 0x242785,
+ 0x2b2244,
+ 0x2a99c7,
+ 0x2b47c5,
+ 0x210d04,
+ 0x313508,
+ 0x215bc4,
+ 0x2b1ec7,
+ 0x3545c6,
+ 0x357e85,
+ 0x2a1288,
+ 0x345c4b,
+ 0x331dc7,
+ 0x348046,
+ 0x2c4e84,
+ 0x319586,
+ 0x264305,
+ 0x23bcc5,
+ 0x27c2c9,
+ 0x280249,
+ 0x2acc44,
+ 0x2acc85,
+ 0x247885,
+ 0x2db646,
+ 0x3077c8,
+ 0x2bf046,
+ 0x38d3cb,
+ 0x35ab4a,
+ 0x2b0e85,
+ 0x28b6c6,
+ 0x396485,
+ 0x2cf485,
+ 0x2a54c7,
+ 0x352cc8,
+ 0x2367c4,
+ 0x25f806,
+ 0x28f546,
+ 0x213307,
+ 0x30a304,
+ 0x27ae86,
+ 0x237cc5,
+ 0x237cc9,
+ 0x2163c4,
+ 0x2a9809,
+ 0x2774c6,
+ 0x2c0c08,
+ 0x247885,
+ 0x362d45,
+ 0x234206,
+ 0x21efc9,
+ 0x217cc9,
+ 0x36c446,
+ 0x2dcf48,
+ 0x244508,
+ 0x396444,
+ 0x2b3644,
+ 0x2b3648,
+ 0x326dc8,
+ 0x2368c9,
+ 0x3519c6,
+ 0x268686,
+ 0x32224d,
+ 0x2e3306,
+ 0x306c89,
+ 0x315fc5,
+ 0x3bb046,
+ 0x391408,
+ 0x31d9c5,
+ 0x23bb44,
+ 0x264305,
+ 0x27fb48,
+ 0x29a689,
+ 0x274284,
+ 0x353146,
+ 0x279e8a,
+ 0x2f5d08,
+ 0x215349,
+ 0x38174a,
+ 0x335e06,
+ 0x299248,
+ 0x3b8185,
+ 0x2e0908,
+ 0x2b8145,
+ 0x21ed09,
+ 0x36a349,
+ 0x20d8c2,
+ 0x2a8385,
+ 0x269746,
+ 0x277407,
+ 0x3b05c5,
+ 0x308986,
+ 0x301448,
+ 0x2a33c6,
+ 0x2b6b09,
+ 0x2760c6,
+ 0x252808,
+ 0x2a89c5,
+ 0x23ebc6,
+ 0x33da88,
+ 0x27e648,
+ 0x2e7008,
+ 0x345f08,
+ 0x3b2b44,
+ 0x22a183,
+ 0x2b6d44,
+ 0x27d6c6,
+ 0x284f84,
+ 0x2e1287,
+ 0x2e72c9,
+ 0x2c45c5,
+ 0x204846,
+ 0x229386,
+ 0x291e4b,
+ 0x2b0dc6,
+ 0x3b8cc6,
+ 0x2c8488,
+ 0x3204c6,
+ 0x21aa43,
+ 0x3af743,
+ 0x2b3204,
+ 0x22f485,
+ 0x2b1807,
+ 0x274408,
+ 0x27440f,
+ 0x27a48b,
+ 0x3075c8,
+ 0x3531c6,
+ 0x3078ce,
+ 0x2319c3,
+ 0x2b1784,
+ 0x2b0d45,
+ 0x2b1146,
+ 0x28ce4b,
+ 0x291886,
+ 0x21b249,
+ 0x357e85,
+ 0x3899c8,
+ 0x20c688,
+ 0x217b8c,
+ 0x29ed06,
+ 0x247c06,
+ 0x2d7985,
+ 0x287b88,
+ 0x2790c5,
+ 0x343088,
+ 0x29b28a,
+ 0x29de89,
+ 0x676384,
+ 0x38a099c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x20cf83,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x3b0887,
+ 0x209703,
+ 0x204e83,
+ 0x28b148,
+ 0x200983,
+ 0x2ae1cb,
+ 0x2ec883,
+ 0x264a86,
+ 0x20b0c2,
+ 0x22d54b,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200983,
+ 0x26be43,
+ 0x204783,
+ 0x205702,
+ 0x16d208,
+ 0x325f45,
+ 0x23bd48,
+ 0x2df7c8,
+ 0x2099c2,
+ 0x37ab45,
+ 0x38c347,
+ 0x2007c2,
+ 0x240d87,
0x20d882,
- 0x20d1c2,
- 0x2d0783,
- 0x209c02,
- 0x201d42,
- 0x2964c4,
- 0x222044,
- 0x223342,
- 0x213184,
- 0x200382,
- 0x200383,
- 0x21aa03,
- 0x241f46,
- 0x217082,
- 0x2016c2,
- 0x201a82,
- 0x436111c3,
- 0x43a014c3,
- 0x59a86,
- 0x59a86,
- 0x24ae04,
- 0x143768a,
- 0x2608c,
- 0x21ecc,
- 0x852cd,
- 0x2ac47,
- 0x1a608,
- 0x218c8,
- 0x19834a,
- 0x446db445,
- 0x12b089,
- 0x103008,
- 0x8ed4a,
- 0x14a60e,
- 0x144b24b,
- 0x1681c4,
- 0x1672c8,
- 0x13edc7,
- 0x16f07,
- 0x11dd09,
- 0x1b3c47,
- 0x94b88,
- 0x61f49,
- 0x4bfc5,
- 0x12494e,
- 0xafbcd,
- 0xfb48,
- 0x44a37046,
- 0x45437048,
- 0x79c88,
- 0x117050,
- 0x69c87,
- 0x6cf47,
- 0x71187,
- 0x75f87,
- 0xa9c2,
- 0x62507,
- 0x10c74c,
- 0x3b9c7,
- 0xa9f46,
- 0xaa689,
- 0xad708,
- 0x18d82,
- 0x1d42,
- 0x24a0b,
- 0x2ccc9,
- 0x4c809,
- 0x17de88,
- 0xb5e02,
- 0x104389,
- 0xd2fca,
- 0xdb9c9,
- 0xdd048,
- 0xddfc7,
- 0xe0389,
- 0xe4685,
- 0xe4a90,
- 0x1a8e86,
- 0x63c85,
- 0x4a84d,
- 0x1b3806,
- 0xee547,
- 0xf39d8,
- 0x96b88,
- 0xba9ca,
- 0x53b4d,
- 0x1702,
- 0x177ac6,
- 0x91788,
- 0x1ae208,
- 0x15ef09,
- 0x56608,
- 0x5dece,
- 0xd68d,
- 0xf8805,
- 0x62288,
- 0x59688,
- 0x6902,
- 0x125886,
- 0x6c82,
- 0x3c1,
- 0x8b4c3,
- 0x44ef4244,
- 0x4529a283,
+ 0x248707,
+ 0x32c589,
+ 0x3b7d48,
+ 0x2ddc09,
+ 0x23e202,
+ 0x263647,
+ 0x36c1c4,
+ 0x38c407,
+ 0x35aa47,
+ 0x2bbbc2,
+ 0x209703,
+ 0x20e602,
+ 0x200c82,
+ 0x200442,
+ 0x2013c2,
+ 0x205ec2,
+ 0x209842,
+ 0x2a80c5,
+ 0x320885,
+ 0x99c2,
+ 0x32403,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x12083,
+ 0x1ec1,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x205503,
+ 0x200983,
+ 0x219503,
+ 0x3b819d06,
+ 0x13f443,
+ 0x7df85,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x4a82,
+ 0x16d208,
+ 0x44e04,
+ 0xdb085,
+ 0x205702,
+ 0x26f544,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x2358c3,
+ 0x2a9305,
+ 0x244183,
+ 0x206343,
+ 0x205503,
+ 0x21c2c3,
+ 0x200983,
+ 0x214843,
+ 0x2387c3,
+ 0x25ed03,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x200983,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x16d208,
+ 0x200c03,
+ 0x2a84c3,
+ 0x22fd84,
+ 0x232403,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x2e87c3,
+ 0x214843,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x264a85,
+ 0xe4886,
+ 0x25ef44,
+ 0x20b0c2,
+ 0x16d208,
+ 0x205702,
+ 0x1d848,
+ 0x1b4183,
+ 0x2099c2,
+ 0x3fc91386,
+ 0x1320c4,
+ 0xd95cb,
+ 0x13eec6,
+ 0x9807,
+ 0x232403,
+ 0x47208,
+ 0x2e9dc3,
+ 0xb9b45,
+ 0x13fb84,
+ 0x260f83,
+ 0x4ce87,
+ 0xd78c4,
+ 0x205503,
+ 0x7f1c4,
+ 0x200983,
+ 0x2ed844,
+ 0xd9388,
+ 0x125c86,
+ 0x82b48,
+ 0x6cf05,
+ 0x1fa49,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x204e83,
+ 0x200983,
+ 0x2ec883,
+ 0x20b0c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x24a5c3,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x264a86,
+ 0x232403,
+ 0x2e9dc3,
+ 0x176e43,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x9807,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x426a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200442,
+ 0x200983,
+ 0x316e87,
+ 0x33e6cb,
+ 0x22d703,
+ 0x241608,
+ 0x3b1547,
+ 0x20a7c6,
+ 0x2c2c45,
+ 0x372349,
+ 0x209488,
+ 0x360d49,
+ 0x38f790,
+ 0x360d4b,
+ 0x39e189,
+ 0x201b03,
+ 0x20fb89,
+ 0x230f06,
+ 0x230f0c,
+ 0x326008,
+ 0x3b4f08,
+ 0x34af09,
+ 0x2905ce,
+ 0x2dd9cb,
+ 0x2f364c,
+ 0x2030c3,
+ 0x263d0c,
+ 0x207089,
+ 0x2fee47,
+ 0x23234c,
+ 0x3a89ca,
+ 0x2030c4,
+ 0x2d084d,
+ 0x263bc8,
+ 0x20cf8d,
+ 0x273846,
+ 0x28decb,
+ 0x283349,
+ 0x3b8b87,
+ 0x32fd06,
+ 0x330f89,
+ 0x351b8a,
+ 0x30b148,
+ 0x2ec484,
+ 0x2fba07,
+ 0x34f707,
+ 0x2bab04,
+ 0x37b5c4,
+ 0x22a749,
+ 0x281d49,
+ 0x22ae48,
+ 0x210785,
+ 0x3b4005,
+ 0x20db86,
+ 0x2d0709,
+ 0x24588d,
+ 0x2f30c8,
+ 0x20da87,
+ 0x2c2cc8,
+ 0x2e1886,
+ 0x38b6c4,
+ 0x3523c5,
+ 0x202986,
+ 0x204b04,
+ 0x206f87,
+ 0x20b8ca,
+ 0x212244,
+ 0x2157c6,
+ 0x216a09,
+ 0x216a0f,
+ 0x21788d,
+ 0x2184c6,
+ 0x21d450,
+ 0x21d846,
+ 0x21df87,
+ 0x21e4c7,
+ 0x21e4cf,
+ 0x21f6c9,
+ 0x224c46,
+ 0x225347,
+ 0x225348,
+ 0x225809,
+ 0x246088,
+ 0x2e52c7,
+ 0x20cc83,
+ 0x372986,
+ 0x3ba948,
+ 0x29088a,
+ 0x213c09,
+ 0x2095c3,
+ 0x38c246,
+ 0x25f64a,
+ 0x29e587,
+ 0x2fec8a,
+ 0x313d4e,
+ 0x21f806,
+ 0x2a8587,
+ 0x20e006,
+ 0x207146,
+ 0x37de0b,
+ 0x20414a,
+ 0x317f0d,
+ 0x216287,
+ 0x33ce88,
+ 0x33ce89,
+ 0x33ce8f,
+ 0x2b838c,
+ 0x27b289,
+ 0x2e6a0e,
+ 0x3b098a,
+ 0x2ba246,
+ 0x2f4586,
+ 0x30b58c,
+ 0x30ce8c,
+ 0x30dc08,
+ 0x3439c7,
+ 0x2b8c45,
+ 0x351e04,
+ 0x33c90e,
+ 0x228d04,
+ 0x351747,
+ 0x26030a,
+ 0x362554,
+ 0x36dd8f,
+ 0x21e688,
+ 0x372848,
+ 0x35040d,
+ 0x35040e,
+ 0x376ec9,
+ 0x3a8ec8,
+ 0x3a8ecf,
+ 0x23204c,
+ 0x23204f,
+ 0x233007,
+ 0x236dca,
+ 0x2435cb,
+ 0x238508,
+ 0x239cc7,
+ 0x3690cd,
+ 0x250406,
+ 0x2d0a06,
+ 0x23c149,
+ 0x394648,
+ 0x242088,
+ 0x24208e,
+ 0x2b5007,
+ 0x243885,
+ 0x244bc5,
+ 0x2063c4,
+ 0x20aa86,
+ 0x22ad48,
+ 0x202203,
+ 0x2ca10e,
+ 0x369488,
+ 0x2a2fcb,
+ 0x200dc7,
+ 0x3a4045,
+ 0x22e206,
+ 0x2aa0c7,
+ 0x333d08,
+ 0x26cd09,
+ 0x292e45,
+ 0x284788,
+ 0x212c06,
+ 0x38ad4a,
+ 0x33c809,
+ 0x232409,
+ 0x23240b,
+ 0x38dc48,
+ 0x2ba9c9,
+ 0x210846,
+ 0x22eb8a,
+ 0x2dc80a,
+ 0x236fcc,
+ 0x3a6687,
+ 0x32c38a,
+ 0x26ea8b,
+ 0x26ea99,
+ 0x3b6a88,
+ 0x264b05,
+ 0x2c6086,
+ 0x211e49,
+ 0x390746,
+ 0x28550a,
+ 0x209686,
+ 0x202644,
+ 0x2c620d,
+ 0x202647,
+ 0x211149,
+ 0x246385,
+ 0x2464c8,
+ 0x246fc9,
+ 0x247784,
+ 0x248387,
+ 0x248388,
+ 0x248c87,
+ 0x261908,
+ 0x24d487,
+ 0x26c645,
+ 0x25488c,
+ 0x2550c9,
+ 0x2bc00a,
+ 0x3937c9,
+ 0x20fc89,
+ 0x275a0c,
+ 0x25774b,
+ 0x257ec8,
+ 0x259048,
+ 0x25c404,
+ 0x2810c8,
+ 0x283c89,
+ 0x3a8a87,
+ 0x216c46,
+ 0x2835c7,
+ 0x2dcac9,
+ 0x26e6cb,
+ 0x319407,
+ 0x200a07,
+ 0x22b587,
+ 0x20cf04,
+ 0x20cf05,
+ 0x29a545,
+ 0x341c0b,
+ 0x39c644,
+ 0x3b2988,
+ 0x26614a,
+ 0x212cc7,
+ 0x2f6707,
+ 0x28bed2,
+ 0x278446,
+ 0x22f706,
+ 0x33c24e,
+ 0x27aa06,
+ 0x292588,
+ 0x29374f,
+ 0x20d348,
+ 0x37f308,
+ 0x30eaca,
+ 0x30ead1,
+ 0x2a0e8e,
+ 0x24dd0a,
+ 0x24dd0c,
+ 0x21e307,
+ 0x3a90d0,
+ 0x200408,
+ 0x2a1085,
+ 0x2aa4ca,
+ 0x204b4c,
+ 0x29518d,
+ 0x2f7e46,
+ 0x2f7e47,
+ 0x2f7e4c,
+ 0x300e4c,
+ 0x3292cc,
+ 0x2873cb,
+ 0x284184,
+ 0x226384,
+ 0x346d89,
+ 0x3050c7,
+ 0x225e49,
+ 0x37e909,
+ 0x39f1c7,
+ 0x3a8846,
+ 0x3a8849,
+ 0x2ad1c3,
+ 0x21c74a,
+ 0x31a287,
+ 0x33eb8b,
+ 0x317d8a,
+ 0x248844,
+ 0x22ba46,
+ 0x27d749,
+ 0x202b84,
+ 0x3affca,
+ 0x348345,
+ 0x2bdd45,
+ 0x2bdd4d,
+ 0x2be08e,
+ 0x28cc05,
+ 0x323906,
+ 0x264687,
+ 0x3870ca,
+ 0x39b686,
+ 0x3616c4,
+ 0x36d747,
+ 0x2c3f0b,
+ 0x2e1947,
+ 0x33fa84,
+ 0x24bb86,
+ 0x24bb8d,
+ 0x21e1cc,
+ 0x2053c6,
+ 0x2f32ca,
+ 0x2e03c6,
+ 0x2ed0c8,
+ 0x377c47,
+ 0x23568a,
+ 0x23d6c6,
+ 0x216183,
+ 0x391586,
+ 0x3ba7c8,
+ 0x29ac8a,
+ 0x275807,
+ 0x275808,
+ 0x281684,
+ 0x24b687,
+ 0x279348,
+ 0x2bd748,
+ 0x27c0c8,
+ 0x38c94a,
+ 0x2da905,
+ 0x2cf0c7,
+ 0x24db53,
+ 0x31e806,
+ 0x266348,
+ 0x221a09,
+ 0x240c48,
+ 0x203d0b,
+ 0x2cb608,
+ 0x2a5f44,
+ 0x32ec06,
+ 0x30bac6,
+ 0x3027c9,
+ 0x2c3dc7,
+ 0x254988,
+ 0x28af06,
+ 0x226884,
+ 0x2cb8c5,
+ 0x2c55c8,
+ 0x2c5bca,
+ 0x2c5e88,
+ 0x2cbf86,
+ 0x29944a,
+ 0x2ac808,
+ 0x2cf788,
+ 0x2d18c8,
+ 0x2d1f06,
+ 0x2d3e06,
+ 0x38e18c,
+ 0x2d43d0,
+ 0x27d2c5,
+ 0x20d148,
+ 0x301950,
+ 0x20d150,
+ 0x38f60e,
+ 0x38de0e,
+ 0x38de14,
+ 0x32fe8f,
+ 0x330246,
+ 0x332d51,
+ 0x33d213,
+ 0x33d688,
+ 0x3b3445,
+ 0x241b48,
+ 0x386245,
+ 0x329a8c,
+ 0x291549,
+ 0x228b49,
+ 0x3201c7,
+ 0x236b89,
+ 0x380887,
+ 0x2f6146,
+ 0x3521c7,
+ 0x269c45,
+ 0x2120c3,
+ 0x2023c9,
+ 0x221cc9,
+ 0x376e43,
+ 0x27f384,
+ 0x32a20d,
+ 0x206bcf,
+ 0x2268c5,
+ 0x329986,
+ 0x211407,
+ 0x325d87,
+ 0x288786,
+ 0x28878b,
+ 0x2a2405,
+ 0x256786,
+ 0x2f6c07,
+ 0x24e489,
+ 0x3a7486,
+ 0x21d305,
+ 0x22854b,
+ 0x235946,
+ 0x249245,
+ 0x357988,
+ 0x306a88,
+ 0x2c8f0c,
+ 0x2c8f10,
+ 0x2d2409,
+ 0x2ffd07,
+ 0x32840b,
+ 0x2e3b86,
+ 0x2e518a,
+ 0x2e754b,
+ 0x2e794a,
+ 0x2e7bc6,
+ 0x2e8685,
+ 0x319fc6,
+ 0x36c808,
+ 0x32028a,
+ 0x35009c,
+ 0x2ec94c,
+ 0x2ecc48,
+ 0x264a85,
+ 0x34ea07,
+ 0x26bec6,
+ 0x274e05,
+ 0x21afc6,
+ 0x288948,
+ 0x2bc507,
+ 0x2904c8,
+ 0x2a868a,
+ 0x33130c,
+ 0x331589,
+ 0x38b847,
+ 0x2198c4,
+ 0x244c86,
+ 0x37ee8a,
+ 0x37ea05,
+ 0x209f8c,
+ 0x20e648,
+ 0x367388,
+ 0x21a00c,
+ 0x22550c,
+ 0x225a09,
+ 0x225c47,
+ 0x231d4c,
+ 0x23aa84,
+ 0x23c60a,
+ 0x35e6cc,
+ 0x26b28b,
+ 0x242b8b,
+ 0x2efec6,
+ 0x24a107,
+ 0x24c687,
+ 0x3a930f,
+ 0x2f8a51,
+ 0x2d8592,
+ 0x24c68d,
+ 0x24c68e,
+ 0x24c9ce,
+ 0x330048,
+ 0x330052,
+ 0x24fbc8,
+ 0x3b1187,
+ 0x24aeca,
+ 0x3681c8,
+ 0x27a9c5,
+ 0x3b57ca,
+ 0x21dd87,
+ 0x2e36c4,
+ 0x201543,
+ 0x2a57c5,
+ 0x30ed47,
+ 0x2f5007,
+ 0x29538e,
+ 0x3382cd,
+ 0x33af89,
+ 0x222705,
+ 0x35c3c3,
+ 0x3a78c6,
+ 0x36e745,
+ 0x2a3208,
+ 0x205b49,
+ 0x2983c5,
+ 0x3692cf,
+ 0x2d96c7,
+ 0x372285,
+ 0x20178a,
+ 0x2a36c6,
+ 0x2ed249,
+ 0x396ccc,
+ 0x2f51c9,
+ 0x3abdc6,
+ 0x265f4c,
+ 0x322d06,
+ 0x2f7588,
+ 0x2f7786,
+ 0x3b6c06,
+ 0x3b96c4,
+ 0x258243,
+ 0x2a1fca,
+ 0x327191,
+ 0x3a9c0a,
+ 0x27ee85,
+ 0x265047,
+ 0x252207,
+ 0x279444,
+ 0x27944b,
+ 0x3b7bc8,
+ 0x2b7bc6,
+ 0x362b85,
+ 0x38b044,
+ 0x255f09,
+ 0x31ad84,
+ 0x254f07,
+ 0x32f345,
+ 0x32f347,
+ 0x33c485,
+ 0x2a8183,
+ 0x3b1048,
+ 0x33b80a,
+ 0x203043,
+ 0x325f8a,
+ 0x203046,
+ 0x36904f,
+ 0x2b4f89,
+ 0x2ca090,
+ 0x2f1548,
+ 0x2ccc89,
+ 0x2971c7,
+ 0x24bb0f,
+ 0x336244,
+ 0x2d5f84,
+ 0x21d6c6,
+ 0x22f246,
+ 0x25708a,
+ 0x23cc46,
+ 0x2f58c7,
+ 0x300788,
+ 0x300987,
+ 0x301207,
+ 0x30370a,
+ 0x30534b,
+ 0x2f3dc5,
+ 0x2d81c8,
+ 0x21bb03,
+ 0x23800c,
+ 0x36f78f,
+ 0x2b8a4d,
+ 0x2a7147,
+ 0x33b0c9,
+ 0x22bcc7,
+ 0x24a2c8,
+ 0x36274c,
+ 0x2a5e48,
+ 0x250bc8,
+ 0x318ace,
+ 0x32d354,
+ 0x32d864,
+ 0x3475ca,
+ 0x36148b,
+ 0x380944,
+ 0x380949,
+ 0x27bbc8,
+ 0x245345,
+ 0x201d0a,
+ 0x3696c7,
+ 0x26f744,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x2d43c6,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x2d43c6,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2bb143,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x201ec2,
+ 0x219f02,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x202242,
+ 0x201fc2,
+ 0x3b1384,
+ 0x210444,
+ 0x227382,
+ 0x211cc4,
+ 0x200442,
+ 0x200983,
+ 0x201303,
+ 0x2efec6,
+ 0x212982,
+ 0x202dc2,
+ 0x222f02,
+ 0x44e0d343,
+ 0x4521e303,
+ 0x52d46,
+ 0x52d46,
+ 0x25ef44,
+ 0x204e83,
+ 0x142abca,
+ 0x12778c,
+ 0x102cc,
+ 0x7dd8d,
+ 0x129845,
+ 0x21347,
+ 0x18648,
+ 0x1b887,
+ 0x20348,
+ 0x19d4ca,
+ 0x45ed6a45,
+ 0x12b809,
+ 0xaf848,
+ 0x4a70a,
+ 0x8a64e,
+ 0x1440a4b,
+ 0x1320c4,
+ 0x77848,
+ 0x68bc8,
+ 0x38f47,
+ 0x12807,
+ 0x4efc9,
+ 0x2c07,
+ 0xd4ac8,
+ 0x1318c9,
+ 0x3adc5,
+ 0x124d4e,
+ 0xa8a0d,
+ 0x9688,
+ 0x4622a586,
+ 0x46c2a588,
+ 0x70cc8,
+ 0x117090,
+ 0x5f347,
+ 0x601c7,
+ 0x64547,
+ 0x69447,
+ 0xdb42,
+ 0x190bc7,
+ 0x430c,
+ 0x35fc7,
+ 0xa4246,
+ 0xa4909,
+ 0xa6388,
+ 0x17f42,
+ 0x1fc2,
+ 0xb8fcb,
+ 0x7f247,
+ 0x11809,
+ 0xbb9c9,
+ 0x17e248,
+ 0xafd42,
+ 0x113a49,
+ 0xcdf8a,
+ 0xc9e09,
+ 0xd6fc9,
+ 0xd7ac8,
+ 0xd8a47,
+ 0xda889,
+ 0xde345,
+ 0xde6d0,
+ 0x175b86,
+ 0x192345,
+ 0x5e98d,
+ 0xf986,
+ 0xe9187,
+ 0xed858,
+ 0x1b1a48,
+ 0xb4c8a,
+ 0x1c42,
+ 0x52f4d,
+ 0x27c2,
+ 0x5d306,
+ 0x8d108,
+ 0x86ec8,
+ 0x16d0c9,
+ 0x55b08,
+ 0x5fb4e,
+ 0x1a78c7,
+ 0x19d0d,
+ 0xf2d05,
+ 0x190948,
+ 0x194448,
+ 0xfacc6,
+ 0xc2,
+ 0x125c86,
+ 0x7b02,
+ 0x341,
+ 0x57a07,
+ 0xc8e83,
+ 0x466ee0c4,
+ 0x46a94443,
0x141,
- 0x15c06,
+ 0x10986,
0x141,
0x1,
- 0x15c06,
- 0x8b4c3,
- 0x14e4285,
- 0x24fe44,
- 0x2d0783,
- 0x251304,
- 0x2964c4,
- 0x204ac3,
- 0x222ac5,
- 0x21bd03,
- 0x2202c3,
- 0x370145,
- 0x24abc3,
- 0x466d0783,
- 0x231b83,
- 0x332ec3,
+ 0x10986,
+ 0xc8e83,
+ 0x1596bc5,
+ 0x2030c4,
+ 0x2a84c3,
+ 0x249944,
+ 0x3b1384,
+ 0x205503,
+ 0x2218c5,
+ 0x219503,
+ 0x23e743,
+ 0x373605,
+ 0x25ed03,
+ 0x47ea84c3,
+ 0x232403,
+ 0x2e9dc3,
0x200041,
- 0x20fbc3,
- 0x222044,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x15f048,
- 0x204cc2,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x201d42,
- 0x2964c4,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x24abc3,
- 0x15f048,
- 0x371182,
- 0xd1c2,
- 0x1491b48,
- 0x10598e,
- 0x47608c42,
- 0x32f9c8,
- 0x233d86,
- 0x210186,
- 0x233707,
- 0x47a00902,
- 0x47f53508,
- 0x20ebca,
- 0x269708,
- 0x201442,
- 0x32f649,
- 0x3a2487,
- 0x218486,
- 0x295ec9,
- 0x247ec4,
- 0x2e4186,
- 0x2e1bc4,
- 0x26bdc4,
- 0x25bf49,
- 0x326286,
- 0x24df85,
- 0x291285,
- 0x390387,
+ 0x209703,
+ 0x210444,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x16d208,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x201fc2,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x25ed03,
+ 0x16d208,
+ 0x36f502,
+ 0x99c2,
+ 0x1456108,
+ 0x100b4e,
+ 0x48e016c2,
+ 0x31a448,
+ 0x234386,
+ 0x209cc6,
+ 0x233d07,
+ 0x4920c202,
+ 0x49768ec8,
+ 0x20884a,
+ 0x25cc88,
+ 0x200242,
+ 0x31a0c9,
+ 0x2f3e07,
+ 0x216bc6,
+ 0x3b0d89,
+ 0x2cf204,
+ 0x20a6c6,
+ 0x2dbcc4,
+ 0x26ffc4,
+ 0x2544c9,
+ 0x326686,
+ 0x320945,
+ 0x22c445,
+ 0x384e07,
+ 0x2bfb47,
+ 0x28fa44,
+ 0x233f46,
+ 0x2fb005,
+ 0x2fde45,
+ 0x3963c5,
+ 0x3b3dc7,
+ 0x200c05,
+ 0x314b49,
+ 0x312945,
+ 0x333e44,
+ 0x39b5c7,
+ 0x31974e,
+ 0x32e5c9,
+ 0x33c109,
+ 0x3a64c6,
+ 0x23d408,
+ 0x26d98b,
+ 0x2aeecc,
+ 0x37f806,
+ 0x2dd887,
+ 0x20a305,
+ 0x37b5ca,
+ 0x22af49,
+ 0x20bf49,
+ 0x24ff86,
+ 0x2f69c5,
+ 0x27ce45,
+ 0x3490c9,
+ 0x39654b,
+ 0x273346,
+ 0x33a786,
+ 0x202504,
+ 0x28bb86,
+ 0x243908,
+ 0x3ba646,
+ 0x214386,
+ 0x207c08,
+ 0x20bb47,
+ 0x20bd09,
+ 0x20c585,
+ 0x16d208,
+ 0x212784,
+ 0x3ada04,
+ 0x283785,
+ 0x399a49,
+ 0x220f07,
+ 0x220f0b,
+ 0x22394a,
+ 0x227a45,
+ 0x49a08d42,
+ 0x33ea47,
+ 0x49e28908,
+ 0x2afb87,
+ 0x350e85,
+ 0x20c1ca,
+ 0x99c2,
+ 0x34dfcb,
+ 0x24d5ca,
+ 0x221bc6,
+ 0x282bc3,
+ 0x28e34d,
+ 0x3492cc,
+ 0x35084d,
+ 0x245c45,
+ 0x32ae05,
+ 0x202247,
+ 0x3aba49,
+ 0x208746,
+ 0x23cac5,
+ 0x2d29c8,
+ 0x28ba83,
+ 0x2dfac8,
+ 0x28ba88,
0x2c3747,
- 0x2911c4,
- 0x233946,
- 0x2ffb45,
- 0x367445,
- 0x302505,
- 0x392307,
- 0x26ae05,
- 0x315e49,
- 0x32d305,
- 0x307184,
- 0x38d347,
- 0x32ecce,
- 0x330a09,
- 0x358849,
- 0x3ac9c6,
- 0x2fe248,
- 0x2b520b,
- 0x2e3b0c,
- 0x2898c6,
- 0x2076c7,
- 0x37b305,
- 0x32d98a,
- 0x237a09,
- 0x3aa989,
- 0x257646,
- 0x2fb805,
- 0x2aabc5,
- 0x348f89,
- 0x30268b,
- 0x280f46,
- 0x338346,
- 0x20a904,
- 0x2908c6,
- 0x226a08,
- 0x3abc06,
- 0x20c5c6,
- 0x206188,
- 0x207f47,
- 0x208649,
- 0x209705,
- 0x15f048,
- 0x216e84,
- 0x33d5c4,
- 0x369f05,
- 0x204f49,
- 0x222347,
- 0x22234b,
- 0x223e4a,
- 0x228485,
- 0x4820a002,
- 0x238987,
- 0x48629248,
- 0x27be07,
- 0x2bf945,
- 0x3aac0a,
- 0xd1c2,
- 0x38740b,
- 0x25470a,
- 0x222dc6,
- 0x395e03,
- 0x29538d,
- 0x3582cc,
- 0x37f24d,
- 0x381085,
- 0x227dc5,
- 0x2601c7,
- 0x209c09,
- 0x20eac6,
- 0x383405,
- 0x2d8008,
- 0x2907c3,
- 0x2ec708,
- 0x2907c8,
- 0x2c6c47,
- 0x3b2448,
- 0x39b7c9,
- 0x2c9747,
- 0x238187,
- 0x302b88,
- 0x38ca44,
- 0x38ca47,
- 0x272648,
- 0x2024c6,
- 0x206fcf,
- 0x2118c7,
- 0x2e7a86,
- 0x23e2c5,
- 0x223783,
- 0x365a47,
- 0x36da03,
- 0x250446,
- 0x251c46,
- 0x252a06,
- 0x296e85,
- 0x26ea03,
- 0x388a48,
- 0x370c89,
- 0x37ffcb,
- 0x252b88,
- 0x254285,
- 0x256405,
- 0x48aabc02,
- 0x359a49,
- 0x296547,
- 0x25f185,
- 0x25be47,
- 0x25dd86,
- 0x363f05,
- 0x36fe0b,
- 0x2640c4,
- 0x2692c5,
- 0x269407,
- 0x27b786,
- 0x27bbc5,
- 0x288487,
- 0x288d47,
- 0x2d1784,
- 0x28e04a,
- 0x28e508,
- 0x2c2149,
- 0x3648c5,
- 0x2951c6,
- 0x226bca,
- 0x387646,
- 0x26f5c7,
- 0x2c1e0d,
- 0x2a1f09,
- 0x3597c5,
- 0x339dc7,
- 0x368388,
- 0x26a888,
- 0x314d07,
- 0x20b246,
- 0x217807,
- 0x221143,
- 0x33c004,
- 0x3607c5,
- 0x38dcc7,
- 0x391d09,
- 0x22a8c8,
- 0x33fac5,
- 0x242844,
- 0x2f5bc5,
- 0x38174d,
- 0x203742,
- 0x386ac6,
- 0x377a06,
- 0x2c8bca,
- 0x37e686,
- 0x38b5c5,
- 0x368fc5,
- 0x368fc7,
- 0x3a010c,
- 0x279b0a,
- 0x290586,
- 0x225085,
- 0x290706,
- 0x290a47,
- 0x292846,
- 0x296d8c,
- 0x296009,
- 0x48e16087,
- 0x299745,
- 0x299746,
- 0x299d08,
- 0x236785,
- 0x2a8b45,
- 0x2a9548,
- 0x2a974a,
- 0x49258142,
- 0x4960c2c2,
- 0x2e8f85,
- 0x28b9c3,
- 0x22b108,
- 0x241d03,
- 0x2a99c4,
- 0x2f350b,
- 0x34ef48,
- 0x305148,
- 0x49b67ec9,
- 0x2af389,
- 0x2afac6,
- 0x2b0a88,
- 0x2b0c89,
- 0x2b1786,
- 0x2b1905,
- 0x372a86,
- 0x2b1e49,
- 0x319d87,
- 0x25c446,
- 0x233147,
- 0x20e947,
- 0x362e04,
- 0x49f453c9,
- 0x2cd008,
- 0x353408,
- 0x383d07,
- 0x2c8686,
- 0x235389,
- 0x210147,
- 0x34970a,
- 0x330d48,
- 0x349407,
- 0x3b1546,
- 0x2e834a,
- 0x2733c8,
- 0x30de45,
- 0x36dac5,
- 0x2f9807,
- 0x371d49,
- 0x3097cb,
- 0x31e0c8,
- 0x32d389,
- 0x253487,
- 0x2bad4c,
- 0x2bb74c,
- 0x2bba4a,
- 0x2bbccc,
- 0x2c5c08,
- 0x2c5e08,
- 0x2c6004,
- 0x2c63c9,
- 0x2c6609,
- 0x2c684a,
- 0x2c6ac9,
- 0x2c6e07,
- 0x3a448c,
- 0x24b946,
- 0x35d588,
- 0x387706,
- 0x330c06,
- 0x3596c7,
- 0x238ec8,
- 0x2618cb,
- 0x303207,
- 0x359c49,
- 0x251489,
- 0x25bbc7,
- 0x2e1e04,
- 0x3643c7,
- 0x2e1246,
- 0x214046,
- 0x2eb045,
- 0x2c7408,
- 0x2976c4,
- 0x2976c6,
- 0x2799cb,
- 0x212cc9,
- 0x209e06,
- 0x20c709,
- 0x392486,
- 0x3aae08,
- 0x214183,
- 0x2fb985,
- 0x215a09,
- 0x224085,
- 0x2f9644,
- 0x27acc6,
- 0x2ed005,
- 0x2f7346,
- 0x309ec7,
- 0x328dc6,
- 0x3a174b,
- 0x22c447,
- 0x234886,
- 0x3742c6,
- 0x390446,
- 0x291189,
- 0x240aca,
- 0x2b8ec5,
- 0x21898d,
- 0x2a9846,
- 0x2babc6,
- 0x2ded86,
- 0x2f31c5,
- 0x2e4d87,
- 0x29fa87,
- 0x22bd4e,
- 0x20fbc3,
- 0x2c8649,
- 0x263709,
- 0x32dd87,
- 0x2804c7,
- 0x2a2ec5,
- 0x343f05,
- 0x4a23734f,
- 0x2d10c7,
- 0x2d1288,
- 0x2d25c4,
- 0x2d2e86,
- 0x4a64db02,
- 0x2d7346,
- 0x201686,
- 0x2638ce,
- 0x2ec54a,
- 0x28b6c6,
- 0x22d88a,
- 0x209a09,
- 0x323d05,
- 0x393948,
- 0x3aef46,
- 0x359508,
- 0x2392c8,
- 0x34434b,
- 0x233805,
- 0x26ae88,
- 0x2062cc,
- 0x2bf807,
- 0x252546,
- 0x281fc8,
- 0x2253c8,
- 0x4aa09282,
- 0x25604b,
- 0x37b489,
- 0x2cf2c9,
- 0x2f02c7,
- 0x3b3648,
- 0x4ae289c8,
- 0x20e64b,
- 0x37dd09,
- 0x33f58d,
- 0x27d648,
- 0x290188,
- 0x4b201882,
- 0x3b2f44,
- 0x4b60dc42,
- 0x2f9486,
- 0x4ba038c2,
- 0x2448ca,
- 0x210546,
- 0x22d208,
- 0x289e88,
- 0x2e4086,
- 0x2eb5c6,
- 0x2f7106,
- 0x2f1b45,
- 0x23c804,
- 0x4be1de04,
- 0x20ae86,
- 0x29a787,
- 0x4c2f7d07,
- 0x2dc60b,
- 0x32f089,
- 0x227e0a,
- 0x263144,
- 0x369108,
- 0x25c20d,
- 0x2f1509,
- 0x2f1748,
- 0x2f2009,
- 0x2f39c4,
- 0x20ce44,
- 0x283cc5,
- 0x317b0b,
- 0x34eec6,
- 0x33c645,
- 0x21fb89,
- 0x233a08,
- 0x263844,
- 0x32db09,
- 0x208f45,
- 0x2c3788,
- 0x238847,
- 0x358c48,
- 0x284e86,
- 0x22b987,
- 0x2984c9,
- 0x311a89,
- 0x372545,
- 0x295645,
- 0x4c626a82,
- 0x306f44,
- 0x30ce05,
- 0x2c1846,
- 0x327285,
- 0x2b4707,
- 0x20af85,
- 0x27b7c4,
- 0x3aca86,
- 0x383487,
- 0x232106,
- 0x21e105,
- 0x202608,
- 0x233f85,
- 0x205d07,
- 0x20bc49,
- 0x212e0a,
- 0x2494c7,
- 0x2494cc,
- 0x24df46,
- 0x2e9ac9,
- 0x230505,
- 0x2366c8,
- 0x210c03,
- 0x210c05,
- 0x2f7b45,
- 0x26e707,
- 0x4ca27202,
- 0x227a07,
- 0x2e5206,
- 0x345306,
- 0x2e62c6,
- 0x225306,
- 0x2091c8,
- 0x35b805,
- 0x2e7b47,
- 0x2e7b4d,
- 0x21b083,
- 0x21f305,
- 0x21b087,
- 0x26b308,
- 0x21ac45,
- 0x2281c8,
- 0x2ab9c6,
- 0x32b247,
- 0x2c7bc5,
- 0x233886,
- 0x2cfac5,
- 0x22dfca,
- 0x2efec6,
- 0x25dbc7,
- 0x2bc605,
- 0x2f44c7,
- 0x2f8904,
- 0x2f95c6,
- 0x3624c5,
- 0x32608b,
- 0x2e10c9,
- 0x23d74a,
- 0x3725c8,
- 0x3007c8,
- 0x300f0c,
- 0x306b47,
- 0x308c48,
- 0x30aa88,
- 0x30dac5,
- 0x338b4a,
- 0x33aa09,
- 0x4ce00202,
- 0x200206,
- 0x20d684,
- 0x2ef889,
- 0x275d49,
- 0x27b1c7,
- 0x2fa547,
- 0x2b7c09,
- 0x331308,
- 0x33130f,
- 0x2dfa86,
- 0x2db10b,
- 0x361545,
- 0x361547,
- 0x374c89,
- 0x2171c6,
- 0x32da87,
- 0x2dde85,
- 0x22f544,
- 0x26e186,
- 0x211984,
- 0x2e6c47,
- 0x34c5c8,
- 0x4d2fb708,
- 0x2fbe85,
- 0x2fbfc7,
- 0x245709,
- 0x208444,
- 0x208448,
- 0x4d7190c8,
- 0x23cdc4,
- 0x230c88,
- 0x3396c4,
- 0x220389,
- 0x333105,
- 0x4da05bc2,
- 0x2dfac5,
- 0x2e6845,
- 0x271b88,
- 0x232847,
- 0x4de03382,
- 0x30cbc5,
- 0x2d4e86,
- 0x27a786,
- 0x306f08,
- 0x318308,
- 0x327246,
- 0x32e246,
- 0x249009,
- 0x345246,
- 0x21708b,
- 0x2a12c5,
- 0x204686,
- 0x382588,
- 0x3152c6,
- 0x298e46,
- 0x21b94a,
- 0x22f9ca,
- 0x2e8245,
- 0x35b8c7,
- 0x2f0cc6,
- 0x4e206602,
- 0x21b1c7,
- 0x2a9085,
- 0x226b44,
- 0x226b45,
- 0x263046,
- 0x27a447,
- 0x20d405,
- 0x22fb44,
- 0x365008,
- 0x298f05,
- 0x33c8c7,
- 0x39fa85,
- 0x22df05,
- 0x256b44,
- 0x28fbc9,
- 0x2ff988,
- 0x2ecec6,
- 0x2de9c6,
- 0x2b9d46,
- 0x4e700448,
- 0x300647,
- 0x3009cd,
- 0x30120c,
- 0x301809,
- 0x301a49,
- 0x4eb546c2,
- 0x3a5503,
- 0x20b303,
- 0x2e1305,
- 0x38ddca,
- 0x327106,
- 0x307905,
- 0x30a084,
- 0x30a08b,
- 0x31bdcc,
- 0x31c5cc,
- 0x31c8d5,
+ 0x309708,
+ 0x3a7209,
+ 0x2cc447,
+ 0x33e247,
+ 0x396a48,
+ 0x251f44,
+ 0x251f47,
+ 0x273748,
+ 0x3a3ac6,
+ 0x205f4f,
+ 0x211a07,
+ 0x2e5446,
+ 0x225d85,
+ 0x223083,
+ 0x371847,
+ 0x36c043,
+ 0x248e46,
+ 0x24aa86,
+ 0x24b286,
+ 0x290c05,
+ 0x261903,
+ 0x388208,
+ 0x36f009,
+ 0x38224b,
+ 0x24b408,
+ 0x24d145,
+ 0x24f605,
+ 0x4a248902,
+ 0x352289,
+ 0x3b1407,
+ 0x256805,
+ 0x2543c7,
+ 0x2559c6,
+ 0x365a45,
+ 0x36e58b,
+ 0x257ec4,
+ 0x25c845,
+ 0x25c987,
+ 0x272cc6,
+ 0x273105,
+ 0x2812c7,
+ 0x281a07,
+ 0x2cd884,
+ 0x289c0a,
+ 0x28a0c8,
+ 0x3b8209,
+ 0x241e85,
+ 0x207886,
+ 0x243aca,
+ 0x22c346,
+ 0x261e07,
+ 0x3b7ecd,
+ 0x29c809,
+ 0x38d185,
+ 0x314187,
+ 0x332288,
+ 0x33d848,
+ 0x3b3107,
+ 0x379d86,
+ 0x215dc7,
+ 0x249f43,
+ 0x341c04,
+ 0x363485,
+ 0x392707,
+ 0x395dc9,
+ 0x22be48,
+ 0x344c45,
+ 0x23cd84,
+ 0x246245,
+ 0x24b80d,
+ 0x200f82,
+ 0x373746,
+ 0x25d246,
+ 0x2c578a,
+ 0x376546,
+ 0x37edc5,
+ 0x33df85,
+ 0x33df87,
+ 0x38ab8c,
+ 0x270b4a,
+ 0x28b846,
+ 0x2b9645,
+ 0x28b9c6,
+ 0x28bd07,
+ 0x28e186,
+ 0x290b0c,
+ 0x3b0ec9,
+ 0x4a610e07,
+ 0x293b05,
+ 0x293b06,
+ 0x293ec8,
+ 0x23b705,
+ 0x2a2c85,
+ 0x2a3848,
+ 0x2a3a4a,
+ 0x4aa4ecc2,
+ 0x4ae0ee02,
+ 0x2e6705,
+ 0x284f83,
+ 0x3adf08,
+ 0x204043,
+ 0x2a3cc4,
+ 0x2ed38b,
+ 0x26dd48,
+ 0x2e4d48,
+ 0x4b349909,
+ 0x2a7dc9,
+ 0x2a8906,
+ 0x2a9d48,
+ 0x2a9f49,
+ 0x2aab46,
+ 0x2aacc5,
+ 0x3843c6,
+ 0x2ab5c9,
+ 0x331f47,
+ 0x23ea86,
+ 0x233747,
+ 0x2085c7,
+ 0x32c8c4,
+ 0x4b7b1d49,
+ 0x2cab88,
+ 0x368dc8,
+ 0x383447,
+ 0x2c5246,
+ 0x226ac9,
+ 0x209c87,
+ 0x32e90a,
+ 0x38c588,
+ 0x3af5c7,
+ 0x3b9786,
+ 0x24f38a,
+ 0x262708,
+ 0x2dccc5,
+ 0x226645,
+ 0x2ee487,
+ 0x2f7349,
+ 0x36510b,
+ 0x315008,
+ 0x3129c9,
+ 0x24bfc7,
+ 0x2b550c,
+ 0x2b5c4c,
+ 0x2b5f4a,
+ 0x2b61cc,
+ 0x2c2708,
+ 0x2c2908,
+ 0x2c2b04,
+ 0x2c2ec9,
+ 0x2c3109,
+ 0x2c334a,
+ 0x2c35c9,
+ 0x2c3907,
+ 0x3af00c,
+ 0x241146,
+ 0x34acc8,
+ 0x22c406,
+ 0x32e7c6,
+ 0x38d087,
+ 0x3b3288,
+ 0x39034b,
+ 0x2afa47,
+ 0x352489,
+ 0x3445c9,
+ 0x249ac7,
+ 0x278a04,
+ 0x265187,
+ 0x2db346,
+ 0x214a06,
+ 0x2f3485,
+ 0x2a5888,
+ 0x291444,
+ 0x291446,
+ 0x270a0b,
+ 0x21ca49,
+ 0x214b46,
+ 0x21c489,
+ 0x3b3f46,
+ 0x254688,
+ 0x223b83,
+ 0x2f6b45,
+ 0x22edc9,
+ 0x261145,
+ 0x2f9684,
+ 0x272206,
+ 0x231545,
+ 0x228f86,
+ 0x3056c7,
+ 0x26e986,
+ 0x3a304b,
+ 0x22ea87,
+ 0x3379c6,
+ 0x346f06,
+ 0x384ec6,
+ 0x28fa09,
+ 0x2ef14a,
+ 0x2b3505,
+ 0x2170cd,
+ 0x2a3b46,
+ 0x235546,
+ 0x2b4e86,
+ 0x2ed045,
+ 0x2de9c7,
+ 0x2e14c7,
+ 0x3581ce,
+ 0x209703,
+ 0x2c5209,
+ 0x391dc9,
+ 0x37b9c7,
+ 0x358f07,
+ 0x29d645,
+ 0x27ec45,
+ 0x4ba2a88f,
+ 0x2ccec7,
+ 0x2cd088,
+ 0x2cd484,
+ 0x2cde46,
+ 0x4be44c42,
+ 0x2d2186,
+ 0x2d43c6,
+ 0x391f8e,
+ 0x2df90a,
+ 0x357b06,
+ 0x285eca,
+ 0x203549,
+ 0x324105,
+ 0x398008,
+ 0x3b5606,
+ 0x38cec8,
+ 0x26f088,
+ 0x28eb8b,
+ 0x233e05,
+ 0x200c88,
+ 0x207d4c,
+ 0x2bd507,
+ 0x24ae06,
+ 0x2e28c8,
+ 0x20a948,
+ 0x4c208442,
+ 0x20a48b,
+ 0x282549,
+ 0x329f09,
+ 0x3bb287,
+ 0x20f7c8,
+ 0x4c61bf48,
+ 0x3511cb,
+ 0x37e0c9,
+ 0x234fcd,
+ 0x2750c8,
+ 0x224a48,
+ 0x4ca03ec2,
+ 0x20e3c4,
+ 0x4ce1a2c2,
+ 0x2f4ec6,
+ 0x4d2004c2,
+ 0x3813ca,
+ 0x21c346,
+ 0x285908,
+ 0x284488,
+ 0x2af446,
+ 0x22d8c6,
+ 0x2f12c6,
+ 0x2a3185,
+ 0x238c04,
+ 0x4d61e144,
+ 0x205146,
+ 0x272707,
+ 0x4dae8bc7,
+ 0x35490b,
+ 0x319b09,
+ 0x32ae4a,
+ 0x391804,
+ 0x33e0c8,
+ 0x23e84d,
+ 0x2eb709,
+ 0x2eb948,
+ 0x2ebfc9,
+ 0x2ed844,
+ 0x243484,
+ 0x27c885,
+ 0x317b4b,
+ 0x26dcc6,
+ 0x3424c5,
+ 0x250149,
+ 0x234008,
+ 0x2047c4,
+ 0x37b749,
+ 0x208105,
+ 0x2bfb88,
+ 0x33e907,
+ 0x33c508,
+ 0x27d946,
+ 0x35e387,
+ 0x292349,
+ 0x2286c9,
+ 0x2492c5,
+ 0x334ec5,
+ 0x4de2d902,
+ 0x333c04,
+ 0x2049c5,
+ 0x32c146,
+ 0x318385,
+ 0x2b1ac7,
+ 0x205245,
+ 0x272d04,
+ 0x3a6586,
+ 0x23cb47,
+ 0x232986,
+ 0x2dca05,
+ 0x203188,
+ 0x234585,
+ 0x2062c7,
+ 0x20f1c9,
+ 0x21cb8a,
+ 0x2e1b87,
+ 0x2e1b8c,
+ 0x320906,
+ 0x343cc9,
+ 0x23b385,
+ 0x23b648,
+ 0x210803,
+ 0x210805,
+ 0x2e8a05,
+ 0x261607,
+ 0x4e20c002,
+ 0x22d0c7,
+ 0x2e4f06,
+ 0x342786,
+ 0x2e7d06,
+ 0x20a886,
+ 0x208388,
+ 0x241c85,
+ 0x2e5507,
+ 0x2e550d,
+ 0x201543,
+ 0x21ec05,
+ 0x201547,
+ 0x22d408,
+ 0x201105,
+ 0x218c88,
+ 0x36c0c6,
+ 0x32b9c7,
+ 0x2c4785,
+ 0x233e86,
+ 0x26f5c5,
+ 0x21390a,
+ 0x2f2e06,
+ 0x377ac7,
+ 0x2ca505,
+ 0x3612c7,
+ 0x36d6c4,
+ 0x2f9606,
+ 0x2fb3c5,
+ 0x32648b,
+ 0x2db1c9,
+ 0x2bb24a,
+ 0x249348,
+ 0x301d08,
+ 0x304a4c,
+ 0x306287,
+ 0x3073c8,
+ 0x310a48,
+ 0x31e945,
+ 0x34020a,
+ 0x35c3c9,
+ 0x4e600802,
+ 0x200806,
+ 0x219d04,
+ 0x2ea849,
+ 0x220b49,
+ 0x269287,
+ 0x294947,
+ 0x37e789,
+ 0x38cb48,
+ 0x38cb4f,
+ 0x315d06,
+ 0x2d670b,
+ 0x36e8c5,
+ 0x36e8c7,
+ 0x385889,
+ 0x212ac6,
+ 0x37b6c7,
+ 0x2d8905,
+ 0x2303c4,
+ 0x261006,
+ 0x211ac4,
+ 0x2ce4c7,
+ 0x307048,
+ 0x4eaf68c8,
+ 0x2f7085,
+ 0x2f71c7,
+ 0x236549,
+ 0x23e284,
+ 0x23e288,
+ 0x4ee2b888,
+ 0x279444,
+ 0x231388,
+ 0x32fdc4,
+ 0x3ab849,
+ 0x2173c5,
+ 0x4f20b0c2,
+ 0x315d45,
+ 0x2e4345,
+ 0x251288,
+ 0x232e47,
+ 0x4f601442,
+ 0x204785,
+ 0x2cf606,
+ 0x24b106,
+ 0x333bc8,
+ 0x302108,
+ 0x318346,
+ 0x327f06,
+ 0x2e2e49,
+ 0x3426c6,
+ 0x21298b,
+ 0x296305,
+ 0x368106,
+ 0x377088,
+ 0x250506,
+ 0x292cc6,
+ 0x21914a,
+ 0x23084a,
+ 0x245005,
+ 0x241d47,
+ 0x308786,
+ 0x4fa01682,
+ 0x201687,
+ 0x238705,
+ 0x243a44,
+ 0x243a45,
+ 0x391706,
+ 0x26a447,
+ 0x219a85,
+ 0x220c04,
+ 0x2c7e88,
+ 0x292d85,
+ 0x333a47,
+ 0x3a1645,
+ 0x213845,
+ 0x256e04,
+ 0x287609,
+ 0x2fae48,
+ 0x2e0286,
+ 0x2d9d06,
+ 0x2b6e46,
+ 0x4fefbc88,
+ 0x2fbe87,
+ 0x2fc0cd,
+ 0x2fcb4c,
+ 0x2fd149,
+ 0x2fd389,
+ 0x5035b2c2,
+ 0x3a8603,
+ 0x207943,
+ 0x2db405,
+ 0x39280a,
+ 0x327dc6,
+ 0x302385,
+ 0x305884,
+ 0x30588b,
+ 0x31b70c,
+ 0x31c14c,
+ 0x31c455,
0x31d74d,
- 0x31f44f,
- 0x31f812,
- 0x31fc8f,
- 0x320052,
- 0x3204d3,
- 0x32098d,
- 0x320f4d,
- 0x3212ce,
- 0x322a8e,
- 0x3232cc,
- 0x32368c,
- 0x323acb,
- 0x323e4e,
- 0x324f92,
- 0x326ecc,
- 0x327610,
- 0x3335d2,
- 0x3347cc,
- 0x334e8d,
- 0x3351cc,
- 0x337611,
- 0x3384cd,
- 0x33ac4d,
- 0x33b24a,
- 0x33b4cc,
- 0x33bdcc,
- 0x33c34c,
- 0x33cbcc,
- 0x33fc53,
- 0x340450,
- 0x340850,
- 0x340e4d,
- 0x34144c,
- 0x342209,
- 0x342f0d,
- 0x343253,
- 0x344911,
- 0x344d53,
- 0x34560f,
- 0x3459cc,
- 0x345ccf,
- 0x34608d,
- 0x34668f,
- 0x346a50,
- 0x3474ce,
- 0x34ac8e,
- 0x34b590,
- 0x34ca8d,
- 0x34d40e,
- 0x34d78c,
- 0x34e753,
- 0x351e0e,
- 0x352390,
- 0x352791,
- 0x352bcf,
- 0x352f93,
- 0x35424d,
- 0x35458f,
- 0x35494e,
- 0x354fd0,
- 0x3553c9,
- 0x356390,
- 0x356acf,
- 0x35714f,
- 0x357512,
- 0x359e8e,
- 0x35a74d,
- 0x35cc4d,
- 0x35cf8d,
- 0x35f68d,
- 0x35f9cd,
- 0x35fd10,
- 0x36010b,
- 0x36058c,
- 0x36090c,
- 0x360c0c,
- 0x360f0e,
- 0x372c10,
- 0x374452,
- 0x3748cb,
- 0x374ece,
- 0x37524e,
- 0x375ace,
- 0x37604b,
- 0x4ef76396,
- 0x37724d,
- 0x378354,
- 0x378e0d,
- 0x37ae55,
- 0x37c04d,
- 0x37c9cf,
- 0x37d20f,
- 0x38028f,
- 0x38064e,
- 0x380acd,
- 0x382f11,
- 0x385ecc,
- 0x3861cc,
- 0x3864cb,
- 0x386c4c,
- 0x38824f,
- 0x388612,
- 0x388fcd,
- 0x389f8c,
- 0x38a40c,
- 0x38a70d,
- 0x38aa4f,
- 0x38ae0e,
- 0x38da8c,
- 0x38e04d,
- 0x38e38b,
- 0x38ee8c,
- 0x38f40d,
- 0x38f74e,
- 0x38fac9,
- 0x390c53,
- 0x39118d,
- 0x3914cd,
- 0x391acc,
- 0x391f4e,
- 0x39290f,
- 0x392ccc,
- 0x392fcd,
- 0x39330f,
- 0x3936cc,
- 0x3943cc,
- 0x39484c,
- 0x394b4c,
- 0x39520d,
- 0x395552,
- 0x396c0c,
- 0x396f0c,
- 0x397211,
- 0x39764f,
- 0x397a0f,
- 0x397dd3,
- 0x398a8e,
- 0x398e0f,
- 0x3991cc,
- 0x4f39950e,
- 0x39988f,
- 0x399c56,
- 0x39b312,
- 0x39d64c,
- 0x39e14f,
- 0x39e7cd,
- 0x39eb0f,
- 0x39eecc,
- 0x39f1cd,
- 0x39f50d,
- 0x3a0c4e,
- 0x3a2b8c,
- 0x3a2e8c,
- 0x3a3190,
- 0x3a4991,
- 0x3a4dcb,
- 0x3a510c,
- 0x3a540e,
- 0x3a7051,
- 0x3a748e,
- 0x3a780d,
- 0x3aed0b,
- 0x3afdcf,
- 0x3b09d4,
- 0x2630c2,
- 0x2630c2,
- 0x202583,
- 0x2630c2,
- 0x202583,
- 0x2630c2,
- 0x20ae82,
- 0x372ac5,
- 0x3a6d4c,
- 0x2630c2,
- 0x2630c2,
- 0x20ae82,
- 0x2630c2,
- 0x29a385,
- 0x212e05,
- 0x2630c2,
- 0x2630c2,
- 0x211cc2,
- 0x29a385,
- 0x31e789,
- 0x34460c,
- 0x2630c2,
- 0x2630c2,
- 0x2630c2,
- 0x2630c2,
- 0x372ac5,
- 0x2630c2,
- 0x2630c2,
- 0x2630c2,
- 0x2630c2,
- 0x211cc2,
- 0x31e789,
- 0x2630c2,
- 0x2630c2,
- 0x2630c2,
- 0x212e05,
- 0x2630c2,
- 0x212e05,
- 0x34460c,
- 0x3a6d4c,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204ac3,
- 0x200383,
- 0x1f08,
- 0x15444,
- 0xc1348,
- 0x204cc2,
- 0x5020d1c2,
- 0x243403,
- 0x24c944,
- 0x202743,
- 0x38e8c4,
- 0x22e886,
- 0x213843,
- 0x31aa84,
- 0x288845,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x25084a,
- 0x241f46,
- 0x3755cc,
- 0x15f048,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x22d603,
- 0x201686,
- 0x204ac3,
- 0x200383,
- 0x21aa03,
- 0xaa288,
+ 0x320a8f,
+ 0x320e52,
+ 0x3212cf,
+ 0x321692,
+ 0x321b13,
+ 0x321fcd,
+ 0x32258d,
+ 0x32290e,
+ 0x322e8e,
+ 0x3236cc,
+ 0x323a8c,
+ 0x323ecb,
+ 0x32424e,
+ 0x325392,
+ 0x327b8c,
+ 0x328790,
+ 0x335212,
+ 0x33640c,
+ 0x336acd,
+ 0x336e0c,
+ 0x339a51,
+ 0x33a90d,
+ 0x34084d,
+ 0x340e4a,
+ 0x3410cc,
+ 0x3419cc,
+ 0x3421cc,
+ 0x34290c,
+ 0x344dd3,
+ 0x345450,
+ 0x345850,
+ 0x34610d,
+ 0x34670c,
+ 0x347309,
+ 0x34890d,
+ 0x348c53,
+ 0x34a311,
+ 0x34a753,
+ 0x34b24f,
+ 0x34b60c,
+ 0x34b90f,
+ 0x34bccd,
+ 0x34c2cf,
+ 0x34c690,
+ 0x34d10e,
+ 0x3539ce,
+ 0x353f50,
+ 0x35518d,
+ 0x355b0e,
+ 0x355e8c,
+ 0x356e93,
+ 0x35934e,
+ 0x3599d0,
+ 0x359dd1,
+ 0x35a20f,
+ 0x35a5d3,
+ 0x35ae4d,
+ 0x35b18f,
+ 0x35b54e,
+ 0x35bc10,
+ 0x35c009,
+ 0x35cd90,
+ 0x35d38f,
+ 0x35da0f,
+ 0x35ddd2,
+ 0x35efce,
+ 0x35fc4d,
+ 0x36070d,
+ 0x360a4d,
+ 0x36184d,
+ 0x361b8d,
+ 0x361ed0,
+ 0x3622cb,
+ 0x36324c,
+ 0x3635cc,
+ 0x363bcc,
+ 0x363ece,
+ 0x371a10,
+ 0x372dd2,
+ 0x37324b,
+ 0x3738ce,
+ 0x373c4e,
+ 0x3744ce,
+ 0x37494b,
+ 0x50774f56,
+ 0x37624d,
+ 0x3766d4,
+ 0x377e0d,
+ 0x37b115,
+ 0x37c40d,
+ 0x37cd8f,
+ 0x37d5cf,
+ 0x38250f,
+ 0x3828ce,
+ 0x382e4d,
+ 0x383f91,
+ 0x38674c,
+ 0x386a4c,
+ 0x386d4b,
+ 0x38764c,
+ 0x387a0f,
+ 0x387dd2,
+ 0x38878d,
+ 0x38974c,
+ 0x389bcc,
+ 0x389ecd,
+ 0x38a20f,
+ 0x38a5ce,
+ 0x3924cc,
+ 0x392a8d,
+ 0x392dcb,
+ 0x39358c,
+ 0x393b0d,
+ 0x393e4e,
+ 0x3941c9,
+ 0x394d13,
+ 0x39524d,
+ 0x39558d,
+ 0x395b8c,
+ 0x39600e,
+ 0x396fcf,
+ 0x39738c,
+ 0x39768d,
+ 0x3979cf,
+ 0x397d8c,
+ 0x39848c,
+ 0x39890c,
+ 0x398c0c,
+ 0x3992cd,
+ 0x399612,
+ 0x399c8c,
+ 0x399f8c,
+ 0x39a291,
+ 0x39a6cf,
+ 0x39aa8f,
+ 0x39ae53,
+ 0x39bcce,
+ 0x39c04f,
+ 0x39c40c,
+ 0x50b9c74e,
+ 0x39cacf,
+ 0x39ce96,
+ 0x39dc12,
+ 0x39f38c,
+ 0x39fd0f,
+ 0x3a038d,
+ 0x3a06cf,
+ 0x3a0a8c,
+ 0x3a0d8d,
+ 0x3a10cd,
+ 0x3a254e,
+ 0x3a4b8c,
+ 0x3a4e8c,
+ 0x3a5190,
+ 0x3a7a91,
+ 0x3a7ecb,
+ 0x3a820c,
+ 0x3a850e,
+ 0x3aa811,
+ 0x3aac4e,
+ 0x3aafcd,
+ 0x3b53cb,
+ 0x3b5e8f,
+ 0x3b6d94,
+ 0x228782,
+ 0x228782,
+ 0x200c83,
+ 0x228782,
+ 0x200c83,
+ 0x228782,
+ 0x205142,
+ 0x384405,
+ 0x3aa50c,
+ 0x228782,
+ 0x228782,
+ 0x205142,
+ 0x228782,
+ 0x294545,
+ 0x21cb85,
+ 0x228782,
+ 0x228782,
+ 0x20b382,
+ 0x294545,
+ 0x31f3c9,
+ 0x34a00c,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x384405,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x20b382,
+ 0x31f3c9,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x21cb85,
+ 0x228782,
+ 0x21cb85,
+ 0x34a00c,
+ 0x3aa50c,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x2708,
+ 0x5fc84,
+ 0xe0e08,
+ 0x205702,
+ 0x51a099c2,
+ 0x23dbc3,
+ 0x24f2c4,
+ 0x2032c3,
+ 0x393304,
+ 0x22f706,
+ 0x20e883,
+ 0x3328c4,
+ 0x286bc5,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x255cca,
+ 0x2efec6,
+ 0x373fcc,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x227f83,
+ 0x2d43c6,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0xa4508,
+ 0x129845,
+ 0x14902,
+ 0x52f86185,
+ 0x21347,
+ 0xc93c8,
+ 0xec0e,
+ 0x88192,
+ 0xfe20b,
+ 0x532d6a45,
+ 0x536d6a4c,
+ 0xb007,
+ 0x16fc07,
+ 0x1b254a,
+ 0x3a6d0,
+ 0x149c05,
+ 0xd95cb,
+ 0x68bc8,
+ 0x38f47,
+ 0x304cb,
+ 0x4efc9,
+ 0x11dd07,
+ 0x2c07,
+ 0x73587,
+ 0x1c106,
+ 0xd4ac8,
+ 0x53c1cdc6,
+ 0xa8a0d,
+ 0x1b1f10,
+ 0x5402bb82,
+ 0x9688,
+ 0x4a450,
+ 0x14434c,
+ 0x5474e88d,
+ 0x655c7,
+ 0x78749,
+ 0x52e06,
+ 0x940c8,
+ 0x67e42,
+ 0x9f54a,
+ 0x27f07,
+ 0x35fc7,
+ 0xa4909,
+ 0xa6388,
+ 0xb9b45,
+ 0xec50e,
+ 0xb54e,
+ 0xdecf,
+ 0x11809,
+ 0xbb9c9,
+ 0x43e4b,
+ 0x7664f,
+ 0x8780c,
+ 0x9ef4b,
+ 0xbbf48,
+ 0x154807,
+ 0xcdc48,
+ 0xfb80b,
+ 0xf568c,
+ 0xf640c,
+ 0xf908c,
+ 0xfe68d,
+ 0x17e248,
+ 0xeab02,
+ 0x113a49,
+ 0x185d4b,
+ 0xc5446,
+ 0x116fcb,
+ 0xd804a,
+ 0xd8c05,
+ 0xde6d0,
+ 0x111806,
+ 0x192345,
+ 0xe3f48,
+ 0xe9187,
+ 0xe9447,
+ 0xff487,
+ 0xf4d0a,
+ 0xc924a,
+ 0x5d306,
+ 0x91a0d,
+ 0x86ec8,
+ 0x55b08,
+ 0x56d49,
+ 0xb3c45,
+ 0xf484c,
+ 0xfe88b,
+ 0x165044,
+ 0xfaa89,
+ 0xfacc6,
+ 0x1af7c6,
+ 0x2dc2,
+ 0x125c86,
+ 0x107247,
+ 0x7b02,
+ 0xc83c5,
+ 0x29544,
+ 0x1ec1,
+ 0x4c983,
+ 0x53a85146,
+ 0x94443,
+ 0xd882,
+ 0x27f04,
+ 0x242,
+ 0x5ef44,
+ 0x3dc2,
+ 0x8142,
+ 0x2502,
+ 0x10f242,
+ 0x1ec2,
+ 0xd6a42,
+ 0x4142,
+ 0x1b102,
+ 0x2cd82,
+ 0x5742,
+ 0xdc2,
+ 0xf882,
+ 0x32403,
+ 0x5f02,
+ 0x7c2,
+ 0x18342,
+ 0xfc82,
+ 0x5e82,
+ 0x1ae02,
+ 0x17f42,
+ 0x15c2,
+ 0x29c2,
+ 0x1fc2,
+ 0x44183,
0x3942,
- 0x513856c5,
- 0x2ac47,
- 0xd7a88,
- 0xc0ce,
- 0x8c792,
- 0x16780b,
- 0x516db445,
- 0x51adb44c,
- 0xf207,
- 0x13ecc7,
- 0x1698ca,
- 0x3efd0,
- 0x1acd05,
- 0x16e1cb,
- 0x1672c8,
- 0x13edc7,
- 0x2f64b,
- 0x11dd09,
- 0x150f47,
- 0x1b3c47,
- 0x81187,
- 0x20586,
- 0x94b88,
- 0x52028b86,
- 0xafbcd,
- 0x169290,
- 0x52401742,
- 0xfb48,
- 0x71f47,
- 0x7f149,
- 0x59b46,
- 0x99f08,
- 0x74842,
- 0xa4f4a,
- 0x2d587,
- 0x3b9c7,
- 0xaa689,
- 0xad708,
- 0x15ae05,
- 0x194e8e,
- 0x14d4e,
- 0x26f4f,
- 0x2ccc9,
- 0x4c809,
- 0x77e8b,
- 0x878cf,
- 0x8fdcc,
- 0xadd8b,
- 0xc4d08,
- 0xdc507,
- 0x162908,
- 0xfe04b,
- 0x12a54c,
- 0x141acc,
- 0x147f4c,
- 0x14b0cd,
- 0x17de88,
- 0x42602,
- 0x104389,
- 0x18528b,
- 0xc8886,
- 0x116f8b,
- 0xdd5ca,
- 0xde185,
- 0xe4a90,
- 0x1294c6,
- 0x63c85,
- 0xe6448,
- 0xee547,
- 0xee807,
- 0x5e987,
- 0xf92ca,
- 0xd790a,
- 0x177ac6,
- 0x97ccd,
- 0x1ae208,
- 0x56608,
- 0x56a89,
- 0xb9905,
- 0x19de4c,
- 0x14b2cb,
- 0x171c84,
- 0xff749,
- 0x8146,
- 0x16c2,
- 0x125886,
- 0x10d947,
- 0x6c82,
- 0xcb605,
- 0x29b04,
- 0x701,
- 0x2bc43,
- 0x51fadbc6,
- 0x9a283,
- 0x8a42,
- 0x2d584,
+ 0x6502,
+ 0xafd42,
+ 0xbe02,
+ 0x282,
+ 0x4bc2,
+ 0x1f42,
+ 0xa8542,
+ 0x2342,
+ 0x152bc2,
+ 0x675c2,
+ 0x2c82,
+ 0x5503,
+ 0x8c2,
+ 0x8442,
+ 0x33c2,
+ 0xb482,
+ 0x49245,
+ 0xba02,
+ 0x2d4c2,
+ 0x3c083,
+ 0x482,
+ 0x1c42,
+ 0x27c2,
+ 0x3902,
+ 0x1102,
0x1442,
- 0x4ae04,
- 0x1342,
- 0x2f82,
- 0x3682,
- 0x1124c2,
- 0xe542,
- 0xdb442,
- 0x2ac2,
- 0x1c402,
- 0x26982,
- 0x4d02,
- 0x3b02,
- 0x34682,
- 0x31b83,
- 0x7d02,
- 0x1c2,
- 0x41c2,
- 0xda42,
- 0x642,
- 0xdc2,
- 0x18d82,
- 0x1a02,
- 0x2282,
- 0x1d42,
- 0x4303,
- 0xb02,
- 0x2f02,
- 0xb5e02,
- 0x1b02,
- 0x5d82,
- 0x32c2,
- 0x73c2,
- 0x17c2,
- 0x1f02,
- 0x173102,
- 0x73fc2,
- 0x5e402,
- 0x4ac3,
- 0x2c2,
- 0x9282,
- 0x1002,
- 0x14602,
- 0x1724c5,
- 0x6ec2,
- 0x1202,
- 0x41703,
- 0x682,
- 0xd42,
- 0x1702,
- 0xe5c2,
- 0x1ac2,
- 0x3382,
- 0x6902,
- 0x16c2,
- 0x73c07,
- 0x213dc3,
- 0x204cc2,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x201d43,
- 0x22d603,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x29a2c3,
- 0x1a5c3,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x20fbc3,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
+ 0xc2,
+ 0x2dc2,
+ 0x9885,
+ 0x75c47,
+ 0x212503,
+ 0x205702,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x20ad83,
+ 0x227f83,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x294483,
+ 0x169c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
0x200041,
- 0x20fbc3,
- 0x204ac3,
- 0x2104c3,
- 0x200383,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x20fb43,
- 0x2135c3,
- 0x2300c3,
- 0x287703,
- 0x210503,
- 0x234743,
- 0x332ec3,
- 0x2964c4,
- 0x204ac3,
- 0x200383,
- 0x24abc3,
- 0x200604,
- 0x250c83,
- 0x5283,
- 0x3abd03,
- 0x329b88,
- 0x2e8384,
- 0x2c264a,
- 0x224906,
- 0x10f9c4,
- 0x38c2c7,
- 0x21eeca,
- 0x2df949,
- 0x3a3b07,
- 0x3a7dca,
- 0x368883,
- 0x2e900b,
- 0x303349,
- 0x2b9e45,
- 0x2d7187,
- 0xd1c2,
- 0x2d0783,
- 0x204d07,
- 0x248d45,
- 0x2e1cc9,
- 0x231b83,
- 0x233606,
- 0x2c56c3,
- 0xe1183,
- 0x109686,
- 0x60546,
- 0x137c7,
- 0x217546,
- 0x222645,
- 0x2cf187,
- 0x2da587,
- 0x54b32ec3,
- 0x334a07,
- 0x3642c3,
- 0x3a2385,
- 0x2964c4,
- 0x32e3c8,
- 0x2751cc,
- 0x3a5745,
- 0x2a2086,
- 0x204bc7,
- 0x37ef47,
- 0x25b8c7,
- 0x31f248,
- 0x307ecf,
- 0x2dfb85,
- 0x243507,
- 0x2394c7,
- 0x2a9b0a,
- 0x2d7e49,
- 0x30bc85,
- 0x32194a,
- 0x1b06,
- 0x2c5745,
- 0x376284,
- 0x289dc6,
- 0x2f8cc7,
- 0x242507,
- 0x38cbc8,
- 0x214185,
- 0x248c46,
- 0x20c545,
- 0x387845,
- 0x212c04,
- 0x2e3f87,
- 0x20900a,
- 0x234d48,
- 0x356946,
- 0x2d603,
- 0x2e0405,
- 0x26c686,
- 0x3a46c6,
- 0x263b86,
- 0x20fbc3,
- 0x389247,
- 0x239445,
- 0x204ac3,
- 0x2dd88d,
- 0x20abc3,
- 0x38ccc8,
- 0x39a5c4,
- 0x27ba85,
- 0x2a9a06,
- 0x2362c6,
- 0x204587,
- 0x2ae707,
- 0x270b05,
- 0x200383,
- 0x27f2c7,
- 0x329709,
- 0x22b689,
- 0x2f590a,
- 0x24cd82,
- 0x3a2344,
- 0x2e76c4,
- 0x261787,
- 0x2278c8,
- 0x2ef309,
- 0x21f1c9,
- 0x2f0487,
- 0x303806,
- 0xf22c6,
- 0x2f39c4,
- 0x2f3fca,
- 0x2f6a08,
- 0x2f6fc9,
- 0x2bfe86,
- 0x2b6ec5,
- 0x234c08,
- 0x2c9c4a,
- 0x22c6c3,
- 0x200786,
- 0x2f0587,
- 0x217f85,
- 0x39a485,
- 0x2717c3,
- 0x258a04,
- 0x36da85,
- 0x288e47,
- 0x2ffac5,
- 0x2ed686,
- 0xfff05,
- 0x264a03,
- 0x28b789,
- 0x27b84c,
- 0x2a7e0c,
- 0x2d3bc8,
- 0x3ade87,
- 0x2fc8c8,
- 0x2fcc0a,
- 0x2fd84b,
- 0x303488,
- 0x33f408,
- 0x2363c6,
- 0x262685,
- 0x200f4a,
- 0x219545,
- 0x205bc2,
- 0x2c7a87,
- 0x2a32c6,
- 0x355ec5,
- 0x38e989,
- 0x26b785,
- 0x285ec5,
- 0x3a1f49,
- 0x257cc6,
- 0x3b1088,
- 0x23e0c3,
- 0x3b3306,
- 0x27ac06,
- 0x30ba85,
- 0x30ba89,
- 0x2bc289,
- 0x24d0c7,
- 0x10b904,
- 0x30b907,
- 0x21f0c9,
- 0x23c905,
- 0x4bbc8,
- 0x3b3205,
- 0x339505,
- 0x376c89,
- 0x205ac2,
- 0x2e95c4,
- 0x20d782,
- 0x200b02,
- 0x2ce985,
- 0x30f748,
- 0x2b9845,
- 0x2c6fc3,
- 0x2c6fc5,
- 0x2d7543,
- 0x210882,
- 0x2e30c4,
- 0x351903,
- 0x204c82,
- 0x35bb44,
- 0x2e85c3,
- 0x200e82,
- 0x25e903,
- 0x291704,
- 0x2e7083,
- 0x246f04,
- 0x202602,
- 0x21a903,
- 0x215b43,
- 0x206342,
- 0x33c282,
- 0x2bc0c9,
- 0x202d82,
- 0x28d304,
- 0x201782,
- 0x234a84,
- 0x3037c4,
- 0x2bcc44,
- 0x2016c2,
- 0x241a02,
- 0x220883,
- 0x225f83,
- 0x387944,
- 0x269e44,
- 0x2bc484,
- 0x2ce884,
- 0x30b143,
- 0x34f743,
- 0x201a84,
- 0x30d784,
- 0x30e786,
- 0x2e7782,
- 0x20d1c2,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x204cc2,
- 0x368883,
- 0x2d0783,
- 0x231b83,
- 0x2001c3,
- 0x332ec3,
- 0x2964c4,
- 0x2bc384,
- 0x213184,
- 0x204ac3,
- 0x200383,
+ 0x209703,
+ 0x205503,
+ 0x21c2c3,
+ 0x200983,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x209683,
+ 0x2163c3,
+ 0x277dc3,
+ 0x280b83,
+ 0x21c303,
+ 0x252c03,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x25ed03,
+ 0x352e84,
+ 0x231a03,
+ 0x30c3,
+ 0x228483,
+ 0x37a908,
+ 0x24f3c4,
+ 0x3b870a,
+ 0x2b8ec6,
+ 0x1b6a04,
+ 0x39b2c7,
+ 0x21e7ca,
+ 0x315bc9,
+ 0x3ab587,
+ 0x3b724a,
+ 0x38d2c3,
+ 0x2e678b,
+ 0x2b9fc9,
+ 0x2bd645,
+ 0x2d1fc7,
+ 0x99c2,
+ 0x2a84c3,
+ 0x205747,
+ 0x2e2b85,
+ 0x2dbdc9,
+ 0x232403,
+ 0x233c06,
+ 0x2c1a43,
+ 0xdb283,
+ 0x104e46,
+ 0x18ec46,
+ 0xe807,
+ 0x212e46,
+ 0x21b185,
+ 0x282407,
+ 0x2d5b87,
+ 0x56ae9dc3,
+ 0x336647,
+ 0x365e03,
+ 0x206a05,
+ 0x3b1384,
+ 0x220688,
+ 0x38644c,
+ 0x2ad745,
+ 0x29c986,
+ 0x205607,
+ 0x38b907,
+ 0x238347,
+ 0x245108,
+ 0x303b8f,
+ 0x315e05,
+ 0x23dcc7,
+ 0x26f287,
+ 0x2a3e0a,
+ 0x2d2809,
+ 0x304f85,
+ 0x30664a,
+ 0x82a06,
+ 0x2c1ac5,
+ 0x374b84,
+ 0x2843c6,
+ 0x2f1d47,
+ 0x2eaa07,
+ 0x3bb408,
+ 0x22dc85,
+ 0x2e2a86,
+ 0x214305,
+ 0x3adcc5,
+ 0x21c984,
+ 0x2af347,
+ 0x2081ca,
+ 0x334808,
+ 0x35ba86,
+ 0x27f83,
+ 0x2da905,
+ 0x25f906,
+ 0x3af246,
+ 0x392246,
+ 0x209703,
+ 0x388a07,
+ 0x26f205,
+ 0x205503,
+ 0x2d830d,
+ 0x204e83,
+ 0x3bb508,
+ 0x27f404,
+ 0x272fc5,
+ 0x2a3d06,
+ 0x234d46,
+ 0x368007,
+ 0x2a6ec7,
+ 0x267345,
+ 0x200983,
+ 0x21fbc7,
+ 0x2788c9,
+ 0x311a49,
+ 0x22708a,
+ 0x243002,
+ 0x2069c4,
+ 0x2e5084,
+ 0x390207,
+ 0x22cf88,
+ 0x2ea2c9,
+ 0x21eac9,
+ 0x2eaf47,
+ 0x2ba486,
+ 0xec286,
+ 0x2ed844,
+ 0x2ede4a,
+ 0x2f0d48,
+ 0x2f1189,
+ 0x2bdbc6,
+ 0x2b1445,
+ 0x3346c8,
+ 0x2c5f8a,
+ 0x22ed03,
+ 0x353006,
+ 0x2eb047,
+ 0x223ec5,
+ 0x3a5e05,
+ 0x264b83,
+ 0x250cc4,
+ 0x226605,
+ 0x281b07,
+ 0x2faf85,
+ 0x2ee346,
+ 0xfc605,
+ 0x247d83,
+ 0x357bc9,
+ 0x272d8c,
+ 0x29344c,
+ 0x2ced08,
+ 0x293087,
+ 0x2f7908,
+ 0x2f7c4a,
+ 0x2f888b,
+ 0x2ba108,
+ 0x234e48,
+ 0x239586,
+ 0x390d45,
+ 0x38da4a,
+ 0x3a6205,
+ 0x20b0c2,
+ 0x2c4647,
+ 0x25fe86,
+ 0x35c8c5,
+ 0x370809,
+ 0x2f39c5,
+ 0x27e985,
+ 0x2ddf09,
+ 0x351846,
+ 0x237e88,
+ 0x33f383,
+ 0x20f486,
+ 0x272146,
+ 0x306445,
+ 0x306449,
+ 0x2b6789,
+ 0x279ac7,
+ 0x109104,
+ 0x309107,
+ 0x21e9c9,
+ 0x238d05,
+ 0x413c8,
+ 0x3b2e85,
+ 0x330e85,
+ 0x380509,
+ 0x201702,
+ 0x25e544,
+ 0x201e82,
+ 0x203942,
+ 0x31ecc5,
+ 0x3b6788,
+ 0x2b3b85,
+ 0x2c3ac3,
+ 0x2c3ac5,
+ 0x2d2383,
+ 0x20f442,
+ 0x377804,
+ 0x2ac783,
+ 0x2056c2,
+ 0x379884,
+ 0x2e5d43,
+ 0x2082c2,
+ 0x2b3c03,
+ 0x28d084,
+ 0x2e4c83,
+ 0x248684,
+ 0x203082,
+ 0x218943,
+ 0x22ef03,
+ 0x200d02,
+ 0x361782,
+ 0x2b65c9,
+ 0x207842,
+ 0x288d04,
+ 0x203cc2,
+ 0x334544,
+ 0x2ba444,
+ 0x2b74c4,
+ 0x202dc2,
+ 0x2391c2,
+ 0x225bc3,
+ 0x2f8403,
+ 0x23d904,
+ 0x281c84,
+ 0x2eb1c4,
+ 0x2f0f04,
+ 0x30a483,
+ 0x26e543,
+ 0x282984,
+ 0x30a2c4,
+ 0x30aac6,
+ 0x22a282,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2007c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x2b6884,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x2ee644,
+ 0x31a403,
+ 0x2bd0c3,
+ 0x34ab84,
+ 0x3b2c86,
+ 0x202f03,
+ 0x16fc07,
+ 0x222403,
+ 0x2459c3,
+ 0x2b0543,
+ 0x206a43,
+ 0x227f83,
+ 0x2d6cc5,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x282c43,
+ 0x2a5143,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x205503,
+ 0x23a504,
+ 0x200983,
+ 0x26bec4,
+ 0x2bf145,
+ 0x16fc07,
+ 0x2099c2,
+ 0x2006c2,
+ 0x20d882,
+ 0x200c82,
+ 0x200442,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x25ef44,
+ 0x16d208,
+ 0x2a84c3,
+ 0x204e83,
+ 0x169c3,
+ 0x2030c4,
+ 0x16d208,
+ 0x2a84c3,
+ 0x249944,
+ 0x3b1384,
+ 0x204e83,
+ 0x203ec2,
+ 0x200983,
+ 0x23e743,
+ 0x50cc4,
+ 0x373605,
+ 0x20b0c2,
+ 0x30a403,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x201fc2,
+ 0x200983,
+ 0x205702,
+ 0x1b7407,
+ 0x12e3c9,
+ 0x6f83,
+ 0x16d208,
+ 0x18ebc3,
+ 0x5a31fd87,
+ 0xa84c3,
+ 0x708,
+ 0x232403,
+ 0x2e9dc3,
+ 0x1ae886,
+ 0x244183,
+ 0x8f2c8,
+ 0xc0e08,
+ 0x41a46,
+ 0x209703,
+ 0xca988,
+ 0xb1b43,
+ 0xdf145,
+ 0x32607,
+ 0x8003,
+ 0x174c0a,
+ 0x11ed83,
+ 0x308d44,
+ 0x10398b,
+ 0x103f48,
+ 0x8d742,
+ 0x205702,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
0x21aa03,
- 0x2f4684,
- 0x32f983,
- 0x2bf3c3,
- 0x345184,
- 0x3b3006,
- 0x211503,
- 0x13ecc7,
- 0x234fc3,
- 0x23a943,
- 0x2b6703,
- 0x265383,
- 0x22d603,
- 0x2db6c5,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2ed143,
- 0x2ab343,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204303,
- 0x204ac3,
- 0x23ee04,
- 0x200383,
- 0x26a104,
- 0x2c2d45,
- 0x13ecc7,
- 0x20d1c2,
- 0x2000c2,
- 0x208a42,
- 0x202082,
- 0x200382,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x24ae04,
- 0x15f048,
- 0x2d0783,
- 0x20abc3,
- 0x1a5c3,
- 0x24fe44,
- 0x15f048,
- 0x2d0783,
- 0x251304,
- 0x2964c4,
- 0x20abc3,
- 0x201882,
- 0x200383,
- 0x2202c3,
- 0x58a04,
- 0x370145,
- 0x205bc2,
- 0x30d8c3,
- 0x204cc2,
- 0x15f048,
- 0x20d1c2,
- 0x231b83,
- 0x332ec3,
- 0x201d42,
- 0x200383,
- 0x204cc2,
- 0x15f048,
- 0x231b83,
- 0x332ec3,
- 0x204303,
- 0x20fbc3,
- 0x30b544,
- 0x204cc2,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x2da904,
- 0x332ec3,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x22d603,
- 0x204ac3,
- 0x200383,
- 0x26a103,
- 0x213e83,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x1a5c3,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x22d603,
- 0x204ac3,
- 0x200383,
- 0x217082,
+ 0x214843,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x169c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x212982,
0x200141,
- 0x204cc2,
+ 0x205702,
0x200001,
- 0x31f542,
- 0x15f048,
- 0x21d105,
+ 0x320b82,
+ 0x16d208,
+ 0x21d445,
+ 0x201ec1,
+ 0xa84c3,
0x200701,
- 0xd0783,
- 0x200101,
- 0x2000c1,
- 0x201e41,
- 0x29da82,
- 0x36da04,
- 0x372a43,
+ 0x200301,
+ 0x200081,
+ 0x298602,
+ 0x36c044,
+ 0x384383,
0x200181,
- 0x200941,
+ 0x200401,
0x200041,
- 0x200081,
- 0x2ed7c7,
- 0x2eeccf,
- 0x2fc146,
- 0x201481,
- 0x289786,
- 0x200c01,
- 0x2002c1,
- 0x33168e,
- 0x200381,
- 0x200383,
+ 0x200101,
+ 0x2e9907,
+ 0x2eab8f,
+ 0x340446,
+ 0x200281,
+ 0x37f6c6,
0x200e81,
- 0x279e45,
- 0x210582,
- 0x2716c5,
- 0x2003c1,
+ 0x2008c1,
+ 0x332a0e,
+ 0x200441,
+ 0x200983,
+ 0x201301,
+ 0x270e85,
+ 0x20f942,
+ 0x264a85,
+ 0x200341,
+ 0x200801,
+ 0x2002c1,
+ 0x20b0c2,
+ 0x2000c1,
0x200201,
- 0x200241,
- 0x205bc2,
- 0x200a01,
- 0x201a81,
+ 0x200bc1,
0x2005c1,
- 0x2007c1,
- 0x200cc1,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x21bd03,
- 0x2d0783,
- 0x332ec3,
- 0x91d48,
- 0x20fbc3,
- 0x204ac3,
- 0x48803,
- 0x200383,
- 0x14ebc48,
- 0x15f048,
- 0x4dcc4,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x204ac3,
- 0x200383,
- 0x205283,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x2da904,
- 0x200383,
- 0x293ac5,
- 0x343984,
- 0x2d0783,
- 0x204ac3,
- 0x200383,
- 0x16b18a,
- 0x20d1c2,
- 0x2d0783,
- 0x22f489,
- 0x231b83,
- 0x2d2389,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x2f37c8,
- 0x226647,
- 0x370145,
- 0x3a7f87,
- 0x26b0cb,
- 0x215cc8,
- 0x32eac9,
- 0x228087,
- 0x200108,
- 0x36f906,
- 0x2344c7,
- 0x29c108,
- 0x2ab806,
- 0x31d407,
- 0x2aa449,
- 0x2ba749,
- 0x2c2ac6,
- 0x2c38c5,
- 0x2cce08,
- 0x2b4783,
- 0x2d7c88,
- 0x231d87,
- 0x206583,
- 0x31d287,
- 0x217905,
- 0x2eeb08,
- 0x359105,
- 0x2cea43,
- 0x23c289,
- 0x2b0e87,
- 0x35d504,
- 0x2ff244,
- 0x307ccb,
- 0x308288,
- 0x309587,
- 0x2d0783,
- 0x231b83,
- 0x2135c3,
- 0x200383,
- 0x236ec3,
- 0x332ec3,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x77fcb,
- 0x204cc2,
- 0x20d1c2,
- 0x200383,
- 0x15f048,
- 0x204cc2,
- 0x20d1c2,
- 0x208a42,
- 0x201d42,
- 0x203cc2,
- 0x204ac3,
- 0x200382,
- 0x204cc2,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x208a42,
- 0x332ec3,
- 0x204303,
- 0x20fbc3,
- 0x213184,
- 0x204ac3,
- 0x2183c3,
- 0x200383,
- 0x30b544,
- 0x24abc3,
- 0x332ec3,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x20abc3,
- 0x200383,
- 0x39db07,
- 0x2d0783,
- 0x26e5c7,
- 0x362a86,
- 0x215ac3,
- 0x2041c3,
- 0x332ec3,
- 0x209e43,
- 0x2964c4,
- 0x38b704,
- 0x30dbc6,
- 0x201303,
- 0x204ac3,
- 0x200383,
- 0x293ac5,
- 0x318244,
- 0x369dc3,
- 0x37ed83,
- 0x2c7a87,
- 0x2387c5,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x203782,
- 0x3ae343,
- 0x2c2d43,
- 0x368883,
- 0x5fed0783,
- 0x209c02,
- 0x231b83,
- 0x202743,
- 0x332ec3,
- 0x2964c4,
- 0x23a0c3,
- 0x2dfb83,
- 0x20fbc3,
- 0x213184,
- 0x6020c002,
- 0x204ac3,
- 0x200383,
- 0x209103,
- 0x229b03,
- 0x217082,
- 0x24abc3,
- 0x15f048,
- 0x332ec3,
- 0x1a5c3,
- 0x2957c4,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x23a184,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x2cee84,
- 0x222044,
- 0x201686,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x21aa03,
- 0x2a32c6,
- 0x3ddcb,
- 0x28b86,
- 0x4aa0a,
- 0x10adca,
- 0x15f048,
- 0x20c504,
- 0x2d0783,
- 0x368844,
- 0x231b83,
- 0x256bc4,
- 0x332ec3,
- 0x262fc3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x32e84b,
- 0x39f84a,
- 0x3b478c,
- 0x204cc2,
- 0x20d1c2,
- 0x208a42,
- 0x2b0405,
- 0x2964c4,
- 0x201f02,
- 0x20fbc3,
- 0x222044,
- 0x202082,
- 0x200382,
- 0x20c4c2,
- 0x217082,
- 0x168883,
- 0xd882,
- 0x2b2409,
- 0x259f88,
- 0x332d49,
- 0x234309,
- 0x23b18a,
- 0x24550a,
- 0x20a182,
- 0x21c402,
- 0xd1c2,
- 0x2d0783,
- 0x220802,
- 0x2436c6,
- 0x356fc2,
- 0x20a542,
- 0x21ad8e,
- 0x21a94e,
- 0x281a47,
- 0x204a47,
- 0x221202,
- 0x231b83,
- 0x332ec3,
- 0x20b502,
- 0x201d42,
- 0x4143,
- 0x24058f,
- 0x26b142,
- 0x362cc7,
- 0x2fa1c7,
- 0x39d487,
- 0x31e28c,
- 0x364d0c,
- 0x202444,
- 0x283b0a,
- 0x21a882,
- 0x201b02,
- 0x2bc744,
- 0x22b1c2,
- 0x2c5c02,
- 0x364f44,
- 0x2184c2,
- 0x205d82,
- 0x5d83,
- 0x2ab887,
- 0x33d885,
- 0x2073c2,
- 0x240504,
- 0x373102,
- 0x2df088,
- 0x204ac3,
- 0x203808,
- 0x203ac2,
- 0x232d85,
- 0x203ac6,
- 0x200383,
- 0x206ec2,
- 0x2ef547,
- 0x10582,
- 0x350845,
- 0x31d185,
- 0x207c82,
- 0x236b82,
- 0x3a860a,
- 0x27098a,
- 0x212bc2,
- 0x353f84,
- 0x2018c2,
- 0x3a2208,
- 0x219682,
- 0x2a2588,
- 0x304987,
- 0x304c89,
- 0x2037c2,
- 0x309e45,
- 0x247e85,
- 0x21424b,
- 0x2ca84c,
- 0x22c208,
- 0x3186c8,
- 0x2e7782,
- 0x204642,
- 0x204cc2,
- 0x15f048,
- 0x20d1c2,
- 0x2d0783,
- 0x208a42,
- 0x202082,
- 0x200382,
- 0x200383,
- 0x20c4c2,
- 0x204cc2,
- 0x6260d1c2,
- 0x62b32ec3,
- 0x205d83,
- 0x201f02,
- 0x204ac3,
- 0x3a8fc3,
- 0x200383,
- 0x2ec383,
- 0x273d06,
- 0x1613e83,
- 0x15f048,
- 0x63c85,
- 0xae2cd,
- 0xaafca,
- 0x6ebc7,
- 0x63201b82,
- 0x63601442,
- 0x63a00f82,
- 0x63e02e02,
- 0x642125c2,
- 0x6460e542,
- 0x13ecc7,
- 0x64a0d1c2,
- 0x64e0e482,
- 0x6520fe42,
- 0x65603b02,
- 0x21a943,
- 0x102c4,
- 0x220a43,
- 0x65a14002,
- 0x65e023c2,
- 0x51847,
- 0x66214502,
- 0x66600b82,
- 0x66a00542,
- 0x66e0a3c2,
- 0x67202282,
- 0x67601d42,
- 0xbe445,
- 0x221443,
- 0x3b3bc4,
- 0x67a2b1c2,
- 0x67e42682,
- 0x68202682,
- 0x7e5cb,
- 0x68600c02,
- 0x68e513c2,
- 0x69201f02,
- 0x69603cc2,
- 0x69a0bcc2,
- 0x69e05f02,
- 0x6a20b602,
- 0x6a673fc2,
- 0x6aa0c002,
- 0x6ae04a02,
- 0x6b202082,
- 0x6b603702,
- 0x6ba12982,
- 0x6be31302,
- 0x94fc4,
- 0x358183,
- 0x6c2126c2,
- 0x6c61a582,
- 0x6ca098c2,
- 0x6ce00982,
- 0x6d200382,
- 0x6d604c82,
- 0x78147,
- 0x6da054c2,
- 0x6de05502,
- 0x6e20c4c2,
- 0x6e609f42,
- 0x19de4c,
- 0x6ea22e82,
- 0x6ee79242,
- 0x6f200a02,
- 0x6f606602,
- 0x6fa019c2,
- 0x6fe3b302,
- 0x70206d02,
- 0x70613882,
- 0x70a7af82,
- 0x70e43e02,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x75c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
+ 0x201cc1,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x219503,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x8d688,
+ 0x209703,
+ 0x205503,
+ 0x20803,
+ 0x200983,
+ 0x14e7e88,
+ 0x16d208,
+ 0x44e04,
+ 0x14e7e8a,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2030c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x200983,
+ 0x27a305,
+ 0x33b804,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x225ca,
+ 0xd5284,
+ 0x10c9c6,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x230309,
+ 0x232403,
+ 0x3034c9,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2ed648,
+ 0x22ca47,
+ 0x373605,
+ 0x18ed88,
+ 0x1b7407,
+ 0x2d20a,
+ 0xecb,
+ 0x4ab87,
+ 0x3d2c8,
+ 0x1b1b8a,
+ 0x10a48,
+ 0x12e3c9,
+ 0x264c7,
+ 0x3be87,
+ 0x152b08,
+ 0x708,
+ 0x3df8f,
+ 0x11d85,
+ 0xa07,
+ 0x1ae886,
+ 0x137607,
+ 0x3d586,
+ 0x8f2c8,
+ 0xa5606,
+ 0x151647,
+ 0x19c9,
+ 0x1aa1c7,
+ 0xa46c9,
+ 0xb4a09,
+ 0xbeec6,
+ 0xc0e08,
+ 0xbfcc5,
+ 0x4eb4a,
+ 0xca988,
+ 0xb1b43,
+ 0xd2648,
+ 0x32607,
+ 0x6d505,
+ 0x69c50,
+ 0x8003,
+ 0x1aa047,
+ 0x15ec5,
+ 0xe9748,
+ 0x13ce05,
+ 0x11ed83,
+ 0x6fd48,
+ 0xcd46,
+ 0x42849,
+ 0xaa147,
+ 0x6fa0b,
+ 0x14ac44,
+ 0xfa544,
+ 0x10398b,
+ 0x103f48,
+ 0x104d47,
+ 0x129845,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x200983,
+ 0x22a403,
+ 0x2e9dc3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x43f8b,
+ 0x205702,
+ 0x2099c2,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x2099c2,
0x20d882,
- 0x23a0c3,
- 0x2075c3,
+ 0x201fc2,
+ 0x203d02,
+ 0x205503,
+ 0x200442,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x68a3a0c3,
- 0x2075c3,
- 0x2db744,
- 0x259e86,
- 0x2f74c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x20d882,
- 0x23a0c3,
- 0x2075c3,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x216b03,
+ 0x200983,
+ 0x308d44,
+ 0x25ed03,
+ 0x2e9dc3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x39f847,
+ 0x2a84c3,
+ 0x2614c7,
+ 0x2c7ac6,
+ 0x219203,
+ 0x218343,
+ 0x2e9dc3,
+ 0x2143c3,
+ 0x3b1384,
+ 0x37ef04,
+ 0x31ea46,
+ 0x20d143,
+ 0x205503,
+ 0x200983,
+ 0x27a305,
+ 0x318284,
+ 0x3b2a43,
+ 0x38b743,
+ 0x2c4647,
+ 0x33e885,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x28e87,
+ 0x205942,
+ 0x287003,
+ 0x2bf143,
+ 0x38d2c3,
+ 0x626a84c3,
+ 0x202242,
+ 0x232403,
+ 0x2032c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x353903,
+ 0x315e03,
+ 0x209703,
+ 0x211cc4,
+ 0x62a04642,
+ 0x205503,
+ 0x200983,
+ 0x2082c3,
+ 0x229543,
+ 0x212982,
+ 0x25ed03,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x169c3,
+ 0x26f744,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x282104,
+ 0x210444,
+ 0x2d43c6,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x25fe86,
+ 0x13f08b,
+ 0x1cdc6,
+ 0x5eb4a,
+ 0x107e4a,
+ 0x16d208,
+ 0x2142c4,
+ 0x63ea84c3,
+ 0x38d284,
+ 0x232403,
+ 0x256e84,
+ 0x2e9dc3,
+ 0x391683,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x56243,
+ 0x32f78b,
+ 0x3a140a,
+ 0x3b9bcc,
+ 0xda688,
+ 0x205702,
+ 0x2099c2,
0x20d882,
+ 0x2a9305,
+ 0x3b1384,
+ 0x202342,
+ 0x209703,
+ 0x210444,
+ 0x200c82,
+ 0x200442,
+ 0x209842,
+ 0x212982,
+ 0x18d2c3,
+ 0x19f02,
+ 0x2a1cc9,
+ 0x25d548,
+ 0x309a89,
+ 0x337449,
+ 0x23490a,
+ 0x23634a,
+ 0x20cc02,
+ 0x21b102,
+ 0x99c2,
+ 0x2a84c3,
+ 0x204682,
+ 0x23de86,
+ 0x35d882,
+ 0x201242,
+ 0x20124e,
+ 0x21898e,
+ 0x27b107,
+ 0x205487,
+ 0x275d02,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200042,
+ 0x201fc2,
+ 0x4a5c3,
+ 0x2eec0f,
+ 0x200f42,
+ 0x32c787,
+ 0x2c7d07,
+ 0x2d3907,
+ 0x2ad24c,
+ 0x3151cc,
+ 0x3a3a44,
+ 0x27c6ca,
+ 0x2188c2,
+ 0x20be02,
+ 0x2b6fc4,
+ 0x2226c2,
+ 0x2c2702,
+ 0x315404,
+ 0x20cec2,
+ 0x200282,
+ 0x6343,
+ 0x2a5687,
+ 0x2352c5,
+ 0x201f42,
+ 0x2eeb84,
+ 0x352bc2,
+ 0x2da248,
+ 0x205503,
+ 0x3b0208,
+ 0x200d42,
+ 0x233385,
+ 0x3b04c6,
+ 0x200983,
+ 0x20ba02,
+ 0x2ea507,
+ 0xf942,
+ 0x26b005,
+ 0x3a9f45,
+ 0x201642,
+ 0x242b02,
+ 0x3b7a8a,
+ 0x2671ca,
+ 0x202c42,
+ 0x2e4744,
+ 0x2002c2,
+ 0x206888,
+ 0x201c82,
+ 0x30a848,
+ 0x2feb47,
+ 0x2ff649,
+ 0x26b082,
+ 0x305645,
+ 0x33bc85,
+ 0x22dd4b,
+ 0x2c6c4c,
+ 0x22e848,
+ 0x3188c8,
+ 0x22a282,
+ 0x35f782,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
0x20d882,
- 0x23a0c3,
- 0x2075c3,
- 0x716d0783,
- 0x231b83,
- 0x329e83,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x15f048,
- 0x20d1c2,
- 0x2d0783,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x24fe44,
- 0x20d1c2,
- 0x2d0783,
- 0x3303c3,
- 0x231b83,
- 0x251304,
- 0x2135c3,
- 0x332ec3,
- 0x2964c4,
- 0x204303,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x2202c3,
- 0x370145,
- 0x2b2703,
- 0x24abc3,
- 0x20d1c2,
- 0x2d0783,
- 0x23a0c3,
- 0x204ac3,
- 0x200383,
- 0x204cc2,
- 0x368883,
- 0x15f048,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x22e886,
- 0x2964c4,
- 0x204303,
- 0x213184,
- 0x204ac3,
- 0x200383,
- 0x21aa03,
- 0x2d0783,
- 0x231b83,
- 0x204ac3,
- 0x200383,
- 0x2d0783,
- 0x28b86,
- 0x231b83,
- 0x332ec3,
- 0xe1946,
- 0x204ac3,
- 0x200383,
- 0x315cc8,
- 0x318509,
- 0x327a09,
- 0x332548,
- 0x37d888,
- 0x37d889,
- 0x9da85,
- 0x204cc2,
- 0x238605,
- 0x205d43,
- 0x7420d1c2,
- 0x231b83,
- 0x332ec3,
- 0x33e387,
- 0x265383,
- 0x20fbc3,
- 0x204ac3,
- 0x2104c3,
- 0x212483,
- 0x20abc3,
- 0x200383,
- 0x241f46,
- 0x205bc2,
- 0x24abc3,
- 0x15f048,
- 0x204cc2,
- 0x368883,
- 0x20d1c2,
- 0x2d0783,
- 0x231b83,
- 0x332ec3,
- 0x2964c4,
- 0x20fbc3,
- 0x204ac3,
- 0x200383,
- 0x213e83,
- 0x153ca46,
+ 0x200c82,
+ 0x200442,
+ 0x200983,
+ 0x209842,
+ 0x205702,
+ 0x652099c2,
+ 0x656e9dc3,
+ 0x206343,
+ 0x202342,
+ 0x205503,
+ 0x375cc3,
+ 0x200983,
+ 0x2e87c3,
+ 0x275d46,
+ 0x1614843,
+ 0x16d208,
+ 0x192345,
+ 0xa6a8d,
+ 0xa4dca,
+ 0x65c87,
+ 0x65e011c2,
+ 0x66200242,
+ 0x66600ec2,
+ 0x66a00c02,
+ 0x66e0de02,
+ 0x67201ec2,
+ 0x16fc07,
+ 0x676099c2,
+ 0x67a301c2,
+ 0x67e09982,
+ 0x68200dc2,
+ 0x218983,
+ 0x9e04,
+ 0x225d83,
+ 0x686149c2,
+ 0x68a00182,
+ 0x49f47,
+ 0x68e03002,
+ 0x69202e42,
+ 0x69600b42,
+ 0x69a02bc2,
+ 0x69e029c2,
+ 0x6a201fc2,
+ 0xb3985,
+ 0x234543,
+ 0x202b84,
+ 0x6a6226c2,
+ 0x6aa03a82,
+ 0x6ae03202,
+ 0x16c90b,
+ 0x6b200e82,
+ 0x6ba49a02,
+ 0x6be02342,
+ 0x6c203d02,
+ 0x6c60f242,
+ 0x6ca0ec42,
+ 0x6ce0e602,
+ 0x6d2675c2,
+ 0x6d604642,
+ 0x6da01b42,
+ 0x6de00c82,
+ 0x6e2042c2,
+ 0x6e61c702,
+ 0x6ea00e42,
+ 0x7f1c4,
+ 0x350703,
+ 0x6ee33082,
+ 0x6f216982,
+ 0x6f603402,
+ 0x6fa089c2,
+ 0x6fe00442,
+ 0x702056c2,
+ 0x44107,
+ 0x70601302,
+ 0x70a07302,
+ 0x70e09842,
+ 0x71218942,
+ 0xf484c,
+ 0x71621c82,
+ 0x71a3ab02,
+ 0x71e11602,
+ 0x72201682,
+ 0x72601f82,
+ 0x72a34a82,
+ 0x72e00202,
+ 0x7320e8c2,
+ 0x736724c2,
+ 0x73a56642,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0xa203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x6b753903,
+ 0x20a203,
+ 0x2d6d44,
+ 0x25d446,
+ 0x2f1743,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x742a84c3,
+ 0x232403,
+ 0x37ac03,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2030c4,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2028c3,
+ 0x232403,
+ 0x249944,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x23e743,
+ 0x373605,
+ 0x2a1fc3,
+ 0x25ed03,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x353903,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x38d2c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x22f706,
+ 0x3b1384,
+ 0x244183,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x14bb147,
+ 0x2a84c3,
+ 0x1cdc6,
+ 0x232403,
+ 0x2e9dc3,
+ 0xdba46,
+ 0x205503,
+ 0x200983,
+ 0x3149c8,
+ 0x318709,
+ 0x328b89,
+ 0x333808,
+ 0x37dc48,
+ 0x37dc49,
+ 0x24318d,
+ 0x2ee80f,
+ 0x251490,
+ 0x34848d,
+ 0x3638cc,
+ 0x37f98b,
+ 0x98605,
+ 0x205702,
+ 0x33e6c5,
+ 0x200243,
+ 0x772099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x343ec7,
+ 0x206a43,
+ 0x209703,
+ 0x205503,
+ 0x21c2c3,
+ 0x20dcc3,
+ 0x204e83,
+ 0x200983,
+ 0x2efec6,
+ 0x20b0c2,
+ 0x25ed03,
+ 0x16d208,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x14f53c6,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x209703,
+ 0x200983,
}
// children is the list of nodes' children, the parent's wildcard bit and the
@@ -8623,442 +8770,409 @@ var children = [...]uint32{
0x40000000,
0x50000000,
0x60000000,
- 0x1860612,
- 0x1864618,
- 0x1884619,
- 0x19e0621,
+ 0x184c60d,
+ 0x1850613,
+ 0x1870614,
+ 0x19cc61c,
+ 0x19e0673,
0x19f4678,
- 0x1a0867d,
- 0x1a18682,
- 0x1a34686,
- 0x1a3868d,
- 0x1a5068e,
- 0x1a74694,
- 0x1a7869d,
- 0x1a9069e,
- 0x1a946a4,
- 0x1a986a5,
- 0x1ac06a6,
- 0x1ac46b0,
- 0x21acc6b1,
- 0x1b146b3,
- 0x1b186c5,
- 0x1b386c6,
- 0x1b4c6ce,
- 0x1b506d3,
- 0x1b806d4,
- 0x1b9c6e0,
- 0x1bc46e7,
- 0x1bd06f1,
- 0x1bd46f4,
- 0x1c686f5,
- 0x1c7c71a,
- 0x1c9071f,
- 0x1cc0724,
- 0x1cd0730,
- 0x1ce4734,
- 0x1d08739,
- 0x1e20742,
- 0x1e24788,
- 0x1e90789,
- 0x1ea47a4,
- 0x1eb87a9,
- 0x1ec07ae,
- 0x1ed07b0,
- 0x1ed47b4,
- 0x1eec7b5,
- 0x1f347bb,
- 0x1f4c7cd,
- 0x1f507d3,
+ 0x1a0467d,
+ 0x1a20681,
+ 0x1a24688,
+ 0x1a3c689,
+ 0x1a6468f,
+ 0x1a68699,
+ 0x1a8069a,
+ 0x1a846a0,
+ 0x1a886a1,
+ 0x1ab06a2,
+ 0x1ab46ac,
+ 0x21abc6ad,
+ 0x1b046af,
+ 0x1b086c1,
+ 0x1b286c2,
+ 0x1b3c6ca,
+ 0x1b406cf,
+ 0x1b706d0,
+ 0x1b8c6dc,
+ 0x1bb46e3,
+ 0x1bc06ed,
+ 0x1bc46f0,
+ 0x1c5c6f1,
+ 0x1c70717,
+ 0x1c8471c,
+ 0x1cb4721,
+ 0x1cc472d,
+ 0x1cd8731,
+ 0x1cfc736,
+ 0x1e3473f,
+ 0x1e3878d,
+ 0x1ea478e,
+ 0x1f107a9,
+ 0x1f247c4,
+ 0x1f387c9,
+ 0x1f407ce,
+ 0x1f507d0,
0x1f547d4,
- 0x1f5c7d5,
- 0x1f987d7,
- 0x61f9c7e6,
- 0x1fb07e7,
- 0x1fbc7ec,
- 0x1fc07ef,
- 0x1fd07f0,
- 0x20807f4,
- 0x2084820,
- 0x22090821,
- 0x22098824,
- 0x20cc826,
- 0x20d0833,
- 0x2514834,
- 0x225ac945,
- 0x225b096b,
- 0x225b496c,
- 0x225c096d,
- 0x225c4970,
- 0x225d0971,
- 0x225d4974,
- 0x225d8975,
- 0x225dc976,
- 0x225e0977,
- 0x225e4978,
- 0x225f0979,
- 0x225f497c,
- 0x2260097d,
- 0x22604980,
- 0x22608981,
- 0x2260c982,
- 0x22610983,
- 0x22614984,
- 0x2618985,
- 0x2261c986,
- 0x22628987,
- 0x2262c98a,
- 0x263498b,
- 0x2264498d,
- 0x22648991,
- 0x2654992,
- 0x22658995,
- 0x265c996,
+ 0x1f6c7d5,
+ 0x1fb87db,
+ 0x1fd47ee,
+ 0x1fd87f5,
+ 0x1fdc7f6,
+ 0x1fe87f7,
+ 0x20247fa,
+ 0x62028809,
+ 0x203c80a,
+ 0x205080f,
+ 0x2054814,
+ 0x2064815,
+ 0x2114819,
+ 0x2118845,
+ 0x22124846,
+ 0x2212c849,
+ 0x216484b,
+ 0x2168859,
+ 0x25b885a,
+ 0x2265896e,
+ 0x2265c996,
0x22660997,
- 0x267c998,
- 0x269499f,
- 0x26989a5,
- 0x26a89a6,
- 0x26b09aa,
- 0x26e49ac,
- 0x26e89b9,
- 0x26f89ba,
- 0x27909be,
- 0x227949e4,
- 0x279c9e5,
- 0x27a09e7,
- 0x27b89e8,
- 0x27cc9ee,
- 0x27f49f3,
- 0x28149fd,
- 0x2844a05,
- 0x286ca11,
+ 0x2266c998,
+ 0x2267099b,
+ 0x2267c99c,
+ 0x2268099f,
+ 0x226849a0,
+ 0x226889a1,
+ 0x2268c9a2,
+ 0x226909a3,
+ 0x2269c9a4,
+ 0x226a09a7,
+ 0x226ac9a8,
+ 0x226b09ab,
+ 0x226b49ac,
+ 0x226b89ad,
+ 0x226c49ae,
+ 0x226c89b1,
+ 0x226cc9b2,
+ 0x226d09b3,
+ 0x26d49b4,
+ 0x226d89b5,
+ 0x226e49b6,
+ 0x226e89b9,
+ 0x26f09ba,
+ 0x227089bc,
+ 0x2270c9c2,
+ 0x27189c3,
+ 0x2271c9c6,
+ 0x27209c7,
+ 0x227249c8,
+ 0x27409c9,
+ 0x27589d0,
+ 0x275c9d6,
+ 0x276c9d7,
+ 0x27749db,
+ 0x27a89dd,
+ 0x27ac9ea,
+ 0x27bc9eb,
+ 0x28609ef,
+ 0x22864a18,
+ 0x286ca19,
0x2870a1b,
- 0x2894a1c,
- 0x2898a25,
- 0x28aca26,
- 0x28b0a2b,
- 0x28b4a2c,
- 0x28d4a2d,
- 0x28eca35,
- 0x28f0a3b,
- 0x228f4a3c,
- 0x28f8a3d,
- 0x2908a3e,
- 0x290ca42,
- 0x2984a43,
- 0x29a0a61,
- 0x29aca68,
- 0x29c0a6b,
- 0x29d8a70,
- 0x29eca76,
- 0x2a04a7b,
- 0x2a1ca81,
- 0x2a34a87,
- 0x2a50a8d,
- 0x2a68a94,
- 0x2ac8a9a,
+ 0x2888a1c,
+ 0x289ca22,
+ 0x28c4a27,
+ 0x28e4a31,
+ 0x2914a39,
+ 0x293ca45,
+ 0x2940a4f,
+ 0x2964a50,
+ 0x2968a59,
+ 0x297ca5a,
+ 0x2980a5f,
+ 0x2984a60,
+ 0x29a4a61,
+ 0x29c0a69,
+ 0x29c4a70,
+ 0x229c8a71,
+ 0x29cca72,
+ 0x29d0a73,
+ 0x29e0a74,
+ 0x29e4a78,
+ 0x2a5ca79,
+ 0x2a78a97,
+ 0x2a88a9e,
+ 0x2a9caa2,
+ 0x2ab4aa7,
+ 0x2ac8aad,
0x2ae0ab2,
0x2ae4ab8,
- 0x2af8ab9,
- 0x2b3cabe,
- 0x2bbcacf,
- 0x2be8aef,
- 0x2becafa,
- 0x2bf4afb,
- 0x2c14afd,
- 0x2c18b05,
- 0x2c38b06,
- 0x2c40b0e,
- 0x2c78b10,
- 0x2cb8b1e,
- 0x2cbcb2e,
- 0x2d0cb2f,
- 0x2d10b43,
- 0x22d14b44,
- 0x2d2cb45,
- 0x2d50b4b,
- 0x2d70b54,
- 0x3334b5c,
- 0x3340ccd,
- 0x3360cd0,
- 0x351ccd8,
- 0x35ecd47,
- 0x365cd7b,
- 0x36b4d97,
- 0x379cdad,
- 0x37f4de7,
- 0x3830dfd,
- 0x392ce0c,
- 0x39f8e4b,
- 0x3a90e7e,
- 0x3b20ea4,
- 0x3b84ec8,
- 0x3dbcee1,
- 0x3e74f6f,
- 0x3f40f9d,
- 0x3f8cfd0,
- 0x4014fe3,
- 0x4051005,
- 0x40a1014,
- 0x4119028,
- 0x6411d046,
- 0x64121047,
- 0x64125048,
- 0x41a1049,
- 0x41fd068,
- 0x427907f,
- 0x42f109e,
- 0x43710bc,
- 0x43dd0dc,
- 0x45090f7,
- 0x4561142,
- 0x64565158,
- 0x45fd159,
- 0x468517f,
- 0x46d11a1,
- 0x47391b4,
- 0x47e11ce,
- 0x48a91f8,
- 0x491122a,
- 0x4a25244,
- 0x64a29289,
- 0x64a2d28a,
- 0x4a8928b,
- 0x4ae52a2,
- 0x4b752b9,
- 0x4bf12dd,
- 0x4c352fc,
- 0x4d1930d,
- 0x4d4d346,
- 0x4dad353,
- 0x4e2136b,
- 0x4ea9388,
- 0x4ee93aa,
- 0x4f593ba,
- 0x64f5d3d6,
- 0x64f613d7,
- 0x24f653d8,
- 0x4f7d3d9,
- 0x4f993df,
- 0x4fdd3e6,
- 0x4fed3f7,
- 0x50053fb,
- 0x507d401,
- 0x508541f,
- 0x5099421,
- 0x50b1426,
- 0x50d942c,
- 0x50dd436,
- 0x50e5437,
- 0x50f9439,
- 0x511543e,
- 0x5119445,
- 0x5121446,
- 0x515d448,
- 0x5171457,
+ 0x2afcab9,
+ 0x2b14abf,
+ 0x2b30ac5,
+ 0x2b48acc,
+ 0x2ba8ad2,
+ 0x2bc0aea,
+ 0x2bc4af0,
+ 0x2bd8af1,
+ 0x2c1caf6,
+ 0x2c9cb07,
+ 0x2cc8b27,
+ 0x2cccb32,
+ 0x2cd4b33,
+ 0x2cf4b35,
+ 0x2cf8b3d,
+ 0x2d18b3e,
+ 0x2d20b46,
+ 0x2d5cb48,
+ 0x2d9cb57,
+ 0x2da0b67,
+ 0x2e00b68,
+ 0x2e04b80,
+ 0x22e08b81,
+ 0x2e20b82,
+ 0x2e44b88,
+ 0x2e64b91,
+ 0x3428b99,
+ 0x3434d0a,
+ 0x3454d0d,
+ 0x3610d15,
+ 0x36e0d84,
+ 0x3750db8,
+ 0x37a8dd4,
+ 0x3890dea,
+ 0x38e8e24,
+ 0x3924e3a,
+ 0x3a20e49,
+ 0x3aece88,
+ 0x3b84ebb,
+ 0x3c14ee1,
+ 0x3c78f05,
+ 0x3eb0f1e,
+ 0x3f68fac,
+ 0x4034fda,
+ 0x408100d,
+ 0x4109020,
+ 0x4145042,
+ 0x4195051,
+ 0x420d065,
+ 0x64211083,
+ 0x64215084,
+ 0x64219085,
+ 0x4295086,
+ 0x42f10a5,
+ 0x436d0bc,
+ 0x43e50db,
+ 0x44650f9,
+ 0x44d1119,
+ 0x45fd134,
+ 0x465517f,
+ 0x64659195,
+ 0x46f1196,
+ 0x47791bc,
+ 0x47c51de,
+ 0x482d1f1,
+ 0x48d520b,
+ 0x499d235,
+ 0x4a05267,
+ 0x4b19281,
+ 0x64b1d2c6,
+ 0x64b212c7,
+ 0x4b7d2c8,
+ 0x4bd92df,
+ 0x4c692f6,
+ 0x4ce531a,
+ 0x4d29339,
+ 0x4e0d34a,
+ 0x4e41383,
+ 0x4ea1390,
+ 0x4f153a8,
+ 0x4f9d3c5,
+ 0x4fdd3e7,
+ 0x504d3f7,
+ 0x65051413,
+ 0x65055414,
+ 0x25059415,
+ 0x5071416,
+ 0x508d41c,
+ 0x50d1423,
+ 0x50e1434,
+ 0x50f9438,
+ 0x517143e,
0x517945c,
- 0x518145e,
- 0x5185460,
- 0x51a9461,
- 0x51cd46a,
- 0x51e5473,
- 0x51e9479,
- 0x51f147a,
- 0x51f547c,
- 0x524d47d,
- 0x5271493,
- 0x529149c,
- 0x52ad4a4,
- 0x52bd4ab,
- 0x52d14af,
- 0x52d54b4,
- 0x52dd4b5,
- 0x52f14b7,
- 0x53014bc,
- 0x53054c0,
- 0x53214c1,
- 0x5bb14c8,
- 0x5be96ec,
- 0x5c156fa,
- 0x5c2d705,
- 0x5c4d70b,
- 0x5c6d713,
- 0x5cb171b,
- 0x5cb972c,
- 0x25cbd72e,
- 0x25cc172f,
- 0x5cc5730,
- 0x5e01731,
- 0x25e05780,
- 0x25e11781,
- 0x25e19784,
- 0x25e25786,
- 0x5e29789,
- 0x5e2d78a,
- 0x5e5578b,
- 0x5e7d795,
- 0x5e8179f,
- 0x5eb97a0,
- 0x5ecd7ae,
- 0x6a257b3,
- 0x6a29a89,
- 0x6a2da8a,
- 0x26a31a8b,
- 0x6a35a8c,
- 0x26a39a8d,
- 0x6a3da8e,
- 0x26a49a8f,
- 0x6a4da92,
- 0x6a51a93,
- 0x26a55a94,
- 0x6a59a95,
- 0x26a61a96,
- 0x6a65a98,
- 0x6a69a99,
- 0x26a79a9a,
- 0x6a7da9e,
- 0x6a81a9f,
- 0x6a85aa0,
- 0x6a89aa1,
- 0x26a8daa2,
- 0x6a91aa3,
- 0x6a95aa4,
- 0x6a99aa5,
- 0x6a9daa6,
- 0x26aa5aa7,
- 0x6aa9aa9,
- 0x6aadaaa,
- 0x6ab1aab,
- 0x26ab5aac,
- 0x6ab9aad,
- 0x26ac1aae,
- 0x26ac5ab0,
- 0x6ae1ab1,
- 0x6aedab8,
- 0x6b2dabb,
- 0x6b31acb,
- 0x6b55acc,
+ 0x518d45e,
+ 0x51a5463,
+ 0x51cd469,
+ 0x51d1473,
+ 0x51d9474,
+ 0x51ed476,
+ 0x520947b,
+ 0x520d482,
+ 0x5215483,
+ 0x5251485,
+ 0x5265494,
+ 0x526d499,
+ 0x527549b,
+ 0x527949d,
+ 0x529d49e,
+ 0x52c14a7,
+ 0x52d94b0,
+ 0x52dd4b6,
+ 0x52e54b7,
+ 0x52e94b9,
+ 0x534d4ba,
+ 0x53514d3,
+ 0x53754d4,
+ 0x53954dd,
+ 0x53b14e5,
+ 0x53c14ec,
+ 0x53d54f0,
+ 0x53d94f5,
+ 0x53e14f6,
+ 0x53f54f8,
+ 0x54054fd,
+ 0x5409501,
+ 0x5425502,
+ 0x5cb5509,
+ 0x5ced72d,
+ 0x5d1973b,
+ 0x5d31746,
+ 0x5d5174c,
+ 0x5d71754,
+ 0x5db575c,
+ 0x5dbd76d,
+ 0x25dc176f,
+ 0x25dc5770,
+ 0x5dcd771,
+ 0x5f29773,
+ 0x25f2d7ca,
+ 0x25f3d7cb,
+ 0x25f457cf,
+ 0x25f517d1,
+ 0x5f557d4,
+ 0x5f597d5,
+ 0x5f817d6,
+ 0x5fa97e0,
+ 0x5fad7ea,
+ 0x5fe57eb,
+ 0x5ff97f9,
+ 0x6b517fe,
+ 0x6b55ad4,
0x6b59ad5,
- 0x6cc1ad6,
- 0x26cc5b30,
- 0x26ccdb31,
- 0x26cd1b33,
- 0x26cd5b34,
- 0x6cddb35,
- 0x6db9b37,
- 0x6dbdb6e,
- 0x6de9b6f,
- 0x6dedb7a,
- 0x6e0db7b,
- 0x6e19b83,
- 0x6e39b86,
- 0x6e71b8e,
- 0x7109b9c,
- 0x71c5c42,
- 0x71d9c71,
- 0x720dc76,
- 0x723dc83,
- 0x7259c8f,
- 0x727dc96,
- 0x7299c9f,
- 0x72b5ca6,
- 0x72d9cad,
- 0x72e9cb6,
- 0x72edcba,
- 0x7321cbb,
- 0x733dcc8,
- 0x7359ccf,
- 0x737dcd6,
- 0x739dcdf,
- 0x73b1ce7,
- 0x73c5cec,
- 0x73c9cf1,
- 0x73e9cf2,
- 0x748dcfa,
- 0x74a9d23,
- 0x74c9d2a,
- 0x74cdd32,
- 0x74d1d33,
- 0x74d5d34,
- 0x74e9d35,
- 0x7509d3a,
- 0x7515d42,
- 0x7519d45,
- 0x7549d46,
- 0x75c9d52,
- 0x75ddd72,
- 0x75e1d77,
- 0x75f9d78,
- 0x75fdd7e,
- 0x7609d7f,
- 0x760dd82,
- 0x7629d83,
- 0x7665d8a,
- 0x7669d99,
- 0x7689d9a,
- 0x76d9da2,
- 0x76f1db6,
- 0x7745dbc,
- 0x7749dd1,
- 0x774ddd2,
- 0x7751dd3,
- 0x7795dd4,
- 0x77a5de5,
- 0x77ddde9,
- 0x780ddf7,
- 0x7955e03,
- 0x7979e55,
- 0x79a5e5e,
- 0x79b1e69,
- 0x79b9e6c,
- 0x7ac9e6e,
- 0x7ad5eb2,
- 0x7ae1eb5,
- 0x7aedeb8,
- 0x7af9ebb,
- 0x7b05ebe,
- 0x7b11ec1,
- 0x7b1dec4,
- 0x7b29ec7,
- 0x7b35eca,
- 0x7b41ecd,
- 0x7b4ded0,
- 0x7b59ed3,
- 0x7b65ed6,
- 0x7b6ded9,
- 0x7b79edb,
- 0x7b85ede,
- 0x7b91ee1,
- 0x7b9dee4,
- 0x7ba9ee7,
+ 0x26b5dad6,
+ 0x6b61ad7,
+ 0x26b65ad8,
+ 0x6b69ad9,
+ 0x26b75ada,
+ 0x6b79add,
+ 0x6b7dade,
+ 0x26b81adf,
+ 0x6b85ae0,
+ 0x26b8dae1,
+ 0x6b91ae3,
+ 0x6b95ae4,
+ 0x26ba5ae5,
+ 0x6ba9ae9,
+ 0x6badaea,
+ 0x6bb1aeb,
+ 0x6bb5aec,
+ 0x26bb9aed,
+ 0x6bbdaee,
+ 0x6bc1aef,
+ 0x6bc5af0,
+ 0x6bc9af1,
+ 0x26bd1af2,
+ 0x6bd5af4,
+ 0x6bd9af5,
+ 0x6bddaf6,
+ 0x26be1af7,
+ 0x6be5af8,
+ 0x26bedaf9,
+ 0x26bf1afb,
+ 0x6c0dafc,
+ 0x6c19b03,
+ 0x6c59b06,
+ 0x6c5db16,
+ 0x6c81b17,
+ 0x6c85b20,
+ 0x6c89b21,
+ 0x6e01b22,
+ 0x26e05b80,
+ 0x26e0db81,
+ 0x26e11b83,
+ 0x26e15b84,
+ 0x6e1db85,
+ 0x6ef9b87,
+ 0x26efdbbe,
+ 0x6f01bbf,
+ 0x6f2dbc0,
+ 0x6f31bcb,
+ 0x6f51bcc,
+ 0x6f5dbd4,
+ 0x6f7dbd7,
+ 0x6fb5bdf,
+ 0x724dbed,
+ 0x7309c93,
+ 0x731dcc2,
+ 0x7351cc7,
+ 0x7381cd4,
+ 0x739dce0,
+ 0x73c1ce7,
+ 0x73ddcf0,
+ 0x73f9cf7,
+ 0x741dcfe,
+ 0x742dd07,
+ 0x7431d0b,
+ 0x7465d0c,
+ 0x7481d19,
+ 0x74edd20,
+ 0x274f1d3b,
+ 0x7515d3c,
+ 0x7535d45,
+ 0x7549d4d,
+ 0x755dd52,
+ 0x7561d57,
+ 0x7581d58,
+ 0x7625d60,
+ 0x7641d89,
+ 0x7661d90,
+ 0x7665d98,
+ 0x766dd99,
+ 0x7671d9b,
+ 0x7685d9c,
+ 0x76a5da1,
+ 0x76b1da9,
+ 0x76bddac,
+ 0x76eddaf,
+ 0x77bddbb,
+ 0x77c1def,
+ 0x77d5df0,
+ 0x77d9df5,
+ 0x77f1df6,
+ 0x77f5dfc,
+ 0x7801dfd,
+ 0x7805e00,
+ 0x7821e01,
+ 0x785de08,
+ 0x7861e17,
+ 0x7881e18,
+ 0x78d1e20,
+ 0x78ede34,
+ 0x7941e3b,
+ 0x7945e50,
+ 0x7949e51,
+ 0x794de52,
+ 0x7991e53,
+ 0x79a1e64,
+ 0x79dde68,
+ 0x79e1e77,
+ 0x7a11e78,
+ 0x7b59e84,
+ 0x7b7ded6,
+ 0x7ba9edf,
0x7bb5eea,
- 0x7bc1eed,
- 0x7bcdef0,
- 0x7bd9ef3,
- 0x7be5ef6,
- 0x7bf1ef9,
- 0x7bfdefc,
- 0x7c09eff,
- 0x7c15f02,
- 0x7c21f05,
- 0x7c2df08,
- 0x7c39f0b,
- 0x7c41f0e,
- 0x7c4df10,
- 0x7c59f13,
- 0x7c65f16,
- 0x7c71f19,
- 0x7c7df1c,
- 0x7c89f1f,
- 0x7c95f22,
- 0x7ca1f25,
- 0x7cadf28,
- 0x7cb9f2b,
- 0x7cc5f2e,
- 0x7cd1f31,
- 0x7cddf34,
- 0x7ce5f37,
+ 0x7bbdeed,
+ 0x7ccdeef,
+ 0x7cd9f33,
+ 0x7ce5f36,
0x7cf1f39,
0x7cfdf3c,
0x7d09f3f,
@@ -9067,27 +9181,73 @@ var children = [...]uint32{
0x7d2df48,
0x7d39f4b,
0x7d45f4e,
- 0x7d49f51,
- 0x7d55f52,
- 0x7d6df55,
- 0x7d71f5b,
- 0x7d81f5c,
- 0x7d99f60,
- 0x7dddf66,
- 0x7df1f77,
- 0x7e25f7c,
- 0x7e35f89,
- 0x7e51f8d,
- 0x7e69f94,
- 0x7e6df9a,
- 0x27eb1f9b,
- 0x7eb5fac,
- 0x7ee1fad,
- 0x7ee5fb8,
+ 0x7d51f51,
+ 0x7d5df54,
+ 0x7d69f57,
+ 0x7d71f5a,
+ 0x7d7df5c,
+ 0x7d89f5f,
+ 0x7d95f62,
+ 0x7da1f65,
+ 0x7dadf68,
+ 0x7db9f6b,
+ 0x7dc5f6e,
+ 0x7dd1f71,
+ 0x7dddf74,
+ 0x7de9f77,
+ 0x7df5f7a,
+ 0x7e01f7d,
+ 0x7e0df80,
+ 0x7e19f83,
+ 0x7e25f86,
+ 0x7e31f89,
+ 0x7e3df8c,
+ 0x7e45f8f,
+ 0x7e51f91,
+ 0x7e5df94,
+ 0x7e69f97,
+ 0x7e75f9a,
+ 0x7e81f9d,
+ 0x7e8dfa0,
+ 0x7e99fa3,
+ 0x7ea5fa6,
+ 0x7eb1fa9,
+ 0x7ebdfac,
+ 0x7ec9faf,
+ 0x7ed5fb2,
+ 0x7ee1fb5,
+ 0x7ee9fb8,
+ 0x7ef5fba,
+ 0x7f01fbd,
+ 0x7f0dfc0,
+ 0x7f19fc3,
+ 0x7f25fc6,
+ 0x7f31fc9,
+ 0x7f3dfcc,
+ 0x7f49fcf,
+ 0x7f4dfd2,
+ 0x7f59fd3,
+ 0x7f71fd6,
+ 0x7f75fdc,
+ 0x7f85fdd,
+ 0x7f9dfe1,
+ 0x7fe1fe7,
+ 0x7ff5ff8,
+ 0x8029ffd,
+ 0x803a00a,
+ 0x805a00e,
+ 0x8072016,
+ 0x808a01c,
+ 0x808e022,
+ 0x280d2023,
+ 0x80d6034,
+ 0x8102035,
+ 0x8106040,
+ 0x811a041,
}
-// max children 466 (capacity 511)
-// max text offset 28023 (capacity 32767)
+// max children 479 (capacity 511)
+// max text offset 28411 (capacity 32767)
// max text length 36 (capacity 63)
-// max hi 8121 (capacity 16383)
-// max lo 8120 (capacity 16383)
+// max hi 8262 (capacity 16383)
+// max lo 8257 (capacity 16383)
diff --git a/vendor/golang.org/x/net/publicsuffix/table_test.go b/vendor/golang.org/x/net/publicsuffix/table_test.go
index f60c80e79..416512cb9 100644
--- a/vendor/golang.org/x/net/publicsuffix/table_test.go
+++ b/vendor/golang.org/x/net/publicsuffix/table_test.go
@@ -148,6 +148,7 @@ var rules = [...]string{
"gov.ar",
"int.ar",
"mil.ar",
+ "musica.ar",
"net.ar",
"org.ar",
"tur.ar",
@@ -317,6 +318,7 @@ var rules = [...]string{
"art.br",
"ato.br",
"b.br",
+ "belem.br",
"bio.br",
"blog.br",
"bmd.br",
@@ -325,6 +327,8 @@ var rules = [...]string{
"cnt.br",
"com.br",
"coop.br",
+ "cri.br",
+ "def.br",
"ecn.br",
"eco.br",
"edu.br",
@@ -335,6 +339,7 @@ var rules = [...]string{
"eti.br",
"far.br",
"flog.br",
+ "floripa.br",
"fm.br",
"fnd.br",
"fot.br",
@@ -342,9 +347,37 @@ var rules = [...]string{
"g12.br",
"ggf.br",
"gov.br",
+ "ac.gov.br",
+ "al.gov.br",
+ "am.gov.br",
+ "ap.gov.br",
+ "ba.gov.br",
+ "ce.gov.br",
+ "df.gov.br",
+ "es.gov.br",
+ "go.gov.br",
+ "ma.gov.br",
+ "mg.gov.br",
+ "ms.gov.br",
+ "mt.gov.br",
+ "pa.gov.br",
+ "pb.gov.br",
+ "pe.gov.br",
+ "pi.gov.br",
+ "pr.gov.br",
+ "rj.gov.br",
+ "rn.gov.br",
+ "ro.gov.br",
+ "rr.gov.br",
+ "rs.gov.br",
+ "sc.gov.br",
+ "se.gov.br",
+ "sp.gov.br",
+ "to.gov.br",
"imb.br",
"ind.br",
"inf.br",
+ "jampa.br",
"jor.br",
"jus.br",
"leg.br",
@@ -360,6 +393,7 @@ var rules = [...]string{
"ntr.br",
"odo.br",
"org.br",
+ "poa.br",
"ppg.br",
"pro.br",
"psc.br",
@@ -367,6 +401,7 @@ var rules = [...]string{
"qsl.br",
"radio.br",
"rec.br",
+ "recife.br",
"slg.br",
"srv.br",
"taxi.br",
@@ -376,6 +411,7 @@ var rules = [...]string{
"tur.br",
"tv.br",
"vet.br",
+ "vix.br",
"vlog.br",
"wiki.br",
"zlg.br",
@@ -3943,6 +3979,7 @@ var rules = [...]string{
"name",
"nc",
"asso.nc",
+ "nom.nc",
"ne",
"net",
"nf",
@@ -5262,38 +5299,6 @@ var rules = [...]string{
"saotome.st",
"store.st",
"su",
- "adygeya.su",
- "arkhangelsk.su",
- "balashov.su",
- "bashkiria.su",
- "bryansk.su",
- "dagestan.su",
- "grozny.su",
- "ivanovo.su",
- "kalmykia.su",
- "kaluga.su",
- "karelia.su",
- "khakassia.su",
- "krasnodar.su",
- "kurgan.su",
- "lenug.su",
- "mordovia.su",
- "msk.su",
- "murmansk.su",
- "nalchik.su",
- "nov.su",
- "obninsk.su",
- "penza.su",
- "pokrovsk.su",
- "sochi.su",
- "spb.su",
- "togliatti.su",
- "troitsk.su",
- "tula.su",
- "tuva.su",
- "vladikavkaz.su",
- "vladimir.su",
- "vologda.su",
"sv",
"com.sv",
"edu.sv",
@@ -5900,6 +5905,12 @@ var rules = [...]string{
"xn--ogbpf8fl",
"xn--mgbtf8fl",
"xn--o3cw4h",
+ "xn--12c1fe0br.xn--o3cw4h",
+ "xn--12co0c3b4eva.xn--o3cw4h",
+ "xn--h3cuzk1di.xn--o3cw4h",
+ "xn--o3cyx2a.xn--o3cw4h",
+ "xn--m3ch0j3a.xn--o3cw4h",
+ "xn--12cfi8ixb8l.xn--o3cw4h",
"xn--pgbs0dh",
"xn--kpry57d",
"xn--kprw13d",
@@ -5937,7 +5948,12 @@ var rules = [...]string{
"net.zm",
"org.zm",
"sch.zm",
- "*.zw",
+ "zw",
+ "ac.zw",
+ "co.zw",
+ "gov.zw",
+ "mil.zw",
+ "org.zw",
"aaa",
"aarp",
"abarth",
@@ -6248,7 +6264,6 @@ var rules = [...]string{
"durban",
"dvag",
"dvr",
- "dwg",
"earth",
"eat",
"eco",
@@ -6438,7 +6453,6 @@ var rules = [...]string{
"icu",
"ieee",
"ifm",
- "iinet",
"ikano",
"imamat",
"imdb",
@@ -6628,7 +6642,6 @@ var rules = [...]string{
"mtpc",
"mtr",
"mutual",
- "mutuelle",
"nab",
"nadex",
"nagoya",
@@ -6686,7 +6699,6 @@ var rules = [...]string{
"oracle",
"orange",
"organic",
- "orientexpress",
"origins",
"osaka",
"otsuka",
@@ -6795,6 +6807,7 @@ var rules = [...]string{
"rogers",
"room",
"rsvp",
+ "rugby",
"ruhr",
"run",
"rwe",
@@ -6937,7 +6950,6 @@ var rules = [...]string{
"thd",
"theater",
"theatre",
- "theguardian",
"tiaa",
"tickets",
"tienda",
@@ -7062,7 +7074,6 @@ var rules = [...]string{
"xn--42c2d9a",
"xn--45q11c",
"xn--4gbrim",
- "xn--4gq48lf9j",
"xn--55qw42g",
"xn--55qx5d",
"xn--5su34j936bgsg",
@@ -7165,6 +7176,9 @@ var rules = [...]string{
"zippo",
"zone",
"zuerich",
+ "cc.ua",
+ "inf.ua",
+ "ltd.ua",
"beep.pl",
"*.compute.estate",
"*.alces.network",
@@ -7178,7 +7192,7 @@ var rules = [...]string{
"*.elasticbeanstalk.com",
"*.elb.amazonaws.com",
"*.elb.amazonaws.com.cn",
- "*.s3.amazonaws.com",
+ "s3.amazonaws.com",
"s3-ap-northeast-1.amazonaws.com",
"s3-ap-northeast-2.amazonaws.com",
"s3-ap-south-1.amazonaws.com",
@@ -7187,6 +7201,7 @@ var rules = [...]string{
"s3-ca-central-1.amazonaws.com",
"s3-eu-central-1.amazonaws.com",
"s3-eu-west-1.amazonaws.com",
+ "s3-eu-west-2.amazonaws.com",
"s3-external-1.amazonaws.com",
"s3-fips-us-gov-west-1.amazonaws.com",
"s3-sa-east-1.amazonaws.com",
@@ -7199,6 +7214,7 @@ var rules = [...]string{
"s3.cn-north-1.amazonaws.com.cn",
"s3.ca-central-1.amazonaws.com",
"s3.eu-central-1.amazonaws.com",
+ "s3.eu-west-2.amazonaws.com",
"s3.us-east-2.amazonaws.com",
"s3.dualstack.ap-northeast-1.amazonaws.com",
"s3.dualstack.ap-northeast-2.amazonaws.com",
@@ -7208,6 +7224,7 @@ var rules = [...]string{
"s3.dualstack.ca-central-1.amazonaws.com",
"s3.dualstack.eu-central-1.amazonaws.com",
"s3.dualstack.eu-west-1.amazonaws.com",
+ "s3.dualstack.eu-west-2.amazonaws.com",
"s3.dualstack.sa-east-1.amazonaws.com",
"s3.dualstack.us-east-1.amazonaws.com",
"s3.dualstack.us-east-2.amazonaws.com",
@@ -7223,6 +7240,7 @@ var rules = [...]string{
"s3-website.ap-south-1.amazonaws.com",
"s3-website.ca-central-1.amazonaws.com",
"s3-website.eu-central-1.amazonaws.com",
+ "s3-website.eu-west-2.amazonaws.com",
"s3-website.us-east-2.amazonaws.com",
"t3l3p0rt.net",
"tele.amune.org",
@@ -7234,10 +7252,18 @@ var rules = [...]string{
"sweetpepper.org",
"myasustor.com",
"myfritz.net",
+ "*.awdev.ca",
+ "*.advisor.ws",
"backplaneapp.io",
"betainabox.com",
"bnr.la",
"boxfuse.io",
+ "square7.ch",
+ "bplaced.com",
+ "bplaced.de",
+ "square7.de",
+ "bplaced.net",
+ "square7.net",
"browsersafetymark.io",
"mycd.eu",
"ae.org",
@@ -7277,6 +7303,7 @@ var rules = [...]string{
"certmgr.org",
"xenapponazure.com",
"virtueeldomein.nl",
+ "c66.me",
"cloudcontrolled.com",
"cloudcontrolapp.com",
"co.ca",
@@ -7299,7 +7326,6 @@ var rules = [...]string{
"cloudns.us",
"co.nl",
"co.no",
- "*.platform.sh",
"dyn.cosidns.de",
"dynamisches-dns.de",
"dnsupdater.de",
@@ -7315,6 +7341,7 @@ var rules = [...]string{
"cyon.link",
"cyon.site",
"daplie.me",
+ "localhost.daplie.me",
"biz.dk",
"co.dk",
"firm.dk",
@@ -7617,6 +7644,8 @@ var rules = [...]string{
"dyn.home-webserver.de",
"myhome-server.de",
"ddnss.org",
+ "definima.net",
+ "definima.io",
"dynv6.net",
"e4.cz",
"enonic.io",
@@ -7679,18 +7708,102 @@ var rules = [...]string{
"us.eu.org",
"eu-1.evennode.com",
"eu-2.evennode.com",
+ "eu-3.evennode.com",
"us-1.evennode.com",
"us-2.evennode.com",
+ "us-3.evennode.com",
+ "twmail.cc",
+ "twmail.net",
+ "twmail.org",
+ "mymailer.com.tw",
+ "url.tw",
"apps.fbsbx.com",
+ "ru.net",
+ "adygeya.ru",
+ "bashkiria.ru",
+ "bir.ru",
+ "cbg.ru",
+ "com.ru",
+ "dagestan.ru",
+ "grozny.ru",
+ "kalmykia.ru",
+ "kustanai.ru",
+ "marine.ru",
+ "mordovia.ru",
+ "msk.ru",
+ "mytis.ru",
+ "nalchik.ru",
+ "nov.ru",
+ "pyatigorsk.ru",
+ "spb.ru",
+ "vladikavkaz.ru",
+ "vladimir.ru",
+ "abkhazia.su",
+ "adygeya.su",
+ "aktyubinsk.su",
+ "arkhangelsk.su",
+ "armenia.su",
+ "ashgabad.su",
+ "azerbaijan.su",
+ "balashov.su",
+ "bashkiria.su",
+ "bryansk.su",
+ "bukhara.su",
+ "chimkent.su",
+ "dagestan.su",
+ "east-kazakhstan.su",
+ "exnet.su",
+ "georgia.su",
+ "grozny.su",
+ "ivanovo.su",
+ "jambyl.su",
+ "kalmykia.su",
+ "kaluga.su",
+ "karacol.su",
+ "karaganda.su",
+ "karelia.su",
+ "khakassia.su",
+ "krasnodar.su",
+ "kurgan.su",
+ "kustanai.su",
+ "lenug.su",
+ "mangyshlak.su",
+ "mordovia.su",
+ "msk.su",
+ "murmansk.su",
+ "nalchik.su",
+ "navoi.su",
+ "north-kazakhstan.su",
+ "nov.su",
+ "obninsk.su",
+ "penza.su",
+ "pokrovsk.su",
+ "sochi.su",
+ "spb.su",
+ "tashkent.su",
+ "termez.su",
+ "togliatti.su",
+ "troitsk.su",
+ "tselinograd.su",
+ "tula.su",
+ "tuva.su",
+ "vladikavkaz.su",
+ "vladimir.su",
+ "vologda.su",
+ "fastlylb.net",
+ "map.fastlylb.net",
+ "freetls.fastly.net",
"map.fastly.net",
"a.prod.fastly.net",
"global.prod.fastly.net",
"a.ssl.fastly.net",
"b.ssl.fastly.net",
"global.ssl.fastly.net",
- "fastlylb.net",
- "map.fastlylb.net",
"fhapp.xyz",
+ "fedorainfracloud.org",
+ "fedorapeople.org",
+ "cloud.fedoraproject.org",
+ "filegear.me",
"firebaseapp.com",
"flynnhub.com",
"freebox-os.com",
@@ -7795,6 +7908,7 @@ var rules = [...]string{
"blogspot.ug",
"blogspot.vn",
"cloudfunctions.net",
+ "cloud.goog",
"codespot.com",
"googleapis.com",
"googlecode.com",
@@ -7807,6 +7921,7 @@ var rules = [...]string{
"hepforge.org",
"herokuapp.com",
"herokussl.com",
+ "moonscale.net",
"iki.fi",
"biz.at",
"info.at",
@@ -7837,6 +7952,7 @@ var rules = [...]string{
"se.leg.br",
"sp.leg.br",
"to.leg.br",
+ "ipifony.net",
"*.triton.zone",
"*.cns.joyent.com",
"js.org",
@@ -7844,7 +7960,16 @@ var rules = [...]string{
"knightpoint.systems",
"co.krd",
"edu.krd",
+ "barsy.bg",
+ "barsyonline.com",
+ "barsy.de",
+ "barsy.eu",
+ "barsy.in",
+ "barsy.net",
+ "barsy.online",
+ "barsy.support",
"*.magentosite.cloud",
+ "hb.cldmail.ru",
"meteorapp.com",
"eu.meteorapp.com",
"co.pl",
@@ -7942,7 +8067,10 @@ var rules = [...]string{
"sytes.net",
"webhop.me",
"zapto.org",
+ "nodum.co",
+ "nodum.io",
"nyc.mn",
+ "cya.gg",
"nid.io",
"opencraft.hosting",
"operaunite.com",
@@ -7961,6 +8089,8 @@ var rules = [...]string{
"gotpantheon.com",
"mypep.link",
"on-web.fr",
+ "*.platform.sh",
+ "*.platformsh.site",
"xen.prgmr.com",
"priv.at",
"protonet.io",
@@ -7969,6 +8099,9 @@ var rules = [...]string{
"dev-myqnapcloud.com",
"alpha-myqnapcloud.com",
"myqnapcloud.com",
+ "*.quipelements.com",
+ "vapor.cloud",
+ "vaporcloud.io",
"rackmaze.com",
"rackmaze.net",
"rhcloud.com",
@@ -7989,6 +8122,7 @@ var rules = [...]string{
"my-firewall.org",
"myfirewall.org",
"spdns.org",
+ "*.sensiosite.cloud",
"biz.ua",
"co.ua",
"pp.ua",
@@ -8009,6 +8143,7 @@ var rules = [...]string{
"*.stolos.io",
"spacekit.io",
"stackspace.space",
+ "storj.farm",
"diskstation.me",
"dscloud.biz",
"dscloud.me",
@@ -8022,6 +8157,7 @@ var rules = [...]string{
"i234.me",
"myds.me",
"synology.me",
+ "vpnplus.to",
"taifun-dns.de",
"gda.pl",
"gdansk.pl",
@@ -8047,14 +8183,18 @@ var rules = [...]string{
"syno-ds.de",
"synology-diskstation.de",
"synology-ds.de",
+ "uber.space",
"hk.com",
"hk.org",
"ltd.hk",
"inc.hk",
"lib.de.us",
"router.management",
+ "wedeploy.io",
+ "wedeploy.me",
"remotewd.com",
"wmflabs.org",
+ "xs4all.space",
"yolasite.com",
"ybo.faith",
"yombo.me",
@@ -8066,9 +8206,6 @@ var rules = [...]string{
"za.net",
"za.org",
"now.sh",
- "cc.ua",
- "inf.ua",
- "ltd.ua",
}
var nodeLabels = [...]string{
@@ -8449,7 +8586,6 @@ var nodeLabels = [...]string{
"durban",
"dvag",
"dvr",
- "dwg",
"dz",
"earth",
"eat",
@@ -8682,7 +8818,6 @@ var nodeLabels = [...]string{
"ie",
"ieee",
"ifm",
- "iinet",
"ikano",
"il",
"im",
@@ -8929,7 +9064,6 @@ var nodeLabels = [...]string{
"mu",
"museum",
"mutual",
- "mutuelle",
"mv",
"mw",
"mx",
@@ -9009,7 +9143,6 @@ var nodeLabels = [...]string{
"orange",
"org",
"organic",
- "orientexpress",
"origins",
"osaka",
"otsuka",
@@ -9139,6 +9272,7 @@ var nodeLabels = [...]string{
"rs",
"rsvp",
"ru",
+ "rugby",
"ruhr",
"run",
"rw",
@@ -9309,7 +9443,6 @@ var nodeLabels = [...]string{
"thd",
"theater",
"theatre",
- "theguardian",
"tiaa",
"tickets",
"tienda",
@@ -9463,7 +9596,6 @@ var nodeLabels = [...]string{
"xn--45brj9c",
"xn--45q11c",
"xn--4gbrim",
- "xn--4gq48lf9j",
"xn--54b7fta0cc",
"xn--55qw42g",
"xn--55qx5d",
@@ -9762,6 +9894,7 @@ var nodeLabels = [...]string{
"gov",
"int",
"mil",
+ "musica",
"net",
"org",
"tur",
@@ -9865,6 +9998,7 @@ var nodeLabels = [...]string{
"9",
"a",
"b",
+ "barsy",
"blogspot",
"c",
"d",
@@ -9938,6 +10072,7 @@ var nodeLabels = [...]string{
"art",
"ato",
"b",
+ "belem",
"bio",
"blog",
"bmd",
@@ -9946,6 +10081,8 @@ var nodeLabels = [...]string{
"cnt",
"com",
"coop",
+ "cri",
+ "def",
"ecn",
"eco",
"edu",
@@ -9956,6 +10093,7 @@ var nodeLabels = [...]string{
"eti",
"far",
"flog",
+ "floripa",
"fm",
"fnd",
"fot",
@@ -9966,6 +10104,7 @@ var nodeLabels = [...]string{
"imb",
"ind",
"inf",
+ "jampa",
"jor",
"jus",
"leg",
@@ -9981,6 +10120,7 @@ var nodeLabels = [...]string{
"ntr",
"odo",
"org",
+ "poa",
"ppg",
"pro",
"psc",
@@ -9988,6 +10128,7 @@ var nodeLabels = [...]string{
"qsl",
"radio",
"rec",
+ "recife",
"slg",
"srv",
"taxi",
@@ -9997,6 +10138,7 @@ var nodeLabels = [...]string{
"tur",
"tv",
"vet",
+ "vix",
"vlog",
"wiki",
"zlg",
@@ -10028,6 +10170,33 @@ var nodeLabels = [...]string{
"se",
"sp",
"to",
+ "ac",
+ "al",
+ "am",
+ "ap",
+ "ba",
+ "ce",
+ "df",
+ "es",
+ "go",
+ "ma",
+ "mg",
+ "ms",
+ "mt",
+ "pa",
+ "pb",
+ "pe",
+ "pi",
+ "pr",
+ "rj",
+ "rn",
+ "ro",
+ "rr",
+ "rs",
+ "sc",
+ "se",
+ "sp",
+ "to",
"com",
"edu",
"gov",
@@ -10052,6 +10221,7 @@ var nodeLabels = [...]string{
"org",
"za",
"ab",
+ "awdev",
"bc",
"blogspot",
"co",
@@ -10075,10 +10245,12 @@ var nodeLabels = [...]string{
"game-server",
"myphotos",
"scrapping",
+ "twmail",
"gov",
"blogspot",
"blogspot",
"gotdns",
+ "square7",
"ac",
"asso",
"co",
@@ -10102,7 +10274,9 @@ var nodeLabels = [...]string{
"mil",
"magentosite",
"myfusion",
+ "sensiosite",
"statics",
+ "vapor",
"cloudns",
"co",
"com",
@@ -10167,6 +10341,7 @@ var nodeLabels = [...]string{
"int",
"mil",
"net",
+ "nodum",
"nom",
"org",
"rec",
@@ -10183,12 +10358,14 @@ var nodeLabels = [...]string{
"applinzi",
"appspot",
"ar",
+ "barsyonline",
"betainabox",
"blogdns",
"blogspot",
"blogsyte",
"bloxcms",
"bounty-full",
+ "bplaced",
"br",
"cechire",
"ciscofreak",
@@ -10401,6 +10578,7 @@ var nodeLabels = [...]string{
"qa2",
"qc",
"quicksytes",
+ "quipelements",
"rackmaze",
"remotewd",
"rhcloud",
@@ -10456,6 +10634,7 @@ var nodeLabels = [...]string{
"elb",
"eu-central-1",
"eu-west-1",
+ "eu-west-2",
"s3",
"s3-ap-northeast-1",
"s3-ap-northeast-2",
@@ -10465,6 +10644,7 @@ var nodeLabels = [...]string{
"s3-ca-central-1",
"s3-eu-central-1",
"s3-eu-west-1",
+ "s3-eu-west-2",
"s3-external-1",
"s3-fips-us-gov-west-1",
"s3-sa-east-1",
@@ -10509,6 +10689,10 @@ var nodeLabels = [...]string{
"s3",
"dualstack",
"s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
"dualstack",
"s3",
"dualstack",
@@ -10519,8 +10703,10 @@ var nodeLabels = [...]string{
"beta",
"eu-1",
"eu-2",
+ "eu-3",
"us-1",
"us-2",
+ "us-3",
"apps",
"api",
"ext",
@@ -10566,7 +10752,9 @@ var nodeLabels = [...]string{
"co",
"e4",
"realm",
+ "barsy",
"blogspot",
+ "bplaced",
"com",
"cosidns",
"dd-dns",
@@ -10599,6 +10787,7 @@ var nodeLabels = [...]string{
"my-wan",
"myhome-server",
"spdns",
+ "square7",
"syno-ds",
"synology-diskstation",
"synology-ds",
@@ -10685,6 +10874,7 @@ var nodeLabels = [...]string{
"name",
"net",
"org",
+ "barsy",
"cloudns",
"diskstation",
"mycd",
@@ -10694,6 +10884,7 @@ var nodeLabels = [...]string{
"party",
"user",
"ybo",
+ "storj",
"aland",
"blogspot",
"dy",
@@ -10737,6 +10928,7 @@ var nodeLabels = [...]string{
"org",
"pvt",
"co",
+ "cya",
"net",
"org",
"com",
@@ -10761,6 +10953,7 @@ var nodeLabels = [...]string{
"gov",
"net",
"org",
+ "cloud",
"asso",
"com",
"edu",
@@ -10905,6 +11098,7 @@ var nodeLabels = [...]string{
"ltd",
"plc",
"ac",
+ "barsy",
"blogspot",
"cloudns",
"co",
@@ -10940,6 +11134,7 @@ var nodeLabels = [...]string{
"browsersafetymark",
"com",
"dedyn",
+ "definima",
"drud",
"enonic",
"github",
@@ -10949,12 +11144,15 @@ var nodeLabels = [...]string{
"lair",
"ngrok",
"nid",
+ "nodum",
"pantheonsite",
"protonet",
"sandcats",
"shiftedit",
"spacekit",
"stolos",
+ "vaporcloud",
+ "wedeploy",
"customer",
"apps",
"com",
@@ -13319,6 +13517,7 @@ var nodeLabels = [...]string{
"blogspot",
"ac",
"brasilia",
+ "c66",
"co",
"daplie",
"ddns",
@@ -13326,6 +13525,7 @@ var nodeLabels = [...]string{
"dnsfor",
"dscloud",
"edu",
+ "filegear",
"gov",
"hopto",
"i234",
@@ -13338,7 +13538,9 @@ var nodeLabels = [...]string{
"priv",
"synology",
"webhop",
+ "wedeploy",
"yombo",
+ "localhost",
"co",
"com",
"edu",
@@ -14009,12 +14211,15 @@ var nodeLabels = [...]string{
"forgot",
"forgot",
"asso",
+ "nom",
"alwaysdata",
"at-band-camp",
"azure-mobile",
"azurewebsites",
+ "barsy",
"blogdns",
"bounceme",
+ "bplaced",
"broke-it",
"buyshouses",
"cdn77",
@@ -14024,6 +14229,7 @@ var nodeLabels = [...]string{
"cloudfunctions",
"cryptonomic",
"ddns",
+ "definima",
"dnsalias",
"dnsdojo",
"does-it",
@@ -14053,12 +14259,14 @@ var nodeLabels = [...]string{
"hu",
"in",
"in-the-band",
+ "ipifony",
"is-a-chef",
"is-a-geek",
"isa-geek",
"jp",
"kicks-ass",
"knx-server",
+ "moonscale",
"mydissent",
"myeffect",
"myfritz",
@@ -14073,6 +14281,7 @@ var nodeLabels = [...]string{
"privatizehealthinsurance",
"rackmaze",
"redirectme",
+ "ru",
"scrapper-site",
"se",
"selfip",
@@ -14081,14 +14290,17 @@ var nodeLabels = [...]string{
"serveblog",
"serveftp",
"serveminecraft",
+ "square7",
"static-access",
"sytes",
"t3l3p0rt",
"thruhere",
+ "twmail",
"uk",
"webhop",
"za",
"r",
+ "freetls",
"map",
"prod",
"ssl",
@@ -14942,6 +15154,7 @@ var nodeLabels = [...]string{
"org",
"pro",
"homelink",
+ "barsy",
"ae",
"amune",
"blogdns",
@@ -14971,6 +15184,9 @@ var nodeLabels = [...]string{
"endoftheinternet",
"eu",
"familyds",
+ "fedorainfracloud",
+ "fedorapeople",
+ "fedoraproject",
"from-me",
"game-host",
"gotdns",
@@ -15026,6 +15242,7 @@ var nodeLabels = [...]string{
"sweetpepper",
"tunk",
"tuxfamily",
+ "twmail",
"ufcfan",
"us",
"webhop",
@@ -15094,6 +15311,7 @@ var nodeLabels = [...]string{
"tr",
"uk",
"us",
+ "cloud",
"nerdpol",
"abo",
"ac",
@@ -15448,12 +15666,33 @@ var nodeLabels = [...]string{
"in",
"org",
"ac",
+ "adygeya",
+ "bashkiria",
+ "bir",
"blogspot",
+ "cbg",
+ "cldmail",
+ "com",
+ "dagestan",
"edu",
"gov",
+ "grozny",
"int",
+ "kalmykia",
+ "kustanai",
+ "marine",
"mil",
+ "mordovia",
+ "msk",
+ "mytis",
+ "nalchik",
+ "nov",
+ "pyatigorsk",
+ "spb",
"test",
+ "vladikavkaz",
+ "vladimir",
+ "hb",
"ac",
"co",
"com",
@@ -15548,6 +15787,7 @@ var nodeLabels = [...]string{
"platform",
"blogspot",
"cyon",
+ "platformsh",
"blogspot",
"com",
"edu",
@@ -15566,6 +15806,8 @@ var nodeLabels = [...]string{
"net",
"org",
"stackspace",
+ "uber",
+ "xs4all",
"co",
"com",
"consulado",
@@ -15578,38 +15820,59 @@ var nodeLabels = [...]string{
"principe",
"saotome",
"store",
+ "abkhazia",
"adygeya",
+ "aktyubinsk",
"arkhangelsk",
+ "armenia",
+ "ashgabad",
+ "azerbaijan",
"balashov",
"bashkiria",
"bryansk",
+ "bukhara",
+ "chimkent",
"dagestan",
+ "east-kazakhstan",
+ "exnet",
+ "georgia",
"grozny",
"ivanovo",
+ "jambyl",
"kalmykia",
"kaluga",
+ "karacol",
+ "karaganda",
"karelia",
"khakassia",
"krasnodar",
"kurgan",
+ "kustanai",
"lenug",
+ "mangyshlak",
"mordovia",
"msk",
"murmansk",
"nalchik",
+ "navoi",
+ "north-kazakhstan",
"nov",
"obninsk",
"penza",
"pokrovsk",
"sochi",
"spb",
+ "tashkent",
+ "termez",
"togliatti",
"troitsk",
+ "tselinograd",
"tula",
"tuva",
"vladikavkaz",
"vladimir",
"vologda",
+ "barsy",
"com",
"edu",
"gob",
@@ -15684,6 +15947,7 @@ var nodeLabels = [...]string{
"mil",
"net",
"org",
+ "vpnplus",
"av",
"bbs",
"bel",
@@ -15740,9 +16004,11 @@ var nodeLabels = [...]string{
"mil",
"net",
"org",
+ "url",
"xn--czrw28b",
"xn--uc0atv",
"xn--zf0ao64a",
+ "mymailer",
"ac",
"co",
"go",
@@ -16149,6 +16415,7 @@ var nodeLabels = [...]string{
"edu",
"net",
"org",
+ "advisor",
"com",
"dyndns",
"edu",
@@ -16162,6 +16429,12 @@ var nodeLabels = [...]string{
"xn--d1at",
"xn--o1ac",
"xn--o1ach",
+ "xn--12c1fe0br",
+ "xn--12cfi8ixb8l",
+ "xn--12co0c3b4eva",
+ "xn--h3cuzk1di",
+ "xn--m3ch0j3a",
+ "xn--o3cyx2a",
"fhapp",
"ac",
"agric",
@@ -16193,4 +16466,9 @@ var nodeLabels = [...]string{
"org",
"sch",
"triton",
+ "ac",
+ "co",
+ "gov",
+ "mil",
+ "org",
}
diff --git a/vendor/golang.org/x/net/trace/events.go b/vendor/golang.org/x/net/trace/events.go
index d8daec1a7..c646a6952 100644
--- a/vendor/golang.org/x/net/trace/events.go
+++ b/vendor/golang.org/x/net/trace/events.go
@@ -39,9 +39,9 @@ var buckets = []bucket{
}
// RenderEvents renders the HTML page typically served at /debug/events.
-// It does not do any auth checking; see AuthRequest for the default auth check
-// used by the handler registered on http.DefaultServeMux.
-// req may be nil.
+// It does not do any auth checking. The request may be nil.
+//
+// Most users will use the Events handler.
func RenderEvents(w http.ResponseWriter, req *http.Request, sensitive bool) {
now := time.Now()
data := &struct {
diff --git a/vendor/golang.org/x/net/trace/trace.go b/vendor/golang.org/x/net/trace/trace.go
index 3d9b64611..bb72a527e 100644
--- a/vendor/golang.org/x/net/trace/trace.go
+++ b/vendor/golang.org/x/net/trace/trace.go
@@ -110,30 +110,46 @@ var AuthRequest = func(req *http.Request) (any, sensitive bool) {
}
func init() {
- http.HandleFunc("/debug/requests", func(w http.ResponseWriter, req *http.Request) {
- any, sensitive := AuthRequest(req)
- if !any {
- http.Error(w, "not allowed", http.StatusUnauthorized)
- return
- }
- w.Header().Set("Content-Type", "text/html; charset=utf-8")
- Render(w, req, sensitive)
- })
- http.HandleFunc("/debug/events", func(w http.ResponseWriter, req *http.Request) {
- any, sensitive := AuthRequest(req)
- if !any {
- http.Error(w, "not allowed", http.StatusUnauthorized)
- return
- }
- w.Header().Set("Content-Type", "text/html; charset=utf-8")
- RenderEvents(w, req, sensitive)
- })
+ // TODO(jbd): Serve Traces from /debug/traces in the future?
+ // There is no requirement for a request to be present to have traces.
+ http.HandleFunc("/debug/requests", Traces)
+ http.HandleFunc("/debug/events", Events)
+}
+
+// Traces responds with traces from the program.
+// The package initialization registers it in http.DefaultServeMux
+// at /debug/requests.
+//
+// It performs authorization by running AuthRequest.
+func Traces(w http.ResponseWriter, req *http.Request) {
+ any, sensitive := AuthRequest(req)
+ if !any {
+ http.Error(w, "not allowed", http.StatusUnauthorized)
+ return
+ }
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ Render(w, req, sensitive)
+}
+
+// Events responds with a page of events collected by EventLogs.
+// The package initialization registers it in http.DefaultServeMux
+// at /debug/events.
+//
+// It performs authorization by running AuthRequest.
+func Events(w http.ResponseWriter, req *http.Request) {
+ any, sensitive := AuthRequest(req)
+ if !any {
+ http.Error(w, "not allowed", http.StatusUnauthorized)
+ return
+ }
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ RenderEvents(w, req, sensitive)
}
// Render renders the HTML page typically served at /debug/requests.
-// It does not do any auth checking; see AuthRequest for the default auth check
-// used by the handler registered on http.DefaultServeMux.
-// req may be nil.
+// It does not do any auth checking. The request may be nil.
+//
+// Most users will use the Traces handler.
func Render(w io.Writer, req *http.Request, sensitive bool) {
data := &struct {
Families []string