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