package com.vincent.rsf.server.common.utils; 
 | 
  
 | 
import java.io.*; 
 | 
import java.net.URL; 
 | 
import java.nio.charset.Charset; 
 | 
import java.nio.charset.UnsupportedCharsetException; 
 | 
  
 | 
/** 
 | 
 * 文件编码检测工具, 核心代码来自 cpDetector 和 jChardet, 可以检测大多数文件的编码 
 | 
 * 
 | 
 * @author vincent 
 | 
 * @since 2020-09-15 09:24:20 
 | 
 */ 
 | 
public class JChardetFacadeUtil { 
 | 
  
 | 
    public static String detectCodepage(URL url) { 
 | 
        try { 
 | 
            Charset ret = JChardetFacade.getInstance().detectCodepage(url); 
 | 
            return ret == null ? null : ret.name(); 
 | 
        } catch (Exception ignored) { 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 下面代码来自: https://github.com/r91987/cpdetector 
 | 
     */ 
 | 
    public static class JChardetFacade extends AbstractCodepageDetector implements nsICharsetDetectionObserver { 
 | 
        private static JChardetFacade instance = null; 
 | 
        private static nsDetector det; 
 | 
        private byte[] buf = new byte[4096]; 
 | 
        private Charset codpage = null; 
 | 
        private boolean m_guessing = true; 
 | 
        private int amountOfVerifiers = 0; 
 | 
  
 | 
        private JChardetFacade() { 
 | 
            det = new nsDetector(0); 
 | 
            det.Init(this); 
 | 
            this.amountOfVerifiers = det.getProbableCharsets().length; 
 | 
        } 
 | 
  
 | 
        public static JChardetFacade getInstance() { 
 | 
            if (instance == null) { 
 | 
                instance = new JChardetFacade(); 
 | 
            } 
 | 
  
 | 
            return instance; 
 | 
        } 
 | 
  
 | 
        public synchronized Charset detectCodepage(InputStream in, int length) throws IOException { 
 | 
            this.Reset(); 
 | 
            int read = 0; 
 | 
            boolean done = false; 
 | 
            boolean isAscii = true; 
 | 
            Charset ret = null; 
 | 
  
 | 
            int len; 
 | 
            do { 
 | 
                len = in.read(this.buf, 0, Math.min(this.buf.length, length - read)); 
 | 
                if (len > 0) { 
 | 
                    read += len; 
 | 
                } 
 | 
  
 | 
                if (!done) { 
 | 
                    done = det.DoIt(this.buf, len, false); 
 | 
                } 
 | 
            } while (len > 0 && !done); 
 | 
  
 | 
            det.DataEnd(); 
 | 
            if (this.codpage == null) { 
 | 
                if (this.m_guessing) { 
 | 
                    ret = this.guess(); 
 | 
                } 
 | 
            } else { 
 | 
                ret = this.codpage; 
 | 
            } 
 | 
            return ret; 
 | 
        } 
 | 
  
 | 
        private Charset guess() { 
 | 
            Charset ret = null; 
 | 
            String[] possibilities = det.getProbableCharsets(); 
 | 
            if (possibilities.length == this.amountOfVerifiers) { 
 | 
                ret = Charset.forName("US-ASCII"); 
 | 
            } else { 
 | 
                String check = possibilities[0]; 
 | 
                if (!check.equalsIgnoreCase("nomatch")) { 
 | 
                    for (int i = 0; ret == null && i < possibilities.length; ++i) { 
 | 
                        try { 
 | 
                            ret = Charset.forName(possibilities[i]); 
 | 
                        } catch (UnsupportedCharsetException ignored) { 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            return ret; 
 | 
        } 
 | 
  
 | 
        public void Notify(String charset) { 
 | 
            this.codpage = Charset.forName(charset); 
 | 
        } 
 | 
  
 | 
        public void Reset() { 
 | 
            det.Reset(); 
 | 
            this.codpage = null; 
 | 
        } 
 | 
  
 | 
        public boolean isGuessing() { 
 | 
            return this.m_guessing; 
 | 
        } 
 | 
  
 | 
        public synchronized void setGuessing(boolean guessing) { 
 | 
            this.m_guessing = guessing; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static abstract class AbstractCodepageDetector implements ICodepageDetector { 
 | 
        public AbstractCodepageDetector() { 
 | 
        } 
 | 
  
 | 
        public Charset detectCodepage(URL url) throws IOException { 
 | 
            BufferedInputStream in = new BufferedInputStream(url.openStream()); 
 | 
            Charset result = this.detectCodepage(in, 2147483647); 
 | 
            in.close(); 
 | 
            return result; 
 | 
        } 
 | 
  
 | 
        public final Reader open(URL url) throws IOException { 
 | 
            Reader ret = null; 
 | 
            Charset cs = this.detectCodepage(url); 
 | 
            if (cs != null) { 
 | 
                ret = new InputStreamReader(new BufferedInputStream(url.openStream()), cs); 
 | 
            } 
 | 
  
 | 
            return ret; 
 | 
        } 
 | 
  
 | 
        public int compareTo(Object o) { 
 | 
            String other = o.getClass().getName(); 
 | 
            String mine = this.getClass().getName(); 
 | 
            return mine.compareTo(other); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    interface ICodepageDetector extends Serializable, Comparable { 
 | 
        Reader open(URL var1) throws IOException; 
 | 
  
 | 
        Charset detectCodepage(URL var1) throws IOException; 
 | 
  
 | 
        Charset detectCodepage(InputStream var1, int var2) throws IOException; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 以下代码开始是由Mozilla组织提供的JChardet, 它可以检测大多数文件的编码 
 | 
     * http://jchardet.sourceforge.net/ 
 | 
     */ 
 | 
    public static class nsDetector extends nsPSMDetector implements nsICharsetDetector { 
 | 
        nsICharsetDetectionObserver mObserver = null; 
 | 
  
 | 
        public nsDetector() { 
 | 
        } 
 | 
  
 | 
        public nsDetector(int var1) { 
 | 
            super(var1); 
 | 
        } 
 | 
  
 | 
        public void Init(nsICharsetDetectionObserver var1) { 
 | 
            this.mObserver = var1; 
 | 
        } 
 | 
  
 | 
        public boolean DoIt(byte[] var1, int var2, boolean var3) { 
 | 
            if (var1 != null && !var3) { 
 | 
                this.HandleData(var1, var2); 
 | 
                return this.mDone; 
 | 
            } else { 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        public void Done() { 
 | 
            this.DataEnd(); 
 | 
        } 
 | 
  
 | 
        public void Report(String var1) { 
 | 
            if (this.mObserver != null) { 
 | 
                this.mObserver.Notify(var1); 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        public boolean isAscii(byte[] var1, int var2) { 
 | 
            for (int var3 = 0; var3 < var2; ++var3) { 
 | 
                if ((128 & var1[var3]) != 0) { 
 | 
                    return false; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            return true; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static abstract class nsPSMDetector { 
 | 
        public static final int ALL = 0; 
 | 
        public static final int JAPANESE = 1; 
 | 
        public static final int CHINESE = 2; 
 | 
        public static final int SIMPLIFIED_CHINESE = 3; 
 | 
        public static final int TRADITIONAL_CHINESE = 4; 
 | 
        public static final int KOREAN = 5; 
 | 
        public static final int NO_OF_LANGUAGES = 6; 
 | 
        public static final int MAX_VERIFIERS = 16; 
 | 
        nsVerifier[] mVerifier; 
 | 
        nsEUCStatistics[] mStatisticsData; 
 | 
        nsEUCSampler mSampler = new nsEUCSampler(); 
 | 
        byte[] mState = new byte[16]; 
 | 
        int[] mItemIdx = new int[16]; 
 | 
        int mItems; 
 | 
        int mClassItems; 
 | 
        boolean mDone; 
 | 
        boolean mRunSampler; 
 | 
        boolean mClassRunSampler; 
 | 
  
 | 
        public nsPSMDetector() { 
 | 
            this.initVerifiers(0); 
 | 
            this.Reset(); 
 | 
        } 
 | 
  
 | 
        public nsPSMDetector(int var1) { 
 | 
            this.initVerifiers(var1); 
 | 
            this.Reset(); 
 | 
        } 
 | 
  
 | 
        public nsPSMDetector(int var1, nsVerifier[] var2, nsEUCStatistics[] var3) { 
 | 
            this.mClassRunSampler = var3 != null; 
 | 
            this.mStatisticsData = var3; 
 | 
            this.mVerifier = var2; 
 | 
            this.mClassItems = var1; 
 | 
            this.Reset(); 
 | 
        } 
 | 
  
 | 
        public void Reset() { 
 | 
            this.mRunSampler = this.mClassRunSampler; 
 | 
            this.mDone = false; 
 | 
            this.mItems = this.mClassItems; 
 | 
  
 | 
            for (int var1 = 0; var1 < this.mItems; this.mItemIdx[var1] = var1++) { 
 | 
                this.mState[var1] = 0; 
 | 
            } 
 | 
  
 | 
            this.mSampler.Reset(); 
 | 
        } 
 | 
  
 | 
        protected void initVerifiers(int var1) { 
 | 
            boolean var2 = false; 
 | 
            int var3; 
 | 
            if (var1 >= 0 && var1 < 6) { 
 | 
                var3 = var1; 
 | 
            } else { 
 | 
                var3 = 0; 
 | 
            } 
 | 
  
 | 
            this.mVerifier = null; 
 | 
            this.mStatisticsData = null; 
 | 
            if (var3 == 4) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
                this.mStatisticsData = new nsEUCStatistics[]{null, new Big5Statistics(), null, new EUCTWStatistics(), null, null, null}; 
 | 
            } else if (var3 == 5) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
            } else if (var3 == 3) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
            } else if (var3 == 1) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
            } else if (var3 == 2) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
                this.mStatisticsData = new nsEUCStatistics[]{null, new GB2312Statistics(), null, new Big5Statistics(), null, null, new EUCTWStatistics(), null, null, null}; 
 | 
            } else if (var3 == 0) { 
 | 
                this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsBIG5Verifier(), new nsEUCTWVerifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; 
 | 
                this.mStatisticsData = new nsEUCStatistics[]{null, null, new EUCJPStatistics(), null, new EUCKRStatistics(), null, new Big5Statistics(), new EUCTWStatistics(), new GB2312Statistics(), null, null, null, null, null, null}; 
 | 
            } 
 | 
  
 | 
            this.mClassRunSampler = this.mStatisticsData != null; 
 | 
            this.mClassItems = this.mVerifier.length; 
 | 
        } 
 | 
  
 | 
        public abstract void Report(String var1); 
 | 
  
 | 
        public boolean HandleData(byte[] var1, int var2) { 
 | 
            for (int var3 = 0; var3 < var2; ++var3) { 
 | 
                byte var5 = var1[var3]; 
 | 
                int var4 = 0; 
 | 
  
 | 
                while (var4 < this.mItems) { 
 | 
                    byte var6 = nsVerifier.getNextState(this.mVerifier[this.mItemIdx[var4]], var5, this.mState[var4]); 
 | 
                    if (var6 == 2) { 
 | 
                        this.Report(this.mVerifier[this.mItemIdx[var4]].charset()); 
 | 
                        this.mDone = true; 
 | 
                        return this.mDone; 
 | 
                    } 
 | 
  
 | 
                    if (var6 == 1) { 
 | 
                        --this.mItems; 
 | 
                        if (var4 < this.mItems) { 
 | 
                            this.mItemIdx[var4] = this.mItemIdx[this.mItems]; 
 | 
                            this.mState[var4] = this.mState[this.mItems]; 
 | 
                        } 
 | 
                    } else { 
 | 
                        this.mState[var4++] = var6; 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                if (this.mItems <= 1) { 
 | 
                    if (1 == this.mItems) { 
 | 
                        this.Report(this.mVerifier[this.mItemIdx[0]].charset()); 
 | 
                    } 
 | 
  
 | 
                    this.mDone = true; 
 | 
                    return this.mDone; 
 | 
                } 
 | 
  
 | 
                int var7 = 0; 
 | 
                int var8 = 0; 
 | 
  
 | 
                for (var4 = 0; var4 < this.mItems; ++var4) { 
 | 
                    if (!this.mVerifier[this.mItemIdx[var4]].isUCS2() && !this.mVerifier[this.mItemIdx[var4]].isUCS2()) { 
 | 
                        ++var7; 
 | 
                        var8 = var4; 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                if (1 == var7) { 
 | 
                    this.Report(this.mVerifier[this.mItemIdx[var8]].charset()); 
 | 
                    this.mDone = true; 
 | 
                    return this.mDone; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            if (this.mRunSampler) { 
 | 
                this.Sample(var1, var2); 
 | 
            } 
 | 
  
 | 
            return this.mDone; 
 | 
        } 
 | 
  
 | 
        public void DataEnd() { 
 | 
            if (!this.mDone) { 
 | 
                if (this.mItems == 2) { 
 | 
                    if (this.mVerifier[this.mItemIdx[0]].charset().equals("GB18030")) { 
 | 
                        this.Report(this.mVerifier[this.mItemIdx[1]].charset()); 
 | 
                        this.mDone = true; 
 | 
                    } else if (this.mVerifier[this.mItemIdx[1]].charset().equals("GB18030")) { 
 | 
                        this.Report(this.mVerifier[this.mItemIdx[0]].charset()); 
 | 
                        this.mDone = true; 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                if (this.mRunSampler) { 
 | 
                    this.Sample((byte[]) null, 0, true); 
 | 
                } 
 | 
  
 | 
            } 
 | 
        } 
 | 
  
 | 
        public void Sample(byte[] var1, int var2) { 
 | 
            this.Sample(var1, var2, false); 
 | 
        } 
 | 
  
 | 
        public void Sample(byte[] var1, int var2, boolean var3) { 
 | 
            int var4 = 0; 
 | 
            int var6 = 0; 
 | 
  
 | 
            int var5; 
 | 
            for (var5 = 0; var5 < this.mItems; ++var5) { 
 | 
                if (null != this.mStatisticsData[this.mItemIdx[var5]]) { 
 | 
                    ++var6; 
 | 
                } 
 | 
  
 | 
                if (!this.mVerifier[this.mItemIdx[var5]].isUCS2() && !this.mVerifier[this.mItemIdx[var5]].charset().equals("GB18030")) { 
 | 
                    ++var4; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            this.mRunSampler = var6 > 1; 
 | 
            if (this.mRunSampler) { 
 | 
                this.mRunSampler = this.mSampler.Sample(var1, var2); 
 | 
                if ((var3 && this.mSampler.GetSomeData() || this.mSampler.EnoughData()) && var6 == var4) { 
 | 
                    this.mSampler.CalFreq(); 
 | 
                    int var7 = -1; 
 | 
                    int var8 = 0; 
 | 
                    float var9 = 0.0F; 
 | 
  
 | 
                    for (var5 = 0; var5 < this.mItems; ++var5) { 
 | 
                        if (null != this.mStatisticsData[this.mItemIdx[var5]] && !this.mVerifier[this.mItemIdx[var5]].charset().equals("Big5")) { 
 | 
                            float var10 = this.mSampler.GetScore(this.mStatisticsData[this.mItemIdx[var5]].mFirstByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mFirstByteWeight(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteWeight()); 
 | 
                            if (0 == var8++ || var9 > var10) { 
 | 
                                var9 = var10; 
 | 
                                var7 = var5; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
  
 | 
                    if (var7 >= 0) { 
 | 
                        this.Report(this.mVerifier[this.mItemIdx[var7]].charset()); 
 | 
                        this.mDone = true; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        public String[] getProbableCharsets() { 
 | 
            String[] var1; 
 | 
            if (this.mItems <= 0) { 
 | 
                var1 = new String[]{"nomatch"}; 
 | 
                return var1; 
 | 
            } else { 
 | 
                var1 = new String[this.mItems]; 
 | 
  
 | 
                for (int var2 = 0; var2 < this.mItems; ++var2) { 
 | 
                    var1[var2] = this.mVerifier[this.mItemIdx[var2]].charset(); 
 | 
                } 
 | 
  
 | 
                return var1; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static interface nsICharsetDetectionObserver { 
 | 
        void Notify(String var1); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static interface nsICharsetDetector { 
 | 
        void Init(nsICharsetDetectionObserver var1); 
 | 
  
 | 
        boolean DoIt(byte[] var1, int var2, boolean var3); 
 | 
  
 | 
        void Done(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static abstract class nsVerifier { 
 | 
        static final byte eStart = 0; 
 | 
        static final byte eError = 1; 
 | 
        static final byte eItsMe = 2; 
 | 
        static final int eidxSft4bits = 3; 
 | 
        static final int eSftMsk4bits = 7; 
 | 
        static final int eBitSft4bits = 2; 
 | 
        static final int eUnitMsk4bits = 15; 
 | 
  
 | 
        nsVerifier() { 
 | 
        } 
 | 
  
 | 
        public abstract String charset(); 
 | 
  
 | 
        public abstract int stFactor(); 
 | 
  
 | 
        public abstract int[] cclass(); 
 | 
  
 | 
        public abstract int[] states(); 
 | 
  
 | 
        public abstract boolean isUCS2(); 
 | 
  
 | 
        public static byte getNextState(nsVerifier var0, byte var1, byte var2) { 
 | 
            return (byte) (255 & var0.states()[(var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255) >> 3] >> ((var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255 & 7) << 2) & 15); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsEUCSampler { 
 | 
        int mTotal = 0; 
 | 
        int mThreshold = 200; 
 | 
        int mState = 0; 
 | 
        public int[] mFirstByteCnt = new int[94]; 
 | 
        public int[] mSecondByteCnt = new int[94]; 
 | 
        public float[] mFirstByteFreq = new float[94]; 
 | 
        public float[] mSecondByteFreq = new float[94]; 
 | 
  
 | 
        public nsEUCSampler() { 
 | 
            this.Reset(); 
 | 
        } 
 | 
  
 | 
        public void Reset() { 
 | 
            this.mTotal = 0; 
 | 
            this.mState = 0; 
 | 
  
 | 
            for (int var1 = 0; var1 < 94; ++var1) { 
 | 
                this.mFirstByteCnt[var1] = this.mSecondByteCnt[var1] = 0; 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        boolean EnoughData() { 
 | 
            return this.mTotal > this.mThreshold; 
 | 
        } 
 | 
  
 | 
        boolean GetSomeData() { 
 | 
            return this.mTotal > 1; 
 | 
        } 
 | 
  
 | 
        boolean Sample(byte[] var1, int var2) { 
 | 
            if (this.mState == 1) { 
 | 
                return false; 
 | 
            } else { 
 | 
                int var3 = 0; 
 | 
  
 | 
                for (int var4 = 0; var4 < var2 && 1 != this.mState; ++var3) { 
 | 
                    int var10002; 
 | 
                    switch (this.mState) { 
 | 
                        case 0: 
 | 
                            if ((var1[var3] & 128) != 0) { 
 | 
                                if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { 
 | 
                                    ++this.mTotal; 
 | 
                                    var10002 = this.mFirstByteCnt[(255 & var1[var3]) - 161]++; 
 | 
                                    this.mState = 2; 
 | 
                                } else { 
 | 
                                    this.mState = 1; 
 | 
                                } 
 | 
                            } 
 | 
                        case 1: 
 | 
                            break; 
 | 
                        case 2: 
 | 
                            if ((var1[var3] & 128) != 0) { 
 | 
                                if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { 
 | 
                                    ++this.mTotal; 
 | 
                                    var10002 = this.mSecondByteCnt[(255 & var1[var3]) - 161]++; 
 | 
                                    this.mState = 0; 
 | 
                                } else { 
 | 
                                    this.mState = 1; 
 | 
                                } 
 | 
                            } else { 
 | 
                                this.mState = 1; 
 | 
                            } 
 | 
                            break; 
 | 
                        default: 
 | 
                            this.mState = 1; 
 | 
                    } 
 | 
  
 | 
                    ++var4; 
 | 
                } 
 | 
  
 | 
                return 1 != this.mState; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        void CalFreq() { 
 | 
            for (int var1 = 0; var1 < 94; ++var1) { 
 | 
                this.mFirstByteFreq[var1] = (float) this.mFirstByteCnt[var1] / (float) this.mTotal; 
 | 
                this.mSecondByteFreq[var1] = (float) this.mSecondByteCnt[var1] / (float) this.mTotal; 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        float GetScore(float[] var1, float var2, float[] var3, float var4) { 
 | 
            return var2 * this.GetScore(var1, this.mFirstByteFreq) + var4 * this.GetScore(var3, this.mSecondByteFreq); 
 | 
        } 
 | 
  
 | 
        float GetScore(float[] var1, float[] var2) { 
 | 
            float var4 = 0.0F; 
 | 
  
 | 
            for (int var5 = 0; var5 < 94; ++var5) { 
 | 
                float var3 = var1[var5] - var2[var5]; 
 | 
                var4 += var3 * var3; 
 | 
            } 
 | 
  
 | 
            return (float) Math.sqrt((double) var4) / 94.0F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static abstract class nsEUCStatistics { 
 | 
        public abstract float[] mFirstByteFreq(); 
 | 
  
 | 
        public abstract float mFirstByteStdDev(); 
 | 
  
 | 
        public abstract float mFirstByteMean(); 
 | 
  
 | 
        public abstract float mFirstByteWeight(); 
 | 
  
 | 
        public abstract float[] mSecondByteFreq(); 
 | 
  
 | 
        public abstract float mSecondByteStdDev(); 
 | 
  
 | 
        public abstract float mSecondByteMean(); 
 | 
  
 | 
        public abstract float mSecondByteWeight(); 
 | 
  
 | 
        public nsEUCStatistics() { 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class EUCJPStatistics extends nsEUCStatistics { 
 | 
        static float[] mFirstByteFreq; 
 | 
        static float mFirstByteStdDev; 
 | 
        static float mFirstByteMean; 
 | 
        static float mFirstByteWeight; 
 | 
        static float[] mSecondByteFreq; 
 | 
        static float mSecondByteStdDev; 
 | 
        static float mSecondByteMean; 
 | 
        static float mSecondByteWeight; 
 | 
  
 | 
        public float[] mFirstByteFreq() { 
 | 
            return mFirstByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteStdDev() { 
 | 
            return mFirstByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteMean() { 
 | 
            return mFirstByteMean; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteWeight() { 
 | 
            return mFirstByteWeight; 
 | 
        } 
 | 
  
 | 
        public float[] mSecondByteFreq() { 
 | 
            return mSecondByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteStdDev() { 
 | 
            return mSecondByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteMean() { 
 | 
            return mSecondByteMean; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteWeight() { 
 | 
            return mSecondByteWeight; 
 | 
        } 
 | 
  
 | 
        public EUCJPStatistics() { 
 | 
            mFirstByteFreq = new float[]{0.364808F, 0.0F, 0.0F, 0.145325F, 0.304891F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.001835F, 0.010771F, 0.006462F, 0.001157F, 0.002114F, 0.003231F, 0.001356F, 0.00742F, 0.004189F, 0.003231F, 0.003032F, 0.03319F, 0.006303F, 0.006064F, 0.009973F, 0.002354F, 0.00367F, 0.009135F, 0.001675F, 0.002792F, 0.002194F, 0.01472F, 0.011928F, 8.78E-4F, 0.013124F, 0.001077F, 0.009295F, 0.003471F, 0.002872F, 0.002433F, 9.57E-4F, 0.001636F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 2.79E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 0.0F}; 
 | 
            mFirstByteStdDev = 0.050407F; 
 | 
            mFirstByteMean = 0.010638F; 
 | 
            mFirstByteWeight = 0.640871F; 
 | 
            mSecondByteFreq = new float[]{0.002473F, 0.039134F, 0.152745F, 0.009694F, 3.59E-4F, 0.02218F, 7.58E-4F, 0.004308F, 1.6E-4F, 0.002513F, 0.003072F, 0.001316F, 0.00383F, 0.001037F, 0.00359F, 9.57E-4F, 1.6E-4F, 2.39E-4F, 0.006462F, 0.001596F, 0.031554F, 0.001316F, 0.002194F, 0.016555F, 0.003271F, 6.78E-4F, 5.98E-4F, 0.206438F, 7.18E-4F, 0.001077F, 0.00371F, 0.001356F, 0.001356F, 4.39E-4F, 0.004388F, 0.005704F, 8.78E-4F, 0.010172F, 0.007061F, 0.01468F, 6.38E-4F, 0.02573F, 0.002792F, 7.18E-4F, 0.001795F, 0.091551F, 7.58E-4F, 0.003909F, 5.58E-4F, 0.031195F, 0.007061F, 0.001316F, 0.022579F, 0.006981F, 0.00726F, 0.001117F, 2.39E-4F, 0.012127F, 8.78E-4F, 0.00379F, 0.001077F, 7.58E-4F, 0.002114F, 0.002234F, 6.78E-4F, 0.002992F, 0.003311F, 0.023416F, 0.001237F, 0.002753F, 0.005146F, 0.002194F, 0.007021F, 0.008497F, 0.013763F, 0.011768F, 0.006303F, 0.001915F, 6.38E-4F, 0.008776F, 9.18E-4F, 0.003431F, 0.057603F, 4.39E-4F, 4.39E-4F, 7.58E-4F, 0.002872F, 0.001675F, 0.01105F, 0.0F, 2.79E-4F, 0.012127F, 7.18E-4F, 0.00738F}; 
 | 
            mSecondByteStdDev = 0.028247F; 
 | 
            mSecondByteMean = 0.010638F; 
 | 
            mSecondByteWeight = 0.359129F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsEUCJPVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsEUCJPVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 1145324612; 
 | 
            cclass[1] = 1430537284; 
 | 
            cclass[2] = 1145324612; 
 | 
            cclass[3] = 1145328708; 
 | 
            cclass[4] = 1145324612; 
 | 
            cclass[5] = 1145324612; 
 | 
            cclass[6] = 1145324612; 
 | 
            cclass[7] = 1145324612; 
 | 
            cclass[8] = 1145324612; 
 | 
            cclass[9] = 1145324612; 
 | 
            cclass[10] = 1145324612; 
 | 
            cclass[11] = 1145324612; 
 | 
            cclass[12] = 1145324612; 
 | 
            cclass[13] = 1145324612; 
 | 
            cclass[14] = 1145324612; 
 | 
            cclass[15] = 1145324612; 
 | 
            cclass[16] = 1431655765; 
 | 
            cclass[17] = 827675989; 
 | 
            cclass[18] = 1431655765; 
 | 
            cclass[19] = 1431655765; 
 | 
            cclass[20] = 572662309; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 0; 
 | 
            cclass[29] = 0; 
 | 
            cclass[30] = 0; 
 | 
            cclass[31] = 1342177280; 
 | 
            states = new int[5]; 
 | 
            states[0] = 286282563; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 286265378; 
 | 
            states[3] = 319885329; 
 | 
            states[4] = 4371; 
 | 
            charset = "EUC-JP"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class EUCKRStatistics extends nsEUCStatistics { 
 | 
        static float[] mFirstByteFreq; 
 | 
        static float mFirstByteStdDev; 
 | 
        static float mFirstByteMean; 
 | 
        static float mFirstByteWeight; 
 | 
        static float[] mSecondByteFreq; 
 | 
        static float mSecondByteStdDev; 
 | 
        static float mSecondByteMean; 
 | 
        static float mSecondByteWeight; 
 | 
  
 | 
        public float[] mFirstByteFreq() { 
 | 
            return mFirstByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteStdDev() { 
 | 
            return mFirstByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteMean() { 
 | 
            return mFirstByteMean; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteWeight() { 
 | 
            return mFirstByteWeight; 
 | 
        } 
 | 
  
 | 
        public float[] mSecondByteFreq() { 
 | 
            return mSecondByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteStdDev() { 
 | 
            return mSecondByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteMean() { 
 | 
            return mSecondByteMean; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteWeight() { 
 | 
            return mSecondByteWeight; 
 | 
        } 
 | 
  
 | 
        public EUCKRStatistics() { 
 | 
            mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 4.12E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.057502F, 0.033182F, 0.002267F, 0.016076F, 0.014633F, 0.032976F, 0.004122F, 0.011336F, 0.058533F, 0.024526F, 0.025969F, 0.054411F, 0.01958F, 0.063273F, 0.113974F, 0.029885F, 0.150041F, 0.059151F, 0.002679F, 0.009893F, 0.014839F, 0.026381F, 0.015045F, 0.069456F, 0.08986F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; 
 | 
            mFirstByteStdDev = 0.025593F; 
 | 
            mFirstByteMean = 0.010638F; 
 | 
            mFirstByteWeight = 0.647437F; 
 | 
            mSecondByteFreq = new float[]{0.016694F, 0.0F, 0.012778F, 0.030091F, 0.002679F, 0.006595F, 0.001855F, 8.24E-4F, 0.005977F, 0.00474F, 0.003092F, 8.24E-4F, 0.01958F, 0.037304F, 0.008244F, 0.014633F, 0.001031F, 0.0F, 0.003298F, 0.002061F, 0.006183F, 0.005977F, 8.24E-4F, 0.021847F, 0.014839F, 0.052968F, 0.017312F, 0.007626F, 4.12E-4F, 8.24E-4F, 0.011129F, 0.0F, 4.12E-4F, 0.001649F, 0.005977F, 0.065746F, 0.020198F, 0.021434F, 0.014633F, 0.004122F, 0.001649F, 8.24E-4F, 8.24E-4F, 0.051937F, 0.01958F, 0.023289F, 0.026381F, 0.040396F, 0.009068F, 0.001443F, 0.00371F, 0.00742F, 0.001443F, 0.01319F, 0.002885F, 4.12E-4F, 0.003298F, 0.025969F, 4.12E-4F, 4.12E-4F, 0.006183F, 0.003298F, 0.066983F, 0.002679F, 0.002267F, 0.011129F, 4.12E-4F, 0.010099F, 0.015251F, 0.007626F, 0.043899F, 0.00371F, 0.002679F, 0.001443F, 0.010923F, 0.002885F, 0.009068F, 0.019992F, 4.12E-4F, 0.00845F, 0.005153F, 0.0F, 0.010099F, 0.0F, 0.001649F, 0.01216F, 0.011542F, 0.006595F, 0.001855F, 0.010923F, 4.12E-4F, 0.023702F, 0.00371F, 0.001855F}; 
 | 
            mSecondByteStdDev = 0.013937F; 
 | 
            mSecondByteMean = 0.010638F; 
 | 
            mSecondByteWeight = 0.352563F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsEUCKRVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsEUCKRVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331153; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 286331153; 
 | 
            cclass[7] = 286331153; 
 | 
            cclass[8] = 286331153; 
 | 
            cclass[9] = 286331153; 
 | 
            cclass[10] = 286331153; 
 | 
            cclass[11] = 286331153; 
 | 
            cclass[12] = 286331153; 
 | 
            cclass[13] = 286331153; 
 | 
            cclass[14] = 286331153; 
 | 
            cclass[15] = 286331153; 
 | 
            cclass[16] = 0; 
 | 
            cclass[17] = 0; 
 | 
            cclass[18] = 0; 
 | 
            cclass[19] = 0; 
 | 
            cclass[20] = 572662304; 
 | 
            cclass[21] = 858923554; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662322; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 572662306; 
 | 
            cclass[29] = 572662306; 
 | 
            cclass[30] = 572662306; 
 | 
            cclass[31] = 35791394; 
 | 
            states = new int[2]; 
 | 
            states[0] = 286331649; 
 | 
            states[1] = 1122850; 
 | 
            charset = "EUC-KR"; 
 | 
            stFactor = 4; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class EUCTWStatistics extends nsEUCStatistics { 
 | 
        static float[] mFirstByteFreq; 
 | 
        static float mFirstByteStdDev; 
 | 
        static float mFirstByteMean; 
 | 
        static float mFirstByteWeight; 
 | 
        static float[] mSecondByteFreq; 
 | 
        static float mSecondByteStdDev; 
 | 
        static float mSecondByteMean; 
 | 
        static float mSecondByteWeight; 
 | 
  
 | 
        public float[] mFirstByteFreq() { 
 | 
            return mFirstByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteStdDev() { 
 | 
            return mFirstByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteMean() { 
 | 
            return mFirstByteMean; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteWeight() { 
 | 
            return mFirstByteWeight; 
 | 
        } 
 | 
  
 | 
        public float[] mSecondByteFreq() { 
 | 
            return mSecondByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteStdDev() { 
 | 
            return mSecondByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteMean() { 
 | 
            return mSecondByteMean; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteWeight() { 
 | 
            return mSecondByteWeight; 
 | 
        } 
 | 
  
 | 
        public EUCTWStatistics() { 
 | 
            mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.119286F, 0.052233F, 0.044126F, 0.052494F, 0.045906F, 0.019038F, 0.032465F, 0.026252F, 0.025502F, 0.015963F, 0.052493F, 0.019256F, 0.015137F, 0.031782F, 0.01737F, 0.018494F, 0.015575F, 0.016621F, 0.007444F, 0.011642F, 0.013916F, 0.019159F, 0.016445F, 0.007851F, 0.011079F, 0.022842F, 0.015513F, 0.010033F, 0.00995F, 0.010347F, 0.013103F, 0.015371F, 0.012502F, 0.007436F, 0.018253F, 0.014134F, 0.008907F, 0.005411F, 0.00957F, 0.013598F, 0.006092F, 0.007409F, 0.008432F, 0.005816F, 0.009349F, 0.005472F, 0.00717F, 0.00742F, 0.003681F, 0.007523F, 0.00461F, 0.006154F, 0.003348F, 0.005074F, 0.005922F, 0.005254F, 0.004682F, 0.002093F, 0.0F}; 
 | 
            mFirstByteStdDev = 0.016681F; 
 | 
            mFirstByteMean = 0.010638F; 
 | 
            mFirstByteWeight = 0.715599F; 
 | 
            mSecondByteFreq = new float[]{0.028933F, 0.011371F, 0.011053F, 0.007232F, 0.010192F, 0.004093F, 0.015043F, 0.011752F, 0.022387F, 0.00841F, 0.012448F, 0.007473F, 0.003594F, 0.007139F, 0.018912F, 0.006083F, 0.003302F, 0.010215F, 0.008791F, 0.024236F, 0.014107F, 0.014108F, 0.010303F, 0.009728F, 0.007877F, 0.009719F, 0.007952F, 0.021028F, 0.005764F, 0.009341F, 0.006591F, 0.012517F, 0.005921F, 0.008982F, 0.008771F, 0.012802F, 0.005926F, 0.008342F, 0.003086F, 0.006843F, 0.007576F, 0.004734F, 0.016404F, 0.008803F, 0.008071F, 0.005349F, 0.008566F, 0.01084F, 0.015401F, 0.031904F, 0.00867F, 0.011479F, 0.010936F, 0.007617F, 0.008995F, 0.008114F, 0.008658F, 0.005934F, 0.010452F, 0.009142F, 0.004519F, 0.008339F, 0.007476F, 0.007027F, 0.006025F, 0.021804F, 0.024248F, 0.015895F, 0.003768F, 0.010171F, 0.010007F, 0.010178F, 0.008316F, 0.006832F, 0.006364F, 0.009141F, 0.009148F, 0.012081F, 0.011914F, 0.004464F, 0.014257F, 0.006907F, 0.011292F, 0.018622F, 0.008149F, 0.004636F, 0.006612F, 0.013478F, 0.012614F, 0.005186F, 0.048285F, 0.006816F, 0.006743F, 0.008671F}; 
 | 
            mSecondByteStdDev = 0.00663F; 
 | 
            mSecondByteMean = 0.010638F; 
 | 
            mSecondByteWeight = 0.284401F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsEUCTWVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsEUCTWVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 572662306; 
 | 
            cclass[1] = 2236962; 
 | 
            cclass[2] = 572662306; 
 | 
            cclass[3] = 572654114; 
 | 
            cclass[4] = 572662306; 
 | 
            cclass[5] = 572662306; 
 | 
            cclass[6] = 572662306; 
 | 
            cclass[7] = 572662306; 
 | 
            cclass[8] = 572662306; 
 | 
            cclass[9] = 572662306; 
 | 
            cclass[10] = 572662306; 
 | 
            cclass[11] = 572662306; 
 | 
            cclass[12] = 572662306; 
 | 
            cclass[13] = 572662306; 
 | 
            cclass[14] = 572662306; 
 | 
            cclass[15] = 572662306; 
 | 
            cclass[16] = 0; 
 | 
            cclass[17] = 100663296; 
 | 
            cclass[18] = 0; 
 | 
            cclass[19] = 0; 
 | 
            cclass[20] = 1145324592; 
 | 
            cclass[21] = 286331221; 
 | 
            cclass[22] = 286331153; 
 | 
            cclass[23] = 286331153; 
 | 
            cclass[24] = 858985233; 
 | 
            cclass[25] = 858993459; 
 | 
            cclass[26] = 858993459; 
 | 
            cclass[27] = 858993459; 
 | 
            cclass[28] = 858993459; 
 | 
            cclass[29] = 858993459; 
 | 
            cclass[30] = 858993459; 
 | 
            cclass[31] = 53687091; 
 | 
            states = new int[6]; 
 | 
            states[0] = 338898961; 
 | 
            states[1] = 571543825; 
 | 
            states[2] = 269623842; 
 | 
            states[3] = 286330880; 
 | 
            states[4] = 1052949; 
 | 
            states[5] = 16; 
 | 
            charset = "x-euc-tw"; 
 | 
            stFactor = 7; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class Big5Statistics extends nsEUCStatistics { 
 | 
        static float[] mFirstByteFreq; 
 | 
        static float mFirstByteStdDev; 
 | 
        static float mFirstByteMean; 
 | 
        static float mFirstByteWeight; 
 | 
        static float[] mSecondByteFreq; 
 | 
        static float mSecondByteStdDev; 
 | 
        static float mSecondByteMean; 
 | 
        static float mSecondByteWeight; 
 | 
  
 | 
        public float[] mFirstByteFreq() { 
 | 
            return mFirstByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteStdDev() { 
 | 
            return mFirstByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteMean() { 
 | 
            return mFirstByteMean; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteWeight() { 
 | 
            return mFirstByteWeight; 
 | 
        } 
 | 
  
 | 
        public float[] mSecondByteFreq() { 
 | 
            return mSecondByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteStdDev() { 
 | 
            return mSecondByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteMean() { 
 | 
            return mSecondByteMean; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteWeight() { 
 | 
            return mSecondByteWeight; 
 | 
        } 
 | 
  
 | 
        public Big5Statistics() { 
 | 
            mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.114427F, 0.061058F, 0.075598F, 0.048386F, 0.063966F, 0.027094F, 0.095787F, 0.029525F, 0.031331F, 0.036915F, 0.021805F, 0.019349F, 0.037496F, 0.018068F, 0.01276F, 0.030053F, 0.017339F, 0.016731F, 0.019501F, 0.01124F, 0.032973F, 0.016658F, 0.015872F, 0.021458F, 0.012378F, 0.017003F, 0.020802F, 0.012454F, 0.009239F, 0.012829F, 0.007922F, 0.010079F, 0.009815F, 0.010104F, 0.0F, 0.0F, 0.0F, 5.3E-5F, 3.5E-5F, 1.05E-4F, 3.1E-5F, 8.8E-5F, 2.7E-5F, 2.7E-5F, 2.6E-5F, 3.5E-5F, 2.4E-5F, 3.4E-5F, 3.75E-4F, 2.5E-5F, 2.8E-5F, 2.0E-5F, 2.4E-5F, 2.8E-5F, 3.1E-5F, 5.9E-5F, 4.0E-5F, 3.0E-5F, 7.9E-5F, 3.7E-5F, 4.0E-5F, 2.3E-5F, 3.0E-5F, 2.7E-5F, 6.4E-5F, 2.0E-5F, 2.7E-5F, 2.5E-5F, 7.4E-5F, 1.9E-5F, 2.3E-5F, 2.1E-5F, 1.8E-5F, 1.7E-5F, 3.5E-5F, 2.1E-5F, 1.9E-5F, 2.5E-5F, 1.7E-5F, 3.7E-5F, 1.8E-5F, 1.8E-5F, 1.9E-5F, 2.2E-5F, 3.3E-5F, 3.2E-5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; 
 | 
            mFirstByteStdDev = 0.020606F; 
 | 
            mFirstByteMean = 0.010638F; 
 | 
            mFirstByteWeight = 0.675261F; 
 | 
            mSecondByteFreq = new float[]{0.020256F, 0.003293F, 0.045811F, 0.01665F, 0.007066F, 0.004146F, 0.009229F, 0.007333F, 0.003296F, 0.005239F, 0.008282F, 0.003791F, 0.006116F, 0.003536F, 0.004024F, 0.016654F, 0.009334F, 0.005429F, 0.033392F, 0.006121F, 0.008983F, 0.002801F, 0.004221F, 0.010357F, 0.014695F, 0.077937F, 0.006314F, 0.00402F, 0.007331F, 0.00715F, 0.005341F, 0.009195F, 0.00535F, 0.005698F, 0.004472F, 0.007242F, 0.004039F, 0.011154F, 0.016184F, 0.004741F, 0.012814F, 0.007679F, 0.008045F, 0.016631F, 0.009451F, 0.016487F, 0.007287F, 0.012688F, 0.017421F, 0.013205F, 0.03148F, 0.003404F, 0.009149F, 0.008921F, 0.007514F, 0.008683F, 0.008203F, 0.031403F, 0.011733F, 0.015617F, 0.015306F, 0.004004F, 0.010899F, 0.009961F, 0.008388F, 0.01092F, 0.003925F, 0.008585F, 0.009108F, 0.015546F, 0.004659F, 0.006934F, 0.007023F, 0.020252F, 0.005387F, 0.024704F, 0.006963F, 0.002625F, 0.009512F, 0.002971F, 0.008233F, 0.01F, 0.011973F, 0.010553F, 0.005945F, 0.006349F, 0.009401F, 0.008577F, 0.008186F, 0.008159F, 0.005033F, 0.008714F, 0.010614F, 0.006554F}; 
 | 
            mSecondByteStdDev = 0.009909F; 
 | 
            mSecondByteMean = 0.010638F; 
 | 
            mSecondByteWeight = 0.324739F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsBIG5Verifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsBIG5Verifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331153; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 286331153; 
 | 
            cclass[7] = 286331153; 
 | 
            cclass[8] = 572662306; 
 | 
            cclass[9] = 572662306; 
 | 
            cclass[10] = 572662306; 
 | 
            cclass[11] = 572662306; 
 | 
            cclass[12] = 572662306; 
 | 
            cclass[13] = 572662306; 
 | 
            cclass[14] = 572662306; 
 | 
            cclass[15] = 304226850; 
 | 
            cclass[16] = 1145324612; 
 | 
            cclass[17] = 1145324612; 
 | 
            cclass[18] = 1145324612; 
 | 
            cclass[19] = 1145324612; 
 | 
            cclass[20] = 858993460; 
 | 
            cclass[21] = 858993459; 
 | 
            cclass[22] = 858993459; 
 | 
            cclass[23] = 858993459; 
 | 
            cclass[24] = 858993459; 
 | 
            cclass[25] = 858993459; 
 | 
            cclass[26] = 858993459; 
 | 
            cclass[27] = 858993459; 
 | 
            cclass[28] = 858993459; 
 | 
            cclass[29] = 858993459; 
 | 
            cclass[30] = 858993459; 
 | 
            cclass[31] = 53687091; 
 | 
            states = new int[3]; 
 | 
            states[0] = 286339073; 
 | 
            states[1] = 304226833; 
 | 
            states[2] = 1; 
 | 
            charset = "Big5"; 
 | 
            stFactor = 5; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class GB2312Statistics extends nsEUCStatistics { 
 | 
        static float[] mFirstByteFreq; 
 | 
        static float mFirstByteStdDev; 
 | 
        static float mFirstByteMean; 
 | 
        static float mFirstByteWeight; 
 | 
        static float[] mSecondByteFreq; 
 | 
        static float mSecondByteStdDev; 
 | 
        static float mSecondByteMean; 
 | 
        static float mSecondByteWeight; 
 | 
  
 | 
        public float[] mFirstByteFreq() { 
 | 
            return mFirstByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteStdDev() { 
 | 
            return mFirstByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteMean() { 
 | 
            return mFirstByteMean; 
 | 
        } 
 | 
  
 | 
        public float mFirstByteWeight() { 
 | 
            return mFirstByteWeight; 
 | 
        } 
 | 
  
 | 
        public float[] mSecondByteFreq() { 
 | 
            return mSecondByteFreq; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteStdDev() { 
 | 
            return mSecondByteStdDev; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteMean() { 
 | 
            return mSecondByteMean; 
 | 
        } 
 | 
  
 | 
        public float mSecondByteWeight() { 
 | 
            return mSecondByteWeight; 
 | 
        } 
 | 
  
 | 
        public GB2312Statistics() { 
 | 
            mFirstByteFreq = new float[]{0.011628F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.011628F, 0.012403F, 0.009302F, 0.003876F, 0.017829F, 0.037209F, 0.008527F, 0.010078F, 0.01938F, 0.054264F, 0.010078F, 0.041085F, 0.02093F, 0.018605F, 0.010078F, 0.013178F, 0.016279F, 0.006202F, 0.009302F, 0.017054F, 0.011628F, 0.008527F, 0.004651F, 0.006202F, 0.017829F, 0.024806F, 0.020155F, 0.013953F, 0.032558F, 0.035659F, 0.068217F, 0.010853F, 0.036434F, 0.117054F, 0.027907F, 0.100775F, 0.010078F, 0.017829F, 0.062016F, 0.012403F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.00155F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; 
 | 
            mFirstByteStdDev = 0.020081F; 
 | 
            mFirstByteMean = 0.010638F; 
 | 
            mFirstByteWeight = 0.586533F; 
 | 
            mSecondByteFreq = new float[]{0.006202F, 0.031008F, 0.005426F, 0.003101F, 0.00155F, 0.003101F, 0.082171F, 0.014729F, 0.006977F, 0.00155F, 0.013953F, 0.0F, 0.013953F, 0.010078F, 0.008527F, 0.006977F, 0.004651F, 0.003101F, 0.003101F, 0.003101F, 0.008527F, 0.003101F, 0.005426F, 0.005426F, 0.005426F, 0.003101F, 0.00155F, 0.006202F, 0.014729F, 0.010853F, 0.0F, 0.011628F, 0.0F, 0.031783F, 0.013953F, 0.030233F, 0.039535F, 0.008527F, 0.015504F, 0.0F, 0.003101F, 0.008527F, 0.016279F, 0.005426F, 0.00155F, 0.013953F, 0.013953F, 0.044961F, 0.003101F, 0.004651F, 0.006977F, 0.00155F, 0.005426F, 0.012403F, 0.00155F, 0.015504F, 0.0F, 0.006202F, 0.00155F, 0.0F, 0.007752F, 0.006977F, 0.00155F, 0.009302F, 0.011628F, 0.004651F, 0.010853F, 0.012403F, 0.017829F, 0.005426F, 0.024806F, 0.0F, 0.006202F, 0.0F, 0.082171F, 0.015504F, 0.004651F, 0.0F, 0.006977F, 0.004651F, 0.0F, 0.008527F, 0.012403F, 0.004651F, 0.003876F, 0.003101F, 0.022481F, 0.024031F, 0.00155F, 0.047287F, 0.009302F, 0.00155F, 0.005426F, 0.017054F}; 
 | 
            mSecondByteStdDev = 0.014156F; 
 | 
            mSecondByteMean = 0.010638F; 
 | 
            mSecondByteWeight = 0.413467F; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsGB2312Verifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsGB2312Verifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331153; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 286331153; 
 | 
            cclass[7] = 286331153; 
 | 
            cclass[8] = 286331153; 
 | 
            cclass[9] = 286331153; 
 | 
            cclass[10] = 286331153; 
 | 
            cclass[11] = 286331153; 
 | 
            cclass[12] = 286331153; 
 | 
            cclass[13] = 286331153; 
 | 
            cclass[14] = 286331153; 
 | 
            cclass[15] = 286331153; 
 | 
            cclass[16] = 0; 
 | 
            cclass[17] = 0; 
 | 
            cclass[18] = 0; 
 | 
            cclass[19] = 0; 
 | 
            cclass[20] = 572662304; 
 | 
            cclass[21] = 858993442; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 572662306; 
 | 
            cclass[29] = 572662306; 
 | 
            cclass[30] = 572662306; 
 | 
            cclass[31] = 35791394; 
 | 
            states = new int[2]; 
 | 
            states[0] = 286331649; 
 | 
            states[1] = 1122850; 
 | 
            charset = "GB2312"; 
 | 
            stFactor = 4; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsGB18030Verifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsGB18030Verifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331153; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 858993459; 
 | 
            cclass[7] = 286331187; 
 | 
            cclass[8] = 572662306; 
 | 
            cclass[9] = 572662306; 
 | 
            cclass[10] = 572662306; 
 | 
            cclass[11] = 572662306; 
 | 
            cclass[12] = 572662306; 
 | 
            cclass[13] = 572662306; 
 | 
            cclass[14] = 572662306; 
 | 
            cclass[15] = 1109533218; 
 | 
            cclass[16] = 1717986917; 
 | 
            cclass[17] = 1717986918; 
 | 
            cclass[18] = 1717986918; 
 | 
            cclass[19] = 1717986918; 
 | 
            cclass[20] = 1717986918; 
 | 
            cclass[21] = 1717986918; 
 | 
            cclass[22] = 1717986918; 
 | 
            cclass[23] = 1717986918; 
 | 
            cclass[24] = 1717986918; 
 | 
            cclass[25] = 1717986918; 
 | 
            cclass[26] = 1717986918; 
 | 
            cclass[27] = 1717986918; 
 | 
            cclass[28] = 1717986918; 
 | 
            cclass[29] = 1717986918; 
 | 
            cclass[30] = 1717986918; 
 | 
            cclass[31] = 107374182; 
 | 
            states = new int[6]; 
 | 
            states[0] = 318767105; 
 | 
            states[1] = 571543825; 
 | 
            states[2] = 17965602; 
 | 
            states[3] = 286326804; 
 | 
            states[4] = 303109393; 
 | 
            states[5] = 17; 
 | 
            charset = "GB18030"; 
 | 
            stFactor = 7; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsISO2022CNVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsISO2022CNVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 2; 
 | 
            cclass[1] = 0; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 4096; 
 | 
            cclass[4] = 0; 
 | 
            cclass[5] = 48; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 16384; 
 | 
            cclass[9] = 0; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 0; 
 | 
            cclass[16] = 572662306; 
 | 
            cclass[17] = 572662306; 
 | 
            cclass[18] = 572662306; 
 | 
            cclass[19] = 572662306; 
 | 
            cclass[20] = 572662306; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 572662306; 
 | 
            cclass[29] = 572662306; 
 | 
            cclass[30] = 572662306; 
 | 
            cclass[31] = 572662306; 
 | 
            states = new int[8]; 
 | 
            states[0] = 304; 
 | 
            states[1] = 286331152; 
 | 
            states[2] = 572662289; 
 | 
            states[3] = 336663074; 
 | 
            states[4] = 286335249; 
 | 
            states[5] = 286331237; 
 | 
            states[6] = 286335249; 
 | 
            states[7] = 18944273; 
 | 
            charset = "ISO-2022-CN"; 
 | 
            stFactor = 9; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsISO2022JPVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsISO2022JPVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 2; 
 | 
            cclass[1] = 570425344; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 4096; 
 | 
            cclass[4] = 458752; 
 | 
            cclass[5] = 3; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 1030; 
 | 
            cclass[9] = 1280; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 0; 
 | 
            cclass[16] = 572662306; 
 | 
            cclass[17] = 572662306; 
 | 
            cclass[18] = 572662306; 
 | 
            cclass[19] = 572662306; 
 | 
            cclass[20] = 572662306; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 572662306; 
 | 
            cclass[29] = 572662306; 
 | 
            cclass[30] = 572662306; 
 | 
            cclass[31] = 572662306; 
 | 
            states = new int[6]; 
 | 
            states[0] = 304; 
 | 
            states[1] = 286331153; 
 | 
            states[2] = 572662306; 
 | 
            states[3] = 1091653905; 
 | 
            states[4] = 303173905; 
 | 
            states[5] = 287445265; 
 | 
            charset = "ISO-2022-JP"; 
 | 
            stFactor = 8; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsISO2022KRVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsISO2022KRVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 2; 
 | 
            cclass[1] = 0; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 4096; 
 | 
            cclass[4] = 196608; 
 | 
            cclass[5] = 64; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 20480; 
 | 
            cclass[9] = 0; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 0; 
 | 
            cclass[16] = 572662306; 
 | 
            cclass[17] = 572662306; 
 | 
            cclass[18] = 572662306; 
 | 
            cclass[19] = 572662306; 
 | 
            cclass[20] = 572662306; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 572662306; 
 | 
            cclass[29] = 572662306; 
 | 
            cclass[30] = 572662306; 
 | 
            cclass[31] = 572662306; 
 | 
            states = new int[5]; 
 | 
            states[0] = 285212976; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 289476898; 
 | 
            states[3] = 286593297; 
 | 
            states[4] = 8465; 
 | 
            charset = "ISO-2022-KR"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsUCS2BEVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsUCS2BEVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 0; 
 | 
            cclass[1] = 2097408; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 12288; 
 | 
            cclass[4] = 0; 
 | 
            cclass[5] = 3355440; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 0; 
 | 
            cclass[9] = 0; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 0; 
 | 
            cclass[16] = 0; 
 | 
            cclass[17] = 0; 
 | 
            cclass[18] = 0; 
 | 
            cclass[19] = 0; 
 | 
            cclass[20] = 0; 
 | 
            cclass[21] = 0; 
 | 
            cclass[22] = 0; 
 | 
            cclass[23] = 0; 
 | 
            cclass[24] = 0; 
 | 
            cclass[25] = 0; 
 | 
            cclass[26] = 0; 
 | 
            cclass[27] = 0; 
 | 
            cclass[28] = 0; 
 | 
            cclass[29] = 0; 
 | 
            cclass[30] = 0; 
 | 
            cclass[31] = 1409286144; 
 | 
            states = new int[7]; 
 | 
            states[0] = 288626549; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 291923490; 
 | 
            states[3] = 1713792614; 
 | 
            states[4] = 393569894; 
 | 
            states[5] = 1717659269; 
 | 
            states[6] = 1140326; 
 | 
            charset = "UTF-16BE"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return true; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsUCS2LEVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsUCS2LEVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 0; 
 | 
            cclass[1] = 2097408; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 12288; 
 | 
            cclass[4] = 0; 
 | 
            cclass[5] = 3355440; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 0; 
 | 
            cclass[9] = 0; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 0; 
 | 
            cclass[16] = 0; 
 | 
            cclass[17] = 0; 
 | 
            cclass[18] = 0; 
 | 
            cclass[19] = 0; 
 | 
            cclass[20] = 0; 
 | 
            cclass[21] = 0; 
 | 
            cclass[22] = 0; 
 | 
            cclass[23] = 0; 
 | 
            cclass[24] = 0; 
 | 
            cclass[25] = 0; 
 | 
            cclass[26] = 0; 
 | 
            cclass[27] = 0; 
 | 
            cclass[28] = 0; 
 | 
            cclass[29] = 0; 
 | 
            cclass[30] = 0; 
 | 
            cclass[31] = 1409286144; 
 | 
            states = new int[7]; 
 | 
            states[0] = 288647014; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 303387938; 
 | 
            states[3] = 1712657749; 
 | 
            states[4] = 357927015; 
 | 
            states[5] = 1427182933; 
 | 
            states[6] = 1381717; 
 | 
            charset = "UTF-16LE"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return true; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsCP1252Verifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsCP1252Verifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 572662305; 
 | 
            cclass[1] = 2236962; 
 | 
            cclass[2] = 572662306; 
 | 
            cclass[3] = 572654114; 
 | 
            cclass[4] = 572662306; 
 | 
            cclass[5] = 572662306; 
 | 
            cclass[6] = 572662306; 
 | 
            cclass[7] = 572662306; 
 | 
            cclass[8] = 572662306; 
 | 
            cclass[9] = 572662306; 
 | 
            cclass[10] = 572662306; 
 | 
            cclass[11] = 572662306; 
 | 
            cclass[12] = 572662306; 
 | 
            cclass[13] = 572662306; 
 | 
            cclass[14] = 572662306; 
 | 
            cclass[15] = 572662306; 
 | 
            cclass[16] = 572662274; 
 | 
            cclass[17] = 16851234; 
 | 
            cclass[18] = 572662304; 
 | 
            cclass[19] = 285286690; 
 | 
            cclass[20] = 572662306; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 286331153; 
 | 
            cclass[25] = 286331153; 
 | 
            cclass[26] = 554766609; 
 | 
            cclass[27] = 286331153; 
 | 
            cclass[28] = 286331153; 
 | 
            cclass[29] = 286331153; 
 | 
            cclass[30] = 554766609; 
 | 
            cclass[31] = 286331153; 
 | 
            states = new int[3]; 
 | 
            states[0] = 571543601; 
 | 
            states[1] = 340853778; 
 | 
            states[2] = 65; 
 | 
            charset = "windows-1252"; 
 | 
            stFactor = 3; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsHZVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsHZVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 1; 
 | 
            cclass[1] = 0; 
 | 
            cclass[2] = 0; 
 | 
            cclass[3] = 4096; 
 | 
            cclass[4] = 0; 
 | 
            cclass[5] = 0; 
 | 
            cclass[6] = 0; 
 | 
            cclass[7] = 0; 
 | 
            cclass[8] = 0; 
 | 
            cclass[9] = 0; 
 | 
            cclass[10] = 0; 
 | 
            cclass[11] = 0; 
 | 
            cclass[12] = 0; 
 | 
            cclass[13] = 0; 
 | 
            cclass[14] = 0; 
 | 
            cclass[15] = 38813696; 
 | 
            cclass[16] = 286331153; 
 | 
            cclass[17] = 286331153; 
 | 
            cclass[18] = 286331153; 
 | 
            cclass[19] = 286331153; 
 | 
            cclass[20] = 286331153; 
 | 
            cclass[21] = 286331153; 
 | 
            cclass[22] = 286331153; 
 | 
            cclass[23] = 286331153; 
 | 
            cclass[24] = 286331153; 
 | 
            cclass[25] = 286331153; 
 | 
            cclass[26] = 286331153; 
 | 
            cclass[27] = 286331153; 
 | 
            cclass[28] = 286331153; 
 | 
            cclass[29] = 286331153; 
 | 
            cclass[30] = 286331153; 
 | 
            cclass[31] = 286331153; 
 | 
            states = new int[6]; 
 | 
            states[0] = 285213456; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 335548706; 
 | 
            states[3] = 341120533; 
 | 
            states[4] = 336872468; 
 | 
            states[5] = 36; 
 | 
            charset = "HZ-GB-2312"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsSJISVerifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsSJISVerifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331152; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 286331153; 
 | 
            cclass[7] = 286331153; 
 | 
            cclass[8] = 572662306; 
 | 
            cclass[9] = 572662306; 
 | 
            cclass[10] = 572662306; 
 | 
            cclass[11] = 572662306; 
 | 
            cclass[12] = 572662306; 
 | 
            cclass[13] = 572662306; 
 | 
            cclass[14] = 572662306; 
 | 
            cclass[15] = 304226850; 
 | 
            cclass[16] = 858993459; 
 | 
            cclass[17] = 858993459; 
 | 
            cclass[18] = 858993459; 
 | 
            cclass[19] = 858993459; 
 | 
            cclass[20] = 572662308; 
 | 
            cclass[21] = 572662306; 
 | 
            cclass[22] = 572662306; 
 | 
            cclass[23] = 572662306; 
 | 
            cclass[24] = 572662306; 
 | 
            cclass[25] = 572662306; 
 | 
            cclass[26] = 572662306; 
 | 
            cclass[27] = 572662306; 
 | 
            cclass[28] = 858993459; 
 | 
            cclass[29] = 1145393971; 
 | 
            cclass[30] = 1145324612; 
 | 
            cclass[31] = 279620; 
 | 
            states = new int[3]; 
 | 
            states[0] = 286339073; 
 | 
            states[1] = 572657937; 
 | 
            states[2] = 4386; 
 | 
            charset = "Shift_JIS"; 
 | 
            stFactor = 6; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     */ 
 | 
    public static class nsUTF8Verifier extends nsVerifier { 
 | 
        static int[] cclass; 
 | 
        static int[] states; 
 | 
        static int stFactor; 
 | 
        static String charset; 
 | 
  
 | 
        public int[] cclass() { 
 | 
            return cclass; 
 | 
        } 
 | 
  
 | 
        public int[] states() { 
 | 
            return states; 
 | 
        } 
 | 
  
 | 
        public int stFactor() { 
 | 
            return stFactor; 
 | 
        } 
 | 
  
 | 
        public String charset() { 
 | 
            return charset; 
 | 
        } 
 | 
  
 | 
        public nsUTF8Verifier() { 
 | 
            cclass = new int[32]; 
 | 
            cclass[0] = 286331153; 
 | 
            cclass[1] = 1118481; 
 | 
            cclass[2] = 286331153; 
 | 
            cclass[3] = 286327057; 
 | 
            cclass[4] = 286331153; 
 | 
            cclass[5] = 286331153; 
 | 
            cclass[6] = 286331153; 
 | 
            cclass[7] = 286331153; 
 | 
            cclass[8] = 286331153; 
 | 
            cclass[9] = 286331153; 
 | 
            cclass[10] = 286331153; 
 | 
            cclass[11] = 286331153; 
 | 
            cclass[12] = 286331153; 
 | 
            cclass[13] = 286331153; 
 | 
            cclass[14] = 286331153; 
 | 
            cclass[15] = 286331153; 
 | 
            cclass[16] = 858989090; 
 | 
            cclass[17] = 1145324612; 
 | 
            cclass[18] = 1145324612; 
 | 
            cclass[19] = 1145324612; 
 | 
            cclass[20] = 1431655765; 
 | 
            cclass[21] = 1431655765; 
 | 
            cclass[22] = 1431655765; 
 | 
            cclass[23] = 1431655765; 
 | 
            cclass[24] = 1717986816; 
 | 
            cclass[25] = 1717986918; 
 | 
            cclass[26] = 1717986918; 
 | 
            cclass[27] = 1717986918; 
 | 
            cclass[28] = -2004318073; 
 | 
            cclass[29] = -2003269496; 
 | 
            cclass[30] = -1145324614; 
 | 
            cclass[31] = 16702940; 
 | 
            states = new int[26]; 
 | 
            states[0] = -1408167679; 
 | 
            states[1] = 878082233; 
 | 
            states[2] = 286331153; 
 | 
            states[3] = 286331153; 
 | 
            states[4] = 572662306; 
 | 
            states[5] = 572662306; 
 | 
            states[6] = 290805009; 
 | 
            states[7] = 286331153; 
 | 
            states[8] = 290803985; 
 | 
            states[9] = 286331153; 
 | 
            states[10] = 293041937; 
 | 
            states[11] = 286331153; 
 | 
            states[12] = 293015825; 
 | 
            states[13] = 286331153; 
 | 
            states[14] = 295278865; 
 | 
            states[15] = 286331153; 
 | 
            states[16] = 294719761; 
 | 
            states[17] = 286331153; 
 | 
            states[18] = 298634257; 
 | 
            states[19] = 286331153; 
 | 
            states[20] = 297865489; 
 | 
            states[21] = 286331153; 
 | 
            states[22] = 287099921; 
 | 
            states[23] = 286331153; 
 | 
            states[24] = 285212689; 
 | 
            states[25] = 286331153; 
 | 
            charset = "UTF-8"; 
 | 
            stFactor = 16; 
 | 
        } 
 | 
  
 | 
        public boolean isUCS2() { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |