annotate src/scanner.cpp @ 7:93ff6d1ef647

stable standalone scanner module
author carl
date Thu, 22 Apr 2004 08:38:07 -0700
parents cea50d98a6cf
children dbe18921f741
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1 // normal stuff
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
2 #include <stdio.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
3 #include <stdlib.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
5 // needed for std c++ collections
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
6 #include <set>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
7 #include <map>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
8 #include <list>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
10 // for the dns resolver
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
11 #include <netinet/in.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
12 #include <arpa/nameser.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
13 #include <resolv.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
15 // misc stuff needed here
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
16 #include <ctype.h>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
17 #include <fstream>
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
18
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
19 static char* version="$Id$";
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
20
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
21 using namespace std;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
22
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
23 enum status {oksofar, // not rejected yet
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
24 white, // whitelisted by envelope from
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
25 black, // blacklisted by envelope from or to
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
26 reject}; // rejected by a dns list
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
27
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
28 enum state {// url decoder states
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
29 u_init,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
30 u_http,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
31 u_sla,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
32 u_url,
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
33
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
34 // html entity decoder states
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
35 e_init,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
36 e_amp,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
37 e_num,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
38
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
39 // mime decoder states
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
40 m_init,
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
41 m_eq,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
42 m_1,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
43
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
44 // base64 decoder states
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
45 b_init,
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
46 b_lf,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
47 b_lf2,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
48 b_64,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
49
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
50 // counter for number of columns in the table
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
51 end_state,
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
52
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
53 // temporary mime states
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
54 u_reco,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
55 e_semi,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
56 m_2,
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
57 m_cr,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
58 m_nl,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
59 b_cr,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
60 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
61
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
62 typedef state PARSE[end_state];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
63
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
64 static PARSE parse_table[256] = {
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
65 // u_init, u_http, u_sla , u_url, e_init, e_amp, e_num, m_init, m_eq, m_1, b_init, b_lf, b_lf2, b_64
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
66
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
67 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x00
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
68 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x01
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
69 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x02
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
70 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x03
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
71 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x04
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
72 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x05
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
73 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x06
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
74 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x07
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
75 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x08
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
76 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x09 <tab>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
77 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_nl, m_init, b_lf, b_init, b_lf2, b_init, }, // 0x0a <lf>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
78 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x0b
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
79 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x0c
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
80 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_cr, m_init, b_init, b_init, b_init, b_cr, }, // 0x0d <cr>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
81 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x0e
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
82 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x0f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
83 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x10
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
84 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x11 xon char
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
85 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x12
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
86 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x13 xoff char
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
87 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x14
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
88 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x15
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
89 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x16
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
90 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x17
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
91 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x18
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
92 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x19
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
93 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1a
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
94 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1b
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
95 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1c
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
96 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1d
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
97 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1e
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
98 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x1f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
99 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x20 space
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
100 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x21 !
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
101 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x22 ""
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
102 {u_init, u_init, u_init, u_reco, e_init, e_num, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x23 #
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
103 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x24 $
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
104 {u_init, u_init, u_init, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x25 %
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
105 {u_init, u_init, u_init, u_reco, e_amp, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x26 &
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
106 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x27 '
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
107 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x28 (
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
108 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x29 )
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
109 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x2A *
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
110 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x2B +
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
111 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x2C ,
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
112 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x2D -
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
113 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x2E .
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
114 {u_init, u_sla, u_sla, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x2F /
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
115 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x30 0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
116 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x31 1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
117 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x32 2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
118 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x33 3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
119 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x34 4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
120 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x35 5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
121 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x36 6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
122 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x37 7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
123 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x38 8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
124 {u_init, u_init, u_url, u_url, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x39 9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
125 {u_http, u_http, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x3A :
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
126 {u_init, u_init, u_init, u_reco, e_init, e_init, e_semi, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x3B ;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
127 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x3C <
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
128 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_eq, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x3D =
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
129 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x3E >
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
130 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x3F ?
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
131 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x40 @
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
132 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x41 A
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
133 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x42 B
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
134 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x43 C
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
135 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x44 D
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
136 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x45 E
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
137 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x46 F
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
138 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x47 G
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
139 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x48 H
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
140 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x49 I
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
141 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4A J
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
142 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4B K
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
143 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4C L
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
144 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4D M
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
145 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4E N
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
146 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x4F O
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
147 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x50 P
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
148 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x51 Q
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
149 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x52 R
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
150 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x53 S
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
151 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x54 T
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
152 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x55 U
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
153 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x56 V
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
154 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x57 W
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
155 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x58 X
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
156 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x59 Y
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
157 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x5A Z
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
158 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x5B [
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
159 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x5C brace
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
160 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x5D ]
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
161 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x5E ^
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
162 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x5F _
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
163 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x60 `
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
164 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x61 a
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
165 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x62 b
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
166 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x63 c
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
167 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x64 d
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
168 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x65 e
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
169 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_1, m_2, b_init, b_64, b_64, b_64, }, // 0x66 f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
170 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x67 g
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
171 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x68 h
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
172 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x69 i
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
173 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6A j
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
174 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6B k
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
175 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6C l
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
176 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6D m
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
177 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6E n
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
178 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x6F o
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
179 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x70 p
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
180 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x71 q
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
181 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x72 r
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
182 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x73 s
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
183 {u_http, u_http, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x74 t
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
184 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x75 u
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
185 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x76 v
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
186 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x77 w
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
187 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x78 x
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
188 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x79 y
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
189 {u_init, u_init, u_url, u_url, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, }, // 0x7A z
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
190 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x7B {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
191 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x7C |
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
192 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x7D }
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
193 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x7E ~
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
194 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x7f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
195 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x80
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
196 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x81
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
197 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x82
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
198 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x83
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
199 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x84
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
200 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x85
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
201 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x86
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
202 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x87
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
203 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x88
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
204 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x89
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
205 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8a
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
206 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8b
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
207 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8c
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
208 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8d
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
209 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8e
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
210 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x8f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
211 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x90
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
212 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x91
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
213 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x92
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
214 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x93
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
215 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x94
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
216 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x95
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
217 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x96
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
218 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x97
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
219 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x98
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
220 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x99
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
221 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9a
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
222 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9b
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
223 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9c
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
224 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9d
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
225 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9e
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
226 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0x9f
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
227 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
228 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
229 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
230 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
231 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
232 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
233 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
234 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
235 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
236 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xa9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
237 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xaa
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
238 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xab
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
239 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xac
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
240 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xad
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
241 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xae
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
242 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xaf
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
243 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
244 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
245 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
246 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
247 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
248 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
249 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
250 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
251 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
252 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xb9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
253 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xba
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
254 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xbb
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
255 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xbc
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
256 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xbd
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
257 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xbe
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
258 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xbf
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
259 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
260 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
261 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
262 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
263 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
264 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
265 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
266 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
267 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
268 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xc9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
269 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xca
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
270 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xcb
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
271 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xcc
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
272 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xcd
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
273 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xce
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
274 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xcf
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
275 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
276 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
277 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
278 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
279 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
280 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
281 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
282 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
283 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
284 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xd9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
285 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xda
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
286 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xdb
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
287 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xdc
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
288 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xdd
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
289 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xde
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
290 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xdf
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
291 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
292 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
293 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
294 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
295 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
296 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
297 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
298 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
299 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
300 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xe9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
301 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xea
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
302 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xeb
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
303 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xec
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
304 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xed
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
305 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xee
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
306 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xef
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
307 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf0
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
308 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf1
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
309 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf2
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
310 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf3
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
311 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf4
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
312 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf5
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
313 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf6
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
314 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
315 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf8
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
316 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xf9
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
317 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xfa
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
318 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xfb
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
319 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xfc
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
320 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xfd
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
321 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xfe
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
322 {u_init, u_init, u_init, u_reco, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, }, // 0xff
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
323 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
324
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
325
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
326 u_char hex_decode[256] = {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
327 0, // 0x00
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
328 0, // 0x01
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
329 0, // 0x02
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
330 0, // 0x03
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
331 0, // 0x04
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
332 0, // 0x05
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
333 0, // 0x06
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
334 0, // 0x07
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
335 0, // 0x08
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
336 0, // 0x09 <tab>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
337 0, // 0x0a <lf>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
338 0, // 0x0b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
339 0, // 0x0c
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
340 0, // 0x0d <cr>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
341 0, // 0x0e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
342 0, // 0x0f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
343 0, // 0x10
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
344 0, // 0x11 xon char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
345 0, // 0x12
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
346 0, // 0x13 xoff char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
347 0, // 0x14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
348 0, // 0x15
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
349 0, // 0x16
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
350 0, // 0x17
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
351 0, // 0x18
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
352 0, // 0x19
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
353 0, // 0x1a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
354 0, // 0x1b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
355 0, // 0x1c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
356 0, // 0x1d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
357 0, // 0x1e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
358 0, // 0x1f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
359 0, // 0x20 space
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
360 0, // 0x21 !
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
361 0, // 0x22 ""
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
362 0, // 0x23 #
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
363 0, // 0x24 $
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
364 0, // 0x25 %
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
365 0, // 0x26 &
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
366 0, // 0x27 '
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
367 0, // 0x28 (
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
368 0, // 0x29 )
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
369 0, // 0x2A *
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
370 0, // 0x2B +
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
371 0, // 0x2C ,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
372 0, // 0x2D -
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
373 0, // 0x2E .
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
374 0, // 0x2F /
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
375 0, // 0x30 0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
376 1, // 0x31 1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
377 2, // 0x32 2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
378 3, // 0x33 3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
379 4, // 0x34 4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
380 5, // 0x35 5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
381 6, // 0x36 6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
382 7, // 0x37 7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
383 8, // 0x38 8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
384 9, // 0x39 9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
385 0, // 0x3A :
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
386 0, // 0x3B ;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
387 0, // 0x3C <
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
388 0, // 0x3D =
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
389 0, // 0x3E >
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
390 0, // 0x3F ?
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
391 0, // 0x40 @
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
392 10, // 0x41 A
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
393 11, // 0x42 B
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
394 12, // 0x43 C
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
395 13, // 0x44 D
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
396 14, // 0x45 E
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
397 15, // 0x46 F
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
398 0, // 0x47 G
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
399 0, // 0x48 H
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
400 0, // 0x49 I
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
401 0, // 0x4A J
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
402 0, // 0x4B K
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
403 0, // 0x4C L
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
404 0, // 0x4D M
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
405 0, // 0x4E N
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
406 0, // 0x4F O
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
407 0, // 0x50 P
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
408 0, // 0x51 Q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
409 0, // 0x52 R
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
410 0, // 0x53 S
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
411 0, // 0x54 T
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
412 0, // 0x55 U
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
413 0, // 0x56 V
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
414 0, // 0x57 W
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
415 0, // 0x58 X
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
416 0, // 0x59 Y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
417 0, // 0x5A Z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
418 0, // 0x5B [
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
419 0, // 0x5C brace
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
420 0, // 0x5D ]
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
421 0, // 0x5E ^
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
422 0, // 0x5F _
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
423 0, // 0x60 `
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
424 10, // 0x61 a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
425 11, // 0x62 b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
426 12, // 0x63 c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
427 13, // 0x64 d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
428 14, // 0x65 e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
429 15, // 0x66 f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
430 0, // 0x67 g
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
431 0, // 0x68 h
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
432 0, // 0x69 i
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
433 0, // 0x6A j
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
434 0, // 0x6B k
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
435 0, // 0x6C l
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
436 0, // 0x6D m
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
437 0, // 0x6E n
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
438 0, // 0x6F o
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
439 0, // 0x70 p
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
440 0, // 0x71 q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
441 0, // 0x72 r
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
442 0, // 0x73 s
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
443 0, // 0x74 t
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
444 0, // 0x75 u
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
445 0, // 0x76 v
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
446 0, // 0x77 w
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
447 0, // 0x78 x
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
448 0, // 0x79 y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
449 0, // 0x7A z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
450 0, // 0x7B {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
451 0, // 0x7C |
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
452 0, // 0x7D }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
453 0, // 0x7E ~
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
454 0, // 0x7f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
455 0, // 0x80
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
456 0, // 0x81
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
457 0, // 0x82
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
458 0, // 0x83
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
459 0, // 0x84
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
460 0, // 0x85
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
461 0, // 0x86
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
462 0, // 0x87
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
463 0, // 0x88
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
464 0, // 0x89
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
465 0, // 0x8a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
466 0, // 0x8b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
467 0, // 0x8c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
468 0, // 0x8d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
469 0, // 0x8e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
470 0, // 0x8f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
471 0, // 0x90
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
472 0, // 0x91
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
473 0, // 0x92
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
474 0, // 0x93
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
475 0, // 0x94
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
476 0, // 0x95
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
477 0, // 0x96
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
478 0, // 0x97
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
479 0, // 0x98
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
480 0, // 0x99
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
481 0, // 0x9a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
482 0, // 0x9b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
483 0, // 0x9c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
484 0, // 0x9d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
485 0, // 0x9e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
486 0, // 0x9f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
487 0, // 0xa0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
488 0, // 0xa1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
489 0, // 0xa2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
490 0, // 0xa3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
491 0, // 0xa4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
492 0, // 0xa5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
493 0, // 0xa6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
494 0, // 0xa7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
495 0, // 0xa8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
496 0, // 0xa9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
497 0, // 0xaa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
498 0, // 0xab
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
499 0, // 0xac
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
500 0, // 0xad
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
501 0, // 0xae
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
502 0, // 0xaf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
503 0, // 0xb0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
504 0, // 0xb1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
505 0, // 0xb2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
506 0, // 0xb3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
507 0, // 0xb4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
508 0, // 0xb5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
509 0, // 0xb6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
510 0, // 0xb7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
511 0, // 0xb8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
512 0, // 0xb9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
513 0, // 0xba
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
514 0, // 0xbb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
515 0, // 0xbc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
516 0, // 0xbd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
517 0, // 0xbe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
518 0, // 0xbf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
519 0, // 0xc0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
520 0, // 0xc1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
521 0, // 0xc2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
522 0, // 0xc3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
523 0, // 0xc4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
524 0, // 0xc5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
525 0, // 0xc6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
526 0, // 0xc7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
527 0, // 0xc8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
528 0, // 0xc9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
529 0, // 0xca
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
530 0, // 0xcb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
531 0, // 0xcc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
532 0, // 0xcd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
533 0, // 0xce
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
534 0, // 0xcf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
535 0, // 0xd0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
536 0, // 0xd1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
537 0, // 0xd2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
538 0, // 0xd3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
539 0, // 0xd4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
540 0, // 0xd5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
541 0, // 0xd6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
542 0, // 0xd7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
543 0, // 0xd8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
544 0, // 0xd9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
545 0, // 0xda
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
546 0, // 0xdb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
547 0, // 0xdc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
548 0, // 0xdd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
549 0, // 0xde
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
550 0, // 0xdf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
551 0, // 0xe0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
552 0, // 0xe1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
553 0, // 0xe2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
554 0, // 0xe3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
555 0, // 0xe4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
556 0, // 0xe5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
557 0, // 0xe6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
558 0, // 0xe7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
559 0, // 0xe8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
560 0, // 0xe9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
561 0, // 0xea
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
562 0, // 0xeb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
563 0, // 0xec
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
564 0, // 0xed
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
565 0, // 0xee
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
566 0, // 0xef
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
567 0, // 0xf0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
568 0, // 0xf1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
569 0, // 0xf2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
570 0, // 0xf3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
571 0, // 0xf4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
572 0, // 0xf5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
573 0, // 0xf6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
574 0, // 0xf7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
575 0, // 0xf8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
576 0, // 0xf9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
577 0, // 0xfa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
578 0, // 0xfb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
579 0, // 0xfc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
580 0, // 0xfd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
581 0, // 0xfe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
582 0, // 0xff
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
583 };
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
584
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
585 u_char b64_decode[256] = {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
586 0, // 0x00
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
587 0, // 0x01
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
588 0, // 0x02
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
589 0, // 0x03
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
590 0, // 0x04
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
591 0, // 0x05
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
592 0, // 0x06
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
593 0, // 0x07
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
594 0, // 0x08
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
595 0, // 0x09 <tab>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
596 0, // 0x0a <lf>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
597 0, // 0x0b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
598 0, // 0x0c
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
599 0, // 0x0d <cr>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
600 0, // 0x0e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
601 0, // 0x0f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
602 0, // 0x10
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
603 0, // 0x11 xon char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
604 0, // 0x12
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
605 0, // 0x13 xoff char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
606 0, // 0x14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
607 0, // 0x15
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
608 0, // 0x16
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
609 0, // 0x17
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
610 0, // 0x18
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
611 0, // 0x19
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
612 0, // 0x1a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
613 0, // 0x1b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
614 0, // 0x1c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
615 0, // 0x1d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
616 0, // 0x1e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
617 0, // 0x1f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
618 0, // 0x20 space
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
619 0, // 0x21 !
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
620 0, // 0x22 ""
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
621 0, // 0x23 #
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
622 0, // 0x24 $
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
623 0, // 0x25 %
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
624 0, // 0x26 &
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
625 0, // 0x27 '
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
626 0, // 0x28 (
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
627 0, // 0x29 )
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
628 0, // 0x2A *
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
629 62, // 0x2B +
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
630 0, // 0x2C ,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
631 0, // 0x2D -
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
632 0, // 0x2E .
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
633 63, // 0x2F /
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
634 52, // 0x30 0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
635 53, // 0x31 1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
636 54, // 0x32 2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
637 55, // 0x33 3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
638 56, // 0x34 4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
639 57, // 0x35 5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
640 58, // 0x36 6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
641 59, // 0x37 7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
642 60, // 0x38 8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
643 61, // 0x39 9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
644 0, // 0x3A :
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
645 0, // 0x3B ;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
646 0, // 0x3C <
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
647 0, // 0x3D =
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
648 0, // 0x3E >
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
649 0, // 0x3F ?
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
650 0, // 0x40 @
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
651 0, // 0x41 A
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
652 1, // 0x42 B
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
653 2, // 0x43 C
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
654 3, // 0x44 D
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
655 4, // 0x45 E
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
656 5, // 0x46 F
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
657 6, // 0x47 G
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
658 7, // 0x48 H
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
659 8, // 0x49 I
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
660 9, // 0x4A J
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
661 10, // 0x4B K
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
662 11, // 0x4C L
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
663 12, // 0x4D M
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
664 13, // 0x4E N
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
665 14, // 0x4F O
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
666 15, // 0x50 P
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
667 16, // 0x51 Q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
668 17, // 0x52 R
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
669 18, // 0x53 S
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
670 19, // 0x54 T
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
671 20, // 0x55 U
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
672 21, // 0x56 V
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
673 22, // 0x57 W
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
674 23, // 0x58 X
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
675 24, // 0x59 Y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
676 25, // 0x5A Z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
677 0, // 0x5B [
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
678 0, // 0x5C brace
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
679 0, // 0x5D ]
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
680 0, // 0x5E ^
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
681 0, // 0x5F _
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
682 0, // 0x60 `
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
683 26, // 0x61 a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
684 27, // 0x62 b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
685 28, // 0x63 c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
686 29, // 0x64 d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
687 30, // 0x65 e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
688 31, // 0x66 f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
689 32, // 0x67 g
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
690 33, // 0x68 h
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
691 34, // 0x69 i
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
692 35, // 0x6A j
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
693 36, // 0x6B k
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
694 37, // 0x6C l
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
695 38, // 0x6D m
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
696 39, // 0x6E n
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
697 40, // 0x6F o
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
698 41, // 0x70 p
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
699 42, // 0x71 q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
700 43, // 0x72 r
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
701 44, // 0x73 s
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
702 45, // 0x74 t
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
703 46, // 0x75 u
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
704 47, // 0x76 v
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
705 48, // 0x77 w
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
706 49, // 0x78 x
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
707 50, // 0x79 y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
708 51, // 0x7A z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
709 0, // 0x7B {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
710 0, // 0x7C |
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
711 0, // 0x7D }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
712 0, // 0x7E ~
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
713 0, // 0x7f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
714 0, // 0x80
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
715 0, // 0x81
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
716 0, // 0x82
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
717 0, // 0x83
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
718 0, // 0x84
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
719 0, // 0x85
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
720 0, // 0x86
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
721 0, // 0x87
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
722 0, // 0x88
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
723 0, // 0x89
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
724 0, // 0x8a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
725 0, // 0x8b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
726 0, // 0x8c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
727 0, // 0x8d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
728 0, // 0x8e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
729 0, // 0x8f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
730 0, // 0x90
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
731 0, // 0x91
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
732 0, // 0x92
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
733 0, // 0x93
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
734 0, // 0x94
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
735 0, // 0x95
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
736 0, // 0x96
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
737 0, // 0x97
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
738 0, // 0x98
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
739 0, // 0x99
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
740 0, // 0x9a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
741 0, // 0x9b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
742 0, // 0x9c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
743 0, // 0x9d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
744 0, // 0x9e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
745 0, // 0x9f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
746 0, // 0xa0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
747 0, // 0xa1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
748 0, // 0xa2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
749 0, // 0xa3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
750 0, // 0xa4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
751 0, // 0xa5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
752 0, // 0xa6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
753 0, // 0xa7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
754 0, // 0xa8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
755 0, // 0xa9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
756 0, // 0xaa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
757 0, // 0xab
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
758 0, // 0xac
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
759 0, // 0xad
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
760 0, // 0xae
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
761 0, // 0xaf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
762 0, // 0xb0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
763 0, // 0xb1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
764 0, // 0xb2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
765 0, // 0xb3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
766 0, // 0xb4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
767 0, // 0xb5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
768 0, // 0xb6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
769 0, // 0xb7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
770 0, // 0xb8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
771 0, // 0xb9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
772 0, // 0xba
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
773 0, // 0xbb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
774 0, // 0xbc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
775 0, // 0xbd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
776 0, // 0xbe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
777 0, // 0xbf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
778 0, // 0xc0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
779 0, // 0xc1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
780 0, // 0xc2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
781 0, // 0xc3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
782 0, // 0xc4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
783 0, // 0xc5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
784 0, // 0xc6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
785 0, // 0xc7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
786 0, // 0xc8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
787 0, // 0xc9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
788 0, // 0xca
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
789 0, // 0xcb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
790 0, // 0xcc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
791 0, // 0xcd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
792 0, // 0xce
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
793 0, // 0xcf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
794 0, // 0xd0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
795 0, // 0xd1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
796 0, // 0xd2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
797 0, // 0xd3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
798 0, // 0xd4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
799 0, // 0xd5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
800 0, // 0xd6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
801 0, // 0xd7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
802 0, // 0xd8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
803 0, // 0xd9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
804 0, // 0xda
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
805 0, // 0xdb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
806 0, // 0xdc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
807 0, // 0xdd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
808 0, // 0xde
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
809 0, // 0xdf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
810 0, // 0xe0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
811 0, // 0xe1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
812 0, // 0xe2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
813 0, // 0xe3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
814 0, // 0xe4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
815 0, // 0xe5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
816 0, // 0xe6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
817 0, // 0xe7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
818 0, // 0xe8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
819 0, // 0xe9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
820 0, // 0xea
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
821 0, // 0xeb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
822 0, // 0xec
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
823 0, // 0xed
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
824 0, // 0xee
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
825 0, // 0xef
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
826 0, // 0xf0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
827 0, // 0xf1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
828 0, // 0xf2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
829 0, // 0xf3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
830 0, // 0xf4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
831 0, // 0xf5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
832 0, // 0xf6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
833 0, // 0xf7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
834 0, // 0xf8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
835 0, // 0xf9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
836 0, // 0xfa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
837 0, // 0xfb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
838 0, // 0xfc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
839 0, // 0xfd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
840 0, // 0xfe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
841 0, // 0xff
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
842 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
843
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
844 #define PENDING_LIMIT 1000
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
845 struct fsa {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
846 u_char pending[PENDING_LIMIT];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
847 int count;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
848 state st;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
849 state init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
850 fsa* next;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
851
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
852 fsa(state init, fsa* next_);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
853 void push(u_char *buf, int len);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
854 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
855
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
856 fsa::fsa(state init_, fsa* next_) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
857 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
858 st = init_;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
859 init = init_;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
860 next = next_;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
861 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
862
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
863 void fsa::push(u_char *buf, int len) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
864 for (int i=0; i<len; i++) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
865 u_char c = buf[i];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
866 // guard against buffer overflow
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
867 if (count == PENDING_LIMIT-1) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
868 if (next) next->push(pending, count);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
869 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
870 st = init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
871 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
872 pending[count++] = c;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
873 st = parse_table[c][st];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
874 switch (st) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
875
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
876 //////////////////////////////
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
877 // url recognizer
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
878 case u_sla: {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
879 if ((count < 6) || (7 < count)) {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
880 count = 0;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
881 st = u_init;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
882 }
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
883 } break;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
884
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
885 case u_reco: {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
886 pending[count-1] = 0;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
887 if (strncasecmp((const char *)pending, "http://", 7) == 0) fprintf(stdout, "%s\n", pending);
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
888 } // fall thru
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
889
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
890 case u_init: {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
891 count = 0; // discard all characters
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
892 } break;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
893
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
894
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
895 //////////////////////////////
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
896 // mime decoder
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
897 case m_2: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
898 pending[0] = hex_decode[pending[1]] * 16 + hex_decode[pending[2]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
899 count = 1;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
900 st = m_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
901 } // fall thru
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
902
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
903 case m_init: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
904 if (next) next->push(pending, count);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
905 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
906 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
907
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
908 case m_cr: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
909 count = 1;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
910 st = m_eq;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
911 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
912
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
913 case m_nl: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
914 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
915 st = m_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
916 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
917
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
918 //////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
919 // html entity decoder
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
920 case e_semi: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
921 pending[--count] = '\0'; // null terminate the digit string by overwriting the semicolon
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
922 pending[0] = atoi((const char *)pending+2);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
923 count = 1;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
924 st = e_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
925 } // fall thru
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
926
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
927 case e_init: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
928 if (next) next->push(pending, count);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
929 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
930 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
931
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
932 //////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
933 // base64 decoder
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
934 case b_lf2: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
935 count--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
936 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
937
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
938 case b_cr: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
939 int cnt = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
940 if ((count % 4) == 1) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
941 count--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
942 // might have proper b64 data
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
943 for (int i=0; i<count; i+=4) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
944 unsigned long a1 = b64_decode[pending[i]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
945 unsigned long a2 = b64_decode[pending[i+1]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
946 unsigned long a3 = b64_decode[pending[i+2]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
947 unsigned long a4 = b64_decode[pending[i+3]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
948 unsigned long a = (a1 << 18) | (a2 << 12) | (a3 << 6) | a4;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
949 pending[cnt++] = (a & 0x00ff0000) >> 16;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
950 pending[cnt++] = (a & 0x0000ff00) >> 8;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
951 pending[cnt++] = (a & 0x000000ff);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
952 if ((char)pending[i+3] == '=') cnt--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
953 if ((char)pending[i+2] == '=') cnt--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
954 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
955 count = cnt;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
956 st = b_lf2;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
957 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
958 else st = b_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
959 } // fall thru
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
960
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
961 case b_lf:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
962 case b_init: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
963 if (next) next->push(pending, count);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
964 count = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
965 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
966
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
967 //////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
968 // states that just accumulate characters in the pending buffer
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
969 case u_http:
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
970 case u_url:
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
971 case e_amp:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
972 case e_num:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
973 case b_64:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
974 case m_eq:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
975 case m_1:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
976 default: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
977 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
978 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
979 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
980 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
981
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
982
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
983
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
984 ////////////////////////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
985 // ask a dns question and get an A record answer
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
986 //
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
987 static unsigned long dns_interface(char *question);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
988 static unsigned long dns_interface(char *question) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
989 u_char answer[NS_PACKETSZ];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
990 int length = res_search(question, ns_c_in, ns_t_a, answer, sizeof(answer));
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
991 if (length < 0) return oksofar; // error in getting answer
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
992 // parse the answer
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
993 ns_msg handle;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
994 ns_rr rr;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
995 if (ns_initparse(answer, length, &handle) != 0) return oksofar;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
996 int rrnum = 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
997 while (ns_parserr(&handle, ns_s_an, rrnum++, &rr) == 0) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
998 if (ns_rr_type(rr) == ns_t_a) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
999 unsigned long address;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1000 memcpy(&address, ns_rr_rdata(rr), sizeof(address));
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1001 return reject;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1002 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1003 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1004 return 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1005 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1006
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1007 ////////////////////////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1008 // check a single dnsbl - we don't try very hard, just
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1009 // using the default resolver retry settings. If we cannot
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1010 // get an answer, we just accept the mail. The caller
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1011 // must ensure thread safety.
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1012 //
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1013 static status check_single(int ip, char *suffix);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1014 static status check_single(int ip, char *suffix) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1015 // make a dns question
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1016 const u_char *src = (const u_char *)&ip;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1017 if (src[0] == 127) return oksofar; // don't do dns lookups on localhost
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1018 char question[NS_MAXDNAME];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1019 snprintf(question, sizeof(question), "%u.%u.%u.%u.%s.", src[3], src[2], src[1], src[0], suffix);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1020 // ask the question, if we get an A record it implies a blacklisted ip address
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1021 unsigned long ans = dns_interface(question);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1022 return (ans) ? reject : oksofar;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1023 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1024
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1025
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1026 ////////////////////////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1027 // scan a file for URLs
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1028 //
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1029 static void scan_file(char *fn, fsa& parser);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1030 static void scan_file(char *fn, fsa& parser) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1031 const int LINE_SIZE = 2000;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1032 char line[LINE_SIZE];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1033 ifstream is(fn);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1034 while (!is.eof()) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1035 is.getline(line, LINE_SIZE-1);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1036 int n = strlen(line);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1037 line[n++] = '\n';
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1038 parser.push((u_char*)line, n);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1039 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1040 is.close();
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1041 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1042
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1043
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1044 int main(int argc, char**argv)
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1045 {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1046 char *fn = argv[1];
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1047 fsa *urls_parser = new fsa(u_init, NULL);
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1048 fsa *html_parser = new fsa(e_init, urls_parser);
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1049 fsa *mime_parser = new fsa(m_init, html_parser);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1050 fsa *b64_parser = new fsa(b_init, mime_parser);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1051 if (fn) scan_file(fn, *b64_parser);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1052 return 0;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1053 }