File Coverage

lib/Jacode4e.pm
Criterion Covered Total %
statement 62 120 51.6
branch 30 48 62.5
condition 13 20 65.0
subroutine 6 7 85.7
pod 0 2 0.0
total 111 197 56.3


line stmt bran cond sub pod time code
1             package Jacode4e;
2             $VERSION = '2.13.6.20';
3             # 如果您可以阅读此字符,则可以通过选择所有内容并将其保存为文件名“Jacode4e.pm”来将其用作模块。
4             # 如果您可以閱讀此字符,則可以通過選擇所有內容並將其保存為文件名“Jacode4e.pm”來將其用作模塊。
5             # この文字が読める場合は、内容を全て選択してファイル名を "Jacode4e.pm" にして保存すればそのままモジュールとして利用することができます。
6             # 이 문자를 읽을 수 있는 경우는, 내용을 모두 선택해 파일명을 "Jacode4e.pm" 로 해 보존하면 그대로 모듈로서 이용할 수가 있습니다.
7             # But that is very far into the future isn't it?
8             ####################################################################
9             #
10             # Jacode4e - Converts Character Encodings for Enterprise in Japan
11             #
12             # Copyright (c) 2018, 2019, 2021, 2022 INABA Hitoshi in a CPAN
13             ######################################################################
14              
15             $VERSION = $VERSION;
16              
17 32     32   300678 use 5.00503;
  32         322  
18 32     32   168 use strict;
  32         47  
  32         1578  
19 32 50   32   725 BEGIN { $INC{'warnings.pm'} = '' if $] < 5.006 }; use warnings; $^W=1;
  32     32   146  
  32         77  
  32         168802  
20              
21             my %tr = ();
22             my @encodings = qw(
23             cp932x
24             cp932
25             cp932ibm
26             cp932nec
27             sjis2004
28             cp00930
29             keis78
30             keis83
31             keis90
32             jef
33             jipsj
34             jipse
35             letsj
36             unicode
37             utf8
38             utf8.1
39             utf8jp
40             );
41             my @io_encodings = grep( ! /^(?:unicode)$/, @encodings);
42              
43             if ($0 eq __FILE__) {
44             if (not @ARGV) {
45             die <
46              
47             usage:
48             perl $0 --dumptable
49              
50             END
51             }
52             }
53              
54             while () {
55             next if /^#/;
56             chomp;
57              
58             my %hex = ();
59             @hex{@encodings} = split(/ +/,$_);
60              
61             my %bin = ();
62             for my $encoding (@io_encodings) {
63             $bin{$encoding} = (($hex{$encoding} =~ /^[0123456789ABCDEF]+$/) ? pack('H*', $hex{$encoding}) : '');
64             }
65              
66             for my $encoding (@io_encodings) {
67             if (($bin{$encoding} ne '') and ($bin{'utf8jp'} ne '')) {
68             if ($encoding eq 'utf8jp') {
69             }
70             elsif (defined($tr{'utf8jp'}{$encoding}{$bin{$encoding}}) and ($tr{'utf8jp'}{$encoding}{$bin{$encoding}} ne '')) {
71             die qq{@{[__FILE__]} duplicate definitions \$tr{'utf8jp'}{'$encoding'}{'$hex{$encoding}'} = "$hex{utf8}($bin{utf8})" and "} . uc unpack('H*',$tr{'utf8jp'}{$encoding}{$bin{$encoding}}) . qq{"($tr{'utf8jp'}{$encoding}{$bin{$encoding}})\n};
72             }
73             elsif (defined($tr{$encoding}{'utf8jp'}{$bin{'utf8jp' }}) and ($tr{$encoding}{'utf8jp'}{$bin{'utf8jp' }} ne '')) {
74             die qq{@{[__FILE__]} duplicate definitions \$tr{'$encoding'}{'utf8jp'}{'$hex{utf8}'} = "$hex{$encoding}" and "} . uc unpack('H*',$tr{$encoding}{'utf8jp'}{$bin{'utf8jp'}}) . qq{"\n};
75             }
76             if ($bin{$encoding} ne '') {
77             $tr{'utf8jp'}{$encoding}{$bin{$encoding}} = $bin{'utf8jp'};
78             $tr{$encoding}{'utf8jp'}{$bin{'utf8jp'} } = $bin{$encoding};
79             }
80             }
81             }
82             }
83              
84             my $data_count = scalar(keys %{$tr{'utf8jp'}{'utf8jp'}});
85             if ($data_count != 11578) {
86             die qq{@{[__FILE__]} is probably broken(data_count=$data_count).\n};
87             }
88              
89             my %Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode = ();
90             for (split /\n/, <<'END') {
91             # https://support.microsoft.com/ja-jp/help/170559/prb-conversion-problem-between-shift-jis-and-unicode
92             # CodePage 932 : 398 non-round-trip mappings
93             0x8790 -> U+2252 -> 0x81e0 Approximately Equal To Or The Image Of
94             0x8791 -> U+2261 -> 0x81df Identical To
95             0x8792 -> U+222b -> 0x81e7 Integral
96             0x8795 -> U+221a -> 0x81e3 Square Root
97             0x8796 -> U+22a5 -> 0x81db Up Tack
98             0x8797 -> U+2220 -> 0x81da Angle
99             0x879a -> U+2235 -> 0x81e6 Because
100             0x879b -> U+2229 -> 0x81bf Intersection
101             0x879c -> U+222a -> 0x81be Union
102             0xed40 -> U+7e8a -> 0xfa5c CJK Unified Ideograph
103             0xed41 -> U+891c -> 0xfa5d CJK Unified Ideograph
104             0xed42 -> U+9348 -> 0xfa5e CJK Unified Ideograph
105             0xed43 -> U+9288 -> 0xfa5f CJK Unified Ideograph
106             0xed44 -> U+84dc -> 0xfa60 CJK Unified Ideograph
107             0xed45 -> U+4fc9 -> 0xfa61 CJK Unified Ideograph
108             0xed46 -> U+70bb -> 0xfa62 CJK Unified Ideograph
109             0xed47 -> U+6631 -> 0xfa63 CJK Unified Ideograph
110             0xed48 -> U+68c8 -> 0xfa64 CJK Unified Ideograph
111             0xed49 -> U+92f9 -> 0xfa65 CJK Unified Ideograph
112             0xed4a -> U+66fb -> 0xfa66 CJK Unified Ideograph
113             0xed4b -> U+5f45 -> 0xfa67 CJK Unified Ideograph
114             0xed4c -> U+4e28 -> 0xfa68 CJK Unified Ideograph
115             0xed4d -> U+4ee1 -> 0xfa69 CJK Unified Ideograph
116             0xed4e -> U+4efc -> 0xfa6a CJK Unified Ideograph
117             0xed4f -> U+4f00 -> 0xfa6b CJK Unified Ideograph
118             0xed50 -> U+4f03 -> 0xfa6c CJK Unified Ideograph
119             0xed51 -> U+4f39 -> 0xfa6d CJK Unified Ideograph
120             0xed52 -> U+4f56 -> 0xfa6e CJK Unified Ideograph
121             0xed53 -> U+4f92 -> 0xfa6f CJK Unified Ideograph
122             0xed54 -> U+4f8a -> 0xfa70 CJK Unified Ideograph
123             0xed55 -> U+4f9a -> 0xfa71 CJK Unified Ideograph
124             0xed56 -> U+4f94 -> 0xfa72 CJK Unified Ideograph
125             0xed57 -> U+4fcd -> 0xfa73 CJK Unified Ideograph
126             0xed58 -> U+5040 -> 0xfa74 CJK Unified Ideograph
127             0xed59 -> U+5022 -> 0xfa75 CJK Unified Ideograph
128             0xed5a -> U+4fff -> 0xfa76 CJK Unified Ideograph
129             0xed5b -> U+501e -> 0xfa77 CJK Unified Ideograph
130             0xed5c -> U+5046 -> 0xfa78 CJK Unified Ideograph
131             0xed5d -> U+5070 -> 0xfa79 CJK Unified Ideograph
132             0xed5e -> U+5042 -> 0xfa7a CJK Unified Ideograph
133             0xed5f -> U+5094 -> 0xfa7b CJK Unified Ideograph
134             0xed60 -> U+50f4 -> 0xfa7c CJK Unified Ideograph
135             0xed61 -> U+50d8 -> 0xfa7d CJK Unified Ideograph
136             0xed62 -> U+514a -> 0xfa7e CJK Unified Ideograph
137             0xed63 -> U+5164 -> 0xfa80 CJK Unified Ideograph
138             0xed64 -> U+519d -> 0xfa81 CJK Unified Ideograph
139             0xed65 -> U+51be -> 0xfa82 CJK Unified Ideograph
140             0xed66 -> U+51ec -> 0xfa83 CJK Unified Ideograph
141             0xed67 -> U+5215 -> 0xfa84 CJK Unified Ideograph
142             0xed68 -> U+529c -> 0xfa85 CJK Unified Ideograph
143             0xed69 -> U+52a6 -> 0xfa86 CJK Unified Ideograph
144             0xed6a -> U+52c0 -> 0xfa87 CJK Unified Ideograph
145             0xed6b -> U+52db -> 0xfa88 CJK Unified Ideograph
146             0xed6c -> U+5300 -> 0xfa89 CJK Unified Ideograph
147             0xed6d -> U+5307 -> 0xfa8a CJK Unified Ideograph
148             0xed6e -> U+5324 -> 0xfa8b CJK Unified Ideograph
149             0xed6f -> U+5372 -> 0xfa8c CJK Unified Ideograph
150             0xed70 -> U+5393 -> 0xfa8d CJK Unified Ideograph
151             0xed71 -> U+53b2 -> 0xfa8e CJK Unified Ideograph
152             0xed72 -> U+53dd -> 0xfa8f CJK Unified Ideograph
153             0xed73 -> U+fa0e -> 0xfa90 CJK compatibility Ideograph
154             0xed74 -> U+549c -> 0xfa91 CJK Unified Ideograph
155             0xed75 -> U+548a -> 0xfa92 CJK Unified Ideograph
156             0xed76 -> U+54a9 -> 0xfa93 CJK Unified Ideograph
157             0xed77 -> U+54ff -> 0xfa94 CJK Unified Ideograph
158             0xed78 -> U+5586 -> 0xfa95 CJK Unified Ideograph
159             0xed79 -> U+5759 -> 0xfa96 CJK Unified Ideograph
160             0xed7a -> U+5765 -> 0xfa97 CJK Unified Ideograph
161             0xed7b -> U+57ac -> 0xfa98 CJK Unified Ideograph
162             0xed7c -> U+57c8 -> 0xfa99 CJK Unified Ideograph
163             0xed7d -> U+57c7 -> 0xfa9a CJK Unified Ideograph
164             0xed7e -> U+fa0f -> 0xfa9b CJK compatibility Ideograph
165             0xed80 -> U+fa10 -> 0xfa9c CJK compatibility Ideograph
166             0xed81 -> U+589e -> 0xfa9d CJK Unified Ideograph
167             0xed82 -> U+58b2 -> 0xfa9e CJK Unified Ideograph
168             0xed83 -> U+590b -> 0xfa9f CJK Unified Ideograph
169             0xed84 -> U+5953 -> 0xfaa0 CJK Unified Ideograph
170             0xed85 -> U+595b -> 0xfaa1 CJK Unified Ideograph
171             0xed86 -> U+595d -> 0xfaa2 CJK Unified Ideograph
172             0xed87 -> U+5963 -> 0xfaa3 CJK Unified Ideograph
173             0xed88 -> U+59a4 -> 0xfaa4 CJK Unified Ideograph
174             0xed89 -> U+59ba -> 0xfaa5 CJK Unified Ideograph
175             0xed8a -> U+5b56 -> 0xfaa6 CJK Unified Ideograph
176             0xed8b -> U+5bc0 -> 0xfaa7 CJK Unified Ideograph
177             0xed8c -> U+752f -> 0xfaa8 CJK Unified Ideograph
178             0xed8d -> U+5bd8 -> 0xfaa9 CJK Unified Ideograph
179             0xed8e -> U+5bec -> 0xfaaa CJK Unified Ideograph
180             0xed8f -> U+5c1e -> 0xfaab CJK Unified Ideograph
181             0xed90 -> U+5ca6 -> 0xfaac CJK Unified Ideograph
182             0xed91 -> U+5cba -> 0xfaad CJK Unified Ideograph
183             0xed92 -> U+5cf5 -> 0xfaae CJK Unified Ideograph
184             0xed93 -> U+5d27 -> 0xfaaf CJK Unified Ideograph
185             0xed94 -> U+5d53 -> 0xfab0 CJK Unified Ideograph
186             0xed95 -> U+fa11 -> 0xfab1 CJK compatibility Ideograph
187             0xed96 -> U+5d42 -> 0xfab2 CJK Unified Ideograph
188             0xed97 -> U+5d6d -> 0xfab3 CJK Unified Ideograph
189             0xed98 -> U+5db8 -> 0xfab4 CJK Unified Ideograph
190             0xed99 -> U+5db9 -> 0xfab5 CJK Unified Ideograph
191             0xed9a -> U+5dd0 -> 0xfab6 CJK Unified Ideograph
192             0xed9b -> U+5f21 -> 0xfab7 CJK Unified Ideograph
193             0xed9c -> U+5f34 -> 0xfab8 CJK Unified Ideograph
194             0xed9d -> U+5f67 -> 0xfab9 CJK Unified Ideograph
195             0xed9e -> U+5fb7 -> 0xfaba CJK Unified Ideograph
196             0xed9f -> U+5fde -> 0xfabb CJK Unified Ideograph
197             0xeda0 -> U+605d -> 0xfabc CJK Unified Ideograph
198             0xeda1 -> U+6085 -> 0xfabd CJK Unified Ideograph
199             0xeda2 -> U+608a -> 0xfabe CJK Unified Ideograph
200             0xeda3 -> U+60de -> 0xfabf CJK Unified Ideograph
201             0xeda4 -> U+60d5 -> 0xfac0 CJK Unified Ideograph
202             0xeda5 -> U+6120 -> 0xfac1 CJK Unified Ideograph
203             0xeda6 -> U+60f2 -> 0xfac2 CJK Unified Ideograph
204             0xeda7 -> U+6111 -> 0xfac3 CJK Unified Ideograph
205             0xeda8 -> U+6137 -> 0xfac4 CJK Unified Ideograph
206             0xeda9 -> U+6130 -> 0xfac5 CJK Unified Ideograph
207             0xedaa -> U+6198 -> 0xfac6 CJK Unified Ideograph
208             0xedab -> U+6213 -> 0xfac7 CJK Unified Ideograph
209             0xedac -> U+62a6 -> 0xfac8 CJK Unified Ideograph
210             0xedad -> U+63f5 -> 0xfac9 CJK Unified Ideograph
211             0xedae -> U+6460 -> 0xfaca CJK Unified Ideograph
212             0xedaf -> U+649d -> 0xfacb CJK Unified Ideograph
213             0xedb0 -> U+64ce -> 0xfacc CJK Unified Ideograph
214             0xedb1 -> U+654e -> 0xfacd CJK Unified Ideograph
215             0xedb2 -> U+6600 -> 0xface CJK Unified Ideograph
216             0xedb3 -> U+6615 -> 0xfacf CJK Unified Ideograph
217             0xedb4 -> U+663b -> 0xfad0 CJK Unified Ideograph
218             0xedb5 -> U+6609 -> 0xfad1 CJK Unified Ideograph
219             0xedb6 -> U+662e -> 0xfad2 CJK Unified Ideograph
220             0xedb7 -> U+661e -> 0xfad3 CJK Unified Ideograph
221             0xedb8 -> U+6624 -> 0xfad4 CJK Unified Ideograph
222             0xedb9 -> U+6665 -> 0xfad5 CJK Unified Ideograph
223             0xedba -> U+6657 -> 0xfad6 CJK Unified Ideograph
224             0xedbb -> U+6659 -> 0xfad7 CJK Unified Ideograph
225             0xedbc -> U+fa12 -> 0xfad8 CJK compatibility Ideograph
226             0xedbd -> U+6673 -> 0xfad9 CJK Unified Ideograph
227             0xedbe -> U+6699 -> 0xfada CJK Unified Ideograph
228             0xedbf -> U+66a0 -> 0xfadb CJK Unified Ideograph
229             0xedc0 -> U+66b2 -> 0xfadc CJK Unified Ideograph
230             0xedc1 -> U+66bf -> 0xfadd CJK Unified Ideograph
231             0xedc2 -> U+66fa -> 0xfade CJK Unified Ideograph
232             0xedc3 -> U+670e -> 0xfadf CJK Unified Ideograph
233             0xedc4 -> U+f929 -> 0xfae0 CJK compatibility Ideograph
234             0xedc5 -> U+6766 -> 0xfae1 CJK Unified Ideograph
235             0xedc6 -> U+67bb -> 0xfae2 CJK Unified Ideograph
236             0xedc7 -> U+6852 -> 0xfae3 CJK Unified Ideograph
237             0xedc8 -> U+67c0 -> 0xfae4 CJK Unified Ideograph
238             0xedc9 -> U+6801 -> 0xfae5 CJK Unified Ideograph
239             0xedca -> U+6844 -> 0xfae6 CJK Unified Ideograph
240             0xedcb -> U+68cf -> 0xfae7 CJK Unified Ideograph
241             0xedcc -> U+fa13 -> 0xfae8 CJK compatibility Ideograph
242             0xedcd -> U+6968 -> 0xfae9 CJK Unified Ideograph
243             0xedce -> U+fa14 -> 0xfaea CJK compatibility Ideograph
244             0xedcf -> U+6998 -> 0xfaeb CJK Unified Ideograph
245             0xedd0 -> U+69e2 -> 0xfaec CJK Unified Ideograph
246             0xedd1 -> U+6a30 -> 0xfaed CJK Unified Ideograph
247             0xedd2 -> U+6a6b -> 0xfaee CJK Unified Ideograph
248             0xedd3 -> U+6a46 -> 0xfaef CJK Unified Ideograph
249             0xedd4 -> U+6a73 -> 0xfaf0 CJK Unified Ideograph
250             0xedd5 -> U+6a7e -> 0xfaf1 CJK Unified Ideograph
251             0xedd6 -> U+6ae2 -> 0xfaf2 CJK Unified Ideograph
252             0xedd7 -> U+6ae4 -> 0xfaf3 CJK Unified Ideograph
253             0xedd8 -> U+6bd6 -> 0xfaf4 CJK Unified Ideograph
254             0xedd9 -> U+6c3f -> 0xfaf5 CJK Unified Ideograph
255             0xedda -> U+6c5c -> 0xfaf6 CJK Unified Ideograph
256             0xeddb -> U+6c86 -> 0xfaf7 CJK Unified Ideograph
257             0xeddc -> U+6c6f -> 0xfaf8 CJK Unified Ideograph
258             0xeddd -> U+6cda -> 0xfaf9 CJK Unified Ideograph
259             0xedde -> U+6d04 -> 0xfafa CJK Unified Ideograph
260             0xeddf -> U+6d87 -> 0xfafb CJK Unified Ideograph
261             0xede0 -> U+6d6f -> 0xfafc CJK Unified Ideograph
262             0xede1 -> U+6d96 -> 0xfb40 CJK Unified Ideograph
263             0xede2 -> U+6dac -> 0xfb41 CJK Unified Ideograph
264             0xede3 -> U+6dcf -> 0xfb42 CJK Unified Ideograph
265             0xede4 -> U+6df8 -> 0xfb43 CJK Unified Ideograph
266             0xede5 -> U+6df2 -> 0xfb44 CJK Unified Ideograph
267             0xede6 -> U+6dfc -> 0xfb45 CJK Unified Ideograph
268             0xede7 -> U+6e39 -> 0xfb46 CJK Unified Ideograph
269             0xede8 -> U+6e5c -> 0xfb47 CJK Unified Ideograph
270             0xede9 -> U+6e27 -> 0xfb48 CJK Unified Ideograph
271             0xedea -> U+6e3c -> 0xfb49 CJK Unified Ideograph
272             0xedeb -> U+6ebf -> 0xfb4a CJK Unified Ideograph
273             0xedec -> U+6f88 -> 0xfb4b CJK Unified Ideograph
274             0xeded -> U+6fb5 -> 0xfb4c CJK Unified Ideograph
275             0xedee -> U+6ff5 -> 0xfb4d CJK Unified Ideograph
276             0xedef -> U+7005 -> 0xfb4e CJK Unified Ideograph
277             0xedf0 -> U+7007 -> 0xfb4f CJK Unified Ideograph
278             0xedf1 -> U+7028 -> 0xfb50 CJK Unified Ideograph
279             0xedf2 -> U+7085 -> 0xfb51 CJK Unified Ideograph
280             0xedf3 -> U+70ab -> 0xfb52 CJK Unified Ideograph
281             0xedf4 -> U+710f -> 0xfb53 CJK Unified Ideograph
282             0xedf5 -> U+7104 -> 0xfb54 CJK Unified Ideograph
283             0xedf6 -> U+715c -> 0xfb55 CJK Unified Ideograph
284             0xedf7 -> U+7146 -> 0xfb56 CJK Unified Ideograph
285             0xedf8 -> U+7147 -> 0xfb57 CJK Unified Ideograph
286             0xedf9 -> U+fa15 -> 0xfb58 CJK compatibility Ideograph
287             0xedfa -> U+71c1 -> 0xfb59 CJK Unified Ideograph
288             0xedfb -> U+71fe -> 0xfb5a CJK Unified Ideograph
289             0xedfc -> U+72b1 -> 0xfb5b CJK Unified Ideograph
290             0xee40 -> U+72be -> 0xfb5c CJK Unified Ideograph
291             0xee41 -> U+7324 -> 0xfb5d CJK Unified Ideograph
292             0xee42 -> U+fa16 -> 0xfb5e CJK compatibility Ideograph
293             0xee43 -> U+7377 -> 0xfb5f CJK Unified Ideograph
294             0xee44 -> U+73bd -> 0xfb60 CJK Unified Ideograph
295             0xee45 -> U+73c9 -> 0xfb61 CJK Unified Ideograph
296             0xee46 -> U+73d6 -> 0xfb62 CJK Unified Ideograph
297             0xee47 -> U+73e3 -> 0xfb63 CJK Unified Ideograph
298             0xee48 -> U+73d2 -> 0xfb64 CJK Unified Ideograph
299             0xee49 -> U+7407 -> 0xfb65 CJK Unified Ideograph
300             0xee4a -> U+73f5 -> 0xfb66 CJK Unified Ideograph
301             0xee4b -> U+7426 -> 0xfb67 CJK Unified Ideograph
302             0xee4c -> U+742a -> 0xfb68 CJK Unified Ideograph
303             0xee4d -> U+7429 -> 0xfb69 CJK Unified Ideograph
304             0xee4e -> U+742e -> 0xfb6a CJK Unified Ideograph
305             0xee4f -> U+7462 -> 0xfb6b CJK Unified Ideograph
306             0xee50 -> U+7489 -> 0xfb6c CJK Unified Ideograph
307             0xee51 -> U+749f -> 0xfb6d CJK Unified Ideograph
308             0xee52 -> U+7501 -> 0xfb6e CJK Unified Ideograph
309             0xee53 -> U+756f -> 0xfb6f CJK Unified Ideograph
310             0xee54 -> U+7682 -> 0xfb70 CJK Unified Ideograph
311             0xee55 -> U+769c -> 0xfb71 CJK Unified Ideograph
312             0xee56 -> U+769e -> 0xfb72 CJK Unified Ideograph
313             0xee57 -> U+769b -> 0xfb73 CJK Unified Ideograph
314             0xee58 -> U+76a6 -> 0xfb74 CJK Unified Ideograph
315             0xee59 -> U+fa17 -> 0xfb75 CJK compatibility Ideograph
316             0xee5a -> U+7746 -> 0xfb76 CJK Unified Ideograph
317             0xee5b -> U+52af -> 0xfb77 CJK Unified Ideograph
318             0xee5c -> U+7821 -> 0xfb78 CJK Unified Ideograph
319             0xee5d -> U+784e -> 0xfb79 CJK Unified Ideograph
320             0xee5e -> U+7864 -> 0xfb7a CJK Unified Ideograph
321             0xee5f -> U+787a -> 0xfb7b CJK Unified Ideograph
322             0xee60 -> U+7930 -> 0xfb7c CJK Unified Ideograph
323             0xee61 -> U+fa18 -> 0xfb7d CJK compatibility Ideograph
324             0xee62 -> U+fa19 -> 0xfb7e CJK compatibility Ideograph
325             0xee63 -> U+fa1a -> 0xfb80 CJK compatibility Ideograph
326             0xee64 -> U+7994 -> 0xfb81 CJK Unified Ideograph
327             0xee65 -> U+fa1b -> 0xfb82 CJK compatibility Ideograph
328             0xee66 -> U+799b -> 0xfb83 CJK Unified Ideograph
329             0xee67 -> U+7ad1 -> 0xfb84 CJK Unified Ideograph
330             0xee68 -> U+7ae7 -> 0xfb85 CJK Unified Ideograph
331             0xee69 -> U+fa1c -> 0xfb86 CJK compatibility Ideograph
332             0xee6a -> U+7aeb -> 0xfb87 CJK Unified Ideograph
333             0xee6b -> U+7b9e -> 0xfb88 CJK Unified Ideograph
334             0xee6c -> U+fa1d -> 0xfb89 CJK compatibility Ideograph
335             0xee6d -> U+7d48 -> 0xfb8a CJK Unified Ideograph
336             0xee6e -> U+7d5c -> 0xfb8b CJK Unified Ideograph
337             0xee6f -> U+7db7 -> 0xfb8c CJK Unified Ideograph
338             0xee70 -> U+7da0 -> 0xfb8d CJK Unified Ideograph
339             0xee71 -> U+7dd6 -> 0xfb8e CJK Unified Ideograph
340             0xee72 -> U+7e52 -> 0xfb8f CJK Unified Ideograph
341             0xee73 -> U+7f47 -> 0xfb90 CJK Unified Ideograph
342             0xee74 -> U+7fa1 -> 0xfb91 CJK Unified Ideograph
343             0xee75 -> U+fa1e -> 0xfb92 CJK compatibility Ideograph
344             0xee76 -> U+8301 -> 0xfb93 CJK Unified Ideograph
345             0xee77 -> U+8362 -> 0xfb94 CJK Unified Ideograph
346             0xee78 -> U+837f -> 0xfb95 CJK Unified Ideograph
347             0xee79 -> U+83c7 -> 0xfb96 CJK Unified Ideograph
348             0xee7a -> U+83f6 -> 0xfb97 CJK Unified Ideograph
349             0xee7b -> U+8448 -> 0xfb98 CJK Unified Ideograph
350             0xee7c -> U+84b4 -> 0xfb99 CJK Unified Ideograph
351             0xee7d -> U+8553 -> 0xfb9a CJK Unified Ideograph
352             0xee7e -> U+8559 -> 0xfb9b CJK Unified Ideograph
353             0xee80 -> U+856b -> 0xfb9c CJK Unified Ideograph
354             0xee81 -> U+fa1f -> 0xfb9d CJK compatibility Ideograph
355             0xee82 -> U+85b0 -> 0xfb9e CJK Unified Ideograph
356             0xee83 -> U+fa20 -> 0xfb9f CJK compatibility Ideograph
357             0xee84 -> U+fa21 -> 0xfba0 CJK compatibility Ideograph
358             0xee85 -> U+8807 -> 0xfba1 CJK Unified Ideograph
359             0xee86 -> U+88f5 -> 0xfba2 CJK Unified Ideograph
360             0xee87 -> U+8a12 -> 0xfba3 CJK Unified Ideograph
361             0xee88 -> U+8a37 -> 0xfba4 CJK Unified Ideograph
362             0xee89 -> U+8a79 -> 0xfba5 CJK Unified Ideograph
363             0xee8a -> U+8aa7 -> 0xfba6 CJK Unified Ideograph
364             0xee8b -> U+8abe -> 0xfba7 CJK Unified Ideograph
365             0xee8c -> U+8adf -> 0xfba8 CJK Unified Ideograph
366             0xee8d -> U+fa22 -> 0xfba9 CJK compatibility Ideograph
367             0xee8e -> U+8af6 -> 0xfbaa CJK Unified Ideograph
368             0xee8f -> U+8b53 -> 0xfbab CJK Unified Ideograph
369             0xee90 -> U+8b7f -> 0xfbac CJK Unified Ideograph
370             0xee91 -> U+8cf0 -> 0xfbad CJK Unified Ideograph
371             0xee92 -> U+8cf4 -> 0xfbae CJK Unified Ideograph
372             0xee93 -> U+8d12 -> 0xfbaf CJK Unified Ideograph
373             0xee94 -> U+8d76 -> 0xfbb0 CJK Unified Ideograph
374             0xee95 -> U+fa23 -> 0xfbb1 CJK compatibility Ideograph
375             0xee96 -> U+8ecf -> 0xfbb2 CJK Unified Ideograph
376             0xee97 -> U+fa24 -> 0xfbb3 CJK compatibility Ideograph
377             0xee98 -> U+fa25 -> 0xfbb4 CJK compatibility Ideograph
378             0xee99 -> U+9067 -> 0xfbb5 CJK Unified Ideograph
379             0xee9a -> U+90de -> 0xfbb6 CJK Unified Ideograph
380             0xee9b -> U+fa26 -> 0xfbb7 CJK compatibility Ideograph
381             0xee9c -> U+9115 -> 0xfbb8 CJK Unified Ideograph
382             0xee9d -> U+9127 -> 0xfbb9 CJK Unified Ideograph
383             0xee9e -> U+91da -> 0xfbba CJK Unified Ideograph
384             0xee9f -> U+91d7 -> 0xfbbb CJK Unified Ideograph
385             0xeea0 -> U+91de -> 0xfbbc CJK Unified Ideograph
386             0xeea1 -> U+91ed -> 0xfbbd CJK Unified Ideograph
387             0xeea2 -> U+91ee -> 0xfbbe CJK Unified Ideograph
388             0xeea3 -> U+91e4 -> 0xfbbf CJK Unified Ideograph
389             0xeea4 -> U+91e5 -> 0xfbc0 CJK Unified Ideograph
390             0xeea5 -> U+9206 -> 0xfbc1 CJK Unified Ideograph
391             0xeea6 -> U+9210 -> 0xfbc2 CJK Unified Ideograph
392             0xeea7 -> U+920a -> 0xfbc3 CJK Unified Ideograph
393             0xeea8 -> U+923a -> 0xfbc4 CJK Unified Ideograph
394             0xeea9 -> U+9240 -> 0xfbc5 CJK Unified Ideograph
395             0xeeaa -> U+923c -> 0xfbc6 CJK Unified Ideograph
396             0xeeab -> U+924e -> 0xfbc7 CJK Unified Ideograph
397             0xeeac -> U+9259 -> 0xfbc8 CJK Unified Ideograph
398             0xeead -> U+9251 -> 0xfbc9 CJK Unified Ideograph
399             0xeeae -> U+9239 -> 0xfbca CJK Unified Ideograph
400             0xeeaf -> U+9267 -> 0xfbcb CJK Unified Ideograph
401             0xeeb0 -> U+92a7 -> 0xfbcc CJK Unified Ideograph
402             0xeeb1 -> U+9277 -> 0xfbcd CJK Unified Ideograph
403             0xeeb2 -> U+9278 -> 0xfbce CJK Unified Ideograph
404             0xeeb3 -> U+92e7 -> 0xfbcf CJK Unified Ideograph
405             0xeeb4 -> U+92d7 -> 0xfbd0 CJK Unified Ideograph
406             0xeeb5 -> U+92d9 -> 0xfbd1 CJK Unified Ideograph
407             0xeeb6 -> U+92d0 -> 0xfbd2 CJK Unified Ideograph
408             0xeeb7 -> U+fa27 -> 0xfbd3 CJK compatibility Ideograph
409             0xeeb8 -> U+92d5 -> 0xfbd4 CJK Unified Ideograph
410             0xeeb9 -> U+92e0 -> 0xfbd5 CJK Unified Ideograph
411             0xeeba -> U+92d3 -> 0xfbd6 CJK Unified Ideograph
412             0xeebb -> U+9325 -> 0xfbd7 CJK Unified Ideograph
413             0xeebc -> U+9321 -> 0xfbd8 CJK Unified Ideograph
414             0xeebd -> U+92fb -> 0xfbd9 CJK Unified Ideograph
415             0xeebe -> U+fa28 -> 0xfbda CJK compatibility Ideograph
416             0xeebf -> U+931e -> 0xfbdb CJK Unified Ideograph
417             0xeec0 -> U+92ff -> 0xfbdc CJK Unified Ideograph
418             0xeec1 -> U+931d -> 0xfbdd CJK Unified Ideograph
419             0xeec2 -> U+9302 -> 0xfbde CJK Unified Ideograph
420             0xeec3 -> U+9370 -> 0xfbdf CJK Unified Ideograph
421             0xeec4 -> U+9357 -> 0xfbe0 CJK Unified Ideograph
422             0xeec5 -> U+93a4 -> 0xfbe1 CJK Unified Ideograph
423             0xeec6 -> U+93c6 -> 0xfbe2 CJK Unified Ideograph
424             0xeec7 -> U+93de -> 0xfbe3 CJK Unified Ideograph
425             0xeec8 -> U+93f8 -> 0xfbe4 CJK Unified Ideograph
426             0xeec9 -> U+9431 -> 0xfbe5 CJK Unified Ideograph
427             0xeeca -> U+9445 -> 0xfbe6 CJK Unified Ideograph
428             0xeecb -> U+9448 -> 0xfbe7 CJK Unified Ideograph
429             0xeecc -> U+9592 -> 0xfbe8 CJK Unified Ideograph
430             0xeecd -> U+f9dc -> 0xfbe9 CJK compatibility Ideograph
431             0xeece -> U+fa29 -> 0xfbea CJK compatibility Ideograph
432             0xeecf -> U+969d -> 0xfbeb CJK Unified Ideograph
433             0xeed0 -> U+96af -> 0xfbec CJK Unified Ideograph
434             0xeed1 -> U+9733 -> 0xfbed CJK Unified Ideograph
435             0xeed2 -> U+973b -> 0xfbee CJK Unified Ideograph
436             0xeed3 -> U+9743 -> 0xfbef CJK Unified Ideograph
437             0xeed4 -> U+974d -> 0xfbf0 CJK Unified Ideograph
438             0xeed5 -> U+974f -> 0xfbf1 CJK Unified Ideograph
439             0xeed6 -> U+9751 -> 0xfbf2 CJK Unified Ideograph
440             0xeed7 -> U+9755 -> 0xfbf3 CJK Unified Ideograph
441             0xeed8 -> U+9857 -> 0xfbf4 CJK Unified Ideograph
442             0xeed9 -> U+9865 -> 0xfbf5 CJK Unified Ideograph
443             0xeeda -> U+fa2a -> 0xfbf6 CJK compatibility Ideograph
444             0xeedb -> U+fa2b -> 0xfbf7 CJK compatibility Ideograph
445             0xeedc -> U+9927 -> 0xfbf8 CJK Unified Ideograph
446             0xeedd -> U+fa2c -> 0xfbf9 CJK compatibility Ideograph
447             0xeede -> U+999e -> 0xfbfa CJK Unified Ideograph
448             0xeedf -> U+9a4e -> 0xfbfb CJK Unified Ideograph
449             0xeee0 -> U+9ad9 -> 0xfbfc CJK Unified Ideograph
450             0xeee1 -> U+9adc -> 0xfc40 CJK Unified Ideograph
451             0xeee2 -> U+9b75 -> 0xfc41 CJK Unified Ideograph
452             0xeee3 -> U+9b72 -> 0xfc42 CJK Unified Ideograph
453             0xeee4 -> U+9b8f -> 0xfc43 CJK Unified Ideograph
454             0xeee5 -> U+9bb1 -> 0xfc44 CJK Unified Ideograph
455             0xeee6 -> U+9bbb -> 0xfc45 CJK Unified Ideograph
456             0xeee7 -> U+9c00 -> 0xfc46 CJK Unified Ideograph
457             0xeee8 -> U+9d70 -> 0xfc47 CJK Unified Ideograph
458             0xeee9 -> U+9d6b -> 0xfc48 CJK Unified Ideograph
459             0xeeea -> U+fa2d -> 0xfc49 CJK compatibility Ideograph
460             0xeeeb -> U+9e19 -> 0xfc4a CJK Unified Ideograph
461             0xeeec -> U+9ed1 -> 0xfc4b CJK Unified Ideograph
462             0xeeef -> U+2170 -> 0xfa40 Small Roman Numeral One
463             0xeef0 -> U+2171 -> 0xfa41 Small Roman Numeral Two
464             0xeef1 -> U+2172 -> 0xfa42 Small Roman Numeral Three
465             0xeef2 -> U+2173 -> 0xfa43 Small Roman Numeral Four
466             0xeef3 -> U+2174 -> 0xfa44 Small Roman Numeral Five
467             0xeef4 -> U+2175 -> 0xfa45 Small Roman Numeral Six
468             0xeef5 -> U+2176 -> 0xfa46 Small Roman Numeral Seven
469             0xeef6 -> U+2177 -> 0xfa47 Small Roman Numeral Eight
470             0xeef7 -> U+2178 -> 0xfa48 Small Roman Numeral Nine
471             0xeef8 -> U+2179 -> 0xfa49 Small Roman Numeral Ten
472             0xeef9 -> U+ffe2 -> 0x81ca Fullwidth Not Sign
473             0xeefa -> U+ffe4 -> 0xfa55 Fullwidth Broken Bar
474             0xeefb -> U+ff07 -> 0xfa56 Fullwidth Apostrophe
475             0xeefc -> U+ff02 -> 0xfa57 Fullwidth Quotation Mark
476             0xfa4a -> U+2160 -> 0x8754 Roman Numeral One
477             0xfa4b -> U+2161 -> 0x8755 Roman Numeral Two
478             0xfa4c -> U+2162 -> 0x8756 Roman Numeral Three
479             0xfa4d -> U+2163 -> 0x8757 Roman Numeral Four
480             0xfa4e -> U+2164 -> 0x8758 Roman Numeral Five
481             0xfa4f -> U+2165 -> 0x8759 Roman Numeral Six
482             0xfa50 -> U+2166 -> 0x875a Roman Numeral Seven
483             0xfa51 -> U+2167 -> 0x875b Roman Numeral Eight
484             0xfa52 -> U+2168 -> 0x875c Roman Numeral Nine
485             0xfa53 -> U+2169 -> 0x875d Roman Numeral Ten
486             0xfa54 -> U+ffe2 -> 0x81ca Fullwidth Not Sign
487             0xfa58 -> U+3231 -> 0x878a Parenthesized Ideograph Stock
488             0xfa59 -> U+2116 -> 0x8782 Numero Sign
489             0xfa5a -> U+2121 -> 0x8784 Telephone Sign
490             0xfa5b -> U+2235 -> 0x81e6 Because
491             END
492             next if /^#/;
493             if (my($cp932a, $Unicode, $cp932b) = / 0x([0123456789abcdef]{4}) .+? U\+([0123456789abcdef]{4}) .+? 0x([0123456789abcdef]{4}) /x) {
494             $Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{ pack('H*',uc($cp932a)) } = pack('H*',uc($cp932b));
495             }
496             }
497              
498             my %x = (
499              
500             # utf8jp(UTF-8-SPUA-JP) is best choice as internal encoding, because it
501             # makes one character by one code point on fixed length without grapheme
502             # clustering.
503             # Other all are not so.
504              
505             'cp932x' => {
506             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
507             'set_ctype' => sub { q!! },
508             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^((?:\x9C\x5A)?[\x00-\xFF]{1,2})!!; $1 },
509             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932x'}{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
510             'putc' => sub { local $^W; $tr{'cp932x'}{'utf8jp'}{$_[0]} },
511             },
512             'cp932' => {
513             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
514             'set_ctype' => sub { q!! },
515             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
516             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932'}{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
517             'putc' => sub { local $^W; $tr{'cp932'}{'utf8jp'}{$_[0]} },
518             },
519             'cp932ibm' => {
520             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
521             'set_ctype' => sub { q!! },
522             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
523             # 'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932ibm'}{$_[0]} },
524             # VVVVVVVV--- 'cp932' with KB170559 is better than only 'cp932ibm' on read
525             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932' }{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
526             'putc' => sub { local $^W; $tr{'cp932ibm'}{'utf8jp'}{$_[0]} },
527             },
528             'cp932nec' => {
529             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
530             'set_ctype' => sub { q!! },
531             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
532             # 'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932nec'}{$_[0]} },
533             # VVVVVVVV--- 'cp932' with KB170559 is better than only 'cp932nec' on read
534             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp932' }{$Knowledge_Base_Article_ID_170559_prb_conversion_problem_between_shift_jis_and_unicode{$_[0]}||$_[0]} },
535             'putc' => sub { local $^W; $tr{'cp932nec'}{'utf8jp'}{$_[0]} },
536             },
537             'sjis2004' => {
538             'get_ctype' => sub { m!^[^\x81-\x9F\xE0-\xFC]! ? 'SBCS' : m!^[\x81-\x9F\xE0-\xFC]! ? 'DBCS' : undef },
539             'set_ctype' => sub { q!! },
540             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
541             'getc' => sub { local $^W; $tr{'utf8jp'}{'sjis2004'}{$_[0]} },
542             'putc' => sub { local $^W; $tr{'sjis2004'}{'utf8jp'}{$_[0]} },
543             },
544             'cp00930' => {
545             'get_ctype' => sub { s!^\x0F!! ? 'SBCS' : s!^\x0E!! ? 'DBCS' : undef },
546             'set_ctype' => sub { {'SBCS'=>"\x0F", 'DBCS'=>"\x0E", }->{$_[0]} },
547             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
548             'getc' => sub { local $^W; $tr{'utf8jp'}{'cp00930'}{$_[0]} },
549             'putc' => sub { local $^W; $tr{'cp00930'}{'utf8jp'}{$_[0]} },
550             },
551             'keis78' => {
552             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
553             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
554             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
555             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis78'}{$_[0]} },
556             'putc' => sub { local $^W; $tr{'keis78'}{'utf8jp'}{$_[0]} },
557             },
558             'keis83' => {
559             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
560             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
561             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
562             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis83'}{$_[0]} },
563             'putc' => sub { local $^W; $tr{'keis83'}{'utf8jp'}{$_[0]} },
564             },
565             'keis90' => {
566             'get_ctype' => sub { s!^\x0A\x41!! ? 'SBCS' : s!^\x0A\x42!! ? 'DBCS' : undef },
567             'set_ctype' => sub { {'SBCS'=>"\x0A\x41", 'DBCS'=>"\x0A\x42", }->{$_[0]} },
568             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
569             'getc' => sub { local $^W; $tr{'utf8jp'}{'keis90'}{$_[0]} },
570             'putc' => sub { local $^W; $tr{'keis90'}{'utf8jp'}{$_[0]} },
571             },
572             'jef' => {
573             'get_ctype' => sub { s!^\x29!! ? 'SBCS' : s!^[\x28\x38]!! ? 'DBCS' : undef },
574             'set_ctype' => sub { {'SBCS'=>"\x29", 'DBCS'=>"\x28", }->{$_[0]} },
575             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
576             'getc' => sub { local $^W; $tr{'utf8jp'}{'jef'}{$_[0]} },
577             'putc' => sub { local $^W; $tr{'jef'}{'utf8jp'}{$_[0]} },
578             },
579             'jef9p' => {
580             'get_ctype' => sub { s!^\x29!! ? 'SBCS' : s!^[\x28\x38]!! ? 'DBCS' : undef },
581             'set_ctype' => sub { {'SBCS'=>"\x29", 'DBCS'=>"\x38", }->{$_[0]} },
582             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
583             'getc' => sub { local $^W; $tr{'utf8jp'}{'jef'}{$_[0]} },
584             'putc' => sub { local $^W; $tr{'jef'}{'utf8jp'}{$_[0]} },
585             },
586             'jipsj' => {
587             'get_ctype' => sub { s!^\x1A\x71!! ? 'SBCS' : s!^\x1A\x70!! ? 'DBCS' : undef },
588             'set_ctype' => sub { {'SBCS'=>"\x1A\x71", 'DBCS'=>"\x1A\x70", }->{$_[0]} },
589             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
590             'getc' => sub { local $^W; $tr{'utf8jp'}{'jipsj'}{$_[0]} },
591             'putc' => sub { local $^W; $tr{'jipsj'}{'utf8jp'}{$_[0]} },
592             },
593             'jipse' => {
594             'get_ctype' => sub { s!^\x3F\x76!! ? 'SBCS' : s!^\x3F\x75!! ? 'DBCS' : undef },
595             'set_ctype' => sub { {'SBCS'=>"\x3F\x76", 'DBCS'=>"\x3F\x75", }->{$_[0]} },
596             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
597             'getc' => sub { local $^W; $tr{'utf8jp'}{'jipse'}{$_[0]} },
598             'putc' => sub { local $^W; $tr{'jipse'}{'utf8jp'}{$_[0]} },
599             },
600             'letsj' => {
601             'get_ctype' => sub { s!^\x93\xF1!! ? 'SBCS' : s!^\x93\x70!! ? 'DBCS' : undef },
602             'set_ctype' => sub { {'SBCS'=>"\x93\xF1", 'DBCS'=>"\x93\x70", }->{$_[0]} },
603             'getoct' => sub { $_[0] eq 'SBCS' ? s!^([\x00-\xFF])!! : s!^([\x00-\xFF]{1,2})!!; $1 },
604             'getc' => sub { local $^W; $tr{'utf8jp'}{'letsj'}{$_[0]} },
605             'putc' => sub { local $^W; $tr{'letsj'}{'utf8jp'}{$_[0]} },
606             },
607             'utf8' => {
608             'get_ctype' => sub { m!^[\x00-\x7F\xFE\xFF]! ? 'SBCS' : m!^[^\x00-\x7F\xFE\xFF]! ? 'DBCS' : undef },
609             'set_ctype' => sub { q!! },
610             'getoct' => sub { s!^(
611             [\x00-\x7F\x80-\xBF\xC0-\xC1\xF5-\xFF] |
612             [\xE0-\xE2\xE4-\xEF][\x80-\xBF]{2} |
613             \xE3(?:
614             \x81\x8B\xE3\x82\x9A | # U+304B+309A
615             \x81\x8D\xE3\x82\x9A | # U+304D+309A
616             \x81\x8F\xE3\x82\x9A | # U+304F+309A
617             \x81\x91\xE3\x82\x9A | # U+3051+309A
618             \x81\x93\xE3\x82\x9A | # U+3053+309A
619             \x82\xAB\xE3\x82\x9A | # U+30AB+309A
620             \x82\xAD\xE3\x82\x9A | # U+30AD+309A
621             \x82\xAF\xE3\x82\x9A | # U+30AF+309A
622             \x82\xB1\xE3\x82\x9A | # U+30B1+309A
623             \x82\xB3\xE3\x82\x9A | # U+30B3+309A
624             \x82\xBB\xE3\x82\x9A | # U+30BB+309A
625             \x83\x84\xE3\x82\x9A | # U+30C4+309A
626             \x83\x88\xE3\x82\x9A | # U+30C8+309A
627             \x87\xB7\xE3\x82\x9A | # U+31F7+309A
628             [\x80-\xBF]{2}
629             ) |
630             [\xC2\xC4-\xC8\xCC-\xDF][\x80-\xBF] |
631             \xC3(?:
632             \xA6\xCC\x80 | # U+00E6+0300
633             [\x80-\xBF]
634             ) |
635             \xC9(?:
636             \x94\xCC\x80 | # U+0254+0300
637             \x94\xCC\x81 | # U+0254+0301
638             \x99\xCC\x80 | # U+0259+0300
639             \x99\xCC\x81 | # U+0259+0301
640             \x9A\xCC\x80 | # U+025A+0300
641             \x9A\xCC\x81 | # U+025A+0301
642             [\x80-\xBF]
643             ) |
644             \xCA(?:
645             \x8C\xCC\x80 | # U+028C+0300
646             \x8C\xCC\x81 | # U+028C+0301
647             [\x80-\xBF]
648             ) |
649             \xCB(?:
650             \xA5\xCB\xA9 | # U+02E5+02E9
651             \xA9\xCB\xA5 | # U+02E9+02E5
652             [\x80-\xBF]
653             ) |
654             [\xF0-\xF4][\x80-\xBF]{3} |
655             [\x00-\xFF]
656             )!!xs; $1 },
657             'getc' => sub { local $^W; $tr{'utf8jp'}{'utf8'}{$_[0]} },
658             'putc' => sub { local $^W; $tr{'utf8'}{'utf8jp'}{$_[0]} },
659             },
660             'utf8.1' => {
661             'get_ctype' => sub { m!^[\x00-\x7F\xFE\xFF]! ? 'SBCS' : m!^[^\x00-\x7F\xFE\xFF]! ? 'DBCS' : undef },
662             'set_ctype' => sub { q!! },
663             'getoct' => sub { s!^(
664             [\x00-\x7F\x80-\xBF\xC0-\xC1\xF5-\xFF] |
665             [\xE0-\xE2\xE4-\xEF][\x80-\xBF]{2} |
666             \xE3(?:
667             \x81\x8B\xE3\x82\x9A | # U+304B+309A
668             \x81\x8D\xE3\x82\x9A | # U+304D+309A
669             \x81\x8F\xE3\x82\x9A | # U+304F+309A
670             \x81\x91\xE3\x82\x9A | # U+3051+309A
671             \x81\x93\xE3\x82\x9A | # U+3053+309A
672             \x82\xAB\xE3\x82\x9A | # U+30AB+309A
673             \x82\xAD\xE3\x82\x9A | # U+30AD+309A
674             \x82\xAF\xE3\x82\x9A | # U+30AF+309A
675             \x82\xB1\xE3\x82\x9A | # U+30B1+309A
676             \x82\xB3\xE3\x82\x9A | # U+30B3+309A
677             \x82\xBB\xE3\x82\x9A | # U+30BB+309A
678             \x83\x84\xE3\x82\x9A | # U+30C4+309A
679             \x83\x88\xE3\x82\x9A | # U+30C8+309A
680             \x87\xB7\xE3\x82\x9A | # U+31F7+309A
681             [\x80-\xBF]{2}
682             ) |
683             [\xC2\xC4-\xC8\xCC-\xDF][\x80-\xBF] |
684             \xC3(?:
685             \xA6\xCC\x80 | # U+00E6+0300
686             [\x80-\xBF]
687             ) |
688             \xC9(?:
689             \x94\xCC\x80 | # U+0254+0300
690             \x94\xCC\x81 | # U+0254+0301
691             \x99\xCC\x80 | # U+0259+0300
692             \x99\xCC\x81 | # U+0259+0301
693             \x9A\xCC\x80 | # U+025A+0300
694             \x9A\xCC\x81 | # U+025A+0301
695             [\x80-\xBF]
696             ) |
697             \xCA(?:
698             \x8C\xCC\x80 | # U+028C+0300
699             \x8C\xCC\x81 | # U+028C+0301
700             [\x80-\xBF]
701             ) |
702             \xCB(?:
703             \xA5\xCB\xA9 | # U+02E5+02E9
704             \xA9\xCB\xA5 | # U+02E9+02E5
705             [\x80-\xBF]
706             ) |
707             [\xF0-\xF4][\x80-\xBF]{3} |
708             [\x00-\xFF]
709             )!!xs; $1 },
710             'getc' => sub { local $^W; $tr{'utf8jp'}{'utf8.1'}{$_[0]} },
711             'putc' => sub { local $^W; $tr{'utf8.1'}{'utf8jp'}{$_[0]} },
712             },
713             'utf8jp' => {
714             'get_ctype' => sub { m!^\xF3\xB0(?:[\x80-\x82][\x80-\xBF]|\x83[\x80-\xBE])! ? 'SBCS' : 'DBCS' },
715             'set_ctype' => sub { q!! },
716             'getoct' => sub { s!^(\xF3[\xB0-\xB5][\x80-\xBF][\x80-\xBF]|[\x00-\xFF])!!; $1; },
717             'getc' => sub { $_[0] },
718             'putc' => sub { $_[0] },
719             },
720             );
721              
722             #---------------------------------------------------------------------
723             # convert encoding to OUTPUT_encoding from INPUT_encoding
724             #---------------------------------------------------------------------
725             sub convert {
726 25036     25036 0 838227 local $_ = ${$_[0]};
  25036         42894  
727 25036         29251 my $OUTPUT_encoding = $_[1];
728 25036         25035 my $INPUT_encoding = $_[2];
729 25036   100     43782 my $option = ($_[3] || {});
730 25036         26708 my $last_ctype = undef;
731 25036         26239 my $output = '';
732 25036         25359 my $count = 0;
733 25036   100     84298 $option->{'OVERRIDE_MAPPING'} ||= {};
734              
735 25036 50       43381 if (ref($_[0]) ne 'SCALAR') {
736 0         0 die "@{[__FILE__]} \$_[0] isn't scalar reference\n";
  0         0  
737             }
738 25036 50       39330 if (not exists $x{$OUTPUT_encoding}) {
739 0         0 die "@{[__FILE__]} unknown OUTPUT encoding '$OUTPUT_encoding'\n";
  0         0  
740             }
741 25036 50       34345 if (not exists $x{$INPUT_encoding}) {
742 0         0 die "@{[__FILE__]} unknown INPUT encoding '$INPUT_encoding'\n";
  0         0  
743             }
744              
745 25036         25584 my $INPUT_LAYOUT = undef;
746 25036         28704 my @ctype = ();
747 25036 100       72271 if ($INPUT_encoding =~ /^(?:cp932x|cp932|cp932ibm|cp932nec|sjis2004|cp00930|keis78|keis83|keis90|jef|jef9p|jipsj|jipse|letsj)$/) {
748 22678 100       34161 if (defined $option->{'INPUT_LAYOUT'}) {
749 22645         26351 $INPUT_LAYOUT = $option->{'INPUT_LAYOUT'};
750 22645         25047 $INPUT_LAYOUT =~ s/([SD])([0-9]+)/$1 x $2/ge;
  0         0  
751 22645 50       41849 if ($INPUT_LAYOUT =~ /^[SD]*$/) {
752 22645         45624 @ctype = map {{'S'=>'SBCS', 'D'=>'DBCS',}->{$_}} split(//,$INPUT_LAYOUT);
  22821         88609  
753             }
754             else {
755 0         0 die "@{[__FILE__]} INPUT_LAYOUT isn't 'S' or 'D' sequence '$INPUT_LAYOUT'";
  0         0  
756             }
757             }
758             }
759              
760 25036         44224 while ($_ ne '') {
761 25303         27478 my $ctype = '';
762 25303 100       33425 if (defined $INPUT_LAYOUT) {
763 22821   50     35764 $ctype = (shift(@ctype) || 'SBCS');
764             }
765             else {
766 2482   50     3648 $ctype = ($x{$INPUT_encoding}{'get_ctype'}->() || $last_ctype || 'SBCS');
767             }
768              
769 25303 100 100     41649 if (not defined($last_ctype) or ($ctype ne $last_ctype)) {
770 25199 100       36352 if ($option->{'OUTPUT_SHIFTING'}) {
771 76         130 $output .= $x{$OUTPUT_encoding}{'set_ctype'}->($ctype);
772             }
773 25199         26703 $last_ctype = $ctype;
774             }
775              
776 25303         39093 my $input_octets = $x{$INPUT_encoding}{'getoct'}->($ctype);
777 25303 50       38092 if (defined $input_octets) {
778 25303 100       34866 if (defined $option->{'OVERRIDE_MAPPING'}{$input_octets}) {
779 70         104 $output .= $option->{'OVERRIDE_MAPPING'}{$input_octets};
780             }
781             else {
782 25233         35525 my $char = $x{$INPUT_encoding}{'getc'}->($input_octets);
783 25233 100       44054 if (not defined $char) {
    100          
784 3600 100       4511 if (defined $option->{'GETA'}) {
785 25         41 $output .= $option->{'GETA'};
786             }
787             else {
788 3575         4718 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
789             }
790             }
791             elsif ($char eq "\xF3\xB0\x84\x80") {
792 208 100       313 if (defined $option->{'SPACE'}) {
793 21         30 $output .= $option->{'SPACE'};
794             }
795             else {
796 187         356 $output .= $x{$OUTPUT_encoding}{'putc'}->($char);
797             }
798             }
799             else {
800 21425         31812 my $output_octets = $x{$OUTPUT_encoding}{'putc'}->($char);
801 21425 100 66     49323 if (not defined ($output_octets) or ($output_octets eq '')) {
802 79 100       126 if (defined $option->{'GETA'}) {
803 77         110 $output .= $option->{'GETA'};
804             }
805             else {
806 2         4 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
807             }
808             }
809             else {
810 21346         27010 $output .= $output_octets;
811             }
812             }
813             }
814             }
815              
816 25303         40160 $count++;
817             }
818              
819 25036         24622 ${$_[0]} = $output;
  25036         34034  
820 25036         44595 return $count;
821             }
822              
823             #---------------------------------------------------------------------
824             # confirm version
825             #---------------------------------------------------------------------
826             sub VERSION {
827 0     0 0   my($version) = @_;
828 0 0         if ($version ne $Jacode4e::VERSION) {
829 0           die "@{[__FILE__]} $Jacode4e::VERSION isn't $version";
  0            
830             }
831             }
832              
833             #---------------------------------------------------------------------
834             # dump encoding tables
835             #---------------------------------------------------------------------
836             END {
837 32 0 33 32   0 if (
      33        
838             ($0 eq __FILE__) and
839             defined($ARGV[0]) and
840             ($ARGV[0] eq '--dumptable')
841             ) {
842              
843             # dump DBCS tables
844 0         0 for my $encoding (qw(
845             cp932 cp932ibm cp932nec sjis2004 cp00930 keis78 keis83 keis90 jef jef9p jipsj jipse letsj
846             )) {
847 0 0       0 open(FILE,">$0-$Jacode4e::VERSION.TABLE.\U$encoding\E.txt") || die;
848 0         0 binmode(FILE);
849 0         0 for (my $octet1=0x00; $octet1<=0xFF; $octet1+=0x01) {
850 0         0 for (my $octet2=0x00; $octet2<=0xF0; $octet2+=0x10) {
851 0         0 my @line = ();
852 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
853 0         0 my $octets = pack('CC', $octet1, $octet2 + $column);
854 0         0 Jacode4e::convert(\$octets, 'utf8', $encoding, { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
855 0         0 push @line, $octets;
856             }
857 0 0       0 if (grep(!/ /,@line) >= 1) {
858 0         0 printf FILE ('%s %02X%02X: ', uc $encoding, $octet1, $octet2);
859 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 0], $line[ 1], $line[ 2], $line[ 3]);
860 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 4], $line[ 5], $line[ 6], $line[ 7]);
861 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 8], $line[ 9], $line[10], $line[11]);
862 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[12], $line[13], $line[14], $line[15]);
863 0         0 print FILE "\n";
864             }
865             }
866             }
867 0         0 close(FILE);
868             }
869              
870             # dump CP932X table
871 0 0       0 open(FILE,">$0-$Jacode4e::VERSION.TABLE.CP932X.txt") || die;
872 0         0 binmode(FILE);
873 0         0 for (my $octet1=0x00; $octet1<=0xFF; $octet1+=0x01) {
874 0         0 for (my $octet2=0x00; $octet2<=0xF0; $octet2+=0x10) {
875 0         0 my @line = ();
876 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
877 0         0 my $octets = pack('CC', $octet1, $octet2 + $column);
878 0         0 Jacode4e::convert(\$octets, 'utf8', 'cp932x', { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
879 0         0 push @line, $octets;
880             }
881 0         0 for (my $column=0x00; $column<=0x0F; $column+=0x01) {
882 0         0 my $octets = pack('CCCC', 0x9C, 0x5A, $octet1, $octet2 + $column);
883 0         0 Jacode4e::convert(\$octets, 'utf8', 'cp932x', { 'INPUT_LAYOUT'=>'D', 'GETA'=>" " });
884 0         0 push @line, $octets;
885             }
886 0 0       0 if (grep(!/ /,@line) >= 1) {
887 0         0 printf FILE ('CP932X %02X%02X: ', $octet1, $octet2);
888 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 0], $line[ 1], $line[ 2], $line[ 3]);
889 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 4], $line[ 5], $line[ 6], $line[ 7]);
890 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[ 8], $line[ 9], $line[10], $line[11]);
891 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[12], $line[13], $line[14], $line[15]);
892 0         0 print FILE ' ';
893 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[16], $line[17], $line[18], $line[19]);
894 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[20], $line[21], $line[22], $line[23]);
895 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[24], $line[25], $line[26], $line[27]);
896 0         0 printf FILE ('%-2s%-2s%-2s%-2s ', $line[28], $line[29], $line[30], $line[31]);
897 0         0 print FILE "\n";
898             }
899             }
900             }
901 0         0 close(FILE);
902              
903 0         0 exit;
904             }
905             }
906              
907             #---------------------------------------------------------------------
908             # document
909             #---------------------------------------------------------------------
910              
911             =pod
912              
913             =encoding utf8
914              
915             =head1 NAME
916              
917             Jacode4e - Converts Character Encodings for Enterprise in Japan
918              
919             =head1 SYNOPSIS
920              
921             use FindBin;
922             use lib "$FindBin::Bin/lib";
923             use Jacode4e;
924            
925             $char_count =
926             Jacode4e::convert(\$line, $OUTPUT_encoding, $INPUT_encoding [, { %option }]);
927              
928             =head2 $char_count
929              
930             Count of characters in $line
931              
932             =head2 $line
933              
934             =head2 $OUTPUT_encoding
935              
936             =head2 $INPUT_encoding
937              
938             Converts encoding of $line from $INPUT_encoding to $OUTPUT_encoding then overwrites $line.
939              
940             $OUTPUT_encoding and $INPUT_encoding cannot omit.
941              
942             You can use mnemonic as encoding name of $INPUT_encoding and $OUTPUT_encoding:
943              
944             mnemonic means
945             -----------------------------------------------------------------------
946             cp932x CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
947             cp932 Microsoft CP932, IANA Windows-31J
948             cp932ibm IBM CP932
949             cp932nec NEC CP932
950             sjis2004 JISC Shift_JIS-2004
951             cp00930 IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
952             keis78 HITACHI KEIS78
953             keis83 HITACHI KEIS83
954             keis90 HITACHI KEIS90
955             jef FUJITSU JEF (12 point size for printing with option OUTPUT_SHIFTING)
956             jef9p FUJITSU JEF ( 9 point size for printing with option OUTPUT_SHIFTING)
957             jipsj NEC JIPS(J)
958             jipse NEC JIPS(E)
959             letsj UNISYS LetsJ
960             utf8 UTF-8.0 (aka UTF-8)
961             utf8.1 UTF-8.1
962             utf8jp UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
963             -----------------------------------------------------------------------
964              
965             =head2 { %option }
966              
967             Hash reference "{ %option }" can omit.
968              
969             You can following mnemonics as keys of hash reference "{ %option }":
970              
971             =over 2
972              
973             =item * INPUT_LAYOUT
974              
975             input record layout by 'S' and 'D' sequence
976              
977             'S' means one char as SBCS, 'D' means one char as DBCS
978              
979             each letter may optionally be followed by a number indicating the repeat count, see samples
980              
981             =item * OUTPUT_SHIFTING
982              
983             true means use output shift code, false means not use
984              
985             default is false
986              
987             =item * SPACE
988              
989             output space code in DBCS/MBCS
990              
991             =item * GETA
992              
993             output geta code in DBCS/MBCS
994              
995             =item * OVERRIDE_MAPPING
996              
997             hash reference of FROM => TO override mapping { "\x12\x34"=>"\x56\x78", "\x9A\xBC"=>"\xDE\xFE", }
998              
999             (CAUTION! override also SPACE option)
1000              
1001             =back
1002              
1003             If you need round-trip conversion, you had better use Jacode4e::RoundTrip module.
1004              
1005             =head1 SAMPLES
1006              
1007             Converts from cp00930 to cp932x using option ('INPUT_LAYOUT' => 'SSSDDDSSDDSDSD')
1008              
1009             use FindBin;
1010             use lib "$FindBin::Bin/lib";
1011             use Jacode4e;
1012             while (<>) {
1013             $char_count =
1014             Jacode4e::convert(\$_, 'cp932x', 'cp00930', {
1015             'INPUT_LAYOUT' => 'SSSDDDSSDDSDSD',
1016             'OUTPUT_SHIFTING' => 0,
1017             'SPACE' => "\x81\xA2",
1018             'GETA' => "\x81\xA1",
1019             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1020             });
1021             print $_;
1022             }
1023              
1024             Converts from cp00930 to cp932x using option ('INPUT_LAYOUT' => 'S3D3S2D2SDSD')
1025              
1026             use FindBin;
1027             use lib "$FindBin::Bin/lib";
1028             use Jacode4e;
1029             while (<>) {
1030             $char_count =
1031             Jacode4e::convert(\$_, 'cp932x', 'cp00930', {
1032             'INPUT_LAYOUT' => 'S3D3S2D2SDSD',
1033             'OUTPUT_SHIFTING' => 0,
1034             'SPACE' => "\x81\xA2",
1035             'GETA' => "\x81\xA1",
1036             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1037             });
1038             print $_;
1039             }
1040              
1041             Converts from utf8.1 to cp932ibm
1042              
1043             use FindBin;
1044             use lib "$FindBin::Bin/lib";
1045             use Jacode4e;
1046             while (<>) {
1047             Jacode4e::convert(\$_, 'cp932ibm', 'utf8.1', {});
1048             print $_;
1049             }
1050              
1051             Converts from utf8 to utf8.1
1052              
1053             use FindBin;
1054             use lib "$FindBin::Bin/lib";
1055             use Jacode4e;
1056             while (<>) {
1057             $char_count =
1058             Jacode4e::convert(\$_, 'utf8.1', 'utf8', {
1059             # FULLWIDTH TILDE => WAVE DASH
1060             'OVERRIDE_MAPPING' => { "\xEF\xBD\x9E" => "\xE3\x80\x9C", },
1061             });
1062             print $_;
1063             }
1064              
1065             =head1 INPUT SI/SO code
1066              
1067             Wikipedia L tells us Kanji shift code (means DBCS shift code) of each encoding of vendors.
1068             Jacode4e::convert() handle SI/SO(Shift In and Shift Out) code in $line automatically.
1069             If $line has no SI/SO code, we can use option "INPUT_LAYOUT" instead of SI/SO code.
1070              
1071             Realistically saying, we have to use option "INPUT_LAYOUT" almost always, if $INPUT_encoding is any of enterprise encodings(cp00930, keis78, keis83, keis90, jef, jef9p, jipsj, jipse, and letsj).
1072             Because SI/SO codes are rarely used.
1073              
1074             If $INPUT_encoding is any of cp932x, cp932, cp932ibm, cp932nec, and sjis2004, "INPUT_LAYOUT" option is unnecessary.
1075             Because SBCS and DBCS can be judged from the character string itself.
1076             However, you can also use "INPUT_LAYOUT" option to force conversion as SBCS.
1077              
1078             ---------------------------------------------------------------------------
1079             SO(Shift Out) SI(Shift In)
1080             $INPUT_encoding KI(KANJI In) KO(KANJI Out)
1081             mnemonic switch to DBCS switch to SBCS %option
1082             ---------------------------------------------------------------------------
1083             'cp932x' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1084             'cp932' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1085             'cp932ibm' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1086             'cp932nec' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1087             'sjis2004' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1088             'cp00930' "\x0E" "\x0F" xor 'INPUT_LAYOUT' => ...
1089             'keis78' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1090             'keis83' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1091             'keis90' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1092             'jef' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1093             'jef9p' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1094             'jipsj' "\x1A\x70" "\x1A\x71" xor 'INPUT_LAYOUT' => ...
1095             'jipse' "\x3F\x75" "\x3F\x76" xor 'INPUT_LAYOUT' => ...
1096             'letsj' "\x93\x70" "\x93\xF1" xor 'INPUT_LAYOUT' => ...
1097             'utf8' (nothing) (nothing)
1098             'utf8.1' (nothing) (nothing)
1099             'utf8jp' (nothing) (nothing)
1100             ---------------------------------------------------------------------------
1101              
1102             =head1 OUTPUT SI/SO code
1103              
1104             Jacode4e::convert() doesn't output SI/SO code on default.
1105             Thus, if you need SI/SO code then you have to use option "'OUTPUT_SHIFTING' => 1".
1106              
1107             ---------------------------------------------------------------------------
1108             SO(Shift Out) SI(Shift In)
1109             $OUTPUT_encoding KI(KANJI In) KO(KANJI Out)
1110             mnemonic switch to DBCS switch to SBCS %option
1111             ---------------------------------------------------------------------------
1112             'cp932x' (nothing) (nothing)
1113             'cp932' (nothing) (nothing)
1114             'cp932ibm' (nothing) (nothing)
1115             'cp932nec' (nothing) (nothing)
1116             'sjis2004' (nothing) (nothing)
1117             'cp00930' "\x0E" "\x0F" 'OUTPUT_SHIFTING' => 1
1118             'keis78' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1119             'keis83' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1120             'keis90' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1121             'jef' "\x28" "\x29" 'OUTPUT_SHIFTING' => 1
1122             'jef9p' "\x38" "\x29" 'OUTPUT_SHIFTING' => 1
1123             'jipsj' "\x1A\x70" "\x1A\x71" 'OUTPUT_SHIFTING' => 1
1124             'jipse' "\x3F\x75" "\x3F\x76" 'OUTPUT_SHIFTING' => 1
1125             'letsj' "\x93\x70" "\x93\xF1" 'OUTPUT_SHIFTING' => 1
1126             'utf8' (nothing) (nothing)
1127             'utf8.1' (nothing) (nothing)
1128             'utf8jp' (nothing) (nothing)
1129             ---------------------------------------------------------------------------
1130              
1131             =head1 OUTPUT DBCS/MBCS SPACE code
1132              
1133             We implemented default space code below without arguing with others.
1134              
1135             (We would appreciate any statistical information about its using.)
1136              
1137             You can change the space code using option "SPACE" if you want.
1138              
1139             ---------------------------------------------------------------------------
1140             $OUTPUT_encoding
1141             mnemonic default code %option
1142             ---------------------------------------------------------------------------
1143             'cp932x' "\x81\x40"
1144             'cp932' "\x81\x40"
1145             'cp932ibm' "\x81\x40"
1146             'cp932nec' "\x81\x40"
1147             'sjis2004' "\x81\x40" 'SPACE' => "\x20\x20" for CP/M-86 compatible
1148             'cp00930' "\x40\x40"
1149             'keis78' "\xA1\xA1"
1150             'keis83' "\xA1\xA1"
1151             'keis90' "\xA1\xA1"
1152             'jef' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1153             'jef9p' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1154             'jipsj' "\x21\x21"
1155             'jipse' "\x4F\x4F"
1156             'letsj' "\x20\x20" 'SPACE' => "\xA1\xA1" for EUC-JP like space
1157             'utf8' "\xE3\x80\x80"
1158             'utf8.1' "\xE3\x80\x80"
1159             'utf8jp' "\xF3\xB0\x84\x80"
1160             ---------------------------------------------------------------------------
1161              
1162             =head1 OUTPUT DBCS/MBCS GETA code
1163              
1164             If a character isn't included in $OUTPUT_encoding set, GETA code will be used instead of converted code.
1165              
1166             The default GETA code is as follows.
1167             You can change GETA code using option "GETA" if you want.
1168              
1169             GETA doesn't mean GETA, but means B.
1170              
1171             GETA is Japanese wooden shoes that made for walk on paddy field.
1172             One GETA has two teeth, and they make B on the ground by bite the earth twice.
1173             Thus, GETA code is double byte code, or some time multibyte code.
1174              
1175             ---------------------------------------------------------------------------
1176             $OUTPUT_encoding
1177             mnemonic default code %option sample
1178             ---------------------------------------------------------------------------
1179             'cp932x' "\x81\xAC" 'GETA' => "\x81\xA1"
1180             'cp932' "\x81\xAC" 'GETA' => "\x81\x9C"
1181             'cp932ibm' "\x81\xAC" 'GETA' => "\x81\x9C"
1182             'cp932nec' "\x81\xAC" 'GETA' => "\x81\x9C"
1183             'sjis2004' "\x81\xAC" 'GETA' => "\x81\xFC"
1184             'cp00930' "\x44\x7D"
1185             'keis78' "\xA2\xAE"
1186             'keis83' "\xA2\xAE"
1187             'keis90' "\xA2\xAE"
1188             'jef' "\xA2\xAE"
1189             'jef9p' "\xA2\xAE"
1190             'jipsj' "\x22\x2E"
1191             'jipse' "\x7F\x4B"
1192             'letsj' "\xA2\xAE"
1193             'utf8' "\xE3\x80\x93"
1194             'utf8.1' "\xE3\x80\x93"
1195             'utf8jp' "\xF3\xB0\x85\xAB"
1196             ---------------------------------------------------------------------------
1197              
1198             =head1 RAISON D'ETRE(Reason For Existence)
1199              
1200             This software has been developed for use promotion of JIS X 0213.
1201              
1202             JIS X 0213 contains almost all of characters used in everyday life in Japan.
1203             In addition, JIS X 0213 was designed with consideration for use in Shift_JIS environment.
1204             However, because it did not consider CP932 and GAIJI, Shift_JIS-2004 is not so popular.
1205              
1206             B<"JIS X 0213 bridge" needs last one meter more to bridge us.>
1207              
1208             To solve the problem, Jacode4e proposes CP932X [shi:pi:kju:san'nikai].
1209              
1210             CP932X implements JIS X 0213 over on CP932.
1211              
1212             We can continue to use CP932 data, application programs, databases, and networks using CP932X.
1213              
1214             If you need round-trip conversion, you had better use Jacode4e::RoundTrip module.
1215              
1216             =head1 WHAT IS "CP932X"?
1217              
1218             =over 4
1219              
1220             =item * Mnemonic is "cp932x"
1221              
1222             =item * CP932X is almost CP932
1223              
1224             =item * Pronounce [si: pi: nain thri: tu: kai] in English
1225              
1226             =item * Pronounce [shi: pi: kju: san' ni kai] in Japanese
1227              
1228             =item * We have reserved [si: pi: nain thri: tu: iks] for Microsoft Corporation-san
1229              
1230             =item * CP932 upper compatible
1231              
1232             =item * Supports JIS X 0213 character set
1233              
1234             =item * Used ghost character "\x9C\x5A" as single shift code
1235              
1236             =item * Used "\x9C\x5A\x9C\x5A" for single "\x9C\x5A"
1237              
1238             =item * You can use private use characters you made
1239              
1240             =item * You can use your operating system, network, and database
1241              
1242             =item * In almost all cases, application programs can be used as it is
1243              
1244             =back
1245              
1246             =head1 WHAT IS "UTF-8-SPUA-JP"?
1247              
1248             =over 4
1249              
1250             =item * Mnemonic is "utf8jp"
1251              
1252             =item * UTF-8-SPUA-JP is UTF-8
1253              
1254             =item * Internal character encoding of Jacode4e and Jacode4e::RoundTrip, universally
1255              
1256             =item * Implements JIS X 0213 character set on to Unicode Supplementary Private Use Area-A
1257              
1258             =item * Code point ordered by JIS level, plane, row, cell
1259              
1260             =item * Uniformly length encoding
1261              
1262             =item * No grapheme clustering, one character by uniquely code point
1263              
1264             =back
1265              
1266             =head1 CP932 vs. CP932IBM
1267              
1268             B
1269              
1270             CP932IBM is useful when you transfer data to enterprise system.
1271              
1272             The following is difference between CP932 and CP932IBM.
1273              
1274             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1275             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1276             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1277             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1278             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1279             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1280             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1281             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1282             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1283             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1284             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1285             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1286             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1287             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1288             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1289             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1290             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1291             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1292             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1293             8754 8754 FA4A 8754 8754 41F1 74B1 74B1 74B1 77DE 2D35 60F5 -- 2160 E285A0 E285A0 F3B095BC
1294             8755 8755 FA4B 8755 8755 41F2 74B2 74B2 74B2 77DF 2D36 60F6 -- 2161 E285A1 E285A1 F3B095BD
1295             8756 8756 FA4C 8756 8756 41F3 74B3 74B3 74B3 77E0 2D37 60F7 -- 2162 E285A2 E285A2 F3B095BE
1296             8757 8757 FA4D 8757 8757 41F4 74B4 74B4 74B4 77E1 2D38 60F8 -- 2163 E285A3 E285A3 F3B095BF
1297             8758 8758 FA4E 8758 8758 41F5 74B5 74B5 74B5 77E2 2D39 60F9 -- 2164 E285A4 E285A4 F3B09680
1298             8759 8759 FA4F 8759 8759 41F6 74B6 74B6 74B6 77E3 2D3A 607A -- 2165 E285A5 E285A5 F3B09681
1299             875A 875A FA50 875A 875A 41F7 74B7 74B7 74B7 77E4 2D3B 605E -- 2166 E285A6 E285A6 F3B09682
1300             875B 875B FA51 875B 875B 41F8 74B8 74B8 74B8 77E5 2D3C 604C -- 2167 E285A7 E285A7 F3B09683
1301             875C 875C FA52 875C 875C 41F9 74B9 74B9 74B9 77E6 2D3D 607E -- 2168 E285A8 E285A8 F3B09684
1302             875D 875D FA53 875D 875D 41FA 74BA 74BA 74BA 77E7 2D3E 606E -- 2169 E285A9 E285A9 F3B09685
1303             8782 8782 FA59 8782 8782 446E 72BE 72BE 72BE 76FA 2D62 6059 A271 2116 E28496 E28496 F3B096A9
1304             8784 8784 FA5A 8784 8784 446F 72B8 72B8 72B8 76F6 2D64 6063 -- 2121 E284A1 E284A1 F3B096AB
1305             878A 878A FA58 878A 878A 446D 73D0 73D0 73D0 78D5 2D6A 6069 -- 3231 E388B1 E388B1 F3B096B1
1306              
1307             =head1 CP932 vs. CP932NEC
1308              
1309             B
1310              
1311             CP932NEC is useful when you convert data to EUC-JP encoding.
1312              
1313             The following is difference between CP932 and CP932NEC.
1314              
1315             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1316             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1317             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1318             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1319             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1320             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1321             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1322             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1323             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1324             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1325             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1326             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1327             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1328             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1329             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1330             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1331             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1332             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1333             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1334             FA40 FA40 FA40 EEEF 86B3 41B1 74C1 74C1 74C1 77EB A2BD 428E -- 2170 E285B0 E285B0 F3B2AB9C
1335             FA41 FA41 FA41 EEF0 86B4 41B2 74C2 74C2 74C2 77EC A2BE 428F -- 2171 E285B1 E285B1 F3B2AB9D
1336             FA42 FA42 FA42 EEF1 86B5 41B3 74C3 74C3 74C3 77ED A2BF 4290 -- 2172 E285B2 E285B2 F3B2AB9E
1337             FA43 FA43 FA43 EEF2 86B6 41B4 74C4 74C4 74C4 77EE A2C0 4291 -- 2173 E285B3 E285B3 F3B2AB9F
1338             FA44 FA44 FA44 EEF3 86B7 41B5 74C5 74C5 74C5 77EF A2C1 4292 -- 2174 E285B4 E285B4 F3B2ABA0
1339             FA45 FA45 FA45 EEF4 86B8 41B6 74C6 74C6 74C6 77F0 A2C2 4293 -- 2175 E285B5 E285B5 F3B2ABA1
1340             FA46 FA46 FA46 EEF5 86B9 41B7 74C7 74C7 74C7 77F1 A2C3 4294 -- 2176 E285B6 E285B6 F3B2ABA2
1341             FA47 FA47 FA47 EEF6 86BA 41B8 74C8 74C8 74C8 77F2 A2C4 4295 -- 2177 E285B7 E285B7 F3B2ABA3
1342             FA48 FA48 FA48 EEF7 86BB 41B9 74C9 74C9 74C9 77F3 A2C5 4296 -- 2178 E285B8 E285B8 F3B2ABA4
1343             FA49 FA49 FA49 EEF8 86BC 41BA 74CA 74CA 74CA 77F4 A2C6 4297 -- 2179 E285B9 E285B9 F3B2ABA5
1344             FA55 FA55 FA55 EEFA -- E9F5 -- -- -- 76A1 A5FB 45FB -- FFE4 EFBFA4 EFBFA4 F3B2ABB1
1345             FA56 FA56 FA56 EEFB 81AD 427D -- -- -- 76A2 A3F9 43EF -- FF07 EFBC87 EFBC87 F3B2ABB2
1346             FA57 FA57 FA57 EEFC 81AE 427F -- -- -- 76A3 A3FA 43FA -- FF02 EFBC82 EFBC82 F3B2ABB3
1347             FA5C FA5C FA5C ED40 EDB5 51BF 67FE 67FE 67FE 5FDC C9D8 9AAE D463 7E8A E7BA8A E7BA8A F3B2ABB8
1348             FA5D FA5D FA5D ED41 EE8E 51DA 69E8 69E8 69E8 64B5 CEA9 A349 DC5F 891C E8A49C E8A49C F3B2ABB9
1349             FA5E FA5E FA5E ED42 EF58 51F7 6CC7 6CC7 6CC7 6AD9 D2B9 A789 E469 9348 E98D88 E98D88 F3B2ABBA
1350             FA5F FA5F FA5F ED43 EF4D 524B 6CA3 6CA3 6CA3 69FE D1ED A6CF E378 9288 E98A88 E98A88 F3B2ABBB
1351             FA60 FA60 FA60 ED44 F8D3 527B 69AE 69AE 69AE 62C4 CCCA 9F9D D921 84DC E8939C E8939C F3B2ABBC
1352             FA61 FA61 FA61 ED45 87B7 5294 59E4 59E4 59E4 42C7 B2F6 82EC B13B 4FC9 E4BF89 E4BF89 F3B2ABBD
1353             FA62 FA62 FA62 ED46 F580 529E 63FE 63FE 63FE 70E1 C2FE 93FE -- 70BB E782BB E782BB F3B2ABBE
1354             FA63 FA63 FA63 ED47 EB54 52EB 60F8 60F8 60F8 51A3 BDBF 8E90 C22D 6631 E698B1 E698B1 F3B2ABBF
1355             FA64 FA64 FA64 ED48 EB89 5386 61DC 61DC 61DC 70CD BFB7 9087 C37C 68C8 E6A388 E6A388 F3B2AC80
1356             FA65 FA65 FA65 ED49 FB42 5394 6CBB 6CBB 6CBB 6AC9 D2B6 A786 E450 92F9 E98BB9 E98BB9 F3B2AC81
1357             FA66 FA66 FA66 ED4A EB56 5397 60D3 60D3 60D3 51FC BDD0 8EA5 C23F 66FB E69BBB E69BBB F3B2AC82
1358             FA67 FA67 FA67 ED4B EAB8 53C7 5ED8 5ED8 5ED8 4CF6 BAC7 8A98 BC74 5F45 E5BD85 E5BD85 F3B2AC83
1359             FA68 FA68 FA68 ED4C 87A2 5644 59AC 59AC 59AC 41AC B2AB 8252 B029 4E28 E4B8A8 E4B8A8 F3B2AC84
1360             FA69 FA69 FA69 ED4D 87A6 565D 59C1 59C1 59C1 41E8 B2C2 8293 B048 4EE1 E4BBA1 E4BBA1 F3B2AC85
1361             FA6A FA6A FA6A ED4E -- 5662 59C8 59C8 59C8 43CF B2D3 82A8 -- 4EFC E4BBBC E4BBBC F3B2AC86
1362             FA6B FA6B FA6B ED4F F05E 5665 59C7 59C7 59C7 41EF B2CD 82A2 B052 4F00 E4BC80 E4BC80 F3B2AC87
1363             FA6C FA6C FA6C ED50 87A9 5666 9FA1 9FA1 9FA1 41F0 B2CE 82A3 B054 4F03 E4BC83 E4BC83 F3B2AC88
1364             FA6D FA6D FA6D ED51 -- 566A 59CE 59CE 59CE 41FB B2DB 82BB B063 4F39 E4BCB9 E4BCB9 F3B2AC89
1365             FA6E FA6E FA6E ED52 87AE 566E 59CB 59CB 59CB 42A8 B2D6 82AC B06E 4F56 E4BD96 E4BD96 F3B2AC8A
1366             FA6F FA6F FA6F ED53 F06C 5670 59DB 59DB 59DB 42B5 B2EA 82CC B127 4F92 E4BE92 E4BE92 F3B2AC8B
1367             FA70 FA70 FA70 ED54 87B3 5671 59E0 59E0 59E0 42B3 B2E7 82B9 B123 4F8A E4BE8A E4BE8A F3B2AC8C
1368             FA71 FA71 FA71 ED55 F06D 5674 59DA 59DA 59DA 42B9 BADA 8ABA B12C 4F9A E4BE9A E4BE9A F3B2AC8D
1369             FA72 FA72 FA72 ED56 87B4 567B 59D9 59D9 59D9 42B7 B2E1 82B3 B129 4F94 E4BE94 E4BE94 F3B2AC8E
1370             FA73 FA73 FA73 ED57 -- 5686 59E6 59E6 59E6 42CA B2F5 82EB B13E 4FCD E4BF8D E4BF8D F3B2AC8F
1371             FA74 FA74 FA74 ED58 87BF 568A 5AA1 5AA1 5AA1 42E7 B3B2 8382 B15F 5040 E58180 E58180 F3B2AC90
1372             FA75 FA75 FA75 ED59 F07C 5691 59F1 59F1 59F1 42DF B3A1 8341 B158 5022 E580A2 E580A2 F3B2AC91
1373             FA76 FA76 FA76 ED5A -- 5694 59FA 59FA 59FA 43D0 B3B3 8383 B148 4FFF E4BFBF E4BFBF F3B2AC92
1374             FA77 FA77 FA77 ED5B F07B 5698 59F3 59F3 59F3 42DE B3A6 8346 B157 501E E5809E E5809E F3B2AC93
1375             FA78 FA78 FA78 ED5C F080 56A2 5AA7 5AA7 5AA7 42E9 B3C0 8391 B163 5046 E58186 E58186 F3B2AC94
1376             FA79 FA79 FA79 ED5D F087 56A3 5AAC 5AAC 5AAC 42F5 B3C3 8394 B174 5070 E581B0 E581B0 F3B2AC95
1377             FA7A FA7A FA7A ED5E F07E 56A4 5AA6 5AA6 5AA6 42E8 B3C4 8395 B161 5042 E58182 E58182 F3B2AC96
1378             FA7B FA7B FA7B ED5F 87C2 56A8 5AB0 5AB0 5AB0 42FC B3C6 8397 B223 5094 E58294 E58294 F3B2AC97
1379             FA7C FA7C FA7C ED60 -- 56B2 5ABE 5ABE 5ABE 43B9 B3D2 83A7 -- 50F4 E583B4 E583B4 F3B2AC98
1380             FA7D FA7D FA7D ED61 -- 56B5 5AC1 5AC1 5AC1 43B2 B3D5 83AA B23B 50D8 E58398 E58398 F3B2AC99
1381             FA7E FA7E FA7E ED62 87CD 56C9 5ACB 5ACB 5ACB 43D3 B3E8 83CA B266 514A E5858A E5858A F3B2AC9A
1382             FA80 FA80 FA80 ED63 -- 56CE 5AD3 5AD3 5AD3 43D9 B3F0 83DC B26D 5164 E585A4 E585A4 F3B2AC9B
1383             FA81 FA81 FA81 ED64 87D2 56DC 5AE1 5AE1 5AE1 43F2 B3F7 83ED B275 519D E5869D E5869D F3B2AC9C
1384             FA82 FA82 FA82 ED65 -- 56E8 5AE4 5AE4 5AE4 43F7 B4A2 8442 B27C 51BE E586BE E586BE F3B2AC9D
1385             FA83 FA83 FA83 ED66 -- 56EF 6DC3 6DC3 6DC3 44AC D4A8 A948 -- 51EC E587AC E587AC F3B2AC9E
1386             FA84 FA84 FA84 ED67 87DB 56F7 9FA3 9FA3 9FA3 44B4 B4B4 8484 B335 5215 E58895 E58895 F3B2AC9F
1387             FA85 FA85 FA85 ED68 -- 574F 5AF0 5AF0 5AF0 44F7 B4C1 8492 B358 529C E58A9C E58A9C F3B2ACA0
1388             FA86 FA86 FA86 ED69 F162 5750 5AF1 5AF1 5AF1 44D2 B4C3 8494 B35B 52A6 E58AA6 E58AA6 F3B2ACA1
1389             FA87 FA87 FA87 ED6A -- 5756 5AF7 5AF7 5AF7 44FA B4D0 84A5 B365 52C0 E58B80 E58B80 F3B2ACA2
1390             FA88 FA88 FA88 ED6B 87E5 5758 5BA1 5BA1 5BA1 44ED B4D8 84AE B36E 52DB E58B9B E58B9B F3B2ACA3
1391             FA89 FA89 FA89 ED6C 87E9 5761 5BA9 5BA9 5BA9 45A3 B4E8 84CA B37B 5300 E58C80 E58C80 F3B2ACA4
1392             FA8A FA8A FA8A ED6D 87EA 5763 5BAB 5BAB 5BAB 45A8 B4EC 84CE -- 5307 E58C87 E58C87 F3B2ACA5
1393             FA8B FA8B FA8B ED6E F16D 576B 5BAF 5BAF 5BAF 45B3 B4EF 84DB -- 5324 E58CA4 E58CA4 F3B2ACA6
1394             FA8C FA8C FA8C ED6F -- 577C 5BBC 5BBC 5BBC 45D2 B5A7 8547 B440 5372 E58DB2 E58DB2 F3B2ACA7
1395             FA8D FA8D FA8D ED70 87F0 5780 5BC4 5BC4 5BC4 45DB B5AD 8554 B447 5393 E58E93 E58E93 F3B2ACA8
1396             FA8E FA8E FA8E ED71 87F2 5787 5BC9 5BC9 5BC9 45E2 B5B1 8581 B450 53B2 E58EB2 E58EB2 F3B2ACA9
1397             FA8F FA8F FA8F ED72 -- 578B 5BCE 5BCE 5BCE 45F3 B5BC 858D B45E 53DD E58F9D E58F9D F3B2ACAA
1398             FA90 FA90 FA90 ED73 -- 578E 5BD3 5BD3 5BD3 45F2 B5BE 858F -- FA0E EFA88E EFA88E F3B2ACAB
1399             FA91 FA91 FA91 ED74 87F6 57A9 5BDB 5BDB 5BDB 46C4 B5D3 85A8 B52A 549C E5929C E5929C F3B2ACAC
1400             FA92 FA92 FA92 ED75 F18C 57AE 5BDA 5BDA 5BDA 46C1 B5CF 85A4 -- 548A E5928A E5928A F3B2ACAD
1401             FA93 FA93 FA93 ED76 8840 57BD 5BE1 5BE1 5BE1 46C9 B5DC 85BC B52F 54A9 E592A9 E592A9 F3B2ACAE
1402             FA94 FA94 FA94 ED77 8842 57C0 5BE3 5BE3 5BE3 45FA B5E0 85B2 B544 54FF E593BF E593BF F3B2ACAF
1403             FA95 FA95 FA95 ED78 8849 57DE 5BED 5BED 5BED 45F6 B5EE 85DA B568 5586 E59686 E59686 F3B2ACB0
1404             FA96 FA96 FA96 ED79 -- 5860 5CB2 5CB2 5CB2 48C9 B6D6 86AC -- 5759 E59D99 E59D99 F3B2ACB1
1405             FA97 FA97 FA97 ED7A -- 5863 5CB6 5CB6 5CB6 48CA B6DE 86BE B742 5765 E59DA5 E59DA5 F3B2ACB2
1406             FA98 FA98 FA98 ED7B F1EA 586C 5CB9 5CB9 5CB9 48CB B6E3 86B5 B764 57AC E59EAC E59EAC F3B2ACB3
1407             FA99 FA99 FA99 ED7C 886E 5870 5CBD 5CBD 5CBD 47F7 B6E5 86B7 B768 57C8 E59F88 E59F88 F3B2ACB4
1408             FA9A FA9A FA9A ED7D 886D 5873 9FA6 9FA6 9FA6 47F6 B6E6 86B8 B767 57C7 E59F87 E59F87 F3B2ACB5
1409             FA9B FA9B FA9B ED7E 886A 5877 5CBB 5CBB 5CBB 48CC B6E7 86B9 -- FA0F EFA88F EFA88F F3B2ACB6
1410             FA9C FA9C FA9C ED80 8876 5882 C4CD 5CC7 5CC7 C4CD 444D C4D4 -- FA10 EFA890 EFA890 F3B2ACB7
1411             FA9D FA9D FA9D ED81 887C 588A 5CD1 5CD1 5CD1 48BB B7A8 8748 -- 589E E5A29E E5A29E F3B2ACB8
1412             FA9E FA9E FA9E ED82 -- 588C 5CD3 5CD3 5CD3 48CD B7AE 8755 B84E 58B2 E5A2B2 E5A2B2 F3B2ACB9
1413             FA9F FA9F FA9F ED83 F259 58A1 5BCD 5BCD 5BCD 48D0 B7B8 8788 B861 590B E5A48B E5A48B F3B2ACBA
1414             FAA0 FAA0 FAA0 ED84 -- 58AD 5CE4 5CE4 5CE4 48E3 B7CB 879E B875 5953 E5A593 E5A593 F3B2ACBB
1415             FAA1 FAA1 FAA1 ED85 F264 58B0 5CE6 5CE6 5CE6 48E4 B7CF 87A4 B877 595B E5A59B E5A59B F3B2ACBC
1416             FAA2 FAA2 FAA2 ED86 8889 58B1 5CE8 5CE8 5CE8 48E5 B7CE 87A3 B878 595D E5A59D E5A59D F3B2ACBD
1417             FAA3 FAA3 FAA3 ED87 -- 58B2 5CE9 5CE9 5CE9 48EB B7D3 87A8 B87C 5963 E5A5A3 E5A5A3 F3B2ACBE
1418             FAA4 FAA4 FAA4 ED88 888D 58BE 5CF4 5CF4 5CF4 49A3 B7DB 87BB B92F 59A4 E5A6A4 E5A6A4 F3B2ACBF
1419             FAA5 FAA5 FAA5 ED89 -- 58C0 5CF7 5CF7 5CF7 49F0 B7E4 87B6 B937 59BA E5A6BA E5A6BA F3B2AD80
1420             FAA6 FAA6 FAA6 ED8A 9875 58EC 5DB3 5DB3 5DB3 49F2 B8B4 8884 BA3E 5B56 E5AD96 E5AD96 F3B2AD81
1421             FAA7 FAA7 FAA7 ED8B F0A2 58FC 5DC2 5DC2 5DC2 4AC9 B8CA 889D BA5B 5BC0 E5AF80 E5AF80 F3B2AD82
1422             FAA8 FAA8 FAA8 ED8C ECC7 58FE 5DC5 5DC5 5DC5 4ABD B8CC 889F CD2A 752F E794AF E794AF F3B2AD83
1423             FAA9 FAA9 FAA9 ED8D 9878 5942 5DC6 5DC6 5DC6 4AC0 B8CD 88A2 BA61 5BD8 E5AF98 E5AF98 F3B2AD84
1424             FAAA FAAA FAAA ED8E 9879 5944 5DC7 5DC7 5DC7 4AC6 B8D4 88A9 -- 5BEC E5AFAC E5AFAC F3B2AD85
1425             FAAB FAAB FAAB ED8F 987B 5951 5DD2 5DD2 5DD2 4AD4 B8E3 88B5 BA6B 5C1E E5B09E E5B09E F3B2AD86
1426             FAAC FAAC FAAC ED90 F0C1 5967 5DDE 5DDE 5DDE 4AF1 B8FB 88FB BB33 5CA6 E5B2A6 E5B2A6 F3B2AD87
1427             FAAD FAAD FAAD ED91 9889 5968 5DDD 5DDD 5DDD 4AF3 B8F9 88EF BB38 5CBA E5B2BA E5B2BA F3B2AD88
1428             FAAE FAAE FAAE ED92 -- 5970 5DE6 5DE6 5DE6 4BE4 B9A9 8949 -- 5CF5 E5B3B5 E5B3B5 F3B2AD89
1429             FAAF FAAF FAAF ED93 9891 5978 5DE8 5DE8 5DE8 4AFB B9B1 8981 BB4A 5D27 E5B4A7 E5B4A7 F3B2AD8A
1430             FAB0 FAB0 FAB0 ED94 9895 597F 5DF0 5DF0 5DF0 4BA3 C6B7 9787 -- 5D53 E5B593 E5B593 F3B2AD8B
1431             FAB1 FAB1 FAB1 ED95 9892 5980 5DEC 5DEC 5DEC 4BD0 B9BA 898A -- FA11 EFA891 EFA891 F3B2AD8C
1432             FAB2 FAB2 FAB2 ED96 F0D3 5984 5DEF 5DEF 5DEF 4BA2 B9BD 898E BB50 5D42 E5B582 E5B582 F3B2AD8D
1433             FAB3 FAB3 FAB3 ED97 9897 5987 9FA9 9FA9 9FA9 4BD3 B9C0 8991 BB5E 5D6D E5B5AD E5B5AD F3B2AD8E
1434             FAB4 FAB4 FAB4 ED98 989C 5993 5EA3 5EA3 5EA3 4BDF B9D3 89A8 BB74 5DB8 E5B6B8 E5B6B8 F3B2AD8F
1435             FAB5 FAB5 FAB5 ED99 F0E5 5995 5EA5 5EA5 5EA5 4BE0 B9D5 89AA BB75 5DB9 E5B6B9 E5B6B9 F3B2AD90
1436             FAB6 FAB6 FAB6 ED9A -- 5997 5EA7 5EA7 5EA7 4BE5 B9DA 89BA BB79 5DD0 E5B790 E5B790 F3B2AD91
1437             FAB7 FAB7 FAB7 ED9B -- 59C7 5ED2 5ED2 5ED2 4CEB BABF 8A90 BC64 5F21 E5BCA1 E5BCA1 F3B2AD92
1438             FAB8 FAB8 FAB8 ED9C EAB4 59CB 5ED3 5ED3 5ED3 4CEE BAC1 8A92 BC6D 5F34 E5BCB4 E5BCB4 F3B2AD93
1439             FAB9 FAB9 FAB9 ED9D EABC 59D8 5FCA 5FCA 5FCA 4DA2 BAD1 8AA6 BC7E 5F67 E5BDA7 E5BDA7 F3B2AD94
1440             FABA FABA FABA ED9E EAC3 59E8 5EE6 5EE6 5EE6 4DC0 BAEC 8ACE -- 5FB7 E5BEB7 E5BEB7 F3B2AD95
1441             FABB FABB FABB ED9F EAC5 59F1 5EEE 5EEE 5EEE 4DC7 BAFE 8AFE BD42 5FDE E5BF9E E5BF9E F3B2AD96
1442             FABC FABC FABC EDA0 -- 5A44 5EF8 5EF8 5EF8 4DCC BBA9 8C49 BD67 605D E6819D E6819D F3B2AD97
1443             FABD FABD FABD EDA1 -- 5A51 5EF9 5EF9 5EF9 4EA8 BBB1 8C81 -- 6085 E68285 E68285 F3B2AD98
1444             FABE FABE FABE EDA2 F2CB 5A57 5EF6 5EF6 5EF6 4DD0 B5E5 85B7 BD70 608A E6828A E6828A F3B2AD99
1445             FABF FABF FABF EDA3 -- 5A5F 5FA5 5FA5 5FA5 4EC1 BBC4 8C95 BE30 60DE E6839E E6839E F3B2AD9A
1446             FAC0 FAC0 FAC0 EDA4 EAD3 5A65 5FA3 5FA3 5FA3 4EBD BBBD 8C8E BE2C 60D5 E68395 E68395 F3B2AD9B
1447             FAC1 FAC1 FAC1 EDA5 -- 5A67 5FAA 5FAA 5FAA 4EED BBC9 8C9A -- 6120 E684A0 E684A0 F3B2AD9C
1448             FAC2 FAC2 FAC2 EDA6 F2D6 5A68 5FAD 5FAD 5FAD 4EC2 BBCE 8CA3 BE33 60F2 E683B2 E683B2 F3B2AD9D
1449             FAC3 FAC3 FAC3 EDA7 -- 5A76 5FAF 5FAF 5FAF 4EEE BBD4 8CA9 BE3D 6111 E68491 E68491 F3B2AD9E
1450             FAC4 FAC4 FAC4 EDA8 EAD9 5A79 5FB1 5FB1 5FB1 4ED0 BBD6 8CAC BE4D 6137 E684B7 E684B7 F3B2AD9F
1451             FAC5 FAC5 FAC5 EDA9 EAD8 5A7E 5FB3 5FB3 5FB3 4ECE BBD8 8CAE BE49 6130 E684B0 E684B0 F3B2ADA0
1452             FAC6 FAC6 FAC6 EDAA F2E7 5A94 5FBE 5FBE 5FBE 4EDB B6A8 8648 BE64 6198 E68698 E68698 F3B2ADA1
1453             FAC7 FAC7 FAC7 EDAB -- 5AB5 5BD7 5BD7 5BD7 4EF7 BBF9 8CEF BF28 6213 E68893 E68893 F3B2ADA2
1454             FAC8 FAC8 FAC8 EDAC F341 5ADA 5FD6 5FD6 5FD6 4FB5 BCB1 8D81 BF49 62A6 E68AA6 E68AA6 F3B2ADA3
1455             FAC9 FAC9 FAC9 EDAD EAF2 5AFB 5FE2 5FE2 5FE2 4FED BCCC 8D9F C044 63F5 E68FB5 E68FB5 F3B2ADA4
1456             FACA FACA FACA EDAE EAF8 5B50 5FEB 5FEB 5FEB 4FFA BCD9 8DAF C064 6460 E691A0 E691A0 F3B2ADA5
1457             FACB FACB FACB EDAF F36F 5B53 5FEE 5FEE 5FEE 50A2 BCDB 8DBB C074 649D E6929D E6929D F3B2ADA6
1458             FACC FACC FACC EDB0 EAFA 5B54 5FF2 5FF2 5FF2 4FA7 BCDC 8DBC C126 64CE E6938E E6938E F3B2ADA7
1459             FACD FACD FACD EDB1 -- 5B7E 5FF8 5FF8 5FF8 50C9 BCF0 8DDC -- 654E E6958E E6958E F3B2ADA8
1460             FACE FACE FACE EDB2 EB4B 5B97 60B3 60B3 60B3 51BD BDBD 8E8E C175 6600 E69880 E69880 F3B2ADA9
1461             FACF FACF FACF EDB3 EB4D 5B98 60B1 60B1 60B1 51C4 BDB5 8E85 C17C 6615 E69895 E69895 F3B2ADAA
1462             FAD0 FAD0 FAD0 EDB4 -- 4F9F B9B7 60B6 60B6 B9B7 3937 F9F7 -- 663B E698BB E698BB F3B2ADAB
1463             FAD1 FAD1 FAD1 EDB5 EB4C 5B9D 60AF 60AF 60AF 51C0 BDB7 8E87 C178 6609 E69889 E69889 F3B2ADAC
1464             FAD2 FAD2 FAD2 EDB6 -- 5BA0 60BE 60BE 60BE 51A1 BDC2 8E93 C22B 662E E698AE E698AE F3B2ADAD
1465             FAD3 FAD3 FAD3 EDB7 EB4E 5BA1 60C4 60C4 60C4 51C7 BDC4 8E95 C221 661E E6989E E6989E F3B2ADAE
1466             FAD4 FAD4 FAD4 EDB8 EB51 5BA4 60B9 60B9 60B9 51CA BDC7 8E98 C225 6624 E698A4 E698A4 F3B2ADAF
1467             FAD5 FAD5 FAD5 EDB9 EB5D 5BA7 60D1 60D1 60D1 51D9 BDD6 8EAC -- 6665 E699A5 E699A5 F3B2ADB0
1468             FAD6 FAD6 FAD6 EDBA F39E 5BA8 60D6 60D6 60D6 52A1 BDE0 8EB2 C238 6657 E69997 E69997 F3B2ADB1
1469             FAD7 FAD7 FAD7 EDBB EB5A 5BAB 60D7 60D7 60D7 51D4 BDDE 8EBE C23A 6659 E69999 E69999 F3B2ADB2
1470             FAD8 FAD8 FAD8 EDBC -- 5BAE 60DD 60DD 60DD 51DE BDE4 8EB6 -- FA12 EFA892 EFA892 F3B2ADB3
1471             FAD9 FAD9 FAD9 EDBD EB5E 5BAF 60E1 60E1 60E1 51B3 BDE6 8EB8 C244 6673 E699B3 E699B3 F3B2ADB4
1472             FADA FADA FADA EDBE F3AB 5BB4 60E6 60E6 60E6 51E5 BDF7 8EED C252 6699 E69A99 E69A99 F3B2ADB5
1473             FADB FADB FADB EDBF EB63 5BB6 60EA 60EA 60EA 51AB C5D8 96AE C257 66A0 E69AA0 E69AA0 F3B2ADB6
1474             FADC FADC FADC EDC0 EB64 5BB8 60EE 60EE 60EE 51EB BEA5 8F45 C25B 66B2 E69AB2 E69AB2 F3B2ADB7
1475             FADD FADD FADD EDC1 F3B1 5BBB 60EF 60EF 60EF 51F1 BEAC 8F53 C25E 66BF E69ABF E69ABF F3B2ADB8
1476             FADE FADE FADE EDC2 EB6B 5BC7 60C7 60C7 60C7 52A2 BDD1 8EA6 C26D 66FA E69BBA E69BBA F3B2ADB9
1477             FADF FADF FADF EDC3 -- 5BC8 60FC 60FC 60FC 52BC BEBC 8F8D C270 670E E69C8E E69C8E F3B2ADBA
1478             FAE0 FAE0 FAE0 EDC4 EB6D 5BC9 61A7 61A7 61A7 52AD BEBE 8F8F -- F929 EFA4A9 EFA4A9 F3B2ADBB
1479             FAE1 FAE1 FAE1 EDC5 EB6F 5BD8 61B2 61B2 61B2 70CE BEC8 8F99 C321 6766 E69DA6 E69DA6 F3B2ADBC
1480             FAE2 FAE2 FAE2 EDC6 EB77 5BE3 61BB 61BB 61BB 53B2 BED9 8FAF C335 67BB E69EBB E69EBB F3B2ADBD
1481             FAE3 FAE3 FAE3 EDC7 EB7D 5BEC 61BE 61BE 61BE 52EE BEE5 8FB7 C349 6852 E6A192 E6A192 F3B2ADBE
1482             FAE4 FAE4 FAE4 EDC8 EB79 5BF0 9FAC 9FAC 9FAC 53B4 BEE8 8FCA C339 67C0 E69F80 E69F80 F3B2ADBF
1483             FAE5 FAE5 FAE5 EDC9 EB7C 5BF3 61CC 61CC 61CC 53C0 BEE2 8FB4 -- 6801 E6A081 E6A081 F3B2AE80
1484             FAE6 FAE6 FAE6 EDCA F3DD 5BF9 61C6 61C6 61C6 53C7 BEF0 8FDC C358 6844 E6A184 E6A184 F3B2AE81
1485             FAE7 FAE7 FAE7 EDCB F3FB 5C5F 61DF 61DF 61DF 70CF BFBA 908A C37E 68CF E6A38F E6A38F F3B2AE82
1486             FAE8 FAE8 FAE8 EDCC F3F7 5C66 61E0 61E0 61E0 70D0 BFBC 908D -- FA13 EFA893 EFA893 F3B2AE83
1487             FAE9 FAE9 FAE9 EDCD EB98 5C6E 61E9 61E9 61E9 53ED BFC0 9091 C44C 6968 E6A5A8 E6A5A8 F3B2AE84
1488             FAEA FAEA FAEA EDCE EB9A 5C78 61F8 61F8 61F8 70D1 BFD7 90AD -- FA14 EFA894 EFA894 F3B2AE85
1489             FAEB FAEB FAEB EDCF F455 5C79 65F4 65F4 65F4 52F4 C6AA 9751 C459 6998 E6A698 E6A698 F3B2AE86
1490             FAEC FAEC FAEC EDD0 EBA0 5C90 61EF 61EF 61EF 70D2 BFE4 90B6 C46A 69E2 E6A7A2 E6A7A2 F3B2AE87
1491             FAED FAED FAED EDD1 F460 5C9A 62A3 62A3 62A3 70D3 BFE5 90B7 C47D 6A30 E6A8B0 E6A8B0 F3B2AE88
1492             FAEE FAEE FAEE EDD2 EBAE 5C9B 62A9 62A9 62A9 54AD BFE6 90B8 -- 6A6B E6A9AB E6A9AB F3B2AE89
1493             FAEF FAEF FAEF EDD3 F472 5CA6 62AE 62AE 62AE 52E8 BFEC 90CE C527 6A46 E6A986 E6A986 F3B2AE8A
1494             FAF0 FAF0 FAF0 EDD4 EBAF 5CA9 62B2 62B2 62B2 54AF BFF0 90DC C535 6A73 E6A9B3 E6A9B3 F3B2AE8B
1495             FAF1 FAF1 FAF1 EDD5 F479 5CAF 62B3 62B3 62B3 54B0 BFF8 90EE C536 6A7E E6A9BE E6A9BE F3B2AE8C
1496             FAF2 FAF2 FAF2 EDD6 -- 5CB9 62B9 62B9 62B9 54BC C0A8 9148 -- 6AE2 E6ABA2 E6ABA2 F3B2AE8D
1497             FAF3 FAF3 FAF3 EDD7 EBB6 5CBC 62B8 62B8 62B8 54BD C0A5 9145 C555 6AE4 E6ABA4 E6ABA4 F3B2AE8E
1498             FAF4 FAF4 FAF4 EDD8 EBC9 5CEA 62D0 62D0 62D0 54F8 C0CF 91A4 C638 6BD6 E6AF96 E6AF96 F3B2AE8F
1499             FAF5 FAF5 FAF5 EDD9 F4B3 5CF6 62D5 62D5 62D5 55B5 C0D9 91AF C657 6C3F E6B0BF E6B0BF F3B2AE90
1500             FAF6 FAF6 FAF6 EDDA EBD0 5CF9 62D6 62D6 62D6 55BD C0DE 91BE C660 6C5C E6B19C E6B19C F3B2AE91
1501             FAF7 FAF7 FAF7 EDDB EBD5 5CFD 62D8 62D8 62D8 55C3 C0E5 91B7 C66A 6C86 E6B286 E6B286 F3B2AE92
1502             FAF8 FAF8 FAF8 EDDC -- 5CFE 62D9 62D9 62D9 55BF C0EB 91CD C663 6C6F E6B1AF E6B1AF F3B2AE93
1503             FAF9 FAF9 FAF9 EDDD F4C2 5D4E 62E2 62E2 62E2 55D3 C0F4 91EA C721 6CDA E6B39A E6B39A F3B2AE94
1504             FAFA FAFA FAFA EDDE EBDF 5D58 62E4 62E4 62E4 55DE C1A7 9247 C72B 6D04 E6B484 E6B484 F3B2AE95
1505             FAFB FAFB FAFB EDDF EBE9 5D60 62EB 62EB 62EB 56A3 C1B6 9286 C747 6D87 E6B687 E6B687 F3B2AE96
1506             FAFC FAFC FAFC EDE0 -- 5D62 62F2 62F2 62F2 70DE C1C7 9298 C743 6D6F E6B5AF E6B5AF F3B2AE97
1507             FB40 FB40 FB40 EDE1 -- 5D6B 62EE 62EE 62EE 56A7 C1BF 9290 C74B 6D96 E6B696 E6B696 F3B2AE98
1508             FB41 FB41 FB41 EDE2 EBED 5D72 62FC 62FC 62FC 56AD C1CA 929D C74F 6DAC E6B6AC E6B6AC F3B2AE99
1509             FB42 FB42 FB42 EDE3 F4E6 5D74 63A4 63A4 63A4 56B2 C1D9 92AF C759 6DCF E6B78F E6B78F F3B2AE9A
1510             FB43 FB43 FB43 EDE4 -- 5D7A 62FD 62FD 62FD 56B8 C1CD 92A2 -- 6DF8 E6B7B8 E6B7B8 F3B2AE9B
1511             FB44 FB44 FB44 EDE5 -- 5D7F 63A6 63A6 63A6 70DF C1DF 92BF -- 6DF2 E6B7B2 E6B7B2 F3B2AE9C
1512             FB45 FB45 FB45 EDE6 EBF4 5D80 63BD 63BD 63BD 55B1 C1D1 92A6 C766 6DFC E6B7BC E6B7BC F3B2AE9D
1513             FB46 FB46 FB46 EDE7 -- 5D8A 63B7 63B7 63B7 56C2 C1FB 92FB C76E 6E39 E6B8B9 E6B8B9 F3B2AE9E
1514             FB47 FB47 FB47 EDE8 EBF8 5D8E 63B4 63B4 63B4 56CF C1F3 92DF C77C 6E5C E6B99C E6B99C F3B2AE9F
1515             FB48 FB48 FB48 EDE9 F4EE 5D93 63AE 63AE 63AE 56BE C1F4 92EA C76B 6E27 E6B8A7 E6B8A7 F3B2AEA0
1516             FB49 FB49 FB49 EDEA F4F1 5D95 63B8 63B8 63B8 56C3 C1F0 92DC C770 6E3C E6B8BC E6B8BC F3B2AEA1
1517             FB4A FB4A FB4A EDEB F543 5DA6 9FB6 9FB6 9FB6 56DF C2A8 9348 C831 6EBF E6BABF E6BABF F3B2AEA2
1518             FB4B FB4B FB4B EDEC EC4E 5DC1 63D8 63D8 63D8 56FE C2CE 93A3 C865 6F88 E6BE88 E6BE88 F3B2AEA3
1519             FB4C FB4C FB4C EDED F560 5DCA 63DF 63DF 63DF 57AE C2DF 93BF C878 6FB5 E6BEB5 E6BEB5 F3B2AEA4
1520             FB4D FB4D FB4D EDEE EC5A 5DD5 63E4 63E4 63E4 57B8 C2E4 93B6 C926 6FF5 E6BFB5 E6BFB5 F3B2AEA5
1521             FB4E FB4E FB4E EDEF EC5B 5DD7 63EB 63EB 63EB 57B9 C2EF 93DB C92B 7005 E78085 E78085 F3B2AEA6
1522             FB4F FB4F FB4F EDF0 F569 5DD8 63E8 63E8 63E8 57BA C2EE 93DA C92D 7007 E78087 E78087 F3B2AEA7
1523             FB50 FB50 FB50 EDF1 EC5D 5DE3 63F1 63F1 63F1 57BC C2F1 93DD -- 7028 E780A8 E780A8 F3B2AEA8
1524             FB51 FB51 FB51 EDF2 EC64 5DEA 63F8 63F8 63F8 57D1 C2FB 93FB C94A 7085 E78285 E78285 F3B2AEA9
1525             FB52 FB52 FB52 EDF3 EC66 5DED 63FD 63FD 63FD 57DE C2FC 93FC C953 70AB E782AB E782AB F3B2AEAA
1526             FB53 FB53 FB53 EDF4 EC6B 5DF5 9FB9 9FB9 9FB9 58A6 C3A8 9448 C969 710F E7848F E7848F F3B2AEAB
1527             FB54 FB54 FB54 EDF5 F58B 5DF6 64A5 64A5 64A5 58A5 C3A6 9446 C963 7104 E78484 E78484 F3B2AEAC
1528             FB55 FB55 FB55 EDF6 EC76 5DFB 64AD 64AD 64AD 57F1 C3B8 9488 C97C 715C E7859C E7859C F3B2AEAD
1529             FB56 FB56 FB56 EDF7 EC71 5DFC 64AE 64AE 64AE 57EB C3B9 9489 C974 7146 E78586 E78586 F3B2AEAE
1530             FB57 FB57 FB57 EDF8 EC72 5DFD 64AF 64AF 64AF 57EC C3BC 948D C975 7147 E78587 E78587 F3B2AEAF
1531             FB58 FB58 FB58 EDF9 EC79 5E49 64B9 64B9 64B9 70E3 C3CE 94A3 -- FA15 EFA895 EFA895 F3B2AEB0
1532             FB59 FB59 FB59 EDFA EC7D 5E4B 64B4 64B4 64B4 57F6 C3D0 94A5 CA33 71C1 E78781 E78781 F3B2AEB1
1533             FB5A FB5A FB5A EDFB EC81 5E5A 64C2 64C2 64C2 58A9 C3D5 94AA CA3D 71FE E787BE E787BE F3B2AEB2
1534             FB5B FB5B FB5B EDFC F5BB 5E73 64CC 64CC 64CC 58FA C3EB 94CD CA6F 72B1 E78AB1 E78AB1 F3B2AEB3
1535             FB5C FB5C FB5C EE40 EC89 5E75 9FBA 9FBA 9FBA 58D6 C3EE 94DA CA71 72BE E78ABE E78ABE F3B2AEB4
1536             FB5D FB5D FB5D EE41 -- 5E86 64D0 64D0 64D0 58ED C3FB 94FB CB2E 7324 E78CA4 E78CA4 F3B2AEB5
1537             FB5E FB5E FB5E EE42 EC8F 5E8A 64CE 64CE 64CE 58EF C3F8 94EE -- FA16 EFA896 EFA896 F3B2AEB6
1538             FB5F FB5F FB5F EE43 F5D5 5E94 64D2 64D2 64D2 58F6 C4A5 9545 CB4A 7377 E78DB7 E78DB7 F3B2AEB7
1539             FB60 FB60 FB60 EE44 -- 5E99 64DF 64DF 64DF 59BA C4BA 958A CB66 73BD E78EBD E78EBD F3B2AEB8
1540             FB61 FB61 FB61 EE45 EC99 5E9E 64DB 64DB 64DB 59BC C4B8 9588 CB6A 73C9 E78F89 E78F89 F3B2AEB9
1541             FB62 FB62 FB62 EE46 EC9B 5E9F 64E4 64E4 64E4 59C0 C4C1 9592 CB70 73D6 E78F96 E78F96 F3B2AEBA
1542             FB63 FB63 FB63 EE47 EC9D 5EA1 64E5 64E5 64E5 59C3 C4C2 9593 CB74 73E3 E78FA3 E78FA3 F3B2AEBB
1543             FB64 FB64 FB64 EE48 -- 5EA2 64E8 64E8 64E8 5AAC C4C6 9597 CB6E 73D2 E78F92 E78F92 F3B2AEBC
1544             FB65 FB65 FB65 EE49 EC9F 5EA7 64EB 64EB 64EB 59D0 C4C7 9598 CC25 7407 E79087 E79087 F3B2AEBD
1545             FB66 FB66 FB66 EE4A -- 5EA8 64EC 64EC 64EC 59C7 C4CB 959E CB79 73F5 E78FB5 E78FB5 F3B2AEBE
1546             FB67 FB67 FB67 EE4B ECA4 5EAA 64F5 64F5 64F5 59D7 C4D2 95A7 CC2B 7426 E790A6 E790A6 F3B2AEBF
1547             FB68 FB68 FB68 EE4C ECA6 5EAB 64F6 64F6 64F6 59DA C4D3 95A8 CC2E 742A E790AA E790AA F3B2AF80
1548             FB69 FB69 FB69 EE4D -- 5EAD 64FC 64FC 64FC 59D9 C4DB 95BB CC2D 7429 E790A9 E790A9 F3B2AF81
1549             FB6A FB6A FB6A EE4E ECA9 5EAE 64F8 64F8 64F8 59DD C4D7 95AD CC32 742E E790AE E790AE F3B2AF82
1550             FB6B FB6B FB6B EE4F ECB1 5EBC 65A8 65A8 65A8 5AAD C4ED 95CF CC42 7462 E791A2 E791A2 F3B2AF83
1551             FB6C FB6C FB6C EE50 ECB6 5EBD 65AE 65AE 65AE 59F4 C4F3 95DF CC50 7489 E79289 E79289 F3B2AF84
1552             FB6D FB6D FB6D EE51 ECB9 5EC0 65B2 65B2 65B2 59FB C4FB 95FB CC59 749F E7929F E7929F F3B2AF85
1553             FB6E FB6E FB6E EE52 ECC5 5ED1 65B9 65B9 65B9 5AB8 C5AC 9653 -- 7501 E79481 E79481 F3B2AF86
1554             FB6F FB6F FB6F EE53 ECC8 5EE7 65C3 65C3 65C3 5AD0 C5B4 9684 CD3B 756F E795AF E795AF F3B2AF87
1555             FB70 FB70 FB70 EE54 -- 5F69 65CA 65CA 65CA 5AFE C5D3 96A8 -- 7682 E79A82 E79A82 F3B2AF88
1556             FB71 FB71 FB71 EE55 F68F 5F70 65CE 65CE 65CE 5BA4 C5D9 96AF CE3B 769C E79A9C E79A9C F3B2AF89
1557             FB72 FB72 FB72 EE56 ECE1 5F71 65CF 65CF 65CF 5BA5 C5DA 96BA -- 769E E79A9E E79A9E F3B2AF8A
1558             FB73 FB73 FB73 EE57 ECDF 5F72 65D1 65D1 65D1 5AFD C5DB 96BB CE3A 769B E79A9B E79A9B F3B2AF8B
1559             FB74 FB74 FB74 EE58 ECE2 5F73 65D2 65D2 65D2 5BA9 C5DF 96BF CE43 76A6 E79AA6 E79AA6 F3B2AF8C
1560             FB75 FB75 FB75 EE59 -- 5F7A 65D8 65D8 65D8 5BB7 C5E5 96B7 -- FA17 EFA897 EFA897 F3B2AF8D
1561             FB76 FB76 FB76 EE5A ECF0 5F8E 65E6 65E6 65E6 5BCC C5F2 96DE CE72 7746 E79D86 E79D86 F3B2AF8E
1562             FB77 FB77 FB77 EE5B F163 5FAA 65F6 65F6 65F6 44DC B4C7 8498 B35D 52AF E58AAF E58AAF F3B2AF8F
1563             FB78 FB78 FB78 EE5C F6C1 5FAE 65F7 65F7 65F7 5BFC C6B1 9781 CF55 7821 E7A0A1 E7A0A1 F3B2AF90
1564             FB79 FB79 FB79 EE5D ED41 5FB2 65FA 65FA 65FA 5CA7 C6B5 9785 CF62 784E E7A18E E7A18E F3B2AF91
1565             FB7A FB7A FB7A EE5E F6C4 5FB3 66A1 66A1 66A1 5CAE C6BD 978E CF69 7864 E7A1A4 E7A1A4 F3B2AF92
1566             FB7B FB7B FB7B EE5F -- 5FB6 66A5 66A5 66A5 5CB2 C6C4 9795 CF6D 787A E7A1BA E7A1BA F3B2AF93
1567             FB7C FB7C FB7C EE60 F6DC 5FD1 66AE 66AE 66AE 5CCE C6DA 97BA -- 7930 E7A4B0 E7A4B0 F3B2AF94
1568             FB7D FB7D FB7D EE61 -- 5FD2 66B0 66B0 66B0 70E5 C6DD 97BD -- FA18 EFA898 EFA898 F3B2AF95
1569             FB7E FB7E FB7E EE62 ED5B 5FD5 66BB 66BB 66BB 5CDA C6EB 97CD -- FA19 EFA899 EFA899 F3B2AF96
1570             FB80 FB80 FB80 EE63 ED5C 5FD9 66C2 66C2 66C2 5CDC C6F7 97ED -- FA1A EFA89A EFA89A F3B2AF97
1571             FB81 FB81 FB81 EE64 F6E5 5FDC 66D0 66D0 66D0 5CE6 C7A3 9843 D065 7994 E7A694 E7A694 F3B2AF98
1572             FB82 FB82 FB82 EE65 ED60 5FDD 66D3 66D3 66D3 5CE4 C7A6 9846 -- FA1B EFA89B EFA89B F3B2AF99
1573             FB83 FB83 FB83 EE66 F6E8 5FDF 66D4 66D4 66D4 5CE8 C7AA 9851 D069 799B E7A69B E7A69B F3B2AF9A
1574             FB84 FB84 FB84 EE67 F758 604F 66FE 66FE 66FE 5DDD C7F2 98DE D168 7AD1 E7AB91 E7AB91 F3B2AF9B
1575             FB85 FB85 FB85 EE68 F759 6058 67A2 67A2 67A2 5DE1 C7F5 98EB -- 7AE7 E7ABA7 E7ABA7 F3B2AF9C
1576             FB86 FB86 FB86 EE69 -- 6059 67A6 67A6 67A6 5DE5 C7F7 98ED -- FA1C EFA89C EFA89C F3B2AF9D
1577             FB87 FB87 FB87 EE6A ED77 605A 67A4 67A4 67A4 5DE4 C7F8 98EE D16C 7AEB E7ABAB E7ABAB F3B2AF9E
1578             FB88 FB88 FB88 EE6B ED83 6082 67B7 67B7 67B7 5EA3 C8BB 998C D23B 7B9E E7AE9E E7AE9E F3B2AF9F
1579             FB89 FB89 FB89 EE6C -- 60AD 67CC 67CC 67CC 5ED3 C8E8 99CA -- FA1D EFA89D EFA89D F3B2AFA0
1580             FB8A FB8A FB8A EE6D EDA0 60C4 67DD 67DD 67DD 5EFD C9A7 9A47 D361 7D48 E7B588 E7B588 F3B2AFA1
1581             FB8B FB8B FB8B EE6E EDA2 60C6 67E1 67E1 67E1 5EE0 C9AC 9A53 D368 7D5C E7B59C E7B59C F3B2AFA2
1582             FB8C FB8C FB8C EE6F F7C5 60D4 67EC 67EC 67EC 5FE4 C9B9 9A89 D427 7DB7 E7B6B7 E7B6B7 F3B2AFA3
1583             FB8D FB8D FB8D EE70 EDA6 60DA 67EB 67EB 67EB 5FB6 C9B6 9A86 -- 7DA0 E7B6A0 E7B6A0 F3B2AFA4
1584             FB8E FB8E FB8E EE71 EDAA 60E1 67F1 67F1 67F1 5FBE C9BD 9A8E -- 7DD6 E7B796 E7B796 F3B2AFA5
1585             FB8F FB8F FB8F EE72 EDB3 60FD 67FB 67FB 67FB 5FD6 C9D5 9AAA D454 7E52 E7B992 E7B992 F3B2AFA6
1586             FB90 FB90 FB90 EE73 EDB7 6157 68A5 68A5 68A5 5FE8 BFFB 90FB D472 7F47 E7BD87 E7BD87 F3B2AFA7
1587             FB91 FB91 FB91 EE74 -- 616E 68AE 68AE 68AE 5FF7 C9F2 9ADE D52E 7FA1 E7BEA1 E7BEA1 F3B2AFA8
1588             FB92 FB92 FB92 EE75 -- 6177 68B2 68B2 68B2 60A1 C9F6 9AEC -- FA1E EFA89E EFA89E F3B2AFA9
1589             FB93 FB93 FB93 EE76 EDEA 61F8 68DA 68DA 68DA 61D9 CBB4 9E84 D75E 8301 E88C81 E88C81 F3B2AFAA
1590             FB94 FB94 FB94 EE77 EDEB 6248 68DD 68DD 68DD 70E7 CBD3 9EA8 -- 8362 E88DA2 E88DA2 F3B2AFAB
1591             FB95 FB95 FB95 EE78 F8B1 625B 68F2 68F2 68F2 61F0 CBD4 9EA9 D822 837F E88DBF E88DBF F3B2AFAC
1592             FB96 FB96 FB96 EE79 EDFB 6267 68FC 68FC 68FC 61FE CCA1 9F41 D837 83C7 E88F87 E88F87 F3B2AFAD
1593             FB97 FB97 FB97 EE7A -- 6274 68F8 68F8 68F8 62AA CBF7 9EED D841 83F6 E88FB6 E88FB6 F3B2AFAE
1594             FB98 FB98 FB98 EE7B EE47 627E 69A3 69A3 69A3 70E8 CCB2 9F82 D851 8448 E89188 E89188 F3B2AFAF
1595             FB99 FB99 FB99 EE7C EE4E 628A 69AF 69AF 69AF 70E9 CCC3 9F94 D874 84B4 E892B4 E892B4 F3B2AFB0
1596             FB9A FB9A FB9A EE7D F8EF 629E 69BE 69BE 69BE 62D1 CCEE 9FDA D946 8553 E89593 E89593 F3B2AFB1
1597             FB9B FB9B FB9B EE7E EE57 62A1 69BF 69BF 69BF 62D4 CCEA 9FCC D948 8559 E89599 E89599 F3B2AFB2
1598             FB9C FB9C FB9C EE80 -- 62A8 69BA 69BA 69BA 62D9 CCED 9FCF D951 856B E895AB E895AB F3B2AFB3
1599             FB9D FB9D FB9D EE81 EE59 62B9 69C1 69C1 69C1 62E4 CCFD 9FFD -- FA1F EFA89F EFA89F F3B2AFB4
1600             FB9E FB9E FB9E EE82 EE5F 62BB 69C9 69C9 69C9 62E5 CDA9 A249 -- 85B0 E896B0 E896B0 F3B2AFB5
1601             FB9F FB9F FB9F EE83 F957 62CE 69D0 69D0 69D0 70EA CDC2 A293 -- FA20 EFA8A0 EFA8A0 F3B2AFB6
1602             FBA0 FBA0 FBA0 EE84 F964 62E2 69D7 69D7 69D7 63DF CDD3 A2A8 -- FA21 EFA8A1 EFA8A1 F3B2AFB7
1603             FBA1 FBA1 FBA1 EE85 -- 635E 69DA 69DA 69DA 63E0 CDE2 A2B4 -- 8807 E8A087 E8A087 F3B2AFB8
1604             FBA2 FBA2 FBA2 EE86 EE8D 6390 69E6 69E6 69E6 63F9 CEA4 A344 DC53 88F5 E8A3B5 E8A3B5 F3B2AFB9
1605             FBA3 FBA3 FBA3 EE87 EE9D 63C5 69FE 69FE 69FE 64E4 CECA A39D DD48 8A12 E8A892 E8A892 F3B2AFBA
1606             FBA4 FBA4 FBA4 EE88 EEA0 63CB 6AA5 6AA5 6AA5 64EC CEDA A3BA DD54 8A37 E8A8B7 E8A8B7 F3B2AFBB
1607             FBA5 FBA5 FBA5 EE89 EEA6 63D4 6AAA 6AAA 6AAA 64DA CEDF A3BF DD6A 8A79 E8A9B9 E8A9B9 F3B2AFBC
1608             FBA6 FBA6 FBA6 EE8A EEA7 63DF 6AAB 6AAB 6AAB 65A7 CEE2 A3B4 DD7A 8AA7 E8AAA7 E8AAA7 F3B2AFBD
1609             FBA7 FBA7 FBA7 EE8B F9DE 63E1 6AAD 6AAD 6AAD 6BEA CEE3 A3B5 DE24 8ABE E8AABE E8AABE F3B2AFBE
1610             FBA8 FBA8 FBA8 EE8C EEA9 63ED 6AB3 6AB3 6AB3 65B3 CEEC A3CE DE30 8ADF E8AB9F E8AB9F F3B2AFBF
1611             FBA9 FBA9 FBA9 EE8D EEAC 63EE 6AB2 6AB2 6AB2 65B7 CEEA A3CC -- FA22 EFA8A2 EFA8A2 F3B2B080
1612             FBAA FBAA FBAA EE8E EEAB 63EF 6AB4 6AB4 6AB4 65B6 CEED A3CF DE35 8AF6 E8ABB6 E8ABB6 F3B2B081
1613             FBAB FBAB FBAB EE8F -- 6445 6ABE 6ABE 6ABE 65C7 CEF8 A3EE DE4B 8B53 E8AD93 E8AD93 F3B2B082
1614             FBAC FBAC FBAC EE90 F9ED 6450 6AC3 6AC3 6AC3 65D1 CEFE A3FE -- 8B7F E8ADBF E8ADBF F3B2B083
1615             FBAD FBAD FBAD EE91 FA4F 647C 6AD0 6AD0 6AD0 66AB CFBC A48D DF39 8CF0 E8B3B0 E8B3B0 F3B2B084
1616             FBAE FBAE FBAE EE92 EEB8 647D 6ACF 6ACF 6ACF 65F9 CFBB A48C -- 8CF4 E8B3B4 E8B3B4 F3B2B085
1617             FBAF FBAF FBAF EE93 EEBC 6485 6AD5 6AD5 6AD5 65F8 CFC2 A493 DF43 8D12 E8B492 E8B492 F3B2B086
1618             FBB0 FBB0 FBB0 EE94 -- 648D 6AD8 6AD8 6AD8 66B9 CFC5 A496 -- 8D76 E8B5B6 E8B5B6 F3B2B087
1619             FBB1 FBB1 FBB1 EE95 -- 648E 6AD9 6AD9 6AD9 66C3 CFC7 A498 -- FA23 EFA8A3 EFA8A3 F3B2B088
1620             FBB2 FBB2 FBB2 EE96 -- 64C9 6AE1 6AE1 6AE1 66ED CFDE A4BE E059 8ECF E8BB8F E8BB8F F3B2B089
1621             FBB3 FBB3 FBB3 EE97 FA8E 64F1 6AEB 6AEB 6AEB 70F9 CFFD A4FD -- FA24 EFA8A4 EFA8A4 F3B2B08A
1622             FBB4 FBB4 FBB4 EE98 -- 6549 6AFA 6AFA 6AFA 70FB D0C2 A593 -- FA25 EFA8A5 EFA8A5 F3B2B08B
1623             FBB5 FBB5 FBB5 EE99 -- 6553 6BA3 6BA3 6BA3 70FA D0CD A5A2 E162 9067 E981A7 E981A7 F3B2B08C
1624             FBB6 FBB6 FBB6 EE9A EEE5 6564 6BC7 6BC7 6BC7 68A6 D0EC A5CE -- 90DE E9839E E9839E F3B2B08D
1625             FBB7 FBB7 FBB7 EE9B EEE8 6566 6BCA 6BCA 6BCA 68A8 D0F2 A5DE -- FA26 EFA8A6 EFA8A6 F3B2B08E
1626             FBB8 FBB8 FBB8 EE9C EEEA 6567 6BCD 6BCD 6BCD 68DF D0F3 A5DF -- 9115 E98495 E98495 F3B2B08F
1627             FBB9 FBB9 FBB9 EE9D EEEE 656B 6BD1 6BD1 6BD1 68B0 D0F9 A5EF E247 9127 E984A7 E984A7 F3B2B090
1628             FBBA FBBA FBBA EE9E FACC 6583 6BD9 6BD9 6BD9 69BE D1B8 A688 E328 91DA E9879A E9879A F3B2B091
1629             FBBB FBBB FBBB EE9F EEFA 6585 6BD8 6BD8 6BD8 69BC D1B7 A687 E326 91D7 E98797 E98797 F3B2B092
1630             FBBC FBBC FBBC EEA0 -- 6586 6BDA 6BDA 6BDA 69BF D1B9 A689 E329 91DE E9879E E9879E F3B2B093
1631             FBBD FBBD FBBD EEA1 EF41 658A 6BDC 6BDC 6BDC 69C5 D1BB A68C E32F 91ED E987AD E987AD F3B2B094
1632             FBBE FBBE FBBE EEA2 FAD0 658C 6BE1 6BE1 6BE1 69C6 D1C1 A692 E330 91EE E987AE E987AE F3B2B095
1633             FBBF FBBF FBBF EEA3 EEFC 658D 6BE0 6BE0 6BE0 69C0 D1BE A68F E32A 91E4 E987A4 E987A4 F3B2B096
1634             FBC0 FBC0 FBC0 EEA4 EF40 658F 6BDF 6BDF 6BDF 69C1 D1BD A68E E32B 91E5 E987A5 E987A5 F3B2B097
1635             FBC1 FBC1 FBC1 EEA5 -- 6590 6BE5 6BE5 6BE5 69CD D1C6 A697 E33C 9206 E98886 E98886 F3B2B098
1636             FBC2 FBC2 FBC2 EEA6 EF44 6593 6BE9 6BE9 6BE9 69D1 D1C4 A695 E341 9210 E98890 E98890 F3B2B099
1637             FBC3 FBC3 FBC3 EEA7 FAD2 6595 6BE7 6BE7 6BE7 69D0 D1CB A69E E33F 920A E9888A E9888A F3B2B09A
1638             FBC4 FBC4 FBC4 EEA8 EF47 659B 6BF2 6BF2 6BF2 69E1 D1DC A6BC E355 923A E988BA E988BA F3B2B09B
1639             FBC5 FBC5 FBC5 EEA9 EF49 659E 6BEE 6BEE 6BEE 69E4 D1D6 A6AC E358 9240 E98980 E98980 F3B2B09C
1640             FBC6 FBC6 FBC6 EEAA EF48 659F 6BF3 6BF3 6BF3 69E2 D1D9 A6AF E356 923C E988BC E988BC F3B2B09D
1641             FBC7 FBC7 FBC7 EEAB FADA 65A1 6BEF 6BEF 6BEF 69E8 D1DD A6BD E35F 924E E9898E E9898E F3B2B09E
1642             FBC8 FBC8 FBC8 EEAC FADD 65A3 6BF1 6BF1 6BF1 69EE D1DB A6BB E363 9259 E98999 E98999 F3B2B09F
1643             FBC9 FBC9 FBC9 EEAD FADB 65A5 6BEC 6BEC 6BEC 69EA D1D1 A6A6 E361 9251 E98991 E98991 F3B2B0A0
1644             FBCA FBCA FBCA EEAE EF46 65A6 6BED 6BED 6BED 69E0 D1D3 A6A8 E354 9239 E988B9 E988B9 F3B2B0A1
1645             FBCB FBCB FBCB EEAF FAE1 65A8 6BF6 6BF6 6BF6 6BD2 D1E4 A6B6 E369 9267 E989A7 E989A7 F3B2B0A2
1646             FBCC FBCC FBCC EEB0 FAED 65AB 6CA6 6CA6 6CA6 6AA7 D1EE A6DA E426 92A7 E98AA7 E98AA7 F3B2B0A3
1647             FBCD FBCD FBCD EEB1 -- 65AC 6CA8 6CA8 6CA8 69F7 D1EF A6DB E371 9277 E989B7 E989B7 F3B2B0A4
1648             FBCE FBCE FBCE EEB2 EF4C 65AD 6CA5 6CA5 6CA5 69F8 D1E6 A6B8 E372 9278 E989B8 E989B8 F3B2B0A5
1649             FBCF FBCF FBCF EEB3 FAFA 65B4 6CB1 6CB1 6CB1 6AC4 D1F9 A6EF E44B 92E7 E98BA7 E98BA7 F3B2B0A6
1650             FBD0 FBD0 FBD0 EEB4 FAF7 65B5 6CAC 6CAC 6CAC 6ABC D1F0 A6DC E441 92D7 E98B97 E98B97 F3B2B0A7
1651             FBD1 FBD1 FBD1 EEB5 FAF8 65B6 6CB8 6CB8 6CB8 6ABE D1F7 A6ED E443 92D9 E98B99 E98B99 F3B2B0A8
1652             FBD2 FBD2 FBD2 EEB6 FAF6 65B7 6CB3 6CB3 6CB3 6AB8 D2A4 A744 E43E 92D0 E98B90 E98B90 F3B2B0A9
1653             FBD3 FBD3 FBD3 EEB7 -- 65B8 6CB7 6CB7 6CB7 6BD3 D2A6 A746 -- FA27 EFA8A7 EFA8A7 F3B2B0AA
1654             FBD4 FBD4 FBD4 EEB8 -- 65B9 6CB5 6CB5 6CB5 6ABB D2A3 A743 E440 92D5 E98B95 E98B95 F3B2B0AB
1655             FBD5 FBD5 FBD5 EEB9 EF52 65BC 6CB0 6CB0 6CB0 6AC2 D1FE A6FE E447 92E0 E98BA0 E98BA0 F3B2B0AC
1656             FBD6 FBD6 FBD6 EEBA EF51 65BD 9FCA 9FCA 9FCA 6ABA D1F4 A6EA E43F 92D3 E98B93 E98B93 F3B2B0AD
1657             FBD7 FBD7 FBD7 EEBB EF57 65C1 6CC3 6CC3 6CC3 6AD5 D2B4 A784 E460 9325 E98CA5 E98CA5 F3B2B0AE
1658             FBD8 FBD8 FBD8 EEBC EF56 65C3 6CBE 6CBE 6CBE 6AD3 D2A9 A749 E45E 9321 E98CA1 E98CA1 F3B2B0AF
1659             FBD9 FBD9 FBD9 EEBD FB43 65C5 6CCD 6CCD 6CCD 69B3 D2AF A756 E451 92FB E98BBB E98BBB F3B2B0B0
1660             FBDA FBDA FBDA EEBE -- 65C6 6CC2 6CC2 6CC2 6BD4 D2B7 A787 -- FA28 EFA8A8 EFA8A8 F3B2B0B1
1661             FBDB FBDB FBDB EEBF FB48 65C8 6CBF 6CBF 6CBF 6AD1 D2AB A752 E45C 931E E98C9E E98C9E F3B2B0B2
1662             FBDC FBDC FBDC EEC0 EF53 65C9 6CC1 6CC1 6CC1 6ACA D2B5 A785 E452 92FF E98BBF E98BBF F3B2B0B3
1663             FBDD FBDD FBDD EEC1 FB47 65CC 6CC4 6CC4 6CC4 6AD0 D2B3 A783 E45B 931D E98C9D E98C9D F3B2B0B4
1664             FBDE FBDE FBDE EEC2 FB44 65CE 6CC5 6CC5 6CC5 6ACC D2B2 A782 E454 9302 E98C82 E98C82 F3B2B0B5
1665             FBDF FBDF FBDF EEC3 EF5E 65D0 6CCA 6CCA 6CCA 6AE4 D2BB A78C E47A 9370 E98DB0 E98DB0 F3B2B0B6
1666             FBE0 FBE0 FBE0 EEC4 FB4F 65D5 6CCC 6CCC 6CCC 6ADE D2C3 A794 E46F 9357 E98D97 E98D97 F3B2B0B7
1667             FBE1 FBE1 FBE1 EEC5 -- 65D8 6CD8 6CD8 6CD8 6AF2 D2D3 A7A8 E533 93A4 E98EA4 E98EA4 F3B2B0B8
1668             FBE2 FBE2 FBE2 EEC6 EF62 65DD 6CE0 6CE0 6CE0 6AF9 D2DF A7BF E53F 93C6 E98F86 E98F86 F3B2B0B9
1669             FBE3 FBE3 FBE3 EEC7 EF63 65E4 6CDF 6CDF 6CDF 6BA3 D2DA A7BA E549 93DE E98F9E E98F9E F3B2B0BA
1670             FBE4 FBE4 FBE4 EEC8 -- 65E8 6CE6 6CE6 6CE6 6BAE D2E7 A7B9 E550 93F8 E98FB8 E98FB8 F3B2B0BB
1671             FBE5 FBE5 FBE5 EEC9 -- 65F0 6CEF 6CEF 6CEF 6BBD D2F2 A7DE E562 9431 E990B1 E990B1 F3B2B0BC
1672             FBE6 FBE6 FBE6 EECA FB6C 65F4 6CF0 6CF0 6CF0 6BC5 D2F3 A7DF E56A 9445 E99185 E99185 F3B2B0BD
1673             FBE7 FBE7 FBE7 EECB -- 65F6 6CF1 6CF1 6CF1 6BC6 D2F4 A7EA E56B 9448 E99188 E99188 F3B2B0BE
1674             FBE8 FBE8 FBE8 EECC -- 664A 6CF8 6CF8 6CF8 6BE1 D2FC A7FC -- 9592 E99692 E99692 F3B2B0BF
1675             FBE9 FBE9 FBE9 EECD EF7C 6674 6DA2 6DA2 6DA2 68CC D3B9 A889 -- F9DC EFA79C EFA79C F3B2B180
1676             FBEA FBEA FBEA EECE -- 6678 6DA4 6DA4 6DA4 68E0 D3C0 A891 -- FA29 EFA8A9 EFA8A9 F3B2B181
1677             FBEB FBEB FBEB EECF EF7D 6679 6DA5 6DA5 6DA5 68D4 D3C1 A892 E668 969D E99A9D E99A9D F3B2B182
1678             FBEC FBEC FBEC EED0 FB8C 667F 6DA6 6DA6 6DA6 68DB D3C4 A895 E66F 96AF E99AAF E99AAF F3B2B183
1679             FBED FBED FBED EED1 EF86 6697 9FCD 9FCD 9FCD 6CAC D3D4 A8A9 E72C 9733 E99CB3 E99CB3 F3B2B184
1680             FBEE FBEE FBEE EED2 EF87 6699 9FCE 9FCE 9FCE 6CAD D3D5 A8AA -- 973B E99CBB E99CBB F3B2B185
1681             FBEF FBEF FBEF EED3 -- 669E 6DAE 6DAE 6DAE 6CB0 D3D7 A8AD E72E 9743 E99D83 E99D83 F3B2B186
1682             FBF0 FBF0 FBF0 EED4 EF88 66A2 6DB0 6DB0 6DB0 6CB1 D3D9 A8AF -- 974D E99D8D E99D8D F3B2B187
1683             FBF1 FBF1 FBF1 EED5 EF8A 66A3 9FCF 9FCF 9FCF 6CAE D3DB A8BB E731 974F E99D8F E99D8F F3B2B188
1684             FBF2 FBF2 FBF2 EED6 -- 66A4 6DB1 6DB1 6DB1 6CB3 D3DC A8BC -- 9751 E99D91 E99D91 F3B2B189
1685             FBF3 FBF3 FBF3 EED7 FB9C 66A5 6DB2 6DB2 6DB2 6CB5 D3DE A8BE E732 9755 E99D95 E99D95 F3B2B18A
1686             FBF4 FBF4 FBF4 EED8 EF9F 66CB 6DC1 6DC1 6DC1 6CF3 D4A1 A941 E831 9857 E9A197 E9A197 F3B2B18B
1687             FBF5 FBF5 FBF5 EED9 EFA3 66CC 6DC2 6DC2 6DC2 6CF7 D4A4 A944 E836 9865 E9A1A5 E9A1A5 F3B2B18C
1688             FBF6 FBF6 FBF6 EEDA -- 66DD 6DC5 6DC5 6DC5 6DB3 D4B3 A983 -- FA2A EFA8AA EFA8AA F3B2B18D
1689             FBF7 FBF7 FBF7 EEDB -- 66DF 6DC6 6DC6 6DC6 6DB4 D4B4 A984 -- FA2B EFA8AB EFA8AB F3B2B18E
1690             FBF8 FBF8 FBF8 EEDC -- 66E5 6DC8 6DC8 6DC8 6DBD D4B7 A987 E85D 9927 E9A4A7 E9A4A7 F3B2B18F
1691             FBF9 FBF9 FBF9 EEDD -- 66E6 6DC9 6DC9 6DC9 6DBE D4B8 A988 -- FA2C EFA8AC EFA8AC F3B2B190
1692             FBFA FBFA FBFA EEDE EFA9 66F9 6DCC 6DCC 6DCC 5CF3 D4C3 A994 -- 999E E9A69E E9A69E F3B2B191
1693             FBFB FBFB FBFB EEDF EFB1 6759 6DD9 6DD9 6DD9 6DF6 D4D7 A9AD E951 9A4E E9A98E E9A98E F3B2B192
1694             FBFC FBFC FBFC EEE0 -- 676B 6DD4 6DD4 6DD4 6EA4 D4DC A9BC -- 9AD9 E9AB99 E9AB99 F3B2B193
1695             FC40 FC40 FC40 EEE1 FC51 676C 6DDC 6DDC 6DDC 6EA7 D4DE A9BE E96D 9ADC E9AB9C E9AB9C F3B2B194
1696             FC41 FC41 FC41 EEE2 EFC2 678F 9FD2 9FD2 9FD2 6ED0 D4F0 A9DC EA4D 9B75 E9ADB5 E9ADB5 F3B2B195
1697             FC42 FC42 FC42 EEE3 EFC1 6791 6DE0 6DE0 6DE0 6EEE D4EF A9DB -- 9B72 E9ADB2 E9ADB2 F3B2B196
1698             FC43 FC43 FC43 EEE4 EFC5 6793 6DE2 6DE2 6DE2 6ED8 D4F3 A9DF EA5B 9B8F E9AE8F E9AE8F F3B2B197
1699             FC44 FC44 FC44 EEE5 FC69 679B 6DE5 6DE5 6DE5 6EDB D4FB A9FB EA66 9BB1 E9AEB1 E9AEB1 F3B2B198
1700             FC45 FC45 FC45 EEE6 -- 679F 6DE7 6DE7 6DE7 6EEF D5A8 AA48 EA6A 9BBB E9AEBB E9AEBB F3B2B199
1701             FC46 FC46 FC46 EEE7 EFCD 67B1 9FD3 9FD3 9FD3 6EE3 D5AF AA56 EB25 9C00 E9B080 E9B080 F3B2B19A
1702             FC47 FC47 FC47 EEE8 EFDC 67E2 9FD8 9FD8 9FD8 6FA3 D3C9 A89A EB7B 9D70 E9B5B0 E9B5B0 F3B2B19B
1703             FC48 FC48 FC48 EEE9 FCB2 67E4 6DF2 6DF2 6DF2 6FA1 D5D4 AAA9 EB7A 9D6B E9B5AB E9B5AB F3B2B19C
1704             FC49 FC49 FC49 EEEA -- 67F4 6DF4 6DF4 6DF4 6FB2 D5DA AABA -- FA2D EFA8AD EFA8AD F3B2B19D
1705             FC4A FC4A FC4A EEEB FCCD 67FE 6EAC 6EAC 6EAC 6FAE D5DC AABC EC56 9E19 E9B899 E9B899 F3B2B19E
1706             FC4B FC4B FC4B EEEC EFF0 6856 6EA1 6EA1 6EA1 6FD6 D5EB AACD -- 9ED1 E9BB91 E9BB91 F3B2B19F
1707              
1708             =head1 UTF-8.0 vs. UTF-8.1
1709              
1710             The large character sets has always some problems.
1711             One of problem of UTF-8 is difference between Microsoft Corporation-san's definition and general definition.
1712             Already, in this software, "utf8" means Microsoft Corporation-san's definition.
1713             So we named the general UTF-8 "UTF-8.1" to distinguish them.
1714              
1715             Terminology and definitions
1716             -------------------------------------------------------------------------------
1717             UTF-8 [ju:ti:ef eit] could mean sometimes UTF-8.0, sometimes UTF-8.x
1718             UTF-8.0 [ju:ti:ef hatten-zero] is Microsoft's definition of the UTF-8
1719             UTF-8.1 [ju:ti:ef hatten-ichi] is general definition of the UTF-8
1720             UTF-8.x [ju:ti:ef hatten-ekks] means both UTF-8.0 and UTF-8.1
1721             -------------------------------------------------------------------------------
1722              
1723             The following is difference between UTF-8.0 and UTF-8.1.
1724              
1725             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1726             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1727             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1728             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1729             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1730             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1731             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1732             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1733             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1734             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1735             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1736             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1737             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1738             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1739             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1740             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1741             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1742             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1743             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1744             815C 815C 815C 815C -- DDB7 A1BD A1BD A1BD A1BD 213D 4F7E A1BD 2015 E28095 E28094 F3B0849C
1745             8161 8161 8161 8161 81D2 DFE5 A1C2 A1C2 A1C2 A1C2 2142 4FC2 -- 2225 E288A5 E28096 F3B084A1
1746             817C 817C 817C 817C 81AF E9F3 A1DD A1DD A1DD A1DD 215D 4F5A -- FF0D EFBC8D E28892 F3B084BC
1747             9C5A815C -- -- -- 815C 444A -- -- -- -- -- -- -- 2014 E28094 E28095 F3B2B4AC
1748             9C5A8161 -- -- -- 8161 447C -- -- -- -- -- -- A1C2 2016 E28096 E288A5 F3B2B4B1
1749             9C5A817C -- -- -- 817C 4260 -- -- -- -- -- -- A1DD 2212 E28892 EFBC8D F3B2B58C
1750              
1751             =head1 ERRATAS OF MAPPINGS
1752              
1753             Mapping of Jacode4e version 2.13.6.17 or earlier has following errata:
1754              
1755             =head2 KEIS78, KEIS83, and KEIS90
1756              
1757             Mapping of 'keis78', 'keis83', and 'keis90' had following errata:
1758              
1759             ----------------------------------------------
1760             Unicode 2.13.6.18 2.13.6.17
1761             or later or older
1762             ----------------------------------------------
1763             芺 U+82BA KEIS:(no mapping) KEIS:68CF
1764             覀 U+8980 KEIS:(no mapping) KEIS:59A9
1765             麽 U+9EBD KEIS:6DFB KEIS:5EC3
1766             ----------------------------------------------
1767              
1768             =head2 JEF and JEF9P
1769              
1770             Mapping of 'jef' and 'jef9p' had following errata:
1771              
1772             ----------------------------------------------
1773             Unicode 2.13.6.18 2.13.6.17
1774             or later or older
1775             ----------------------------------------------
1776             漼 U+6F3C JEF:(no mapping) JEF:56F3
1777             臽 U+81FD JEF:(no mapping) JEF:52E1
1778             海 U+FA45 JEF:55FB JEF:53FA
1779             渚 U+FA46 JEF:BDED JEF:55FB
1780             漢 U+FA47 JEF:56E6 JEF:BDED
1781             煮 U+FA48 JEF:58A7 JEF:56E6
1782             爫 U+FA49 JEF:(no mapping) JEF:58A7
1783             社 U+FA4C JEF:5CD3 JEF:5CB3
1784             祉 U+FA4D JEF:5CD5 JEF:5CD3
1785             祈 U+FA4E JEF:5CD4 JEF:5CD5
1786             祐 U+FA4F JEF:5CD6 JEF:5CD4
1787             祖 U+FA50 JEF:5CD7 JEF:5CD6
1788             祝 U+FA51 JEF:5CD9 JEF:5CD7
1789             禍 U+FA52 JEF:5CE2 JEF:5CD9
1790             禎 U+FA53 JEF:5CE3 JEF:5CE2
1791             穀 U+FA54 JEF:5CF4 JEF:5CE3
1792             突 U+FA55 JEF:5DCD JEF:5CF4
1793             縉 U+FA58 JEF:(no mapping) JEF:5FC8
1794             署 U+FA5A JEF:5FF0 JEF:5EE3
1795             者 U+FA5B JEF:60B5 JEF:5FF0
1796             臭 U+FA5C JEF:60E3 JEF:60B5
1797             艹 U+FA5D JEF:(no mapping) JEF:60E3
1798             ~ U+FF5E JEF:(no mapping) JEF:A1C1
1799             ----------------------------------------------
1800              
1801             =head2 JIPS(J)
1802              
1803             Mapping of 'jipsj' had following errata:
1804              
1805             ----------------------------------------------
1806             Unicode 2.13.6.18 2.13.6.17
1807             or later or older
1808             ----------------------------------------------
1809             Ý U+00DD JIPSJ:(no mapping) JIPSJ:A5B1
1810             耰 U+8030 JIPSJ:(no mapping) JIPSJ:CAAB
1811             ----------------------------------------------
1812              
1813             =head2 JIPS(E)
1814              
1815             Mapping of 'jipse' had following errata:
1816              
1817             ----------------------------------------------
1818             Unicode 2.13.6.18 2.13.6.17
1819             or later or older
1820             ----------------------------------------------
1821             Ý U+00DD JIPSE:(no mapping) JIPSE:4581
1822             耰 U+8030 JIPSE:(no mapping) JIPSE:9D52
1823             ----------------------------------------------
1824              
1825             =head1 DEPENDENCIES
1826              
1827             perl version 5.005_03 to newest perl
1828              
1829             =head1 SOFTWARE LIFE CYCLE
1830              
1831             Jacode.pm
1832             jcode.pl Encode.pm jacode.pl Jacode4e Jacode4e::RoundTrip
1833             --------------------------------------------------------------------------------
1834             1993 Perl4.036 | |
1835             : : : :
1836             1999 Perl5.00503 | | | |
1837             2000 Perl5.6 | | | |
1838             2002 Perl5.8 | Born | | |
1839             2007 Perl5.10 V | | | |
1840             2010 Perl5.12 EOL | Born | |
1841             2011 Perl5.14 | | | |
1842             2012 Perl5.16 | | | |
1843             2013 Perl5.18 | | | |
1844             2014 Perl5.20 | | | |
1845             2015 Perl5.22 | | | |
1846             2016 Perl5.24 | | | |
1847             2017 Perl5.26 | | | |
1848             2018 Perl5.28 | | Born Born
1849             2019 Perl5.30 | | | |
1850             2020 Perl5.32 : : : :
1851             2030 Perl5.52 : : : :
1852             2040 Perl5.72 : : : :
1853             2050 Perl5.92 : : : :
1854             2060 Perl5.112 : : : :
1855             2070 Perl5.132 : : : :
1856             2080 Perl5.152 : : : :
1857             2090 Perl5.172 : : : :
1858             2100 Perl5.192 : : : :
1859             2110 Perl5.212 : : : :
1860             2120 Perl5.232 : : : :
1861             : : V V V V
1862             --------------------------------------------------------------------------------
1863              
1864             =head1 Why and how to CP932X Born?
1865              
1866             In order to know why CP932X exists the way it is, one must first know why CP932X born.
1867              
1868             Q1) Is CCS of JIS X 0208 enough?
1869              
1870             A1) No. Often we require GAIJI.
1871              
1872             Q2) Is CCS of JIS X 0213 enough?
1873              
1874             A2) It's not perfect, but enough for many people.
1875              
1876             Q3) Is CES by UTF-8 good?
1877              
1878             A3) No. On Japanese information processing, it's unstable and not popular still now.
1879              
1880             Q4) Is CES by Shift_JIS-2004 good?
1881              
1882             A4) No. Because Shift_JIS-2004 cannot support very popular CP932 and your GAIJI. We need a realistic solution to solving real problem.
1883              
1884             Q5) Is escape sequence good idea to support CCS of JIS X 0213?
1885              
1886             A5) No. Because the programming is so hard.
1887              
1888             Q6) Which character is best for single shift code to support CCS of JIS X 0213?
1889              
1890             =over 2
1891              
1892             =item * The single shift code must be a DBCS code, because field with DBCS type cannot store SBCS code in some cases
1893              
1894             =item * Moreover, all GAIJI code points must be yours
1895              
1896             =item * The impact of this solution must be minimum
1897              
1898             =back
1899              
1900             A6) We selected "1-55-27" for single shift code. Because it called "ghost character" and cannot use any purpose
1901              
1902             =head1 AUTHOR
1903              
1904             INABA Hitoshi L in a CPAN
1905              
1906             This project was originated by INABA Hitoshi.
1907              
1908             =head1 LICENSE AND COPYRIGHT
1909              
1910             This software is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L.
1911              
1912             This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1913              
1914             =head1 SEE ALSO
1915              
1916             Windows-31J information
1917             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/index.html
1918              
1919             Windows-31 J Character Set
1920             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/Windows-31J-charset.html
1921              
1922             Windows-31 J Duplicate Coded Characters and Unicode
1923             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/uni2sjis-Windows-31J.html
1924              
1925             Data transformation function provided by WebSphere MQ
1926             Chapter 11. Problems with converting certain characters (Japanese language related)
1927             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11.html
1928             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11-pdf.pdf
1929              
1930             CPGID 00290
1931             https://www-01.ibm.com/software/globalization/cdra/
1932             https://www-01.ibm.com/software/globalization/cp/cp00290.html
1933             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.pdf
1934             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.txt
1935              
1936             IBM Japanese Graphic Character Set, Kanji DBCS Host and DBCS - PC
1937             https://www-01.ibm.com/software/globalization/cdra/
1938             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00300.pdf
1939              
1940             IBM Kanji code list
1941             N:GC18-2040-3
1942              
1943             HiRDB Datareplicator Version 8 manuals, Hitachi, Ltd.
1944             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600001.HTM
1945             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600166.HTM
1946             http://itdoc.hitachi.co.jp/manuals/3020/30203J3820/ISUS0268.HTM
1947             http://itdoc.hitachi.co.jp/manuals/3000/30003D5820/CLNT0235.HTM
1948              
1949             KEIS code book, Culti Co.,Ltd.
1950             http://www.culti.co.jp/2016/02/01/%e3%82%ab%e3%83%ab%e3%83%81%e7%99%ba%e8%a1%8c%e6%9b%b8%e7%b1%8d/
1951              
1952             Appendix B.2 Character code differences
1953             http://itdoc.hitachi.co.jp/manuals/3020/3020759580/G5950334.HTM
1954              
1955             Appendix E Handling of character codes in PDE - Form Designer (applies only to distributed type PDE)
1956             http://itdoc.hitachi.co.jp/manuals/3020/30203p0360/PDEF0203.HTM
1957              
1958             HITAC Character code table (KEIS83)
1959             Document number 8080-2-30
1960             Document number 8080-2-074-10
1961             Document number 8080-2-100-10
1962             Document number 8080-2-109
1963              
1964             Linkexpress, FUJITSU LIMITED
1965             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
1966             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/unyo05/unyo0413.html
1967             http://software.fujitsu.com/jp/manual/manualfiles/m130010/b1fw5992/01z200/b5992-c-00-00.html
1968              
1969             JEF code book, Culti Co.,Ltd.
1970             http://www.culti.co.jp/2016/02/01/jef%e3%82%b3%e3%83%bc%e3%83%89%e3%83%96%e3%83%83%e3%82%af/
1971              
1972             Linkexpress operation manual J2X1-5930-03Z2(00) FUJITSU LIMITED
1973             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
1974             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0416.html
1975             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0420.html
1976             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0421.html
1977             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/index.html
1978             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/b5691-g-00-00.html
1979             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-01-00.html
1980             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-07-00.html
1981             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-08-00.html
1982             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-09-00.html
1983              
1984             hidekatsu-izuno/jef4j
1985             https://github.com/hidekatsu-izuno/jef4j
1986              
1987             JHTc(JHT command edition)
1988             http://www.vector.co.jp/soft/winnt/util/se094205.html
1989              
1990             FACOM JEF Character code index dictionary
1991             Manual code 99FR-0012-3
1992             Manual code 99FR-8010-1
1993              
1994             JIPS code book, Culti Co.,Ltd.
1995             http://www.culti.co.jp/2016/02/01/jips%e3%82%b3%e3%83%bc%e3%83%89%e3%83%96%e3%83%83%e3%82%af/
1996              
1997             NEC Corporation Standard character set dictionary
1998             ZBB10-3
1999              
2000             NEC Corporation Standard character set dictionary
2001             ZBB11-2
2002              
2003             ClearPath Enterprise Servers MultiLingual System Administration, Operations, and Programming Guide ClearPath MCP 15.0 April 2013 8600 0288-308
2004             https://public.support.unisys.com/aseries/docs/ClearPath-MCP-16.0/PDF/86000288-308.pdf
2005              
2006             Heterogeneous database cooperation among heterogeneous OS environments
2007             http://www.unisys.co.jp/tec_info/tr56/5605.htm
2008              
2009             UNISYS_SJIS KANJI CONVERT(DOS ver)
2010             https://www.vector.co.jp/soft/dos/util/se238607.html
2011              
2012             ANSI X3.4-1968 (US-ASCII) with 0x60/0x27 as left/right single quotation mark to Unicode
2013             http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/US-ASCII-QUOTES.TXT
2014              
2015             JIS X 0201 (1976) to Unicode 1.1 Table
2016             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT
2017              
2018             JIS X 0208 (1990) to Unicode
2019             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
2020              
2021             JIS X 0212 (1990) to Unicode
2022             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT
2023              
2024             cp932 to Unicode table
2025             ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
2026             https://support.microsoft.com/ja-jp/help/170559/prb-conversion-problem-between-shift-jis-and-unicode
2027              
2028             Shift_JIS-2004 to Unicode table
2029             http://x0213.org/codetable/sjis-0213-2004-std.txt
2030              
2031             UTF-8, a transformation format of ISO 10646
2032             https://www.rfc-editor.org/rfc/rfc3629.txt
2033              
2034             iDIVO Ver.1.4.0
2035             https://www.hulft.com/shukka/files/iDIVO/SP-DV1-CC-02-01.pdf
2036              
2037             Kanji shift code
2038             https://ja.wikipedia.org/wiki/%E6%BC%A2%E5%AD%97%E3%82%B7%E3%83%95%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89
2039              
2040             U+32FF SQUARE ERA NAME REIWA
2041             https://unicode.org/versions/Unicode12.1.0/
2042             http://en.glyphwiki.org/wiki/u32ff
2043             https://www.ibm.com/support/pages/zos%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E6%96%B0%E5%85%83%E5%8F%B7%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
2044             http://www.hitachi-support.com/alert/ss/HWS17-007/list.pdf#page=29
2045              
2046             CJKV Information Processing
2047             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-1.sjs
2048             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-2.sjs
2049             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-3.sjs
2050             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-4.sjs
2051             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-1.sjs
2052             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-2.sjs
2053             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ2.sjs
2054             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ3.sjs
2055             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ4.sjs
2056              
2057             Very old fj.kanji discussion
2058             http://www.ie.u-ryukyu.ac.jp/~kono/fj/fj.kanji/index.html
2059              
2060             jcode.pl: Perl library for Japanese character code conversion, Kazumasa Utashiro
2061             ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
2062             http://web.archive.org/web/20090608090304/http://srekcah.org/jcode/
2063             ftp://ftp.oreilly.co.jp/pcjp98/utashiro/
2064             http://mail.pm.org/pipermail/tokyo-pm/2002-March/001319.html
2065             https://twitter.com/uta46/status/11578906320
2066              
2067             jacode - Perl program for Japanese character code conversion
2068             https://metacpan.org/search?q=jacode.pl
2069              
2070             Jacode4e - Converts Character Encodings for Enterprise in Japan
2071             https://metacpan.org/pod/Jacode4e
2072              
2073             Jacode4e::RoundTrip - Jacode4e for round-trip conversion in JIS X 0213
2074             https://metacpan.org/pod/Jacode4e::RoundTrip
2075              
2076             Modern::Open - Autovivification, Autodie, and 3-args open support
2077             https://metacpan.org/pod/Modern::Open
2078              
2079             BackPAN
2080             http://backpan.perl.org/authors/id/I/IN/INA/
2081              
2082             =head1 ACKNOWLEDGEMENTS
2083              
2084             Thank on good luck and all stakeholders, we could make this software.
2085              
2086             We received character code table of KEIS, JEF, and JIPS by electronic data from Culti Co.,Ltd.-san.
2087             Moreover, they allowed that we make open source software using it.
2088              
2089             Thank you, Culti Co.,Ltd-san.!
2090              
2091             =head1 HELLO WORLD
2092              
2093             To support JIS X 0213:2004,
2094            
2095             Using ghost character 1-55-27(it's me!),
2096            
2097             Found by JIS X 0208:1997,
2098            
2099             Was born in JIS C 6226-1978.
2100            
2101             Hello world,
2102            
2103             What do we hack, today?
2104            
2105             -- 1-55-27, 2018-01-27
2106              
2107             =cut
2108              
2109             1;
2110              
2111             __DATA__