mdict-parser.js
function config() {
      attrs.Encoding = attrs.Encoding || 'UTF-16';
      
      _searchTextLen = (attrs.Encoding === 'UTF-16') 
                          ?   function(dv, offset) {
                                offset = offset;
                                var mark = offset;
                                while (dv.getUint16(offset++)) { /* scan for NUL */ };
                                return offset - mark;
                          } : function(dv, offset) {
                                offset = offset;
                                var mark = offset;
                                while (dv.getUint8(offset++)) { /* scan for NUL */ }
                                return offset - mark - 1;
                          };
      
      _decoder = new TextDecoder(attrs.Encoding || 'UTF-16LE');

      _bpu = (attrs.Encoding === 'UTF-16') ? 2 : 1;
      
      if (parseInt(attrs.GeneratedByEngineVersion, 10) >= 2.0) {
        _v2 = true;
        _tail = _bpu;

          // HUGE dictionary file (>4G) is not supported, take only lower 32-bit
        _readNum     = function(scanner) { return scanner.forward(4), scanner.readInt(); };
        _readShort   = function(scanner) { return scanner.readUint16(); };
        _checksum_v2 = function(scanner) { return scanner.checksum(); };
      } else {
        _tail = 0;
      }
      
      // keyword index decrypted?
      if (attrs.Encrypted & 0x02) {
        _decryptors[1] = decrypt; 
      }
      
      var regexp = common.REGEXP_STRIPKEY[ext];
      if (isTrue(attrs.KeyCaseSensitive)) {
        _adaptKey = isTrue(attrs.StripKey) 
                      ? function(key) { return key.replace(regexp, '$1'); }
                      : function(key) { return key; };
      } else {
        _adaptKey = isTrue(attrs.StripKey || (_v2 ? '' : 'yes')) 
                      ? function(key) { return key.toLowerCase().replace(regexp, '$1'); }
                      : function(key) { return key.toLowerCase(); };
      }
    }
function config() {
      attrs.Encoding = attrs.Encoding || 'UTF-16';
      
      _searchTextLen = (attrs.Encoding === 'UTF-16') 
                          ?   function(dv, offset) {
                                offset = offset;
                                var mark = offset;
                                while (dv.getUint16(offset++)) { /* scan for NUL */ };
                                return offset - mark;
                          } : function(dv, offset) {
                                offset = offset;
                                var mark = offset;
                                while (dv.getUint8(offset++)) { /* scan for NUL */ }
                                return offset - mark - 1;
                          };
      
      _decoder = new TextDecoder(attrs.Encoding || 'UTF-16LE');

      _bpu = (attrs.Encoding === 'UTF-16') ? 2 : 1;
      
      if (parseInt(attrs.GeneratedByEngineVersion, 10) >= 2.0) {
        _v2 = true;
        _tail = _bpu;

          // HUGE dictionary file (>4G) is not supported, take only lower 32-bit
        _readNum     = function(scanner) { return scanner.forward(4), scanner.readInt(); };
        _readShort   = function(scanner) { return scanner.readUint16(); };
        _checksum_v2 = function(scanner) { return scanner.checksum(); };
      } else {
        _tail = 0;
      }
      
      // keyword index decrypted?
      if (attrs.Encrypted & 0x02) {
        _decryptors[1] = decrypt; 
      }
      
      var regexp = common.REGEXP_STRIPKEY[ext];
      if (isTrue(attrs.KeyCaseSensitive)) {
        _adaptKey = isTrue(attrs.StripKey) 
                      ? function(key) { return key.replace(regexp, '$1'); }
                      : function(key) { return key; };
      } else {
        _adaptKey = isTrue(attrs.StripKey || (_v2 ? '' : 'yes')) 
                      ? function(key) { return key.toLowerCase().replace(regexp, '$1'); }
                      : function(key) { return key.toLowerCase(); };
      }
    }
function config ( ) { attrs . Encoding = attrs . Encoding || 'UTF-16' ; _searchTextLen = ( attrs . Encoding === 'UTF-16' ) ? function ( dv , offset ) { offset = offset ; var mark = offset ; while ( dv . getUint16 ( offset ++ ) ) { /* scan for NUL */ } ; return offset - mark ; } : function ( dv , offset ) { offset = offset ; var mark = offset ; while ( dv . getUint8 ( offset ++ ) ) { /* scan for NUL */ } return offset - mark - 1 ; } ; _decoder = new TextDecoder ( attrs . Encoding || 'UTF-16LE' ) ; _bpu = ( attrs . Encoding === 'UTF-16' ) ? 2 : 1 ; if ( parseInt ( attrs . GeneratedByEngineVersion , 10 ) >= 2.0 ) { _v2 = true ; _tail = _bpu ; // HUGE dictionary file (>4G) is not supported, take only lower 32-bit _readNum = function ( scanner ) { return scanner . forward ( 4 ) , scanner . readInt ( ) ; } ; _readShort = function ( scanner ) { return scanner . readUint16 ( ) ; } ; _checksum_v2 = function ( scanner ) { return scanner . checksum ( ) ; } ; } else { _tail = 0 ; } // keyword index decrypted? if ( attrs . Encrypted & 0x02 ) { _decryptors [ 1 ] = decrypt ; } var regexp = common . REGEXP_STRIPKEY [ ext ] ; if ( isTrue ( attrs . KeyCaseSensitive ) ) { _adaptKey = isTrue ( attrs . StripKey ) ? function ( key ) { return key . replace ( regexp , '$1' ) ; } : function ( key ) { return key ; } ; } else { _adaptKey = isTrue ( attrs . StripKey || ( _v2 ? '' : 'yes' ) ) ? function ( key ) { return key . toLowerCase ( ) . replace ( regexp , '$1' ) ; } : function ( key ) { return key . toLowerCase ( ) ; } ; } }
bind sliceThen() with file argument 
Config scanner according to dictionary attributes.
bind sliceThen () with file argument Config scanner according to dictionary attributes .