From 7ca3a34e1f5d01beb0d58925844544beb1720ab9 Mon Sep 17 00:00:00 2001
From: Jonas Jenwald <jonas.jenwald@gmail.com>
Date: Wed, 5 May 2021 12:12:35 +0200
Subject: [PATCH] Enable the `no-var` rule in the `src/core/jbig2.js` file

These changes were made automatically, using `gulp lint --fix`.
---
 src/core/jbig2.js | 343 +++++++++++++++++++++++-----------------------
 1 file changed, 175 insertions(+), 168 deletions(-)

diff --git a/src/core/jbig2.js b/src/core/jbig2.js
index db3301960..ef200d0e8 100644
--- a/src/core/jbig2.js
+++ b/src/core/jbig2.js
@@ -12,7 +12,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* eslint-disable no-var */
 
 import { BaseException, shadow } from "../shared/util.js";
 import { log2, readInt8, readUint16, readUint32 } from "./core_utils.js";
@@ -25,7 +24,7 @@ class Jbig2Error extends BaseException {
   }
 }
 
-var Jbig2Image = (function Jbig2ImageClosure() {
+const Jbig2Image = (function Jbig2ImageClosure() {
   // Utility data structures
   function ContextCache() {}
 
@@ -46,11 +45,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
 
   DecodingContext.prototype = {
     get decoder() {
-      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);
+      const decoder = new ArithmeticDecoder(this.data, this.start, this.end);
       return shadow(this, "decoder", decoder);
     },
     get contextCache() {
-      var cache = new ContextCache();
+      const cache = new ContextCache();
       return shadow(this, "contextCache", cache);
     },
   };
@@ -58,13 +57,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   // Annex A. Arithmetic Integer Decoding Procedure
   // A.2 Procedure for decoding values
   function decodeInteger(contextCache, procedure, decoder) {
-    var contexts = contextCache.getContexts(procedure);
-    var prev = 1;
+    const contexts = contextCache.getContexts(procedure);
+    let prev = 1;
 
     function readBits(length) {
-      var v = 0;
-      for (var i = 0; i < length; i++) {
-        var bit = decoder.readBit(contexts, prev);
+      let v = 0;
+      for (let i = 0; i < length; i++) {
+        const bit = decoder.readBit(contexts, prev);
         prev =
           prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;
         v = (v << 1) | bit;
@@ -72,10 +71,10 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       return v >>> 0;
     }
 
-    var sign = readBits(1);
+    const sign = readBits(1);
     // prettier-ignore
     /* eslint-disable no-nested-ternary */
-    var value = readBits(1) ?
+    const value = readBits(1) ?
                   (readBits(1) ?
                     (readBits(1) ?
                       (readBits(1) ?
@@ -97,11 +96,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
 
   // A.3 The IAID decoding procedure
   function decodeIAID(contextCache, decoder, codeLength) {
-    var contexts = contextCache.getContexts("IAID");
+    const contexts = contextCache.getContexts("IAID");
 
-    var prev = 1;
-    for (var i = 0; i < codeLength; i++) {
-      var bit = decoder.readBit(contexts, prev);
+    let prev = 1;
+    for (let i = 0; i < codeLength; i++) {
+      const bit = decoder.readBit(contexts, prev);
       prev = (prev << 1) | bit;
     }
     if (codeLength < 31) {
@@ -111,7 +110,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   }
 
   // 7.3 Segment types
-  var SegmentTypes = [
+  const SegmentTypes = [
     "SymbolDictionary",
     null,
     null,
@@ -177,7 +176,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     "Extension",
   ];
 
-  var CodingTemplates = [
+  const CodingTemplates = [
     [
       { x: -1, y: -2 },
       { x: 0, y: -2 },
@@ -230,7 +229,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     ],
   ];
 
-  var RefinementTemplates = [
+  const RefinementTemplates = [
     {
       coding: [
         { x: 0, y: -1 },
@@ -267,22 +266,22 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   ];
 
   // See 6.2.5.7 Decoding the bitmap.
-  var ReusedContexts = [
+  const ReusedContexts = [
     0x9b25, // 10011 0110010 0101
     0x0795, // 0011 110010 101
     0x00e5, // 001 11001 01
     0x0195, // 011001 0101
   ];
 
-  var RefinementReusedContexts = [
+  const RefinementReusedContexts = [
     0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)
     0x0008, // '0000' + '001000'
   ];
 
   function decodeBitmapTemplate0(width, height, decodingContext) {
-    var decoder = decodingContext.decoder;
-    var contexts = decodingContext.contextCache.getContexts("GB");
-    var contextLabel,
+    const decoder = decodingContext.decoder;
+    const contexts = decodingContext.contextCache.getContexts("GB");
+    let contextLabel,
       i,
       j,
       pixel,
@@ -294,7 +293,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     // ...ooooo....
     // ..ooooooo... Context template for current pixel (X)
     // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)
-    var OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111
+    const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111
 
     for (i = 0; i < height; i++) {
       row = bitmap[i] = new Uint8Array(width);
@@ -366,8 +365,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       return decodeBitmapTemplate0(width, height, decodingContext);
     }
 
-    var useskip = !!skip;
-    var template = CodingTemplates[templateIndex].concat(at);
+    const useskip = !!skip;
+    const template = CodingTemplates[templateIndex].concat(at);
 
     // Sorting is non-standard, and it is not required. But sorting increases
     // the number of template bits that can be reused from the previous
@@ -376,15 +375,15 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       return a.y - b.y || a.x - b.x;
     });
 
-    var templateLength = template.length;
-    var templateX = new Int8Array(templateLength);
-    var templateY = new Int8Array(templateLength);
-    var changingTemplateEntries = [];
-    var reuseMask = 0,
+    const templateLength = template.length;
+    const templateX = new Int8Array(templateLength);
+    const templateY = new Int8Array(templateLength);
+    const changingTemplateEntries = [];
+    let reuseMask = 0,
       minX = 0,
       maxX = 0,
       minY = 0;
-    var c, k;
+    let c, k;
 
     for (k = 0; k < templateLength; k++) {
       templateX[k] = template[k].x;
@@ -405,11 +404,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         changingTemplateEntries.push(k);
       }
     }
-    var changingEntriesLength = changingTemplateEntries.length;
+    const changingEntriesLength = changingTemplateEntries.length;
 
-    var changingTemplateX = new Int8Array(changingEntriesLength);
-    var changingTemplateY = new Int8Array(changingEntriesLength);
-    var changingTemplateBit = new Uint16Array(changingEntriesLength);
+    const changingTemplateX = new Int8Array(changingEntriesLength);
+    const changingTemplateY = new Int8Array(changingEntriesLength);
+    const changingTemplateBit = new Uint16Array(changingEntriesLength);
     for (c = 0; c < changingEntriesLength; c++) {
       k = changingTemplateEntries[c];
       changingTemplateX[c] = template[k].x;
@@ -418,27 +417,27 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     }
 
     // Get the safe bounding box edges from the width, height, minX, maxX, minY
-    var sbb_left = -minX;
-    var sbb_top = -minY;
-    var sbb_right = width - maxX;
+    const sbb_left = -minX;
+    const sbb_top = -minY;
+    const sbb_right = width - maxX;
 
-    var pseudoPixelContext = ReusedContexts[templateIndex];
-    var row = new Uint8Array(width);
-    var bitmap = [];
+    const pseudoPixelContext = ReusedContexts[templateIndex];
+    let row = new Uint8Array(width);
+    const bitmap = [];
 
-    var decoder = decodingContext.decoder;
-    var contexts = decodingContext.contextCache.getContexts("GB");
+    const decoder = decodingContext.decoder;
+    const contexts = decodingContext.contextCache.getContexts("GB");
 
-    var ltp = 0,
+    let ltp = 0,
       j,
       i0,
       j0,
       contextLabel = 0,
       bit,
       shift;
-    for (var i = 0; i < height; i++) {
+    for (let i = 0; i < height; i++) {
       if (prediction) {
-        var sltp = decoder.readBit(contexts, pseudoPixelContext);
+        const sltp = decoder.readBit(contexts, pseudoPixelContext);
         ltp ^= sltp;
         if (ltp) {
           bitmap.push(row); // duplicate previous row
@@ -484,7 +483,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             }
           }
         }
-        var pixel = decoder.readBit(contexts, contextLabel);
+        const pixel = decoder.readBit(contexts, contextLabel);
         row[j] = pixel;
       }
     }
@@ -503,53 +502,53 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     at,
     decodingContext
   ) {
-    var codingTemplate = RefinementTemplates[templateIndex].coding;
+    let codingTemplate = RefinementTemplates[templateIndex].coding;
     if (templateIndex === 0) {
       codingTemplate = codingTemplate.concat([at[0]]);
     }
-    var codingTemplateLength = codingTemplate.length;
-    var codingTemplateX = new Int32Array(codingTemplateLength);
-    var codingTemplateY = new Int32Array(codingTemplateLength);
-    var k;
+    const codingTemplateLength = codingTemplate.length;
+    const codingTemplateX = new Int32Array(codingTemplateLength);
+    const codingTemplateY = new Int32Array(codingTemplateLength);
+    let k;
     for (k = 0; k < codingTemplateLength; k++) {
       codingTemplateX[k] = codingTemplate[k].x;
       codingTemplateY[k] = codingTemplate[k].y;
     }
 
-    var referenceTemplate = RefinementTemplates[templateIndex].reference;
+    let referenceTemplate = RefinementTemplates[templateIndex].reference;
     if (templateIndex === 0) {
       referenceTemplate = referenceTemplate.concat([at[1]]);
     }
-    var referenceTemplateLength = referenceTemplate.length;
-    var referenceTemplateX = new Int32Array(referenceTemplateLength);
-    var referenceTemplateY = new Int32Array(referenceTemplateLength);
+    const referenceTemplateLength = referenceTemplate.length;
+    const referenceTemplateX = new Int32Array(referenceTemplateLength);
+    const referenceTemplateY = new Int32Array(referenceTemplateLength);
     for (k = 0; k < referenceTemplateLength; k++) {
       referenceTemplateX[k] = referenceTemplate[k].x;
       referenceTemplateY[k] = referenceTemplate[k].y;
     }
-    var referenceWidth = referenceBitmap[0].length;
-    var referenceHeight = referenceBitmap.length;
+    const referenceWidth = referenceBitmap[0].length;
+    const referenceHeight = referenceBitmap.length;
 
-    var pseudoPixelContext = RefinementReusedContexts[templateIndex];
-    var bitmap = [];
+    const pseudoPixelContext = RefinementReusedContexts[templateIndex];
+    const bitmap = [];
 
-    var decoder = decodingContext.decoder;
-    var contexts = decodingContext.contextCache.getContexts("GR");
+    const decoder = decodingContext.decoder;
+    const contexts = decodingContext.contextCache.getContexts("GR");
 
-    var ltp = 0;
-    for (var i = 0; i < height; i++) {
+    let ltp = 0;
+    for (let i = 0; i < height; i++) {
       if (prediction) {
-        var sltp = decoder.readBit(contexts, pseudoPixelContext);
+        const sltp = decoder.readBit(contexts, pseudoPixelContext);
         ltp ^= sltp;
         if (ltp) {
           throw new Jbig2Error("prediction is not supported");
         }
       }
-      var row = new Uint8Array(width);
+      const row = new Uint8Array(width);
       bitmap.push(row);
-      for (var j = 0; j < width; j++) {
+      for (let j = 0; j < width; j++) {
         var i0, j0;
-        var contextLabel = 0;
+        let contextLabel = 0;
         for (k = 0; k < codingTemplateLength; k++) {
           i0 = i + codingTemplateY[k];
           j0 = j + codingTemplateX[k];
@@ -573,7 +572,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];
           }
         }
-        var pixel = decoder.readBit(contexts, contextLabel);
+        const pixel = decoder.readBit(contexts, contextLabel);
         row[j] = pixel;
       }
     }
@@ -600,12 +599,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       throw new Jbig2Error("symbol refinement with Huffman is not supported");
     }
 
-    var newSymbols = [];
-    var currentHeight = 0;
-    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);
+    const newSymbols = [];
+    let currentHeight = 0;
+    let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);
 
-    var decoder = decodingContext.decoder;
-    var contextCache = decodingContext.contextCache;
+    const decoder = decodingContext.decoder;
+    const contextCache = decodingContext.contextCache;
     let tableB1, symbolWidths;
     if (huffman) {
       tableB1 = getStandardTable(1); // standard table B.1
@@ -614,7 +613,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     }
 
     while (newSymbols.length < numberOfNewSymbols) {
-      var deltaHeight = huffman
+      const deltaHeight = huffman
         ? huffmanTables.tableDeltaHeight.decode(huffmanInput)
         : decodeInteger(contextCache, "IADH", decoder); // 6.5.6
       currentHeight += deltaHeight;
@@ -622,7 +621,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         totalWidth = 0;
       const firstSymbol = huffman ? symbolWidths.length : 0;
       while (true) {
-        var deltaWidth = huffman
+        const deltaWidth = huffman
           ? huffmanTables.tableDeltaWidth.decode(huffmanInput)
           : decodeInteger(contextCache, "IADW", decoder); // 6.5.7
         if (deltaWidth === null) {
@@ -633,7 +632,11 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         var bitmap;
         if (refinement) {
           // 6.5.8.2 Refinement/aggregate-coded symbol bitmap
-          var numberOfInstances = decodeInteger(contextCache, "IAAI", decoder);
+          const numberOfInstances = decodeInteger(
+            contextCache,
+            "IAAI",
+            decoder
+          );
           if (numberOfInstances > 1) {
             bitmap = decodeTextRegion(
               huffman,
@@ -657,10 +660,14 @@ var Jbig2Image = (function Jbig2ImageClosure() {
               huffmanInput
             );
           } else {
-            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
-            var rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
-            var rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
-            var symbol =
+            const symbolId = decodeIAID(
+              contextCache,
+              decoder,
+              symbolCodeLength
+            );
+            const rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
+            const rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
+            const symbol =
               symbolId < symbols.length
                 ? symbols[symbolId]
                 : newSymbols[symbolId - symbols.length];
@@ -749,12 +756,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     }
 
     // 6.5.10 Exported symbols
-    var exportedSymbols = [];
-    var flags = [],
+    const exportedSymbols = [];
+    let flags = [],
       currentFlag = false;
-    var totalSymbolsLength = symbols.length + numberOfNewSymbols;
+    const totalSymbolsLength = symbols.length + numberOfNewSymbols;
     while (flags.length < totalSymbolsLength) {
-      var runLength = huffman
+      let runLength = huffman
         ? tableB1.decode(huffmanInput)
         : decodeInteger(contextCache, "IAEX", decoder);
       while (runLength--) {
@@ -767,7 +774,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         exportedSymbols.push(symbols[i]);
       }
     }
-    for (var j = 0; j < numberOfNewSymbols; i++, j++) {
+    for (let j = 0; j < numberOfNewSymbols; i++, j++) {
       if (flags[i]) {
         exportedSymbols.push(newSymbols[j]);
       }
@@ -801,37 +808,37 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     }
 
     // Prepare bitmap
-    var bitmap = [];
-    var i, row;
+    const bitmap = [];
+    let i, row;
     for (i = 0; i < height; i++) {
       row = new Uint8Array(width);
       if (defaultPixelValue) {
-        for (var j = 0; j < width; j++) {
+        for (let j = 0; j < width; j++) {
           row[j] = defaultPixelValue;
         }
       }
       bitmap.push(row);
     }
 
-    var decoder = decodingContext.decoder;
-    var contextCache = decodingContext.contextCache;
+    const decoder = decodingContext.decoder;
+    const contextCache = decodingContext.contextCache;
 
-    var stripT = huffman
+    let stripT = huffman
       ? -huffmanTables.tableDeltaT.decode(huffmanInput)
       : -decodeInteger(contextCache, "IADT", decoder); // 6.4.6
-    var firstS = 0;
+    let firstS = 0;
     i = 0;
     while (i < numberOfSymbolInstances) {
-      var deltaT = huffman
+      const deltaT = huffman
         ? huffmanTables.tableDeltaT.decode(huffmanInput)
         : decodeInteger(contextCache, "IADT", decoder); // 6.4.6
       stripT += deltaT;
 
-      var deltaFirstS = huffman
+      const deltaFirstS = huffman
         ? huffmanTables.tableFirstS.decode(huffmanInput)
         : decodeInteger(contextCache, "IAFS", decoder); // 6.4.7
       firstS += deltaFirstS;
-      var currentS = firstS;
+      let currentS = firstS;
       do {
         let currentT = 0; // 6.4.9
         if (stripSize > 1) {
@@ -839,23 +846,23 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             ? huffmanInput.readBits(logStripSize)
             : decodeInteger(contextCache, "IAIT", decoder);
         }
-        var t = stripSize * stripT + currentT;
-        var symbolId = huffman
+        const t = stripSize * stripT + currentT;
+        const symbolId = huffman
           ? huffmanTables.symbolIDTable.decode(huffmanInput)
           : decodeIAID(contextCache, decoder, symbolCodeLength);
-        var applyRefinement =
+        const applyRefinement =
           refinement &&
           (huffman
             ? huffmanInput.readBit()
             : decodeInteger(contextCache, "IARI", decoder));
-        var symbolBitmap = inputSymbols[symbolId];
-        var symbolWidth = symbolBitmap[0].length;
-        var symbolHeight = symbolBitmap.length;
+        let symbolBitmap = inputSymbols[symbolId];
+        let symbolWidth = symbolBitmap[0].length;
+        let symbolHeight = symbolBitmap.length;
         if (applyRefinement) {
-          var rdw = decodeInteger(contextCache, "IARDW", decoder); // 6.4.11.1
-          var rdh = decodeInteger(contextCache, "IARDH", decoder); // 6.4.11.2
-          var rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
-          var rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
+          const rdw = decodeInteger(contextCache, "IARDW", decoder); // 6.4.11.1
+          const rdh = decodeInteger(contextCache, "IARDH", decoder); // 6.4.11.2
+          const rdx = decodeInteger(contextCache, "IARDX", decoder); // 6.4.11.3
+          const rdy = decodeInteger(contextCache, "IARDY", decoder); // 6.4.11.4
           symbolWidth += rdw;
           symbolHeight += rdh;
           symbolBitmap = decodeRefinement(
@@ -870,8 +877,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             decodingContext
           );
         }
-        var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
-        var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
+        const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
+        const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
         var s2, t2, symbolRow;
         if (transposed) {
           // Place Symbol Bitmap from T1,S1
@@ -883,7 +890,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             symbolRow = symbolBitmap[s2];
             // To ignore Parts of Symbol bitmap which goes
             // outside bitmap region
-            var maxWidth = Math.min(width - offsetT, symbolWidth);
+            const maxWidth = Math.min(width - offsetT, symbolWidth);
             switch (combinationOperator) {
               case 0: // OR
                 for (t2 = 0; t2 < maxWidth; t2++) {
@@ -929,7 +936,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
           currentS += symbolWidth - 1;
         }
         i++;
-        var deltaS = huffman
+        const deltaS = huffman
           ? huffmanTables.tableDeltaS.decode(huffmanInput)
           : decodeInteger(contextCache, "IADS", decoder); // 6.4.8
         if (deltaS === null) {
@@ -1142,10 +1149,10 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   }
 
   function readSegmentHeader(data, start) {
-    var segmentHeader = {};
+    const segmentHeader = {};
     segmentHeader.number = readUint32(data, start);
-    var flags = data[start + 4];
-    var segmentType = flags & 0x3f;
+    const flags = data[start + 4];
+    const segmentType = flags & 0x3f;
     if (!SegmentTypes[segmentType]) {
       throw new Jbig2Error("invalid segment type: " + segmentType);
     }
@@ -1153,15 +1160,15 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     segmentHeader.typeName = SegmentTypes[segmentType];
     segmentHeader.deferredNonRetain = !!(flags & 0x80);
 
-    var pageAssociationFieldSize = !!(flags & 0x40);
-    var referredFlags = data[start + 5];
-    var referredToCount = (referredFlags >> 5) & 7;
-    var retainBits = [referredFlags & 31];
-    var position = start + 6;
+    const pageAssociationFieldSize = !!(flags & 0x40);
+    const referredFlags = data[start + 5];
+    let referredToCount = (referredFlags >> 5) & 7;
+    const retainBits = [referredFlags & 31];
+    let position = start + 6;
     if (referredFlags === 7) {
       referredToCount = readUint32(data, position - 1) & 0x1fffffff;
       position += 3;
-      var bytes = (referredToCount + 7) >> 3;
+      let bytes = (referredToCount + 7) >> 3;
       retainBits[0] = data[position++];
       while (--bytes > 0) {
         retainBits.push(data[position++]);
@@ -1178,8 +1185,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
     } else if (segmentHeader.number <= 65536) {
       referredToSegmentNumberSize = 2;
     }
-    var referredTo = [];
-    var i, ii;
+    const referredTo = [];
+    let i, ii;
     for (i = 0; i < referredToCount; i++) {
       let number;
       if (referredToSegmentNumberSize === 1) {
@@ -1206,13 +1213,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       // 7.2.7 Segment data length, unknown segment length
       if (segmentType === 38) {
         // ImmediateGenericRegion
-        var genericRegionInfo = readRegionSegmentInformation(data, position);
-        var genericRegionSegmentFlags =
+        const genericRegionInfo = readRegionSegmentInformation(data, position);
+        const genericRegionSegmentFlags =
           data[position + RegionSegmentInformationFieldLength];
-        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);
+        const genericRegionMmr = !!(genericRegionSegmentFlags & 1);
         // searching for the segment end
-        var searchPatternLength = 6;
-        var searchPattern = new Uint8Array(searchPatternLength);
+        const searchPatternLength = 6;
+        const searchPattern = new Uint8Array(searchPatternLength);
         if (!genericRegionMmr) {
           searchPattern[0] = 0xff;
           searchPattern[1] = 0xac;
@@ -1222,7 +1229,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;
         searchPattern[5] = genericRegionInfo.height & 0xff;
         for (i = position, ii = data.length; i < ii; i++) {
-          var j = 0;
+          let j = 0;
           while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
             j++;
           }
@@ -1243,12 +1250,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   }
 
   function readSegments(header, data, start, end) {
-    var segments = [];
-    var position = start;
+    const segments = [];
+    let position = start;
     while (position < end) {
-      var segmentHeader = readSegmentHeader(data, position);
+      const segmentHeader = readSegmentHeader(data, position);
       position = segmentHeader.headerEnd;
-      var segment = {
+      const segment = {
         header: segmentHeader,
         data,
       };
@@ -1263,7 +1270,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       }
     }
     if (header.randomAccess) {
-      for (var i = 0, ii = segments.length; i < ii; i++) {
+      for (let i = 0, ii = segments.length; i < ii; i++) {
         segments[i].start = position;
         position += segments[i].header.length;
         segments[i].end = position;
@@ -1285,12 +1292,12 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   var RegionSegmentInformationFieldLength = 17;
 
   function processSegment(segment, visitor) {
-    var header = segment.header;
+    const header = segment.header;
 
-    var data = segment.data,
+    let data = segment.data,
       position = segment.start,
       end = segment.end;
-    var args, at, i, atLength;
+    let args, at, i, atLength;
     switch (header.type) {
       case 0: // SymbolDictionary
         // 7.4.2 Symbol dictionary segment syntax
@@ -1361,7 +1368,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;
         textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;
         if (textRegion.huffman) {
-          var textRegionHuffmanFlags = readUint16(data, position);
+          const textRegionHuffmanFlags = readUint16(data, position);
           position += 2;
           textRegion.huffmanFS = textRegionHuffmanFlags & 3;
           textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;
@@ -1488,23 +1495,23 @@ var Jbig2Image = (function Jbig2ImageClosure() {
             " is not implemented"
         );
     }
-    var callbackName = "on" + header.typeName;
+    const callbackName = "on" + header.typeName;
     if (callbackName in visitor) {
       visitor[callbackName].apply(visitor, args);
     }
   }
 
   function processSegments(segments, visitor) {
-    for (var i = 0, ii = segments.length; i < ii; i++) {
+    for (let i = 0, ii = segments.length; i < ii; i++) {
       processSegment(segments[i], visitor);
     }
   }
 
   function parseJbig2Chunks(chunks) {
-    var visitor = new SimpleSegmentVisitor();
-    for (var i = 0, ii = chunks.length; i < ii; i++) {
-      var chunk = chunks[i];
-      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);
+    const visitor = new SimpleSegmentVisitor();
+    for (let i = 0, ii = chunks.length; i < ii; i++) {
+      const chunk = chunks[i];
+      const segments = readSegments({}, chunk.data, chunk.start, chunk.end);
       processSegments(segments, visitor);
     }
     return visitor.buffer;
@@ -1566,29 +1573,29 @@ var Jbig2Image = (function Jbig2ImageClosure() {
   SimpleSegmentVisitor.prototype = {
     onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {
       this.currentPageInfo = info;
-      var rowSize = (info.width + 7) >> 3;
-      var buffer = new Uint8ClampedArray(rowSize * info.height);
+      const rowSize = (info.width + 7) >> 3;
+      const buffer = new Uint8ClampedArray(rowSize * info.height);
       // The contents of ArrayBuffers are initialized to 0.
       // Fill the buffer with 0xFF only if info.defaultPixelValue is set
       if (info.defaultPixelValue) {
-        for (var i = 0, ii = buffer.length; i < ii; i++) {
+        for (let i = 0, ii = buffer.length; i < ii; i++) {
           buffer[i] = 0xff;
         }
       }
       this.buffer = buffer;
     },
     drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {
-      var pageInfo = this.currentPageInfo;
-      var width = regionInfo.width,
+      const pageInfo = this.currentPageInfo;
+      const width = regionInfo.width,
         height = regionInfo.height;
-      var rowSize = (pageInfo.width + 7) >> 3;
-      var combinationOperator = pageInfo.combinationOperatorOverride
+      const rowSize = (pageInfo.width + 7) >> 3;
+      const combinationOperator = pageInfo.combinationOperatorOverride
         ? regionInfo.combinationOperator
         : pageInfo.combinationOperator;
-      var buffer = this.buffer;
-      var mask0 = 128 >> (regionInfo.x & 7);
-      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
-      var i, j, mask, offset;
+      const buffer = this.buffer;
+      const mask0 = 128 >> (regionInfo.x & 7);
+      let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
+      let i, j, mask, offset;
       switch (combinationOperator) {
         case 0: // OR
           for (i = 0; i < height; i++) {
@@ -1636,9 +1643,9 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       start,
       end
     ) {
-      var regionInfo = region.info;
-      var decodingContext = new DecodingContext(data, start, end);
-      var bitmap = decodeBitmap(
+      const regionInfo = region.info;
+      const decodingContext = new DecodingContext(data, start, end);
+      const bitmap = decodeBitmap(
         region.mmr,
         regionInfo.width,
         regionInfo.height,
@@ -1672,13 +1679,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       }
 
       // Combines exported symbols from all referred segments
-      var symbols = this.symbols;
+      let symbols = this.symbols;
       if (!symbols) {
         this.symbols = symbols = {};
       }
 
-      var inputSymbols = [];
-      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
+      let inputSymbols = [];
+      for (let i = 0, ii = referredSegments.length; i < ii; i++) {
         const referredSymbols = symbols[referredSegments[i]];
         // referredSymbols is undefined when we have a reference to a Tables
         // segment instead of a SymbolDictionary.
@@ -1687,7 +1694,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         }
       }
 
-      var decodingContext = new DecodingContext(data, start, end);
+      const decodingContext = new DecodingContext(data, start, end);
       symbols[currentSegment] = decodeSymbolDictionary(
         dictionary.huffman,
         dictionary.refinement,
@@ -1710,13 +1717,13 @@ var Jbig2Image = (function Jbig2ImageClosure() {
       start,
       end
     ) {
-      var regionInfo = region.info;
+      const regionInfo = region.info;
       let huffmanTables, huffmanInput;
 
       // Combines exported symbols from all referred segments
-      var symbols = this.symbols;
-      var inputSymbols = [];
-      for (var i = 0, ii = referredSegments.length; i < ii; i++) {
+      const symbols = this.symbols;
+      let inputSymbols = [];
+      for (let i = 0, ii = referredSegments.length; i < ii; i++) {
         const referredSymbols = symbols[referredSegments[i]];
         // referredSymbols is undefined when we have a reference to a Tables
         // segment instead of a SymbolDictionary.
@@ -1724,7 +1731,7 @@ var Jbig2Image = (function Jbig2ImageClosure() {
           inputSymbols = inputSymbols.concat(referredSymbols);
         }
       }
-      var symbolCodeLength = log2(inputSymbols.length);
+      const symbolCodeLength = log2(inputSymbols.length);
       if (region.huffman) {
         huffmanInput = new Reader(data, start, end);
         huffmanTables = getTextRegionHuffmanTables(
@@ -1736,8 +1743,8 @@ var Jbig2Image = (function Jbig2ImageClosure() {
         );
       }
 
-      var decodingContext = new DecodingContext(data, start, end);
-      var bitmap = decodeTextRegion(
+      const decodingContext = new DecodingContext(data, start, end);
+      const bitmap = decodeTextRegion(
         region.huffman,
         region.refinement,
         regionInfo.width,