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.22';
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, 2023, 2026 INABA Hitoshi in a CPAN
13             ######################################################################
14              
15             $VERSION = $VERSION;
16              
17 61     61   833743 use 5.00503;
  61         226  
18 61     61   299 use strict;
  61         343  
  61         3322  
19 61 50   61   1483 BEGIN { $INC{'warnings.pm'} = '' if $] < 5.006 }; use warnings; $^W=1;
  61     61   287  
  61         103  
  61         386924  
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 25800     25800 0 7869653 local $_ = ${$_[0]};
  25800         31809  
727 25800         25249 my $OUTPUT_encoding = $_[1];
728 25800         25081 my $INPUT_encoding = $_[2];
729 25800   100     33589 my $option = ($_[3] || {});
730 25800         24189 my $last_ctype = undef;
731 25800         23538 my $output = '';
732 25800         23306 my $count = 0;
733 25800   100     67016 $option->{'OVERRIDE_MAPPING'} ||= {};
734              
735 25800 50       34978 if (ref($_[0]) ne 'SCALAR') {
736 0         0 die "@{[__FILE__]} \$_[0] isn't scalar reference\n";
  0         0  
737             }
738 25800 50       37513 if (not exists $x{$OUTPUT_encoding}) {
739 0         0 die "@{[__FILE__]} unknown OUTPUT encoding '$OUTPUT_encoding'\n";
  0         0  
740             }
741 25800 50       32025 if (not exists $x{$INPUT_encoding}) {
742 0         0 die "@{[__FILE__]} unknown INPUT encoding '$INPUT_encoding'\n";
  0         0  
743             }
744              
745 25800         23028 my $INPUT_LAYOUT = undef;
746 25800         24707 my @ctype = ();
747 25800 100       49236 if ($INPUT_encoding =~ /^(?:cp932x|cp932|cp932ibm|cp932nec|sjis2004|cp00930|keis78|keis83|keis90|jef|jef9p|jipsj|jipse|letsj)$/) {
748 23442 100       30923 if (defined $option->{'INPUT_LAYOUT'}) {
749 22879         21767 $INPUT_LAYOUT = $option->{'INPUT_LAYOUT'};
750 22879         21112 $INPUT_LAYOUT =~ s/([SD])([0-9]+)/$1 x $2/ge;
  0         0  
751 22879 50       32403 if ($INPUT_LAYOUT =~ /^[SD]*$/) {
752 22879         32154 @ctype = map {{'S'=>'SBCS', 'D'=>'DBCS',}->{$_}} split(//,$INPUT_LAYOUT);
  23084         61703  
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 25800         36709 while ($_ ne '') {
761 26216         24405 my $ctype = '';
762 26216 100       28855 if (defined $INPUT_LAYOUT) {
763 23084   50     30735 $ctype = (shift(@ctype) || 'SBCS');
764             }
765             else {
766 3132   50     6459 $ctype = ($x{$INPUT_encoding}{'get_ctype'}->() || $last_ctype || 'SBCS');
767             }
768              
769 26216 100 100     38386 if (not defined($last_ctype) or ($ctype ne $last_ctype)) {
770 26112 100       33892 if ($option->{'OUTPUT_SHIFTING'}) {
771 256         507 $output .= $x{$OUTPUT_encoding}{'set_ctype'}->($ctype);
772             }
773 26112         24710 $last_ctype = $ctype;
774             }
775              
776 26216         33435 my $input_octets = $x{$INPUT_encoding}{'getoct'}->($ctype);
777 26216 50       34129 if (defined $input_octets) {
778 26216 100       31932 if (defined $option->{'OVERRIDE_MAPPING'}{$input_octets}) {
779 71         83 $output .= $option->{'OVERRIDE_MAPPING'}{$input_octets};
780             }
781             else {
782 26145         31579 my $char = $x{$INPUT_encoding}{'getc'}->($input_octets);
783 26145 100       37496 if (not defined $char) {
    100          
784 3629 100       4216 if (defined $option->{'GETA'}) {
785 54         124 $output .= $option->{'GETA'};
786             }
787             else {
788 3575         4000 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
789             }
790             }
791             elsif ($char eq "\xF3\xB0\x84\x80") {
792 567 100       803 if (defined $option->{'SPACE'}) {
793 50         109 $output .= $option->{'SPACE'};
794             }
795             else {
796 517         1104 $output .= $x{$OUTPUT_encoding}{'putc'}->($char);
797             }
798             }
799             else {
800 21949         28531 my $output_octets = $x{$OUTPUT_encoding}{'putc'}->($char);
801 21949 100 66     43660 if (not defined ($output_octets) or ($output_octets eq '')) {
802 79 100       134 if (defined $option->{'GETA'}) {
803 77         128 $output .= $option->{'GETA'};
804             }
805             else {
806 2         4 $output .= $x{$OUTPUT_encoding}{'putc'}->("\xF3\xB0\x85\xAB");
807             }
808             }
809             else {
810 21870         24132 $output .= $output_octets;
811             }
812             }
813             }
814             }
815              
816 26216         37075 $count++;
817             }
818              
819 25800         21897 ${$_[0]} = $output;
  25800         29367  
820 25800         40306 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 61 0 33 61   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             String to convert. Passed by reference and overwritten in place.
935              
936             =head2 $OUTPUT_encoding
937              
938             The encoding mnemonic for output. See encoding table below.
939              
940             =head2 $INPUT_encoding
941              
942             Converts encoding of $line from $INPUT_encoding to $OUTPUT_encoding then overwrites $line.
943              
944             $OUTPUT_encoding and $INPUT_encoding cannot omit.
945              
946             You can use mnemonic as encoding name of $INPUT_encoding and $OUTPUT_encoding:
947              
948             mnemonic means
949             -----------------------------------------------------------------------
950             cp932x CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
951             cp932 Microsoft CP932, IANA Windows-31J
952             cp932ibm IBM CP932
953             cp932nec NEC CP932
954             sjis2004 JISC Shift_JIS-2004
955             cp00930 IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
956             keis78 HITACHI KEIS78
957             keis83 HITACHI KEIS83
958             keis90 HITACHI KEIS90
959             jef FUJITSU JEF (12 point size for printing with option OUTPUT_SHIFTING)
960             jef9p FUJITSU JEF ( 9 point size for printing with option OUTPUT_SHIFTING)
961             jipsj NEC JIPS(J)
962             jipse NEC JIPS(E)
963             letsj UNISYS LetsJ
964             utf8 UTF-8.0 (aka UTF-8)
965             utf8.1 UTF-8.1 (conversion based on Shift_JIS-Unicode mapping, not CP932)
966             utf8jp UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
967             -----------------------------------------------------------------------
968              
969             =head2 { %option }
970              
971             Hash reference "{ %option }" can omit.
972              
973             You can following mnemonics as keys of hash reference "{ %option }":
974              
975             =over 2
976              
977             =item *
978              
979             INPUT_LAYOUT
980              
981             input record layout by 'S' and 'D' sequence
982              
983             'S' means one char as SBCS, 'D' means one char as DBCS
984              
985             each letter may optionally be followed by a number indicating the repeat count, see samples
986              
987             =item *
988              
989             OUTPUT_SHIFTING
990              
991             true means use output shift code, false means not use
992              
993             default is false
994              
995             =item *
996              
997             SPACE
998              
999             output space code in DBCS/MBCS
1000              
1001             =item *
1002              
1003             GETA
1004              
1005             output geta code in DBCS/MBCS
1006              
1007             =item *
1008              
1009             OVERRIDE_MAPPING
1010              
1011             hash reference of FROM => TO override mapping { "\x12\x34"=>"\x56\x78", "\x9A\xBC"=>"\xDE\xFE", }
1012              
1013             (CAUTION! override also SPACE option)
1014              
1015             =back
1016              
1017             If you need round-trip conversion, you had better use Jacode4e::RoundTrip module.
1018              
1019             =head1 SAMPLES
1020              
1021             Converts from cp00930 to cp932x using option ('INPUT_LAYOUT' => 'SSSDDDSSDDSDSD')
1022              
1023             use FindBin;
1024             use lib "$FindBin::Bin/lib";
1025             use Jacode4e;
1026             while (<>) {
1027             $char_count =
1028             Jacode4e::convert(\$_, 'cp932x', 'cp00930', {
1029             'INPUT_LAYOUT' => 'SSSDDDSSDDSDSD',
1030             'OUTPUT_SHIFTING' => 0,
1031             'SPACE' => "\x81\xA2",
1032             'GETA' => "\x81\xA1",
1033             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1034             });
1035             print $_;
1036             }
1037              
1038             Converts from cp00930 to cp932x using option ('INPUT_LAYOUT' => 'S3D3S2D2SDSD')
1039              
1040             use FindBin;
1041             use lib "$FindBin::Bin/lib";
1042             use Jacode4e;
1043             while (<>) {
1044             $char_count =
1045             Jacode4e::convert(\$_, 'cp932x', 'cp00930', {
1046             'INPUT_LAYOUT' => 'S3D3S2D2SDSD',
1047             'OUTPUT_SHIFTING' => 0,
1048             'SPACE' => "\x81\xA2",
1049             'GETA' => "\x81\xA1",
1050             'OVERRIDE_MAPPING' => { "\x44\x5A" => "\x81\x7C", },
1051             });
1052             print $_;
1053             }
1054              
1055             Converts from utf8.1 to cp932ibm
1056              
1057             use FindBin;
1058             use lib "$FindBin::Bin/lib";
1059             use Jacode4e;
1060             while (<>) {
1061             Jacode4e::convert(\$_, 'cp932ibm', 'utf8.1', {});
1062             print $_;
1063             }
1064              
1065             Converts from utf8 to utf8.1
1066              
1067             use FindBin;
1068             use lib "$FindBin::Bin/lib";
1069             use Jacode4e;
1070             while (<>) {
1071             $char_count =
1072             Jacode4e::convert(\$_, 'utf8.1', 'utf8', {
1073             # FULLWIDTH TILDE => WAVE DASH
1074             'OVERRIDE_MAPPING' => { "\xEF\xBD\x9E" => "\xE3\x80\x9C", },
1075             });
1076             print $_;
1077             }
1078              
1079             =head1 INPUT SI/SO code
1080              
1081             Wikipedia L tells us Kanji shift code (means DBCS shift code) of each encoding of vendors.
1082             Jacode4e::convert() handle SI/SO(Shift In and Shift Out) code in $line automatically.
1083             If $line has no SI/SO code, we can use option "INPUT_LAYOUT" instead of SI/SO code.
1084              
1085             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).
1086             Because SI/SO codes are rarely used.
1087              
1088             If $INPUT_encoding is any of cp932x, cp932, cp932ibm, cp932nec, and sjis2004, "INPUT_LAYOUT" option is unnecessary.
1089             Because SBCS and DBCS can be judged from the character string itself.
1090             However, you can also use "INPUT_LAYOUT" option to force conversion as SBCS.
1091              
1092             ---------------------------------------------------------------------------
1093             SO(Shift Out) SI(Shift In)
1094             $INPUT_encoding KI(KANJI In) KO(KANJI Out)
1095             mnemonic switch to DBCS switch to SBCS %option
1096             ---------------------------------------------------------------------------
1097             'cp932x' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1098             'cp932' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1099             'cp932ibm' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1100             'cp932nec' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1101             'sjis2004' (nothing) (nothing) also 'INPUT_LAYOUT' => ...
1102             'cp00930' "\x0E" "\x0F" xor 'INPUT_LAYOUT' => ...
1103             'keis78' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1104             'keis83' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1105             'keis90' "\x0A\x42" "\x0A\x41" xor 'INPUT_LAYOUT' => ...
1106             'jef' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1107             'jef9p' "\x28" or "\x38" "\x29" xor 'INPUT_LAYOUT' => ...
1108             'jipsj' "\x1A\x70" "\x1A\x71" xor 'INPUT_LAYOUT' => ...
1109             'jipse' "\x3F\x75" "\x3F\x76" xor 'INPUT_LAYOUT' => ...
1110             'letsj' "\x93\x70" "\x93\xF1" xor 'INPUT_LAYOUT' => ...
1111             'utf8' (nothing) (nothing)
1112             'utf8.1' (nothing) (nothing)
1113             'utf8jp' (nothing) (nothing)
1114             ---------------------------------------------------------------------------
1115              
1116             =head1 OUTPUT SI/SO code
1117              
1118             Jacode4e::convert() doesn't output SI/SO code on default.
1119             Thus, if you need SI/SO code then you have to use option "'OUTPUT_SHIFTING' => 1".
1120              
1121             ---------------------------------------------------------------------------
1122             SO(Shift Out) SI(Shift In)
1123             $OUTPUT_encoding KI(KANJI In) KO(KANJI Out)
1124             mnemonic switch to DBCS switch to SBCS %option
1125             ---------------------------------------------------------------------------
1126             'cp932x' (nothing) (nothing)
1127             'cp932' (nothing) (nothing)
1128             'cp932ibm' (nothing) (nothing)
1129             'cp932nec' (nothing) (nothing)
1130             'sjis2004' (nothing) (nothing)
1131             'cp00930' "\x0E" "\x0F" 'OUTPUT_SHIFTING' => 1
1132             'keis78' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1133             'keis83' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1134             'keis90' "\x0A\x42" "\x0A\x41" 'OUTPUT_SHIFTING' => 1
1135             'jef' "\x28" "\x29" 'OUTPUT_SHIFTING' => 1
1136             'jef9p' "\x38" "\x29" 'OUTPUT_SHIFTING' => 1
1137             'jipsj' "\x1A\x70" "\x1A\x71" 'OUTPUT_SHIFTING' => 1
1138             'jipse' "\x3F\x75" "\x3F\x76" 'OUTPUT_SHIFTING' => 1
1139             'letsj' "\x93\x70" "\x93\xF1" 'OUTPUT_SHIFTING' => 1
1140             'utf8' (nothing) (nothing)
1141             'utf8.1' (nothing) (nothing)
1142             'utf8jp' (nothing) (nothing)
1143             ---------------------------------------------------------------------------
1144              
1145             =head1 OUTPUT DBCS/MBCS SPACE code
1146              
1147             We implemented default space code below without arguing with others.
1148              
1149             (We would appreciate any statistical information about its using.)
1150              
1151             You can change the space code using option "SPACE" if you want.
1152              
1153             ---------------------------------------------------------------------------
1154             $OUTPUT_encoding
1155             mnemonic default code %option
1156             ---------------------------------------------------------------------------
1157             'cp932x' "\x81\x40"
1158             'cp932' "\x81\x40"
1159             'cp932ibm' "\x81\x40"
1160             'cp932nec' "\x81\x40"
1161             'sjis2004' "\x81\x40" 'SPACE' => "\x20\x20" for CP/M-86 compatible
1162             'cp00930' "\x40\x40"
1163             'keis78' "\xA1\xA1"
1164             'keis83' "\xA1\xA1"
1165             'keis90' "\xA1\xA1"
1166             'jef' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1167             'jef9p' "\xA1\xA1" 'SPACE' => "\x40\x40" for 99FR-0012-2 and 99FR-0012-3 compatible
1168             'jipsj' "\x21\x21"
1169             'jipse' "\x4F\x4F"
1170             'letsj' "\x20\x20" 'SPACE' => "\xA1\xA1" for EUC-JP like space
1171             'utf8' "\xE3\x80\x80"
1172             'utf8.1' "\xE3\x80\x80"
1173             'utf8jp' "\xF3\xB0\x84\x80"
1174             ---------------------------------------------------------------------------
1175              
1176             =head1 OUTPUT DBCS/MBCS GETA code
1177              
1178             If a character isn't included in $OUTPUT_encoding set, GETA code will be used instead of converted code.
1179              
1180             The default GETA code is as follows.
1181             You can change GETA code using option "GETA" if you want.
1182              
1183             GETA doesn't mean GETA, but means B.
1184              
1185             GETA is Japanese wooden shoes that made for walk on paddy field.
1186             One GETA has two teeth, and they make B on the ground by bite the earth twice.
1187             Thus, GETA code is double byte code, or some time multibyte code.
1188              
1189             ---------------------------------------------------------------------------
1190             $OUTPUT_encoding
1191             mnemonic default code %option sample
1192             ---------------------------------------------------------------------------
1193             'cp932x' "\x81\xAC" 'GETA' => "\x81\xA1"
1194             'cp932' "\x81\xAC" 'GETA' => "\x81\x9C"
1195             'cp932ibm' "\x81\xAC" 'GETA' => "\x81\x9C"
1196             'cp932nec' "\x81\xAC" 'GETA' => "\x81\x9C"
1197             'sjis2004' "\x81\xAC" 'GETA' => "\x81\xFC"
1198             'cp00930' "\x44\x7D"
1199             'keis78' "\xA2\xAE"
1200             'keis83' "\xA2\xAE"
1201             'keis90' "\xA2\xAE"
1202             'jef' "\xA2\xAE"
1203             'jef9p' "\xA2\xAE"
1204             'jipsj' "\x22\x2E"
1205             'jipse' "\x7F\x4B"
1206             'letsj' "\xA2\xAE"
1207             'utf8' "\xE3\x80\x93"
1208             'utf8.1' "\xE3\x80\x93"
1209             'utf8jp' "\xF3\xB0\x85\xAB"
1210             ---------------------------------------------------------------------------
1211              
1212             =head1 RAISON D'ETRE(Reason For Existence)
1213              
1214             This software has been developed for use promotion of JIS X 0213.
1215              
1216             JIS X 0213 contains almost all of characters used in everyday life in Japan.
1217             In addition, JIS X 0213 was designed with consideration for use in Shift_JIS environment.
1218             However, because it did not consider CP932 and GAIJI, Shift_JIS-2004 is not so popular.
1219              
1220             B<"JIS X 0213 bridge" needs last one meter more to bridge us.>
1221              
1222             To solve the problem, Jacode4e proposes CP932X [shi:pi:kju:san'nikai].
1223              
1224             CP932X implements JIS X 0213 over on CP932.
1225              
1226             We can continue to use CP932 data, application programs, databases, and networks using CP932X.
1227              
1228             If you need round-trip conversion, you had better use Jacode4e::RoundTrip module.
1229              
1230             =head1 WHAT IS "CP932X"?
1231              
1232             =over 4
1233              
1234             =item *
1235              
1236             Mnemonic is "cp932x"
1237              
1238             =item *
1239              
1240             CP932X is almost CP932
1241              
1242             =item *
1243              
1244             Pronounce [si: pi: nain thri: tu: kai] in English
1245              
1246             =item *
1247              
1248             Pronounce [shi: pi: kju: san' ni kai] in Japanese
1249              
1250             =item *
1251              
1252             We have reserved [si: pi: nain thri: tu: iks] for Microsoft Corporation-san
1253              
1254             =item *
1255              
1256             CP932 upper compatible
1257              
1258             =item *
1259              
1260             Supports JIS X 0213 character set
1261              
1262             =item *
1263              
1264             Used ghost character "\x9C\x5A" as single shift code
1265              
1266             =item *
1267              
1268             Used "\x9C\x5A\x9C\x5A" for single "\x9C\x5A"
1269              
1270             =item *
1271              
1272             You can use private use characters you made
1273              
1274             =item *
1275              
1276             You can use your operating system, network, and database
1277              
1278             =item *
1279              
1280             In almost all cases, application programs can be used as it is
1281              
1282             =back
1283              
1284             =head1 WHAT IS "UTF-8-SPUA-JP"?
1285              
1286             =over 4
1287              
1288             =item *
1289              
1290             Mnemonic is "utf8jp"
1291              
1292             =item *
1293              
1294             UTF-8-SPUA-JP is UTF-8
1295              
1296             =item *
1297              
1298             Internal character encoding of Jacode4e and Jacode4e::RoundTrip, universally
1299              
1300             =item *
1301              
1302             Implements JIS X 0213 character set on to Unicode Supplementary Private Use Area-A
1303              
1304             =item *
1305              
1306             Code point ordered by JIS level, plane, row, cell
1307              
1308             =item *
1309              
1310             Uniformly length encoding
1311              
1312             =item *
1313              
1314             No grapheme clustering, one character by uniquely code point
1315              
1316             =back
1317              
1318             =head1 CP932 vs. CP932IBM
1319              
1320             B
1321              
1322             CP932IBM is useful when you transfer data to enterprise system.
1323              
1324             The following is difference between CP932 and CP932IBM.
1325              
1326             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1327             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1328             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1329             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1330             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1331             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1332             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1333             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1334             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1335             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1336             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1337             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1338             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1339             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1340             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1341             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1342             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1343             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1344             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1345             8754 8754 FA4A 8754 8754 41F1 74B1 74B1 74B1 77DE 2D35 60F5 -- 2160 E285A0 E285A0 F3B095BC
1346             8755 8755 FA4B 8755 8755 41F2 74B2 74B2 74B2 77DF 2D36 60F6 -- 2161 E285A1 E285A1 F3B095BD
1347             8756 8756 FA4C 8756 8756 41F3 74B3 74B3 74B3 77E0 2D37 60F7 -- 2162 E285A2 E285A2 F3B095BE
1348             8757 8757 FA4D 8757 8757 41F4 74B4 74B4 74B4 77E1 2D38 60F8 -- 2163 E285A3 E285A3 F3B095BF
1349             8758 8758 FA4E 8758 8758 41F5 74B5 74B5 74B5 77E2 2D39 60F9 -- 2164 E285A4 E285A4 F3B09680
1350             8759 8759 FA4F 8759 8759 41F6 74B6 74B6 74B6 77E3 2D3A 607A -- 2165 E285A5 E285A5 F3B09681
1351             875A 875A FA50 875A 875A 41F7 74B7 74B7 74B7 77E4 2D3B 605E -- 2166 E285A6 E285A6 F3B09682
1352             875B 875B FA51 875B 875B 41F8 74B8 74B8 74B8 77E5 2D3C 604C -- 2167 E285A7 E285A7 F3B09683
1353             875C 875C FA52 875C 875C 41F9 74B9 74B9 74B9 77E6 2D3D 607E -- 2168 E285A8 E285A8 F3B09684
1354             875D 875D FA53 875D 875D 41FA 74BA 74BA 74BA 77E7 2D3E 606E -- 2169 E285A9 E285A9 F3B09685
1355             8782 8782 FA59 8782 8782 446E 72BE 72BE 72BE 76FA 2D62 6059 A271 2116 E28496 E28496 F3B096A9
1356             8784 8784 FA5A 8784 8784 446F 72B8 72B8 72B8 76F6 2D64 6063 -- 2121 E284A1 E284A1 F3B096AB
1357             878A 878A FA58 878A 878A 446D 73D0 73D0 73D0 78D5 2D6A 6069 -- 3231 E388B1 E388B1 F3B096B1
1358              
1359             =head1 CP932 vs. CP932NEC
1360              
1361             B
1362              
1363             CP932NEC is useful when you convert data to EUC-JP encoding.
1364              
1365             The following is difference between CP932 and CP932NEC.
1366              
1367             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1368             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1369             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1370             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1371             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1372             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1373             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1374             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1375             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1376             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1377             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1378             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1379             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1380             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1381             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1382             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1383             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1384             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1385             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1386             FA40 FA40 FA40 EEEF 86B3 41B1 74C1 74C1 74C1 77EB A2BD 428E -- 2170 E285B0 E285B0 F3B2AB9C
1387             FA41 FA41 FA41 EEF0 86B4 41B2 74C2 74C2 74C2 77EC A2BE 428F -- 2171 E285B1 E285B1 F3B2AB9D
1388             FA42 FA42 FA42 EEF1 86B5 41B3 74C3 74C3 74C3 77ED A2BF 4290 -- 2172 E285B2 E285B2 F3B2AB9E
1389             FA43 FA43 FA43 EEF2 86B6 41B4 74C4 74C4 74C4 77EE A2C0 4291 -- 2173 E285B3 E285B3 F3B2AB9F
1390             FA44 FA44 FA44 EEF3 86B7 41B5 74C5 74C5 74C5 77EF A2C1 4292 -- 2174 E285B4 E285B4 F3B2ABA0
1391             FA45 FA45 FA45 EEF4 86B8 41B6 74C6 74C6 74C6 77F0 A2C2 4293 -- 2175 E285B5 E285B5 F3B2ABA1
1392             FA46 FA46 FA46 EEF5 86B9 41B7 74C7 74C7 74C7 77F1 A2C3 4294 -- 2176 E285B6 E285B6 F3B2ABA2
1393             FA47 FA47 FA47 EEF6 86BA 41B8 74C8 74C8 74C8 77F2 A2C4 4295 -- 2177 E285B7 E285B7 F3B2ABA3
1394             FA48 FA48 FA48 EEF7 86BB 41B9 74C9 74C9 74C9 77F3 A2C5 4296 -- 2178 E285B8 E285B8 F3B2ABA4
1395             FA49 FA49 FA49 EEF8 86BC 41BA 74CA 74CA 74CA 77F4 A2C6 4297 -- 2179 E285B9 E285B9 F3B2ABA5
1396             FA55 FA55 FA55 EEFA -- E9F5 -- -- -- 76A1 A5FB 45FB -- FFE4 EFBFA4 EFBFA4 F3B2ABB1
1397             FA56 FA56 FA56 EEFB 81AD 427D -- -- -- 76A2 A3F9 43EF -- FF07 EFBC87 EFBC87 F3B2ABB2
1398             FA57 FA57 FA57 EEFC 81AE 427F -- -- -- 76A3 A3FA 43FA -- FF02 EFBC82 EFBC82 F3B2ABB3
1399             FA5C FA5C FA5C ED40 EDB5 51BF 67FE 67FE 67FE 5FDC C9D8 9AAE D463 7E8A E7BA8A E7BA8A F3B2ABB8
1400             FA5D FA5D FA5D ED41 EE8E 51DA 69E8 69E8 69E8 64B5 CEA9 A349 DC5F 891C E8A49C E8A49C F3B2ABB9
1401             FA5E FA5E FA5E ED42 EF58 51F7 6CC7 6CC7 6CC7 6AD9 D2B9 A789 E469 9348 E98D88 E98D88 F3B2ABBA
1402             FA5F FA5F FA5F ED43 EF4D 524B 6CA3 6CA3 6CA3 69FE D1ED A6CF E378 9288 E98A88 E98A88 F3B2ABBB
1403             FA60 FA60 FA60 ED44 F8D3 527B 69AE 69AE 69AE 62C4 CCCA 9F9D D921 84DC E8939C E8939C F3B2ABBC
1404             FA61 FA61 FA61 ED45 87B7 5294 59E4 59E4 59E4 42C7 B2F6 82EC B13B 4FC9 E4BF89 E4BF89 F3B2ABBD
1405             FA62 FA62 FA62 ED46 F580 529E 63FE 63FE 63FE 70E1 C2FE 93FE -- 70BB E782BB E782BB F3B2ABBE
1406             FA63 FA63 FA63 ED47 EB54 52EB 60F8 60F8 60F8 51A3 BDBF 8E90 C22D 6631 E698B1 E698B1 F3B2ABBF
1407             FA64 FA64 FA64 ED48 EB89 5386 61DC 61DC 61DC 70CD BFB7 9087 C37C 68C8 E6A388 E6A388 F3B2AC80
1408             FA65 FA65 FA65 ED49 FB42 5394 6CBB 6CBB 6CBB 6AC9 D2B6 A786 E450 92F9 E98BB9 E98BB9 F3B2AC81
1409             FA66 FA66 FA66 ED4A EB56 5397 60D3 60D3 60D3 51FC BDD0 8EA5 C23F 66FB E69BBB E69BBB F3B2AC82
1410             FA67 FA67 FA67 ED4B EAB8 53C7 5ED8 5ED8 5ED8 4CF6 BAC7 8A98 BC74 5F45 E5BD85 E5BD85 F3B2AC83
1411             FA68 FA68 FA68 ED4C 87A2 5644 59AC 59AC 59AC 41AC B2AB 8252 B029 4E28 E4B8A8 E4B8A8 F3B2AC84
1412             FA69 FA69 FA69 ED4D 87A6 565D 59C1 59C1 59C1 41E8 B2C2 8293 B048 4EE1 E4BBA1 E4BBA1 F3B2AC85
1413             FA6A FA6A FA6A ED4E -- 5662 59C8 59C8 59C8 43CF B2D3 82A8 -- 4EFC E4BBBC E4BBBC F3B2AC86
1414             FA6B FA6B FA6B ED4F F05E 5665 59C7 59C7 59C7 41EF B2CD 82A2 B052 4F00 E4BC80 E4BC80 F3B2AC87
1415             FA6C FA6C FA6C ED50 87A9 5666 9FA1 9FA1 9FA1 41F0 B2CE 82A3 B054 4F03 E4BC83 E4BC83 F3B2AC88
1416             FA6D FA6D FA6D ED51 -- 566A 59CE 59CE 59CE 41FB B2DB 82BB B063 4F39 E4BCB9 E4BCB9 F3B2AC89
1417             FA6E FA6E FA6E ED52 87AE 566E 59CB 59CB 59CB 42A8 B2D6 82AC B06E 4F56 E4BD96 E4BD96 F3B2AC8A
1418             FA6F FA6F FA6F ED53 F06C 5670 59DB 59DB 59DB 42B5 B2EA 82CC B127 4F92 E4BE92 E4BE92 F3B2AC8B
1419             FA70 FA70 FA70 ED54 87B3 5671 59E0 59E0 59E0 42B3 B2E7 82B9 B123 4F8A E4BE8A E4BE8A F3B2AC8C
1420             FA71 FA71 FA71 ED55 F06D 5674 59DA 59DA 59DA 42B9 BADA 8ABA B12C 4F9A E4BE9A E4BE9A F3B2AC8D
1421             FA72 FA72 FA72 ED56 87B4 567B 59D9 59D9 59D9 42B7 B2E1 82B3 B129 4F94 E4BE94 E4BE94 F3B2AC8E
1422             FA73 FA73 FA73 ED57 -- 5686 59E6 59E6 59E6 42CA B2F5 82EB B13E 4FCD E4BF8D E4BF8D F3B2AC8F
1423             FA74 FA74 FA74 ED58 87BF 568A 5AA1 5AA1 5AA1 42E7 B3B2 8382 B15F 5040 E58180 E58180 F3B2AC90
1424             FA75 FA75 FA75 ED59 F07C 5691 59F1 59F1 59F1 42DF B3A1 8341 B158 5022 E580A2 E580A2 F3B2AC91
1425             FA76 FA76 FA76 ED5A -- 5694 59FA 59FA 59FA 43D0 B3B3 8383 B148 4FFF E4BFBF E4BFBF F3B2AC92
1426             FA77 FA77 FA77 ED5B F07B 5698 59F3 59F3 59F3 42DE B3A6 8346 B157 501E E5809E E5809E F3B2AC93
1427             FA78 FA78 FA78 ED5C F080 56A2 5AA7 5AA7 5AA7 42E9 B3C0 8391 B163 5046 E58186 E58186 F3B2AC94
1428             FA79 FA79 FA79 ED5D F087 56A3 5AAC 5AAC 5AAC 42F5 B3C3 8394 B174 5070 E581B0 E581B0 F3B2AC95
1429             FA7A FA7A FA7A ED5E F07E 56A4 5AA6 5AA6 5AA6 42E8 B3C4 8395 B161 5042 E58182 E58182 F3B2AC96
1430             FA7B FA7B FA7B ED5F 87C2 56A8 5AB0 5AB0 5AB0 42FC B3C6 8397 B223 5094 E58294 E58294 F3B2AC97
1431             FA7C FA7C FA7C ED60 -- 56B2 5ABE 5ABE 5ABE 43B9 B3D2 83A7 -- 50F4 E583B4 E583B4 F3B2AC98
1432             FA7D FA7D FA7D ED61 -- 56B5 5AC1 5AC1 5AC1 43B2 B3D5 83AA B23B 50D8 E58398 E58398 F3B2AC99
1433             FA7E FA7E FA7E ED62 87CD 56C9 5ACB 5ACB 5ACB 43D3 B3E8 83CA B266 514A E5858A E5858A F3B2AC9A
1434             FA80 FA80 FA80 ED63 -- 56CE 5AD3 5AD3 5AD3 43D9 B3F0 83DC B26D 5164 E585A4 E585A4 F3B2AC9B
1435             FA81 FA81 FA81 ED64 87D2 56DC 5AE1 5AE1 5AE1 43F2 B3F7 83ED B275 519D E5869D E5869D F3B2AC9C
1436             FA82 FA82 FA82 ED65 -- 56E8 5AE4 5AE4 5AE4 43F7 B4A2 8442 B27C 51BE E586BE E586BE F3B2AC9D
1437             FA83 FA83 FA83 ED66 -- 56EF 6DC3 6DC3 6DC3 44AC D4A8 A948 -- 51EC E587AC E587AC F3B2AC9E
1438             FA84 FA84 FA84 ED67 87DB 56F7 9FA3 9FA3 9FA3 44B4 B4B4 8484 B335 5215 E58895 E58895 F3B2AC9F
1439             FA85 FA85 FA85 ED68 -- 574F 5AF0 5AF0 5AF0 44F7 B4C1 8492 B358 529C E58A9C E58A9C F3B2ACA0
1440             FA86 FA86 FA86 ED69 F162 5750 5AF1 5AF1 5AF1 44D2 B4C3 8494 B35B 52A6 E58AA6 E58AA6 F3B2ACA1
1441             FA87 FA87 FA87 ED6A -- 5756 5AF7 5AF7 5AF7 44FA B4D0 84A5 B365 52C0 E58B80 E58B80 F3B2ACA2
1442             FA88 FA88 FA88 ED6B 87E5 5758 5BA1 5BA1 5BA1 44ED B4D8 84AE B36E 52DB E58B9B E58B9B F3B2ACA3
1443             FA89 FA89 FA89 ED6C 87E9 5761 5BA9 5BA9 5BA9 45A3 B4E8 84CA B37B 5300 E58C80 E58C80 F3B2ACA4
1444             FA8A FA8A FA8A ED6D 87EA 5763 5BAB 5BAB 5BAB 45A8 B4EC 84CE -- 5307 E58C87 E58C87 F3B2ACA5
1445             FA8B FA8B FA8B ED6E F16D 576B 5BAF 5BAF 5BAF 45B3 B4EF 84DB -- 5324 E58CA4 E58CA4 F3B2ACA6
1446             FA8C FA8C FA8C ED6F -- 577C 5BBC 5BBC 5BBC 45D2 B5A7 8547 B440 5372 E58DB2 E58DB2 F3B2ACA7
1447             FA8D FA8D FA8D ED70 87F0 5780 5BC4 5BC4 5BC4 45DB B5AD 8554 B447 5393 E58E93 E58E93 F3B2ACA8
1448             FA8E FA8E FA8E ED71 87F2 5787 5BC9 5BC9 5BC9 45E2 B5B1 8581 B450 53B2 E58EB2 E58EB2 F3B2ACA9
1449             FA8F FA8F FA8F ED72 -- 578B 5BCE 5BCE 5BCE 45F3 B5BC 858D B45E 53DD E58F9D E58F9D F3B2ACAA
1450             FA90 FA90 FA90 ED73 -- 578E 5BD3 5BD3 5BD3 45F2 B5BE 858F -- FA0E EFA88E EFA88E F3B2ACAB
1451             FA91 FA91 FA91 ED74 87F6 57A9 5BDB 5BDB 5BDB 46C4 B5D3 85A8 B52A 549C E5929C E5929C F3B2ACAC
1452             FA92 FA92 FA92 ED75 F18C 57AE 5BDA 5BDA 5BDA 46C1 B5CF 85A4 -- 548A E5928A E5928A F3B2ACAD
1453             FA93 FA93 FA93 ED76 8840 57BD 5BE1 5BE1 5BE1 46C9 B5DC 85BC B52F 54A9 E592A9 E592A9 F3B2ACAE
1454             FA94 FA94 FA94 ED77 8842 57C0 5BE3 5BE3 5BE3 45FA B5E0 85B2 B544 54FF E593BF E593BF F3B2ACAF
1455             FA95 FA95 FA95 ED78 8849 57DE 5BED 5BED 5BED 45F6 B5EE 85DA B568 5586 E59686 E59686 F3B2ACB0
1456             FA96 FA96 FA96 ED79 -- 5860 5CB2 5CB2 5CB2 48C9 B6D6 86AC -- 5759 E59D99 E59D99 F3B2ACB1
1457             FA97 FA97 FA97 ED7A -- 5863 5CB6 5CB6 5CB6 48CA B6DE 86BE B742 5765 E59DA5 E59DA5 F3B2ACB2
1458             FA98 FA98 FA98 ED7B F1EA 586C 5CB9 5CB9 5CB9 48CB B6E3 86B5 B764 57AC E59EAC E59EAC F3B2ACB3
1459             FA99 FA99 FA99 ED7C 886E 5870 5CBD 5CBD 5CBD 47F7 B6E5 86B7 B768 57C8 E59F88 E59F88 F3B2ACB4
1460             FA9A FA9A FA9A ED7D 886D 5873 9FA6 9FA6 9FA6 47F6 B6E6 86B8 B767 57C7 E59F87 E59F87 F3B2ACB5
1461             FA9B FA9B FA9B ED7E 886A 5877 5CBB 5CBB 5CBB 48CC B6E7 86B9 -- FA0F EFA88F EFA88F F3B2ACB6
1462             FA9C FA9C FA9C ED80 8876 5882 C4CD 5CC7 5CC7 C4CD 444D C4D4 -- FA10 EFA890 EFA890 F3B2ACB7
1463             FA9D FA9D FA9D ED81 887C 588A 5CD1 5CD1 5CD1 48BB B7A8 8748 -- 589E E5A29E E5A29E F3B2ACB8
1464             FA9E FA9E FA9E ED82 -- 588C 5CD3 5CD3 5CD3 48CD B7AE 8755 B84E 58B2 E5A2B2 E5A2B2 F3B2ACB9
1465             FA9F FA9F FA9F ED83 F259 58A1 5BCD 5BCD 5BCD 48D0 B7B8 8788 B861 590B E5A48B E5A48B F3B2ACBA
1466             FAA0 FAA0 FAA0 ED84 -- 58AD 5CE4 5CE4 5CE4 48E3 B7CB 879E B875 5953 E5A593 E5A593 F3B2ACBB
1467             FAA1 FAA1 FAA1 ED85 F264 58B0 5CE6 5CE6 5CE6 48E4 B7CF 87A4 B877 595B E5A59B E5A59B F3B2ACBC
1468             FAA2 FAA2 FAA2 ED86 8889 58B1 5CE8 5CE8 5CE8 48E5 B7CE 87A3 B878 595D E5A59D E5A59D F3B2ACBD
1469             FAA3 FAA3 FAA3 ED87 -- 58B2 5CE9 5CE9 5CE9 48EB B7D3 87A8 B87C 5963 E5A5A3 E5A5A3 F3B2ACBE
1470             FAA4 FAA4 FAA4 ED88 888D 58BE 5CF4 5CF4 5CF4 49A3 B7DB 87BB B92F 59A4 E5A6A4 E5A6A4 F3B2ACBF
1471             FAA5 FAA5 FAA5 ED89 -- 58C0 5CF7 5CF7 5CF7 49F0 B7E4 87B6 B937 59BA E5A6BA E5A6BA F3B2AD80
1472             FAA6 FAA6 FAA6 ED8A 9875 58EC 5DB3 5DB3 5DB3 49F2 B8B4 8884 BA3E 5B56 E5AD96 E5AD96 F3B2AD81
1473             FAA7 FAA7 FAA7 ED8B F0A2 58FC 5DC2 5DC2 5DC2 4AC9 B8CA 889D BA5B 5BC0 E5AF80 E5AF80 F3B2AD82
1474             FAA8 FAA8 FAA8 ED8C ECC7 58FE 5DC5 5DC5 5DC5 4ABD B8CC 889F CD2A 752F E794AF E794AF F3B2AD83
1475             FAA9 FAA9 FAA9 ED8D 9878 5942 5DC6 5DC6 5DC6 4AC0 B8CD 88A2 BA61 5BD8 E5AF98 E5AF98 F3B2AD84
1476             FAAA FAAA FAAA ED8E 9879 5944 5DC7 5DC7 5DC7 4AC6 B8D4 88A9 -- 5BEC E5AFAC E5AFAC F3B2AD85
1477             FAAB FAAB FAAB ED8F 987B 5951 5DD2 5DD2 5DD2 4AD4 B8E3 88B5 BA6B 5C1E E5B09E E5B09E F3B2AD86
1478             FAAC FAAC FAAC ED90 F0C1 5967 5DDE 5DDE 5DDE 4AF1 B8FB 88FB BB33 5CA6 E5B2A6 E5B2A6 F3B2AD87
1479             FAAD FAAD FAAD ED91 9889 5968 5DDD 5DDD 5DDD 4AF3 B8F9 88EF BB38 5CBA E5B2BA E5B2BA F3B2AD88
1480             FAAE FAAE FAAE ED92 -- 5970 5DE6 5DE6 5DE6 4BE4 B9A9 8949 -- 5CF5 E5B3B5 E5B3B5 F3B2AD89
1481             FAAF FAAF FAAF ED93 9891 5978 5DE8 5DE8 5DE8 4AFB B9B1 8981 BB4A 5D27 E5B4A7 E5B4A7 F3B2AD8A
1482             FAB0 FAB0 FAB0 ED94 9895 597F 5DF0 5DF0 5DF0 4BA3 C6B7 9787 -- 5D53 E5B593 E5B593 F3B2AD8B
1483             FAB1 FAB1 FAB1 ED95 9892 5980 5DEC 5DEC 5DEC 4BD0 B9BA 898A -- FA11 EFA891 EFA891 F3B2AD8C
1484             FAB2 FAB2 FAB2 ED96 F0D3 5984 5DEF 5DEF 5DEF 4BA2 B9BD 898E BB50 5D42 E5B582 E5B582 F3B2AD8D
1485             FAB3 FAB3 FAB3 ED97 9897 5987 9FA9 9FA9 9FA9 4BD3 B9C0 8991 BB5E 5D6D E5B5AD E5B5AD F3B2AD8E
1486             FAB4 FAB4 FAB4 ED98 989C 5993 5EA3 5EA3 5EA3 4BDF B9D3 89A8 BB74 5DB8 E5B6B8 E5B6B8 F3B2AD8F
1487             FAB5 FAB5 FAB5 ED99 F0E5 5995 5EA5 5EA5 5EA5 4BE0 B9D5 89AA BB75 5DB9 E5B6B9 E5B6B9 F3B2AD90
1488             FAB6 FAB6 FAB6 ED9A -- 5997 5EA7 5EA7 5EA7 4BE5 B9DA 89BA BB79 5DD0 E5B790 E5B790 F3B2AD91
1489             FAB7 FAB7 FAB7 ED9B -- 59C7 5ED2 5ED2 5ED2 4CEB BABF 8A90 BC64 5F21 E5BCA1 E5BCA1 F3B2AD92
1490             FAB8 FAB8 FAB8 ED9C EAB4 59CB 5ED3 5ED3 5ED3 4CEE BAC1 8A92 BC6D 5F34 E5BCB4 E5BCB4 F3B2AD93
1491             FAB9 FAB9 FAB9 ED9D EABC 59D8 5FCA 5FCA 5FCA 4DA2 BAD1 8AA6 BC7E 5F67 E5BDA7 E5BDA7 F3B2AD94
1492             FABA FABA FABA ED9E EAC3 59E8 5EE6 5EE6 5EE6 4DC0 BAEC 8ACE -- 5FB7 E5BEB7 E5BEB7 F3B2AD95
1493             FABB FABB FABB ED9F EAC5 59F1 5EEE 5EEE 5EEE 4DC7 BAFE 8AFE BD42 5FDE E5BF9E E5BF9E F3B2AD96
1494             FABC FABC FABC EDA0 -- 5A44 5EF8 5EF8 5EF8 4DCC BBA9 8C49 BD67 605D E6819D E6819D F3B2AD97
1495             FABD FABD FABD EDA1 -- 5A51 5EF9 5EF9 5EF9 4EA8 BBB1 8C81 -- 6085 E68285 E68285 F3B2AD98
1496             FABE FABE FABE EDA2 F2CB 5A57 5EF6 5EF6 5EF6 4DD0 B5E5 85B7 BD70 608A E6828A E6828A F3B2AD99
1497             FABF FABF FABF EDA3 -- 5A5F 5FA5 5FA5 5FA5 4EC1 BBC4 8C95 BE30 60DE E6839E E6839E F3B2AD9A
1498             FAC0 FAC0 FAC0 EDA4 EAD3 5A65 5FA3 5FA3 5FA3 4EBD BBBD 8C8E BE2C 60D5 E68395 E68395 F3B2AD9B
1499             FAC1 FAC1 FAC1 EDA5 -- 5A67 5FAA 5FAA 5FAA 4EED BBC9 8C9A -- 6120 E684A0 E684A0 F3B2AD9C
1500             FAC2 FAC2 FAC2 EDA6 F2D6 5A68 5FAD 5FAD 5FAD 4EC2 BBCE 8CA3 BE33 60F2 E683B2 E683B2 F3B2AD9D
1501             FAC3 FAC3 FAC3 EDA7 -- 5A76 5FAF 5FAF 5FAF 4EEE BBD4 8CA9 BE3D 6111 E68491 E68491 F3B2AD9E
1502             FAC4 FAC4 FAC4 EDA8 EAD9 5A79 5FB1 5FB1 5FB1 4ED0 BBD6 8CAC BE4D 6137 E684B7 E684B7 F3B2AD9F
1503             FAC5 FAC5 FAC5 EDA9 EAD8 5A7E 5FB3 5FB3 5FB3 4ECE BBD8 8CAE BE49 6130 E684B0 E684B0 F3B2ADA0
1504             FAC6 FAC6 FAC6 EDAA F2E7 5A94 5FBE 5FBE 5FBE 4EDB B6A8 8648 BE64 6198 E68698 E68698 F3B2ADA1
1505             FAC7 FAC7 FAC7 EDAB -- 5AB5 5BD7 5BD7 5BD7 4EF7 BBF9 8CEF BF28 6213 E68893 E68893 F3B2ADA2
1506             FAC8 FAC8 FAC8 EDAC F341 5ADA 5FD6 5FD6 5FD6 4FB5 BCB1 8D81 BF49 62A6 E68AA6 E68AA6 F3B2ADA3
1507             FAC9 FAC9 FAC9 EDAD EAF2 5AFB 5FE2 5FE2 5FE2 4FED BCCC 8D9F C044 63F5 E68FB5 E68FB5 F3B2ADA4
1508             FACA FACA FACA EDAE EAF8 5B50 5FEB 5FEB 5FEB 4FFA BCD9 8DAF C064 6460 E691A0 E691A0 F3B2ADA5
1509             FACB FACB FACB EDAF F36F 5B53 5FEE 5FEE 5FEE 50A2 BCDB 8DBB C074 649D E6929D E6929D F3B2ADA6
1510             FACC FACC FACC EDB0 EAFA 5B54 5FF2 5FF2 5FF2 4FA7 BCDC 8DBC C126 64CE E6938E E6938E F3B2ADA7
1511             FACD FACD FACD EDB1 -- 5B7E 5FF8 5FF8 5FF8 50C9 BCF0 8DDC -- 654E E6958E E6958E F3B2ADA8
1512             FACE FACE FACE EDB2 EB4B 5B97 60B3 60B3 60B3 51BD BDBD 8E8E C175 6600 E69880 E69880 F3B2ADA9
1513             FACF FACF FACF EDB3 EB4D 5B98 60B1 60B1 60B1 51C4 BDB5 8E85 C17C 6615 E69895 E69895 F3B2ADAA
1514             FAD0 FAD0 FAD0 EDB4 -- 4F9F B9B7 60B6 60B6 B9B7 3937 F9F7 -- 663B E698BB E698BB F3B2ADAB
1515             FAD1 FAD1 FAD1 EDB5 EB4C 5B9D 60AF 60AF 60AF 51C0 BDB7 8E87 C178 6609 E69889 E69889 F3B2ADAC
1516             FAD2 FAD2 FAD2 EDB6 -- 5BA0 60BE 60BE 60BE 51A1 BDC2 8E93 C22B 662E E698AE E698AE F3B2ADAD
1517             FAD3 FAD3 FAD3 EDB7 EB4E 5BA1 60C4 60C4 60C4 51C7 BDC4 8E95 C221 661E E6989E E6989E F3B2ADAE
1518             FAD4 FAD4 FAD4 EDB8 EB51 5BA4 60B9 60B9 60B9 51CA BDC7 8E98 C225 6624 E698A4 E698A4 F3B2ADAF
1519             FAD5 FAD5 FAD5 EDB9 EB5D 5BA7 60D1 60D1 60D1 51D9 BDD6 8EAC -- 6665 E699A5 E699A5 F3B2ADB0
1520             FAD6 FAD6 FAD6 EDBA F39E 5BA8 60D6 60D6 60D6 52A1 BDE0 8EB2 C238 6657 E69997 E69997 F3B2ADB1
1521             FAD7 FAD7 FAD7 EDBB EB5A 5BAB 60D7 60D7 60D7 51D4 BDDE 8EBE C23A 6659 E69999 E69999 F3B2ADB2
1522             FAD8 FAD8 FAD8 EDBC -- 5BAE 60DD 60DD 60DD 51DE BDE4 8EB6 -- FA12 EFA892 EFA892 F3B2ADB3
1523             FAD9 FAD9 FAD9 EDBD EB5E 5BAF 60E1 60E1 60E1 51B3 BDE6 8EB8 C244 6673 E699B3 E699B3 F3B2ADB4
1524             FADA FADA FADA EDBE F3AB 5BB4 60E6 60E6 60E6 51E5 BDF7 8EED C252 6699 E69A99 E69A99 F3B2ADB5
1525             FADB FADB FADB EDBF EB63 5BB6 60EA 60EA 60EA 51AB C5D8 96AE C257 66A0 E69AA0 E69AA0 F3B2ADB6
1526             FADC FADC FADC EDC0 EB64 5BB8 60EE 60EE 60EE 51EB BEA5 8F45 C25B 66B2 E69AB2 E69AB2 F3B2ADB7
1527             FADD FADD FADD EDC1 F3B1 5BBB 60EF 60EF 60EF 51F1 BEAC 8F53 C25E 66BF E69ABF E69ABF F3B2ADB8
1528             FADE FADE FADE EDC2 EB6B 5BC7 60C7 60C7 60C7 52A2 BDD1 8EA6 C26D 66FA E69BBA E69BBA F3B2ADB9
1529             FADF FADF FADF EDC3 -- 5BC8 60FC 60FC 60FC 52BC BEBC 8F8D C270 670E E69C8E E69C8E F3B2ADBA
1530             FAE0 FAE0 FAE0 EDC4 EB6D 5BC9 61A7 61A7 61A7 52AD BEBE 8F8F -- F929 EFA4A9 EFA4A9 F3B2ADBB
1531             FAE1 FAE1 FAE1 EDC5 EB6F 5BD8 61B2 61B2 61B2 70CE BEC8 8F99 C321 6766 E69DA6 E69DA6 F3B2ADBC
1532             FAE2 FAE2 FAE2 EDC6 EB77 5BE3 61BB 61BB 61BB 53B2 BED9 8FAF C335 67BB E69EBB E69EBB F3B2ADBD
1533             FAE3 FAE3 FAE3 EDC7 EB7D 5BEC 61BE 61BE 61BE 52EE BEE5 8FB7 C349 6852 E6A192 E6A192 F3B2ADBE
1534             FAE4 FAE4 FAE4 EDC8 EB79 5BF0 9FAC 9FAC 9FAC 53B4 BEE8 8FCA C339 67C0 E69F80 E69F80 F3B2ADBF
1535             FAE5 FAE5 FAE5 EDC9 EB7C 5BF3 61CC 61CC 61CC 53C0 BEE2 8FB4 -- 6801 E6A081 E6A081 F3B2AE80
1536             FAE6 FAE6 FAE6 EDCA F3DD 5BF9 61C6 61C6 61C6 53C7 BEF0 8FDC C358 6844 E6A184 E6A184 F3B2AE81
1537             FAE7 FAE7 FAE7 EDCB F3FB 5C5F 61DF 61DF 61DF 70CF BFBA 908A C37E 68CF E6A38F E6A38F F3B2AE82
1538             FAE8 FAE8 FAE8 EDCC F3F7 5C66 61E0 61E0 61E0 70D0 BFBC 908D -- FA13 EFA893 EFA893 F3B2AE83
1539             FAE9 FAE9 FAE9 EDCD EB98 5C6E 61E9 61E9 61E9 53ED BFC0 9091 C44C 6968 E6A5A8 E6A5A8 F3B2AE84
1540             FAEA FAEA FAEA EDCE EB9A 5C78 61F8 61F8 61F8 70D1 BFD7 90AD -- FA14 EFA894 EFA894 F3B2AE85
1541             FAEB FAEB FAEB EDCF F455 5C79 65F4 65F4 65F4 52F4 C6AA 9751 C459 6998 E6A698 E6A698 F3B2AE86
1542             FAEC FAEC FAEC EDD0 EBA0 5C90 61EF 61EF 61EF 70D2 BFE4 90B6 C46A 69E2 E6A7A2 E6A7A2 F3B2AE87
1543             FAED FAED FAED EDD1 F460 5C9A 62A3 62A3 62A3 70D3 BFE5 90B7 C47D 6A30 E6A8B0 E6A8B0 F3B2AE88
1544             FAEE FAEE FAEE EDD2 EBAE 5C9B 62A9 62A9 62A9 54AD BFE6 90B8 -- 6A6B E6A9AB E6A9AB F3B2AE89
1545             FAEF FAEF FAEF EDD3 F472 5CA6 62AE 62AE 62AE 52E8 BFEC 90CE C527 6A46 E6A986 E6A986 F3B2AE8A
1546             FAF0 FAF0 FAF0 EDD4 EBAF 5CA9 62B2 62B2 62B2 54AF BFF0 90DC C535 6A73 E6A9B3 E6A9B3 F3B2AE8B
1547             FAF1 FAF1 FAF1 EDD5 F479 5CAF 62B3 62B3 62B3 54B0 BFF8 90EE C536 6A7E E6A9BE E6A9BE F3B2AE8C
1548             FAF2 FAF2 FAF2 EDD6 -- 5CB9 62B9 62B9 62B9 54BC C0A8 9148 -- 6AE2 E6ABA2 E6ABA2 F3B2AE8D
1549             FAF3 FAF3 FAF3 EDD7 EBB6 5CBC 62B8 62B8 62B8 54BD C0A5 9145 C555 6AE4 E6ABA4 E6ABA4 F3B2AE8E
1550             FAF4 FAF4 FAF4 EDD8 EBC9 5CEA 62D0 62D0 62D0 54F8 C0CF 91A4 C638 6BD6 E6AF96 E6AF96 F3B2AE8F
1551             FAF5 FAF5 FAF5 EDD9 F4B3 5CF6 62D5 62D5 62D5 55B5 C0D9 91AF C657 6C3F E6B0BF E6B0BF F3B2AE90
1552             FAF6 FAF6 FAF6 EDDA EBD0 5CF9 62D6 62D6 62D6 55BD C0DE 91BE C660 6C5C E6B19C E6B19C F3B2AE91
1553             FAF7 FAF7 FAF7 EDDB EBD5 5CFD 62D8 62D8 62D8 55C3 C0E5 91B7 C66A 6C86 E6B286 E6B286 F3B2AE92
1554             FAF8 FAF8 FAF8 EDDC -- 5CFE 62D9 62D9 62D9 55BF C0EB 91CD C663 6C6F E6B1AF E6B1AF F3B2AE93
1555             FAF9 FAF9 FAF9 EDDD F4C2 5D4E 62E2 62E2 62E2 55D3 C0F4 91EA C721 6CDA E6B39A E6B39A F3B2AE94
1556             FAFA FAFA FAFA EDDE EBDF 5D58 62E4 62E4 62E4 55DE C1A7 9247 C72B 6D04 E6B484 E6B484 F3B2AE95
1557             FAFB FAFB FAFB EDDF EBE9 5D60 62EB 62EB 62EB 56A3 C1B6 9286 C747 6D87 E6B687 E6B687 F3B2AE96
1558             FAFC FAFC FAFC EDE0 -- 5D62 62F2 62F2 62F2 70DE C1C7 9298 C743 6D6F E6B5AF E6B5AF F3B2AE97
1559             FB40 FB40 FB40 EDE1 -- 5D6B 62EE 62EE 62EE 56A7 C1BF 9290 C74B 6D96 E6B696 E6B696 F3B2AE98
1560             FB41 FB41 FB41 EDE2 EBED 5D72 62FC 62FC 62FC 56AD C1CA 929D C74F 6DAC E6B6AC E6B6AC F3B2AE99
1561             FB42 FB42 FB42 EDE3 F4E6 5D74 63A4 63A4 63A4 56B2 C1D9 92AF C759 6DCF E6B78F E6B78F F3B2AE9A
1562             FB43 FB43 FB43 EDE4 -- 5D7A 62FD 62FD 62FD 56B8 C1CD 92A2 -- 6DF8 E6B7B8 E6B7B8 F3B2AE9B
1563             FB44 FB44 FB44 EDE5 -- 5D7F 63A6 63A6 63A6 70DF C1DF 92BF -- 6DF2 E6B7B2 E6B7B2 F3B2AE9C
1564             FB45 FB45 FB45 EDE6 EBF4 5D80 63BD 63BD 63BD 55B1 C1D1 92A6 C766 6DFC E6B7BC E6B7BC F3B2AE9D
1565             FB46 FB46 FB46 EDE7 -- 5D8A 63B7 63B7 63B7 56C2 C1FB 92FB C76E 6E39 E6B8B9 E6B8B9 F3B2AE9E
1566             FB47 FB47 FB47 EDE8 EBF8 5D8E 63B4 63B4 63B4 56CF C1F3 92DF C77C 6E5C E6B99C E6B99C F3B2AE9F
1567             FB48 FB48 FB48 EDE9 F4EE 5D93 63AE 63AE 63AE 56BE C1F4 92EA C76B 6E27 E6B8A7 E6B8A7 F3B2AEA0
1568             FB49 FB49 FB49 EDEA F4F1 5D95 63B8 63B8 63B8 56C3 C1F0 92DC C770 6E3C E6B8BC E6B8BC F3B2AEA1
1569             FB4A FB4A FB4A EDEB F543 5DA6 9FB6 9FB6 9FB6 56DF C2A8 9348 C831 6EBF E6BABF E6BABF F3B2AEA2
1570             FB4B FB4B FB4B EDEC EC4E 5DC1 63D8 63D8 63D8 56FE C2CE 93A3 C865 6F88 E6BE88 E6BE88 F3B2AEA3
1571             FB4C FB4C FB4C EDED F560 5DCA 63DF 63DF 63DF 57AE C2DF 93BF C878 6FB5 E6BEB5 E6BEB5 F3B2AEA4
1572             FB4D FB4D FB4D EDEE EC5A 5DD5 63E4 63E4 63E4 57B8 C2E4 93B6 C926 6FF5 E6BFB5 E6BFB5 F3B2AEA5
1573             FB4E FB4E FB4E EDEF EC5B 5DD7 63EB 63EB 63EB 57B9 C2EF 93DB C92B 7005 E78085 E78085 F3B2AEA6
1574             FB4F FB4F FB4F EDF0 F569 5DD8 63E8 63E8 63E8 57BA C2EE 93DA C92D 7007 E78087 E78087 F3B2AEA7
1575             FB50 FB50 FB50 EDF1 EC5D 5DE3 63F1 63F1 63F1 57BC C2F1 93DD -- 7028 E780A8 E780A8 F3B2AEA8
1576             FB51 FB51 FB51 EDF2 EC64 5DEA 63F8 63F8 63F8 57D1 C2FB 93FB C94A 7085 E78285 E78285 F3B2AEA9
1577             FB52 FB52 FB52 EDF3 EC66 5DED 63FD 63FD 63FD 57DE C2FC 93FC C953 70AB E782AB E782AB F3B2AEAA
1578             FB53 FB53 FB53 EDF4 EC6B 5DF5 9FB9 9FB9 9FB9 58A6 C3A8 9448 C969 710F E7848F E7848F F3B2AEAB
1579             FB54 FB54 FB54 EDF5 F58B 5DF6 64A5 64A5 64A5 58A5 C3A6 9446 C963 7104 E78484 E78484 F3B2AEAC
1580             FB55 FB55 FB55 EDF6 EC76 5DFB 64AD 64AD 64AD 57F1 C3B8 9488 C97C 715C E7859C E7859C F3B2AEAD
1581             FB56 FB56 FB56 EDF7 EC71 5DFC 64AE 64AE 64AE 57EB C3B9 9489 C974 7146 E78586 E78586 F3B2AEAE
1582             FB57 FB57 FB57 EDF8 EC72 5DFD 64AF 64AF 64AF 57EC C3BC 948D C975 7147 E78587 E78587 F3B2AEAF
1583             FB58 FB58 FB58 EDF9 EC79 5E49 64B9 64B9 64B9 70E3 C3CE 94A3 -- FA15 EFA895 EFA895 F3B2AEB0
1584             FB59 FB59 FB59 EDFA EC7D 5E4B 64B4 64B4 64B4 57F6 C3D0 94A5 CA33 71C1 E78781 E78781 F3B2AEB1
1585             FB5A FB5A FB5A EDFB EC81 5E5A 64C2 64C2 64C2 58A9 C3D5 94AA CA3D 71FE E787BE E787BE F3B2AEB2
1586             FB5B FB5B FB5B EDFC F5BB 5E73 64CC 64CC 64CC 58FA C3EB 94CD CA6F 72B1 E78AB1 E78AB1 F3B2AEB3
1587             FB5C FB5C FB5C EE40 EC89 5E75 9FBA 9FBA 9FBA 58D6 C3EE 94DA CA71 72BE E78ABE E78ABE F3B2AEB4
1588             FB5D FB5D FB5D EE41 -- 5E86 64D0 64D0 64D0 58ED C3FB 94FB CB2E 7324 E78CA4 E78CA4 F3B2AEB5
1589             FB5E FB5E FB5E EE42 EC8F 5E8A 64CE 64CE 64CE 58EF C3F8 94EE -- FA16 EFA896 EFA896 F3B2AEB6
1590             FB5F FB5F FB5F EE43 F5D5 5E94 64D2 64D2 64D2 58F6 C4A5 9545 CB4A 7377 E78DB7 E78DB7 F3B2AEB7
1591             FB60 FB60 FB60 EE44 -- 5E99 64DF 64DF 64DF 59BA C4BA 958A CB66 73BD E78EBD E78EBD F3B2AEB8
1592             FB61 FB61 FB61 EE45 EC99 5E9E 64DB 64DB 64DB 59BC C4B8 9588 CB6A 73C9 E78F89 E78F89 F3B2AEB9
1593             FB62 FB62 FB62 EE46 EC9B 5E9F 64E4 64E4 64E4 59C0 C4C1 9592 CB70 73D6 E78F96 E78F96 F3B2AEBA
1594             FB63 FB63 FB63 EE47 EC9D 5EA1 64E5 64E5 64E5 59C3 C4C2 9593 CB74 73E3 E78FA3 E78FA3 F3B2AEBB
1595             FB64 FB64 FB64 EE48 -- 5EA2 64E8 64E8 64E8 5AAC C4C6 9597 CB6E 73D2 E78F92 E78F92 F3B2AEBC
1596             FB65 FB65 FB65 EE49 EC9F 5EA7 64EB 64EB 64EB 59D0 C4C7 9598 CC25 7407 E79087 E79087 F3B2AEBD
1597             FB66 FB66 FB66 EE4A -- 5EA8 64EC 64EC 64EC 59C7 C4CB 959E CB79 73F5 E78FB5 E78FB5 F3B2AEBE
1598             FB67 FB67 FB67 EE4B ECA4 5EAA 64F5 64F5 64F5 59D7 C4D2 95A7 CC2B 7426 E790A6 E790A6 F3B2AEBF
1599             FB68 FB68 FB68 EE4C ECA6 5EAB 64F6 64F6 64F6 59DA C4D3 95A8 CC2E 742A E790AA E790AA F3B2AF80
1600             FB69 FB69 FB69 EE4D -- 5EAD 64FC 64FC 64FC 59D9 C4DB 95BB CC2D 7429 E790A9 E790A9 F3B2AF81
1601             FB6A FB6A FB6A EE4E ECA9 5EAE 64F8 64F8 64F8 59DD C4D7 95AD CC32 742E E790AE E790AE F3B2AF82
1602             FB6B FB6B FB6B EE4F ECB1 5EBC 65A8 65A8 65A8 5AAD C4ED 95CF CC42 7462 E791A2 E791A2 F3B2AF83
1603             FB6C FB6C FB6C EE50 ECB6 5EBD 65AE 65AE 65AE 59F4 C4F3 95DF CC50 7489 E79289 E79289 F3B2AF84
1604             FB6D FB6D FB6D EE51 ECB9 5EC0 65B2 65B2 65B2 59FB C4FB 95FB CC59 749F E7929F E7929F F3B2AF85
1605             FB6E FB6E FB6E EE52 ECC5 5ED1 65B9 65B9 65B9 5AB8 C5AC 9653 -- 7501 E79481 E79481 F3B2AF86
1606             FB6F FB6F FB6F EE53 ECC8 5EE7 65C3 65C3 65C3 5AD0 C5B4 9684 CD3B 756F E795AF E795AF F3B2AF87
1607             FB70 FB70 FB70 EE54 -- 5F69 65CA 65CA 65CA 5AFE C5D3 96A8 -- 7682 E79A82 E79A82 F3B2AF88
1608             FB71 FB71 FB71 EE55 F68F 5F70 65CE 65CE 65CE 5BA4 C5D9 96AF CE3B 769C E79A9C E79A9C F3B2AF89
1609             FB72 FB72 FB72 EE56 ECE1 5F71 65CF 65CF 65CF 5BA5 C5DA 96BA -- 769E E79A9E E79A9E F3B2AF8A
1610             FB73 FB73 FB73 EE57 ECDF 5F72 65D1 65D1 65D1 5AFD C5DB 96BB CE3A 769B E79A9B E79A9B F3B2AF8B
1611             FB74 FB74 FB74 EE58 ECE2 5F73 65D2 65D2 65D2 5BA9 C5DF 96BF CE43 76A6 E79AA6 E79AA6 F3B2AF8C
1612             FB75 FB75 FB75 EE59 -- 5F7A 65D8 65D8 65D8 5BB7 C5E5 96B7 -- FA17 EFA897 EFA897 F3B2AF8D
1613             FB76 FB76 FB76 EE5A ECF0 5F8E 65E6 65E6 65E6 5BCC C5F2 96DE CE72 7746 E79D86 E79D86 F3B2AF8E
1614             FB77 FB77 FB77 EE5B F163 5FAA 65F6 65F6 65F6 44DC B4C7 8498 B35D 52AF E58AAF E58AAF F3B2AF8F
1615             FB78 FB78 FB78 EE5C F6C1 5FAE 65F7 65F7 65F7 5BFC C6B1 9781 CF55 7821 E7A0A1 E7A0A1 F3B2AF90
1616             FB79 FB79 FB79 EE5D ED41 5FB2 65FA 65FA 65FA 5CA7 C6B5 9785 CF62 784E E7A18E E7A18E F3B2AF91
1617             FB7A FB7A FB7A EE5E F6C4 5FB3 66A1 66A1 66A1 5CAE C6BD 978E CF69 7864 E7A1A4 E7A1A4 F3B2AF92
1618             FB7B FB7B FB7B EE5F -- 5FB6 66A5 66A5 66A5 5CB2 C6C4 9795 CF6D 787A E7A1BA E7A1BA F3B2AF93
1619             FB7C FB7C FB7C EE60 F6DC 5FD1 66AE 66AE 66AE 5CCE C6DA 97BA -- 7930 E7A4B0 E7A4B0 F3B2AF94
1620             FB7D FB7D FB7D EE61 -- 5FD2 66B0 66B0 66B0 70E5 C6DD 97BD -- FA18 EFA898 EFA898 F3B2AF95
1621             FB7E FB7E FB7E EE62 ED5B 5FD5 66BB 66BB 66BB 5CDA C6EB 97CD -- FA19 EFA899 EFA899 F3B2AF96
1622             FB80 FB80 FB80 EE63 ED5C 5FD9 66C2 66C2 66C2 5CDC C6F7 97ED -- FA1A EFA89A EFA89A F3B2AF97
1623             FB81 FB81 FB81 EE64 F6E5 5FDC 66D0 66D0 66D0 5CE6 C7A3 9843 D065 7994 E7A694 E7A694 F3B2AF98
1624             FB82 FB82 FB82 EE65 ED60 5FDD 66D3 66D3 66D3 5CE4 C7A6 9846 -- FA1B EFA89B EFA89B F3B2AF99
1625             FB83 FB83 FB83 EE66 F6E8 5FDF 66D4 66D4 66D4 5CE8 C7AA 9851 D069 799B E7A69B E7A69B F3B2AF9A
1626             FB84 FB84 FB84 EE67 F758 604F 66FE 66FE 66FE 5DDD C7F2 98DE D168 7AD1 E7AB91 E7AB91 F3B2AF9B
1627             FB85 FB85 FB85 EE68 F759 6058 67A2 67A2 67A2 5DE1 C7F5 98EB -- 7AE7 E7ABA7 E7ABA7 F3B2AF9C
1628             FB86 FB86 FB86 EE69 -- 6059 67A6 67A6 67A6 5DE5 C7F7 98ED -- FA1C EFA89C EFA89C F3B2AF9D
1629             FB87 FB87 FB87 EE6A ED77 605A 67A4 67A4 67A4 5DE4 C7F8 98EE D16C 7AEB E7ABAB E7ABAB F3B2AF9E
1630             FB88 FB88 FB88 EE6B ED83 6082 67B7 67B7 67B7 5EA3 C8BB 998C D23B 7B9E E7AE9E E7AE9E F3B2AF9F
1631             FB89 FB89 FB89 EE6C -- 60AD 67CC 67CC 67CC 5ED3 C8E8 99CA -- FA1D EFA89D EFA89D F3B2AFA0
1632             FB8A FB8A FB8A EE6D EDA0 60C4 67DD 67DD 67DD 5EFD C9A7 9A47 D361 7D48 E7B588 E7B588 F3B2AFA1
1633             FB8B FB8B FB8B EE6E EDA2 60C6 67E1 67E1 67E1 5EE0 C9AC 9A53 D368 7D5C E7B59C E7B59C F3B2AFA2
1634             FB8C FB8C FB8C EE6F F7C5 60D4 67EC 67EC 67EC 5FE4 C9B9 9A89 D427 7DB7 E7B6B7 E7B6B7 F3B2AFA3
1635             FB8D FB8D FB8D EE70 EDA6 60DA 67EB 67EB 67EB 5FB6 C9B6 9A86 -- 7DA0 E7B6A0 E7B6A0 F3B2AFA4
1636             FB8E FB8E FB8E EE71 EDAA 60E1 67F1 67F1 67F1 5FBE C9BD 9A8E -- 7DD6 E7B796 E7B796 F3B2AFA5
1637             FB8F FB8F FB8F EE72 EDB3 60FD 67FB 67FB 67FB 5FD6 C9D5 9AAA D454 7E52 E7B992 E7B992 F3B2AFA6
1638             FB90 FB90 FB90 EE73 EDB7 6157 68A5 68A5 68A5 5FE8 BFFB 90FB D472 7F47 E7BD87 E7BD87 F3B2AFA7
1639             FB91 FB91 FB91 EE74 -- 616E 68AE 68AE 68AE 5FF7 C9F2 9ADE D52E 7FA1 E7BEA1 E7BEA1 F3B2AFA8
1640             FB92 FB92 FB92 EE75 -- 6177 68B2 68B2 68B2 60A1 C9F6 9AEC -- FA1E EFA89E EFA89E F3B2AFA9
1641             FB93 FB93 FB93 EE76 EDEA 61F8 68DA 68DA 68DA 61D9 CBB4 9E84 D75E 8301 E88C81 E88C81 F3B2AFAA
1642             FB94 FB94 FB94 EE77 EDEB 6248 68DD 68DD 68DD 70E7 CBD3 9EA8 -- 8362 E88DA2 E88DA2 F3B2AFAB
1643             FB95 FB95 FB95 EE78 F8B1 625B 68F2 68F2 68F2 61F0 CBD4 9EA9 D822 837F E88DBF E88DBF F3B2AFAC
1644             FB96 FB96 FB96 EE79 EDFB 6267 68FC 68FC 68FC 61FE CCA1 9F41 D837 83C7 E88F87 E88F87 F3B2AFAD
1645             FB97 FB97 FB97 EE7A -- 6274 68F8 68F8 68F8 62AA CBF7 9EED D841 83F6 E88FB6 E88FB6 F3B2AFAE
1646             FB98 FB98 FB98 EE7B EE47 627E 69A3 69A3 69A3 70E8 CCB2 9F82 D851 8448 E89188 E89188 F3B2AFAF
1647             FB99 FB99 FB99 EE7C EE4E 628A 69AF 69AF 69AF 70E9 CCC3 9F94 D874 84B4 E892B4 E892B4 F3B2AFB0
1648             FB9A FB9A FB9A EE7D F8EF 629E 69BE 69BE 69BE 62D1 CCEE 9FDA D946 8553 E89593 E89593 F3B2AFB1
1649             FB9B FB9B FB9B EE7E EE57 62A1 69BF 69BF 69BF 62D4 CCEA 9FCC D948 8559 E89599 E89599 F3B2AFB2
1650             FB9C FB9C FB9C EE80 -- 62A8 69BA 69BA 69BA 62D9 CCED 9FCF D951 856B E895AB E895AB F3B2AFB3
1651             FB9D FB9D FB9D EE81 EE59 62B9 69C1 69C1 69C1 62E4 CCFD 9FFD -- FA1F EFA89F EFA89F F3B2AFB4
1652             FB9E FB9E FB9E EE82 EE5F 62BB 69C9 69C9 69C9 62E5 CDA9 A249 -- 85B0 E896B0 E896B0 F3B2AFB5
1653             FB9F FB9F FB9F EE83 F957 62CE 69D0 69D0 69D0 70EA CDC2 A293 -- FA20 EFA8A0 EFA8A0 F3B2AFB6
1654             FBA0 FBA0 FBA0 EE84 F964 62E2 69D7 69D7 69D7 63DF CDD3 A2A8 -- FA21 EFA8A1 EFA8A1 F3B2AFB7
1655             FBA1 FBA1 FBA1 EE85 -- 635E 69DA 69DA 69DA 63E0 CDE2 A2B4 -- 8807 E8A087 E8A087 F3B2AFB8
1656             FBA2 FBA2 FBA2 EE86 EE8D 6390 69E6 69E6 69E6 63F9 CEA4 A344 DC53 88F5 E8A3B5 E8A3B5 F3B2AFB9
1657             FBA3 FBA3 FBA3 EE87 EE9D 63C5 69FE 69FE 69FE 64E4 CECA A39D DD48 8A12 E8A892 E8A892 F3B2AFBA
1658             FBA4 FBA4 FBA4 EE88 EEA0 63CB 6AA5 6AA5 6AA5 64EC CEDA A3BA DD54 8A37 E8A8B7 E8A8B7 F3B2AFBB
1659             FBA5 FBA5 FBA5 EE89 EEA6 63D4 6AAA 6AAA 6AAA 64DA CEDF A3BF DD6A 8A79 E8A9B9 E8A9B9 F3B2AFBC
1660             FBA6 FBA6 FBA6 EE8A EEA7 63DF 6AAB 6AAB 6AAB 65A7 CEE2 A3B4 DD7A 8AA7 E8AAA7 E8AAA7 F3B2AFBD
1661             FBA7 FBA7 FBA7 EE8B F9DE 63E1 6AAD 6AAD 6AAD 6BEA CEE3 A3B5 DE24 8ABE E8AABE E8AABE F3B2AFBE
1662             FBA8 FBA8 FBA8 EE8C EEA9 63ED 6AB3 6AB3 6AB3 65B3 CEEC A3CE DE30 8ADF E8AB9F E8AB9F F3B2AFBF
1663             FBA9 FBA9 FBA9 EE8D EEAC 63EE 6AB2 6AB2 6AB2 65B7 CEEA A3CC -- FA22 EFA8A2 EFA8A2 F3B2B080
1664             FBAA FBAA FBAA EE8E EEAB 63EF 6AB4 6AB4 6AB4 65B6 CEED A3CF DE35 8AF6 E8ABB6 E8ABB6 F3B2B081
1665             FBAB FBAB FBAB EE8F -- 6445 6ABE 6ABE 6ABE 65C7 CEF8 A3EE DE4B 8B53 E8AD93 E8AD93 F3B2B082
1666             FBAC FBAC FBAC EE90 F9ED 6450 6AC3 6AC3 6AC3 65D1 CEFE A3FE -- 8B7F E8ADBF E8ADBF F3B2B083
1667             FBAD FBAD FBAD EE91 FA4F 647C 6AD0 6AD0 6AD0 66AB CFBC A48D DF39 8CF0 E8B3B0 E8B3B0 F3B2B084
1668             FBAE FBAE FBAE EE92 EEB8 647D 6ACF 6ACF 6ACF 65F9 CFBB A48C -- 8CF4 E8B3B4 E8B3B4 F3B2B085
1669             FBAF FBAF FBAF EE93 EEBC 6485 6AD5 6AD5 6AD5 65F8 CFC2 A493 DF43 8D12 E8B492 E8B492 F3B2B086
1670             FBB0 FBB0 FBB0 EE94 -- 648D 6AD8 6AD8 6AD8 66B9 CFC5 A496 -- 8D76 E8B5B6 E8B5B6 F3B2B087
1671             FBB1 FBB1 FBB1 EE95 -- 648E 6AD9 6AD9 6AD9 66C3 CFC7 A498 -- FA23 EFA8A3 EFA8A3 F3B2B088
1672             FBB2 FBB2 FBB2 EE96 -- 64C9 6AE1 6AE1 6AE1 66ED CFDE A4BE E059 8ECF E8BB8F E8BB8F F3B2B089
1673             FBB3 FBB3 FBB3 EE97 FA8E 64F1 6AEB 6AEB 6AEB 70F9 CFFD A4FD -- FA24 EFA8A4 EFA8A4 F3B2B08A
1674             FBB4 FBB4 FBB4 EE98 -- 6549 6AFA 6AFA 6AFA 70FB D0C2 A593 -- FA25 EFA8A5 EFA8A5 F3B2B08B
1675             FBB5 FBB5 FBB5 EE99 -- 6553 6BA3 6BA3 6BA3 70FA D0CD A5A2 E162 9067 E981A7 E981A7 F3B2B08C
1676             FBB6 FBB6 FBB6 EE9A EEE5 6564 6BC7 6BC7 6BC7 68A6 D0EC A5CE -- 90DE E9839E E9839E F3B2B08D
1677             FBB7 FBB7 FBB7 EE9B EEE8 6566 6BCA 6BCA 6BCA 68A8 D0F2 A5DE -- FA26 EFA8A6 EFA8A6 F3B2B08E
1678             FBB8 FBB8 FBB8 EE9C EEEA 6567 6BCD 6BCD 6BCD 68DF D0F3 A5DF -- 9115 E98495 E98495 F3B2B08F
1679             FBB9 FBB9 FBB9 EE9D EEEE 656B 6BD1 6BD1 6BD1 68B0 D0F9 A5EF E247 9127 E984A7 E984A7 F3B2B090
1680             FBBA FBBA FBBA EE9E FACC 6583 6BD9 6BD9 6BD9 69BE D1B8 A688 E328 91DA E9879A E9879A F3B2B091
1681             FBBB FBBB FBBB EE9F EEFA 6585 6BD8 6BD8 6BD8 69BC D1B7 A687 E326 91D7 E98797 E98797 F3B2B092
1682             FBBC FBBC FBBC EEA0 -- 6586 6BDA 6BDA 6BDA 69BF D1B9 A689 E329 91DE E9879E E9879E F3B2B093
1683             FBBD FBBD FBBD EEA1 EF41 658A 6BDC 6BDC 6BDC 69C5 D1BB A68C E32F 91ED E987AD E987AD F3B2B094
1684             FBBE FBBE FBBE EEA2 FAD0 658C 6BE1 6BE1 6BE1 69C6 D1C1 A692 E330 91EE E987AE E987AE F3B2B095
1685             FBBF FBBF FBBF EEA3 EEFC 658D 6BE0 6BE0 6BE0 69C0 D1BE A68F E32A 91E4 E987A4 E987A4 F3B2B096
1686             FBC0 FBC0 FBC0 EEA4 EF40 658F 6BDF 6BDF 6BDF 69C1 D1BD A68E E32B 91E5 E987A5 E987A5 F3B2B097
1687             FBC1 FBC1 FBC1 EEA5 -- 6590 6BE5 6BE5 6BE5 69CD D1C6 A697 E33C 9206 E98886 E98886 F3B2B098
1688             FBC2 FBC2 FBC2 EEA6 EF44 6593 6BE9 6BE9 6BE9 69D1 D1C4 A695 E341 9210 E98890 E98890 F3B2B099
1689             FBC3 FBC3 FBC3 EEA7 FAD2 6595 6BE7 6BE7 6BE7 69D0 D1CB A69E E33F 920A E9888A E9888A F3B2B09A
1690             FBC4 FBC4 FBC4 EEA8 EF47 659B 6BF2 6BF2 6BF2 69E1 D1DC A6BC E355 923A E988BA E988BA F3B2B09B
1691             FBC5 FBC5 FBC5 EEA9 EF49 659E 6BEE 6BEE 6BEE 69E4 D1D6 A6AC E358 9240 E98980 E98980 F3B2B09C
1692             FBC6 FBC6 FBC6 EEAA EF48 659F 6BF3 6BF3 6BF3 69E2 D1D9 A6AF E356 923C E988BC E988BC F3B2B09D
1693             FBC7 FBC7 FBC7 EEAB FADA 65A1 6BEF 6BEF 6BEF 69E8 D1DD A6BD E35F 924E E9898E E9898E F3B2B09E
1694             FBC8 FBC8 FBC8 EEAC FADD 65A3 6BF1 6BF1 6BF1 69EE D1DB A6BB E363 9259 E98999 E98999 F3B2B09F
1695             FBC9 FBC9 FBC9 EEAD FADB 65A5 6BEC 6BEC 6BEC 69EA D1D1 A6A6 E361 9251 E98991 E98991 F3B2B0A0
1696             FBCA FBCA FBCA EEAE EF46 65A6 6BED 6BED 6BED 69E0 D1D3 A6A8 E354 9239 E988B9 E988B9 F3B2B0A1
1697             FBCB FBCB FBCB EEAF FAE1 65A8 6BF6 6BF6 6BF6 6BD2 D1E4 A6B6 E369 9267 E989A7 E989A7 F3B2B0A2
1698             FBCC FBCC FBCC EEB0 FAED 65AB 6CA6 6CA6 6CA6 6AA7 D1EE A6DA E426 92A7 E98AA7 E98AA7 F3B2B0A3
1699             FBCD FBCD FBCD EEB1 -- 65AC 6CA8 6CA8 6CA8 69F7 D1EF A6DB E371 9277 E989B7 E989B7 F3B2B0A4
1700             FBCE FBCE FBCE EEB2 EF4C 65AD 6CA5 6CA5 6CA5 69F8 D1E6 A6B8 E372 9278 E989B8 E989B8 F3B2B0A5
1701             FBCF FBCF FBCF EEB3 FAFA 65B4 6CB1 6CB1 6CB1 6AC4 D1F9 A6EF E44B 92E7 E98BA7 E98BA7 F3B2B0A6
1702             FBD0 FBD0 FBD0 EEB4 FAF7 65B5 6CAC 6CAC 6CAC 6ABC D1F0 A6DC E441 92D7 E98B97 E98B97 F3B2B0A7
1703             FBD1 FBD1 FBD1 EEB5 FAF8 65B6 6CB8 6CB8 6CB8 6ABE D1F7 A6ED E443 92D9 E98B99 E98B99 F3B2B0A8
1704             FBD2 FBD2 FBD2 EEB6 FAF6 65B7 6CB3 6CB3 6CB3 6AB8 D2A4 A744 E43E 92D0 E98B90 E98B90 F3B2B0A9
1705             FBD3 FBD3 FBD3 EEB7 -- 65B8 6CB7 6CB7 6CB7 6BD3 D2A6 A746 -- FA27 EFA8A7 EFA8A7 F3B2B0AA
1706             FBD4 FBD4 FBD4 EEB8 -- 65B9 6CB5 6CB5 6CB5 6ABB D2A3 A743 E440 92D5 E98B95 E98B95 F3B2B0AB
1707             FBD5 FBD5 FBD5 EEB9 EF52 65BC 6CB0 6CB0 6CB0 6AC2 D1FE A6FE E447 92E0 E98BA0 E98BA0 F3B2B0AC
1708             FBD6 FBD6 FBD6 EEBA EF51 65BD 9FCA 9FCA 9FCA 6ABA D1F4 A6EA E43F 92D3 E98B93 E98B93 F3B2B0AD
1709             FBD7 FBD7 FBD7 EEBB EF57 65C1 6CC3 6CC3 6CC3 6AD5 D2B4 A784 E460 9325 E98CA5 E98CA5 F3B2B0AE
1710             FBD8 FBD8 FBD8 EEBC EF56 65C3 6CBE 6CBE 6CBE 6AD3 D2A9 A749 E45E 9321 E98CA1 E98CA1 F3B2B0AF
1711             FBD9 FBD9 FBD9 EEBD FB43 65C5 6CCD 6CCD 6CCD 69B3 D2AF A756 E451 92FB E98BBB E98BBB F3B2B0B0
1712             FBDA FBDA FBDA EEBE -- 65C6 6CC2 6CC2 6CC2 6BD4 D2B7 A787 -- FA28 EFA8A8 EFA8A8 F3B2B0B1
1713             FBDB FBDB FBDB EEBF FB48 65C8 6CBF 6CBF 6CBF 6AD1 D2AB A752 E45C 931E E98C9E E98C9E F3B2B0B2
1714             FBDC FBDC FBDC EEC0 EF53 65C9 6CC1 6CC1 6CC1 6ACA D2B5 A785 E452 92FF E98BBF E98BBF F3B2B0B3
1715             FBDD FBDD FBDD EEC1 FB47 65CC 6CC4 6CC4 6CC4 6AD0 D2B3 A783 E45B 931D E98C9D E98C9D F3B2B0B4
1716             FBDE FBDE FBDE EEC2 FB44 65CE 6CC5 6CC5 6CC5 6ACC D2B2 A782 E454 9302 E98C82 E98C82 F3B2B0B5
1717             FBDF FBDF FBDF EEC3 EF5E 65D0 6CCA 6CCA 6CCA 6AE4 D2BB A78C E47A 9370 E98DB0 E98DB0 F3B2B0B6
1718             FBE0 FBE0 FBE0 EEC4 FB4F 65D5 6CCC 6CCC 6CCC 6ADE D2C3 A794 E46F 9357 E98D97 E98D97 F3B2B0B7
1719             FBE1 FBE1 FBE1 EEC5 -- 65D8 6CD8 6CD8 6CD8 6AF2 D2D3 A7A8 E533 93A4 E98EA4 E98EA4 F3B2B0B8
1720             FBE2 FBE2 FBE2 EEC6 EF62 65DD 6CE0 6CE0 6CE0 6AF9 D2DF A7BF E53F 93C6 E98F86 E98F86 F3B2B0B9
1721             FBE3 FBE3 FBE3 EEC7 EF63 65E4 6CDF 6CDF 6CDF 6BA3 D2DA A7BA E549 93DE E98F9E E98F9E F3B2B0BA
1722             FBE4 FBE4 FBE4 EEC8 -- 65E8 6CE6 6CE6 6CE6 6BAE D2E7 A7B9 E550 93F8 E98FB8 E98FB8 F3B2B0BB
1723             FBE5 FBE5 FBE5 EEC9 -- 65F0 6CEF 6CEF 6CEF 6BBD D2F2 A7DE E562 9431 E990B1 E990B1 F3B2B0BC
1724             FBE6 FBE6 FBE6 EECA FB6C 65F4 6CF0 6CF0 6CF0 6BC5 D2F3 A7DF E56A 9445 E99185 E99185 F3B2B0BD
1725             FBE7 FBE7 FBE7 EECB -- 65F6 6CF1 6CF1 6CF1 6BC6 D2F4 A7EA E56B 9448 E99188 E99188 F3B2B0BE
1726             FBE8 FBE8 FBE8 EECC -- 664A 6CF8 6CF8 6CF8 6BE1 D2FC A7FC -- 9592 E99692 E99692 F3B2B0BF
1727             FBE9 FBE9 FBE9 EECD EF7C 6674 6DA2 6DA2 6DA2 68CC D3B9 A889 -- F9DC EFA79C EFA79C F3B2B180
1728             FBEA FBEA FBEA EECE -- 6678 6DA4 6DA4 6DA4 68E0 D3C0 A891 -- FA29 EFA8A9 EFA8A9 F3B2B181
1729             FBEB FBEB FBEB EECF EF7D 6679 6DA5 6DA5 6DA5 68D4 D3C1 A892 E668 969D E99A9D E99A9D F3B2B182
1730             FBEC FBEC FBEC EED0 FB8C 667F 6DA6 6DA6 6DA6 68DB D3C4 A895 E66F 96AF E99AAF E99AAF F3B2B183
1731             FBED FBED FBED EED1 EF86 6697 9FCD 9FCD 9FCD 6CAC D3D4 A8A9 E72C 9733 E99CB3 E99CB3 F3B2B184
1732             FBEE FBEE FBEE EED2 EF87 6699 9FCE 9FCE 9FCE 6CAD D3D5 A8AA -- 973B E99CBB E99CBB F3B2B185
1733             FBEF FBEF FBEF EED3 -- 669E 6DAE 6DAE 6DAE 6CB0 D3D7 A8AD E72E 9743 E99D83 E99D83 F3B2B186
1734             FBF0 FBF0 FBF0 EED4 EF88 66A2 6DB0 6DB0 6DB0 6CB1 D3D9 A8AF -- 974D E99D8D E99D8D F3B2B187
1735             FBF1 FBF1 FBF1 EED5 EF8A 66A3 9FCF 9FCF 9FCF 6CAE D3DB A8BB E731 974F E99D8F E99D8F F3B2B188
1736             FBF2 FBF2 FBF2 EED6 -- 66A4 6DB1 6DB1 6DB1 6CB3 D3DC A8BC -- 9751 E99D91 E99D91 F3B2B189
1737             FBF3 FBF3 FBF3 EED7 FB9C 66A5 6DB2 6DB2 6DB2 6CB5 D3DE A8BE E732 9755 E99D95 E99D95 F3B2B18A
1738             FBF4 FBF4 FBF4 EED8 EF9F 66CB 6DC1 6DC1 6DC1 6CF3 D4A1 A941 E831 9857 E9A197 E9A197 F3B2B18B
1739             FBF5 FBF5 FBF5 EED9 EFA3 66CC 6DC2 6DC2 6DC2 6CF7 D4A4 A944 E836 9865 E9A1A5 E9A1A5 F3B2B18C
1740             FBF6 FBF6 FBF6 EEDA -- 66DD 6DC5 6DC5 6DC5 6DB3 D4B3 A983 -- FA2A EFA8AA EFA8AA F3B2B18D
1741             FBF7 FBF7 FBF7 EEDB -- 66DF 6DC6 6DC6 6DC6 6DB4 D4B4 A984 -- FA2B EFA8AB EFA8AB F3B2B18E
1742             FBF8 FBF8 FBF8 EEDC -- 66E5 6DC8 6DC8 6DC8 6DBD D4B7 A987 E85D 9927 E9A4A7 E9A4A7 F3B2B18F
1743             FBF9 FBF9 FBF9 EEDD -- 66E6 6DC9 6DC9 6DC9 6DBE D4B8 A988 -- FA2C EFA8AC EFA8AC F3B2B190
1744             FBFA FBFA FBFA EEDE EFA9 66F9 6DCC 6DCC 6DCC 5CF3 D4C3 A994 -- 999E E9A69E E9A69E F3B2B191
1745             FBFB FBFB FBFB EEDF EFB1 6759 6DD9 6DD9 6DD9 6DF6 D4D7 A9AD E951 9A4E E9A98E E9A98E F3B2B192
1746             FBFC FBFC FBFC EEE0 -- 676B 6DD4 6DD4 6DD4 6EA4 D4DC A9BC -- 9AD9 E9AB99 E9AB99 F3B2B193
1747             FC40 FC40 FC40 EEE1 FC51 676C 6DDC 6DDC 6DDC 6EA7 D4DE A9BE E96D 9ADC E9AB9C E9AB9C F3B2B194
1748             FC41 FC41 FC41 EEE2 EFC2 678F 9FD2 9FD2 9FD2 6ED0 D4F0 A9DC EA4D 9B75 E9ADB5 E9ADB5 F3B2B195
1749             FC42 FC42 FC42 EEE3 EFC1 6791 6DE0 6DE0 6DE0 6EEE D4EF A9DB -- 9B72 E9ADB2 E9ADB2 F3B2B196
1750             FC43 FC43 FC43 EEE4 EFC5 6793 6DE2 6DE2 6DE2 6ED8 D4F3 A9DF EA5B 9B8F E9AE8F E9AE8F F3B2B197
1751             FC44 FC44 FC44 EEE5 FC69 679B 6DE5 6DE5 6DE5 6EDB D4FB A9FB EA66 9BB1 E9AEB1 E9AEB1 F3B2B198
1752             FC45 FC45 FC45 EEE6 -- 679F 6DE7 6DE7 6DE7 6EEF D5A8 AA48 EA6A 9BBB E9AEBB E9AEBB F3B2B199
1753             FC46 FC46 FC46 EEE7 EFCD 67B1 9FD3 9FD3 9FD3 6EE3 D5AF AA56 EB25 9C00 E9B080 E9B080 F3B2B19A
1754             FC47 FC47 FC47 EEE8 EFDC 67E2 9FD8 9FD8 9FD8 6FA3 D3C9 A89A EB7B 9D70 E9B5B0 E9B5B0 F3B2B19B
1755             FC48 FC48 FC48 EEE9 FCB2 67E4 6DF2 6DF2 6DF2 6FA1 D5D4 AAA9 EB7A 9D6B E9B5AB E9B5AB F3B2B19C
1756             FC49 FC49 FC49 EEEA -- 67F4 6DF4 6DF4 6DF4 6FB2 D5DA AABA -- FA2D EFA8AD EFA8AD F3B2B19D
1757             FC4A FC4A FC4A EEEB FCCD 67FE 6EAC 6EAC 6EAC 6FAE D5DC AABC EC56 9E19 E9B899 E9B899 F3B2B19E
1758             FC4B FC4B FC4B EEEC EFF0 6856 6EA1 6EA1 6EA1 6FD6 D5EB AACD -- 9ED1 E9BB91 E9BB91 F3B2B19F
1759              
1760             =head1 UTF-8.0 vs. UTF-8.1
1761              
1762             The large character sets has always some problems.
1763             One of problem of UTF-8 is difference between Microsoft Corporation-san's definition and general definition.
1764             Already, in this software, "utf8" means Microsoft Corporation-san's definition.
1765             So we named the general UTF-8 "UTF-8.1" to distinguish them.
1766              
1767             Terminology and definitions
1768             -------------------------------------------------------------------------------
1769             UTF-8 [ju:ti:ef eit] could mean sometimes UTF-8.0, sometimes UTF-8.x
1770             UTF-8.0 [ju:ti:ef hatten-zero] is Microsoft's definition of the UTF-8
1771             UTF-8.1 [ju:ti:ef hatten-ichi] is general definition of the UTF-8
1772             UTF-8.x [ju:ti:ef hatten-ekks] means both UTF-8.0 and UTF-8.1
1773             -------------------------------------------------------------------------------
1774              
1775             The following is difference between UTF-8.0 and UTF-8.1.
1776              
1777             #+++++++----------------------------------------------------------------------------------------------------------- CP932X, Extended CP932 to JIS X 0213 using 0x9C5A as single shift
1778             #||||||| ++++------------------------------------------------------------------------------------------------------ Microsoft CP932, IANA Windows-31J
1779             #||||||| |||| ++++------------------------------------------------------------------------------------------------- IBM CP932
1780             #||||||| |||| |||| ++++-------------------------------------------------------------------------------------------- NEC CP932
1781             #||||||| |||| |||| |||| ++++--------------------------------------------------------------------------------------- JISC Shift_JIS-2004
1782             #||||||| |||| |||| |||| |||| ++++---------------------------------------------------------------------------------- IBM CP00930(CP00290+CP00300), CCSID 5026 katakana
1783             #||||||| |||| |||| |||| |||| |||| ++++----------------------------------------------------------------------------- HITACHI KEIS78
1784             #||||||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------------ HITACHI KEIS83
1785             #||||||| |||| |||| |||| |||| |||| |||| |||| ++++------------------------------------------------------------------- HITACHI KEIS90
1786             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| ++++-------------------------------------------------------------- FUJITSU JEF
1787             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++--------------------------------------------------------- NEC JIPS(J)
1788             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++---------------------------------------------------- NEC JIPS(E)
1789             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ++++----------------------------------------------- UNISYS LetsJ
1790             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| +++++++++------------------------------------- Unicode
1791             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| ++++++++++++------------------------ UTF-8.0 (aka UTF-8)
1792             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| ++++++++++++----------- UTF-8.1
1793             #||||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||||||| |||||||||||| |||||||||||| ++++++++-- UTF-8-SPUA-JP, JIS X 0213 on SPUA ordered by JIS level, plane, row, cell
1794             #2345678 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 123456789 123456789012 123456789012 12345678
1795             #VVVVVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVV VVVVVVVVV VVVVVVVVVVVV VVVVVVVVVVVV VVVVVVVV
1796             815C 815C 815C 815C -- DDB7 A1BD A1BD A1BD A1BD 213D 4F7E A1BD 2015 E28095 E28094 F3B0849C
1797             8161 8161 8161 8161 81D2 DFE5 A1C2 A1C2 A1C2 A1C2 2142 4FC2 -- 2225 E288A5 E28096 F3B084A1
1798             817C 817C 817C 817C 81AF E9F3 A1DD A1DD A1DD A1DD 215D 4F5A -- FF0D EFBC8D E28892 F3B084BC
1799             9C5A815C -- -- -- 815C 444A -- -- -- -- -- -- -- 2014 E28094 E28095 F3B2B4AC
1800             9C5A8161 -- -- -- 8161 447C -- -- -- -- -- -- A1C2 2016 E28096 E288A5 F3B2B4B1
1801             9C5A817C -- -- -- 817C 4260 -- -- -- -- -- -- A1DD 2212 E28892 EFBC8D F3B2B58C
1802              
1803             =head1 ERRATAS OF MAPPINGS
1804              
1805             Mapping of Jacode4e version 2.13.6.17 or earlier has following errata:
1806              
1807             =head2 KEIS78, KEIS83, and KEIS90
1808              
1809             Mapping of 'keis78', 'keis83', and 'keis90' had following errata:
1810              
1811             ----------------------------------------------
1812             Unicode 2.13.6.18 2.13.6.17
1813             or later or older
1814             ----------------------------------------------
1815             芺 U+82BA KEIS:(no mapping) KEIS:68CF
1816             覀 U+8980 KEIS:(no mapping) KEIS:59A9
1817             麽 U+9EBD KEIS:6DFB KEIS:5EC3
1818             ----------------------------------------------
1819              
1820             =head2 JEF and JEF9P
1821              
1822             Mapping of 'jef' and 'jef9p' had following errata:
1823              
1824             ----------------------------------------------
1825             Unicode 2.13.6.18 2.13.6.17
1826             or later or older
1827             ----------------------------------------------
1828             漼 U+6F3C JEF:(no mapping) JEF:56F3
1829             臽 U+81FD JEF:(no mapping) JEF:52E1
1830             海 U+FA45 JEF:55FB JEF:53FA
1831             渚 U+FA46 JEF:BDED JEF:55FB
1832             漢 U+FA47 JEF:56E6 JEF:BDED
1833             煮 U+FA48 JEF:58A7 JEF:56E6
1834             爫 U+FA49 JEF:(no mapping) JEF:58A7
1835             社 U+FA4C JEF:5CD3 JEF:5CB3
1836             祉 U+FA4D JEF:5CD5 JEF:5CD3
1837             祈 U+FA4E JEF:5CD4 JEF:5CD5
1838             祐 U+FA4F JEF:5CD6 JEF:5CD4
1839             祖 U+FA50 JEF:5CD7 JEF:5CD6
1840             祝 U+FA51 JEF:5CD9 JEF:5CD7
1841             禍 U+FA52 JEF:5CE2 JEF:5CD9
1842             禎 U+FA53 JEF:5CE3 JEF:5CE2
1843             穀 U+FA54 JEF:5CF4 JEF:5CE3
1844             突 U+FA55 JEF:5DCD JEF:5CF4
1845             縉 U+FA58 JEF:(no mapping) JEF:5FC8
1846             署 U+FA5A JEF:5FF0 JEF:5EE3
1847             者 U+FA5B JEF:60B5 JEF:5FF0
1848             臭 U+FA5C JEF:60E3 JEF:60B5
1849             艹 U+FA5D JEF:(no mapping) JEF:60E3
1850             ~ U+FF5E JEF:(no mapping) JEF:A1C1
1851             ----------------------------------------------
1852              
1853             =head2 JIPS(J)
1854              
1855             Mapping of 'jipsj' had following errata:
1856              
1857             ----------------------------------------------
1858             Unicode 2.13.6.18 2.13.6.17
1859             or later or older
1860             ----------------------------------------------
1861             Ý U+00DD JIPSJ:(no mapping) JIPSJ:A5B1
1862             耰 U+8030 JIPSJ:(no mapping) JIPSJ:CAAB
1863             ----------------------------------------------
1864              
1865             =head2 JIPS(E)
1866              
1867             Mapping of 'jipse' had following errata:
1868              
1869             ----------------------------------------------
1870             Unicode 2.13.6.18 2.13.6.17
1871             or later or older
1872             ----------------------------------------------
1873             Ý U+00DD JIPSE:(no mapping) JIPSE:4581
1874             耰 U+8030 JIPSE:(no mapping) JIPSE:9D52
1875             ----------------------------------------------
1876              
1877             =head1 DEPENDENCIES
1878              
1879             perl version 5.005_03 to newest perl
1880              
1881             =head1 SOFTWARE LIFE CYCLE
1882              
1883             Jacode.pm
1884             jcode.pl Encode.pm jacode.pl Jacode4e Jacode4e::RoundTrip
1885             --------------------------------------------------------------------------------
1886             1993 Perl4.036 | |
1887             : : : :
1888             1999 Perl5.00503 | | | |
1889             2000 Perl5.6 | | | |
1890             2002 Perl5.8 | Born | | |
1891             2007 Perl5.10 V | | | |
1892             2010 Perl5.12 EOL | Born | |
1893             2011 Perl5.14 | | | |
1894             2012 Perl5.16 | | | |
1895             2013 Perl5.18 | | | |
1896             2014 Perl5.20 | | | |
1897             2015 Perl5.22 | | | |
1898             2016 Perl5.24 | | | |
1899             2017 Perl5.26 | | | |
1900             2018 Perl5.28 | | Born Born
1901             2019 Perl5.30 | | | |
1902             2020 Perl5.32 : : : :
1903             2030 Perl5.52 : : : :
1904             2040 Perl5.72 : : : :
1905             2050 Perl5.92 : : : :
1906             2060 Perl5.112 : : : :
1907             2070 Perl5.132 : : : :
1908             2080 Perl5.152 : : : :
1909             2090 Perl5.172 : : : :
1910             2100 Perl5.192 : : : :
1911             2110 Perl5.212 : : : :
1912             2120 Perl5.232 : : : :
1913             : : V V V V
1914             --------------------------------------------------------------------------------
1915              
1916             =head1 Why and how to CP932X Born?
1917              
1918             In order to know why CP932X exists the way it is, one must first know why CP932X born.
1919              
1920             Q1) Is CCS of JIS X 0208 enough?
1921              
1922             A1) No. Often we require GAIJI.
1923              
1924             Q2) Is CCS of JIS X 0213 enough?
1925              
1926             A2) It's not perfect, but enough for many people.
1927              
1928             Q3) Is CES by UTF-8 good?
1929              
1930             A3) No. On Japanese information processing, it's unstable and not popular still now.
1931              
1932             Q4) Is CES by Shift_JIS-2004 good?
1933              
1934             A4) No. Because Shift_JIS-2004 cannot support very popular CP932 and your GAIJI. We need a realistic solution to solving real problem.
1935              
1936             Q5) Is escape sequence good idea to support CCS of JIS X 0213?
1937              
1938             A5) No. Because the programming is so hard.
1939              
1940             Q6) Which character is best for single shift code to support CCS of JIS X 0213?
1941              
1942             =over 2
1943              
1944             =item *
1945              
1946             The single shift code must be a DBCS code, because field with DBCS type cannot store SBCS code in some cases
1947              
1948             =item *
1949              
1950             Moreover, all GAIJI code points must be yours
1951              
1952             =item *
1953              
1954             The impact of this solution must be minimum
1955              
1956             =back
1957              
1958             A6) We selected "1-55-27" for single shift code. Because it called "ghost character" and cannot use any purpose
1959              
1960             =head1 How To Update This Distribution
1961              
1962             Someday all authors of Jacode4e module may get run over by a bus.
1963              
1964             So we write here how to update this distribution for you.
1965              
1966             We wish you good luck.
1967              
1968             =over 2
1969              
1970             =item 1
1971              
1972             (MUST) update file "lib/Jacode4e.pm"
1973              
1974             =item 2
1975              
1976             (MUST) update $VERSION of file "lib/Jacode4e.pm"
1977              
1978             =item 3
1979              
1980             (MUST) append to change log to file "Changes"
1981              
1982             =item 4
1983              
1984             (if you need) update file "README"
1985              
1986             =item 5
1987              
1988             (if you need) update or add files "t/*.t"
1989              
1990             =item 6
1991              
1992             (if you need) update file "MANIFEST"
1993              
1994             =item 7
1995              
1996             repeat command: pmake test [Enter] until all tests PASS
1997              
1998             =item 8
1999              
2000             type command: pmake dist [Enter]
2001              
2002             =item 9
2003              
2004             upload *.tar.gz to PAUSE(The [Perl programming] Authors Upload Server)
2005              
2006             =back
2007              
2008             =head1 AUTHOR
2009              
2010             INABA Hitoshi L in a CPAN
2011              
2012             This project was originated by INABA Hitoshi.
2013              
2014             =head1 LICENSE AND COPYRIGHT
2015              
2016             This software is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L.
2017              
2018             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.
2019              
2020             =head1 SEE ALSO
2021              
2022             Windows-31J information
2023             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/index.html
2024              
2025             Windows-31 J Character Set
2026             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/Windows-31J-charset.html
2027              
2028             Windows-31 J Duplicate Coded Characters and Unicode
2029             http://www2d.biglobe.ne.jp/%7Emsyk/charcode/cp932/uni2sjis-Windows-31J.html
2030              
2031             Data transformation function provided by WebSphere MQ
2032             Chapter 11. Problems with converting certain characters (Japanese language related)
2033             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11.html
2034             https://www.ibm.com/developerworks/jp/websphere/library/wmq/mq_transform/11-pdf.pdf
2035              
2036             CPGID 00290
2037             https://www-01.ibm.com/software/globalization/cdra/
2038             https://www-01.ibm.com/software/globalization/cp/cp00290.html
2039             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.pdf
2040             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00290.txt
2041              
2042             IBM Japanese Graphic Character Set, Kanji DBCS Host and DBCS - PC
2043             https://www-01.ibm.com/software/globalization/cdra/
2044             ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00300.pdf
2045              
2046             IBM Kanji code list
2047             N:GC18-2040-3
2048              
2049             HiRDB Datareplicator Version 8 manuals, Hitachi, Ltd.
2050             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600001.HTM
2051             http://itdoc.hitachi.co.jp/manuals/3020/3020636050/W3600166.HTM
2052             http://itdoc.hitachi.co.jp/manuals/3020/30203J3820/ISUS0268.HTM
2053             http://itdoc.hitachi.co.jp/manuals/3000/30003D5820/CLNT0235.HTM
2054              
2055             KEIS code book, Culti Co.,Ltd.
2056             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/
2057              
2058             Appendix B.2 Character code differences
2059             http://itdoc.hitachi.co.jp/manuals/3020/3020759580/G5950334.HTM
2060              
2061             Appendix E Handling of character codes in PDE - Form Designer (applies only to distributed type PDE)
2062             http://itdoc.hitachi.co.jp/manuals/3020/30203p0360/PDEF0203.HTM
2063              
2064             HITAC Character code table (KEIS83)
2065             Document number 8080-2-30
2066             Document number 8080-2-074-10
2067             Document number 8080-2-100-10
2068             Document number 8080-2-109
2069              
2070             Linkexpress, FUJITSU LIMITED
2071             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
2072             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/unyo05/unyo0413.html
2073             http://software.fujitsu.com/jp/manual/manualfiles/m130010/b1fw5992/01z200/b5992-c-00-00.html
2074              
2075             JEF code book, Culti Co.,Ltd.
2076             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/
2077              
2078             Linkexpress operation manual J2X1-5930-03Z2(00) FUJITSU LIMITED
2079             http://software.fujitsu.com/jp/manual/manualfiles/M080093/J2X15930/03Z200/index.html
2080             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0416.html
2081             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0420.html
2082             http://software.fujitsu.com/jp/manual/manualfiles/M070086/J2X15930/01Z200/unyo05/unyo0421.html
2083             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/index.html
2084             http://software.fujitsu.com/jp/manual/manualfiles/m120010/b1fw5691/05z200/b5691-g-00-00.html
2085             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-01-00.html
2086             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-07-00.html
2087             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-08-00.html
2088             https://software.fujitsu.com/jp/manual/manualfiles/m200002/b1wd0741/14z200/b0741-c-09-00.html
2089              
2090             hidekatsu-izuno/jef4j
2091             https://github.com/hidekatsu-izuno/jef4j
2092              
2093             JHTc(JHT command edition)
2094             http://www.vector.co.jp/soft/winnt/util/se094205.html
2095              
2096             FACOM JEF Character code index dictionary
2097             Manual code 99FR-0012-3
2098             Manual code 99FR-8010-1
2099              
2100             JIPS code book, Culti Co.,Ltd.
2101             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/
2102              
2103             NEC Corporation Standard character set dictionary
2104             ZBB10-3
2105              
2106             NEC Corporation Standard character set dictionary
2107             ZBB11-2
2108              
2109             ClearPath Enterprise Servers MultiLingual System Administration, Operations, and Programming Guide ClearPath MCP 15.0 April 2013 8600 0288-308
2110             https://public.support.unisys.com/aseries/docs/ClearPath-MCP-16.0/PDF/86000288-308.pdf
2111              
2112             Heterogeneous database cooperation among heterogeneous OS environments
2113             http://www.unisys.co.jp/tec_info/tr56/5605.htm
2114              
2115             UNISYS_SJIS KANJI CONVERT(DOS ver)
2116             https://www.vector.co.jp/soft/dos/util/se238607.html
2117              
2118             ANSI X3.4-1968 (US-ASCII) with 0x60/0x27 as left/right single quotation mark to Unicode
2119             http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/US-ASCII-QUOTES.TXT
2120              
2121             JIS X 0201 (1976) to Unicode 1.1 Table
2122             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0201.TXT
2123              
2124             JIS X 0208 (1990) to Unicode
2125             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
2126              
2127             JIS X 0212 (1990) to Unicode
2128             http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT
2129              
2130             cp932 to Unicode table
2131             ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
2132             https://support.microsoft.com/ja-jp/help/170559/prb-conversion-problem-between-shift-jis-and-unicode
2133              
2134             Shift_JIS-2004 to Unicode table
2135             http://x0213.org/codetable/sjis-0213-2004-std.txt
2136              
2137             UTF-8, a transformation format of ISO 10646
2138             https://www.rfc-editor.org/rfc/rfc3629.txt
2139              
2140             iDIVO Ver.1.4.0
2141             https://www.hulft.com/shukka/files/iDIVO/SP-DV1-CC-02-01.pdf
2142              
2143             Kanji shift code
2144             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
2145              
2146             U+32FF SQUARE ERA NAME REIWA
2147             https://unicode.org/versions/Unicode12.1.0/
2148             http://en.glyphwiki.org/wiki/u32ff
2149             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
2150             http://www.hitachi-support.com/alert/ss/HWS17-007/list.pdf#page=29
2151              
2152             CJKV Information Processing
2153             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-1.sjs
2154             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-2.sjs
2155             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-3.sjs
2156             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/78-vs-83-4.sjs
2157             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-1.sjs
2158             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/83-vs-90-2.sjs
2159             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ2.sjs
2160             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ3.sjs
2161             https://resources.oreilly.com/examples/9781565922242/tree/master/AppQ/TJ4.sjs
2162              
2163             Very old fj.kanji discussion
2164             http://www.ie.u-ryukyu.ac.jp/~kono/fj/fj.kanji/index.html
2165              
2166             jcode.pl: Perl library for Japanese character code conversion, Kazumasa Utashiro
2167             ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
2168             http://web.archive.org/web/20090608090304/http://srekcah.org/jcode/
2169             ftp://ftp.oreilly.co.jp/pcjp98/utashiro/
2170             http://mail.pm.org/pipermail/tokyo-pm/2002-March/001319.html
2171             https://twitter.com/uta46/status/11578906320
2172              
2173             jacode - Perl program for Japanese character code conversion
2174             https://metacpan.org/search?q=jacode.pl
2175              
2176             Jacode4e - Converts Character Encodings for Enterprise in Japan
2177             https://metacpan.org/pod/Jacode4e
2178              
2179             Jacode4e::RoundTrip - Jacode4e for round-trip conversion in JIS X 0213
2180             https://metacpan.org/pod/Jacode4e::RoundTrip
2181              
2182             Modern::Open - Autovivification, Autodie, and 3-args open support
2183             https://metacpan.org/pod/Modern::Open
2184              
2185             BackPAN
2186             http://backpan.perl.org/authors/id/I/IN/INA/
2187              
2188             =head1 ACKNOWLEDGEMENTS
2189              
2190             Thank on good luck and all stakeholders, we could make this software.
2191              
2192             We received character code table of KEIS, JEF, and JIPS by electronic data from Culti Co.,Ltd.-san.
2193             Moreover, they allowed that we make open source software using it.
2194              
2195             Thank you, Culti Co.,Ltd-san.!
2196              
2197             =head1 HELLO WORLD
2198              
2199             To support JIS X 0213:2004,
2200              
2201             Using ghost character 1-55-27(it's me!),
2202              
2203             Found by JIS X 0208:1997,
2204              
2205             Was born in JIS C 6226-1978.
2206              
2207             Hello world,
2208              
2209             What do we hack, today?
2210              
2211             -- 1-55-27, 2018-01-27
2212              
2213             =cut
2214              
2215             1;
2216              
2217             __DATA__